katello 3.15.1 → 3.16.0.rc2.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of katello might be problematic. Click here for more details.

Files changed (1103) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/katello/common/vendor.js +6 -5
  3. data/app/controllers/katello/api/registry/registry_proxies_controller.rb +2 -3
  4. data/app/controllers/katello/api/rhsm/candlepin_dynflow_proxy_controller.rb +1 -1
  5. data/app/controllers/katello/api/rhsm/candlepin_proxies_controller.rb +13 -9
  6. data/app/controllers/katello/api/v2/activation_keys_controller.rb +5 -8
  7. data/app/controllers/katello/api/v2/api_controller.rb +14 -0
  8. data/app/controllers/katello/api/v2/capsule_content_controller.rb +2 -2
  9. data/app/controllers/katello/api/v2/content_credentials_controller.rb +1 -1
  10. data/app/controllers/katello/api/v2/content_view_components_controller.rb +2 -2
  11. data/app/controllers/katello/api/v2/content_view_filter_rules_controller.rb +1 -1
  12. data/app/controllers/katello/api/v2/content_view_filters_controller.rb +1 -1
  13. data/app/controllers/katello/api/v2/content_view_puppet_modules_controller.rb +1 -1
  14. data/app/controllers/katello/api/v2/content_view_versions_controller.rb +3 -9
  15. data/app/controllers/katello/api/v2/content_views_controller.rb +3 -3
  16. data/app/controllers/katello/api/v2/environments_controller.rb +3 -3
  17. data/app/controllers/katello/api/v2/gpg_keys_controller.rb +1 -1
  18. data/app/controllers/katello/api/v2/host_collections_controller.rb +3 -4
  19. data/app/controllers/katello/api/v2/host_subscriptions_controller.rb +5 -22
  20. data/app/controllers/katello/api/v2/host_tracer_controller.rb +39 -2
  21. data/app/controllers/katello/api/v2/hosts_bulk_actions_controller.rb +7 -2
  22. data/app/controllers/katello/api/v2/organizations_controller.rb +7 -14
  23. data/app/controllers/katello/api/v2/packages_controller.rb +13 -13
  24. data/app/controllers/katello/api/v2/products_controller.rb +2 -1
  25. data/app/controllers/katello/api/v2/repositories_controller.rb +7 -11
  26. data/app/controllers/katello/api/v2/repository_sets_controller.rb +1 -1
  27. data/app/controllers/katello/api/v2/subscriptions_controller.rb +5 -31
  28. data/app/controllers/katello/application_controller.rb +1 -1
  29. data/app/controllers/katello/concerns/api/api_controller.rb +2 -1
  30. data/app/controllers/katello/concerns/api/v2/hostgroups_controller_extensions.rb +1 -1
  31. data/app/controllers/katello/concerns/api/v2/repository_content_controller.rb +6 -1
  32. data/app/controllers/katello/concerns/api/v2/smart_proxies_controller_extensions.rb +1 -1
  33. data/app/controllers/katello/remote_execution_controller.rb +9 -1
  34. data/app/controllers/katello/sync_management_controller.rb +1 -1
  35. data/app/helpers/katello/hosts_and_hostgroups_helper.rb +1 -1
  36. data/app/helpers/katello/katello_urls_helper.rb +1 -1
  37. data/app/helpers/katello/layout_helper.rb +1 -3
  38. data/app/helpers/katello/subscription_mailer_helper.rb +23 -0
  39. data/app/jobs/create_expired_manifest_notifications.rb +11 -0
  40. data/app/lib/actions/candlepin/consumer/remove_subscription.rb +1 -1
  41. data/app/lib/actions/katello/activation_key/update.rb +1 -1
  42. data/app/lib/actions/katello/applicability/host/generate.rb +28 -0
  43. data/app/lib/actions/katello/applicability/hosts/bulk_generate.rb +32 -0
  44. data/app/lib/actions/katello/applicability/repository/regenerate.rb +31 -0
  45. data/app/lib/actions/katello/capsule_content/sync.rb +0 -1
  46. data/app/lib/actions/katello/capsule_content/sync_capsule.rb +0 -2
  47. data/app/lib/actions/katello/content_view/destroy.rb +3 -1
  48. data/app/lib/actions/katello/content_view/promote_to_environment.rb +1 -1
  49. data/app/lib/actions/katello/content_view/publish.rb +2 -2
  50. data/app/lib/actions/katello/content_view/remove.rb +1 -1
  51. data/app/lib/actions/katello/content_view/update.rb +1 -1
  52. data/app/lib/actions/katello/content_view_version/incremental_update.rb +6 -0
  53. data/app/lib/actions/katello/gpg_key/update.rb +1 -1
  54. data/app/lib/actions/katello/host/erratum/applicable_errata_install.rb +12 -2
  55. data/app/lib/actions/katello/host/generate_applicability.rb +21 -10
  56. data/app/lib/actions/katello/host/hypervisors_update.rb +1 -1
  57. data/app/lib/actions/katello/host/recalculate_errata_status.rb +4 -6
  58. data/app/lib/actions/katello/host/upload_profiles.rb +36 -5
  59. data/app/lib/actions/katello/organization/manifest_delete.rb +2 -1
  60. data/app/lib/actions/katello/organization/manifest_import.rb +3 -1
  61. data/app/lib/actions/katello/organization/manifest_refresh.rb +3 -1
  62. data/app/lib/actions/katello/orphan_cleanup/remove_orphans.rb +0 -13
  63. data/app/lib/actions/katello/product/content_create.rb +3 -3
  64. data/app/lib/actions/katello/product/create.rb +1 -1
  65. data/app/lib/actions/katello/product/destroy.rb +1 -1
  66. data/app/lib/actions/katello/product/update.rb +1 -1
  67. data/app/lib/actions/katello/provider/update.rb +1 -1
  68. data/app/lib/actions/katello/repository/clone_contents.rb +1 -1
  69. data/app/lib/actions/katello/repository/clone_to_environment.rb +1 -1
  70. data/app/lib/actions/katello/repository/create.rb +2 -2
  71. data/app/lib/actions/katello/repository/filtered_index_content.rb +12 -3
  72. data/app/lib/actions/katello/repository/finish_upload.rb +5 -3
  73. data/app/lib/actions/katello/repository/import_upload.rb +2 -2
  74. data/app/lib/actions/katello/repository/sync.rb +28 -16
  75. data/app/lib/actions/katello/repository/update.rb +17 -6
  76. data/app/lib/actions/katello/repository/update_cv_repo_cert_guard.rb +17 -0
  77. data/app/lib/actions/katello/repository/update_redhat_repository.rb +2 -2
  78. data/app/lib/actions/katello/repository/upload_files.rb +8 -5
  79. data/app/lib/actions/katello/subscription/update.rb +1 -1
  80. data/app/lib/actions/pulp/abstract_async_task.rb +3 -5
  81. data/app/lib/actions/pulp/consumer.rb +1 -3
  82. data/app/lib/actions/pulp/consumer/content_install.rb +1 -1
  83. data/app/lib/actions/pulp/orchestration/repository/smart_proxy_sync.rb +0 -1
  84. data/app/lib/actions/pulp/orchestration/repository/upload_content.rb +2 -0
  85. data/app/lib/actions/pulp/repository/presenters/deb_presenter.rb +5 -11
  86. data/app/lib/actions/pulp/repository/presenters/docker_presenter.rb +1 -1
  87. data/app/lib/actions/pulp3/ContentGuard/refresh.rb +19 -0
  88. data/app/lib/actions/pulp3/abstract_async_task.rb +3 -5
  89. data/app/lib/actions/pulp3/orchestration/repository/copy_all_units.rb +8 -10
  90. data/app/lib/actions/pulp3/orchestration/repository/generate_metadata.rb +2 -2
  91. data/app/lib/actions/pulp3/orchestration/repository/import_upload.rb +22 -13
  92. data/app/lib/actions/pulp3/orchestration/repository/upload_content.rb +8 -6
  93. data/app/lib/actions/pulp3/orphan_cleanup/delete_orphaned_migrated_repositories.rb +15 -0
  94. data/app/lib/actions/pulp3/repository/commit_upload.rb +18 -0
  95. data/app/lib/actions/pulp3/repository/copy_content.rb +1 -0
  96. data/app/lib/actions/pulp3/repository/import_upload.rb +5 -2
  97. data/app/lib/actions/pulp3/repository/refresh_distribution.rb +1 -0
  98. data/app/lib/actions/pulp3/repository/save_distribution_references.rb +3 -1
  99. data/app/lib/actions/pulp3/repository/save_publication.rb +1 -1
  100. data/app/lib/actions/pulp3/repository/save_version.rb +4 -2
  101. data/app/lib/actions/pulp3/repository/update_cv_repository_cert_guard.rb +15 -0
  102. data/app/lib/katello/concerns/base_template_scope_extensions.rb +8 -3
  103. data/app/lib/katello/concerns/filter_sensitive_data.rb +18 -0
  104. data/app/lib/katello/foreman.rb +2 -1
  105. data/app/lib/katello/http_resource.rb +3 -5
  106. data/app/lib/katello/lazy_accessor.rb +4 -2
  107. data/app/lib/katello/messaging/connection.rb +15 -0
  108. data/app/lib/katello/messaging/received_message.rb +12 -0
  109. data/app/lib/katello/messaging/stomp_connection.rb +73 -0
  110. data/app/lib/katello/resources/candlepin/activation_key.rb +0 -1
  111. data/app/lib/katello/resources/candlepin/admin.rb +1 -1
  112. data/app/lib/katello/resources/candlepin/consumer.rb +6 -0
  113. data/app/lib/katello/resources/candlepin/content.rb +7 -1
  114. data/app/lib/katello/resources/candlepin/owner.rb +0 -9
  115. data/app/lib/katello/resources/cdn.rb +6 -1
  116. data/app/lib/katello/resources/registry.rb +1 -1
  117. data/app/lib/katello/util/cdn_var_substitutor.rb +1 -3
  118. data/app/lib/katello/util/errata.rb +13 -0
  119. data/app/lib/katello/util/pulpcore_content_filters.rb +32 -0
  120. data/app/mailers/katello/subscription_mailer.rb +35 -0
  121. data/app/models/katello/activation_key.rb +1 -0
  122. data/app/models/katello/ansible_collection.rb +1 -1
  123. data/app/models/katello/authorization/host_tracer.rb +14 -0
  124. data/app/models/katello/authorization/pool.rb +5 -1
  125. data/app/models/katello/authorization/subscription.rb +1 -3
  126. data/app/models/katello/concerns/host_managed_extensions.rb +33 -4
  127. data/app/models/katello/concerns/organization_extensions.rb +9 -0
  128. data/app/models/katello/concerns/pulp_database_unit.rb +62 -35
  129. data/app/models/katello/concerns/redhat_extensions.rb +2 -1
  130. data/app/models/katello/concerns/smart_proxy_extensions.rb +5 -2
  131. data/app/models/katello/concerns/subscription_facet_host_extensions.rb +1 -1
  132. data/app/models/katello/content.rb +2 -2
  133. data/app/models/katello/content_view.rb +3 -2
  134. data/app/models/katello/content_view_erratum_filter.rb +29 -0
  135. data/app/models/katello/content_view_package_filter.rb +16 -1
  136. data/app/models/katello/content_view_package_group_filter.rb +7 -0
  137. data/app/models/katello/content_view_version.rb +1 -0
  138. data/app/models/katello/erratum.rb +6 -1
  139. data/app/models/katello/erratum_cve.rb +4 -0
  140. data/app/models/katello/events/generate_host_applicability.rb +28 -0
  141. data/app/models/katello/glue/candlepin/activation_key.rb +1 -1
  142. data/app/models/katello/glue/candlepin/pool.rb +6 -8
  143. data/app/models/katello/glue/candlepin/product.rb +1 -1
  144. data/app/models/katello/glue/candlepin/subscription.rb +1 -1
  145. data/app/models/katello/glue/provider.rb +5 -3
  146. data/app/models/katello/glue/pulp/repo.rb +1 -1
  147. data/app/models/katello/host/content_facet.rb +27 -4
  148. data/app/models/katello/host/subscription_facet.rb +1 -1
  149. data/app/models/katello/host_queue_element.rb +4 -0
  150. data/app/models/katello/host_tracer.rb +8 -0
  151. data/app/models/katello/kt_environment.rb +1 -1
  152. data/app/models/katello/module_stream.rb +2 -0
  153. data/app/models/katello/module_stream_rpm.rb +6 -0
  154. data/app/models/katello/package_group.rb +2 -1
  155. data/app/models/katello/pool.rb +19 -3
  156. data/app/models/katello/product.rb +1 -1
  157. data/app/models/katello/provider.rb +2 -3
  158. data/app/models/katello/pulp3/content_guard.rb +14 -0
  159. data/app/models/katello/puppet_module.rb +1 -1
  160. data/app/models/katello/repository.rb +20 -7
  161. data/app/models/katello/root_repository.rb +11 -0
  162. data/app/models/katello/rpm.rb +2 -1
  163. data/app/models/katello/subscription.rb +4 -4
  164. data/app/models/katello/sync_plan.rb +2 -2
  165. data/app/models/katello/task_status.rb +1 -1
  166. data/app/models/katello/trace_status.rb +3 -3
  167. data/app/models/setting/content.rb +8 -2
  168. data/app/services/katello/applicability/applicable_content_helper.rb +135 -0
  169. data/app/services/katello/applicable_host_queue.rb +21 -0
  170. data/app/services/katello/candlepin/consumer.rb +1 -1
  171. data/app/services/katello/candlepin/message_handler.rb +2 -3
  172. data/app/services/katello/candlepin_event_listener.rb +39 -53
  173. data/app/services/katello/event_daemon.rb +18 -18
  174. data/app/services/katello/event_monitor/poller_thread.rb +15 -17
  175. data/app/services/katello/product_content_importer.rb +2 -2
  176. data/app/services/katello/pulp/consumer.rb +6 -10
  177. data/app/services/katello/pulp/docker_manifest.rb +1 -1
  178. data/app/services/katello/pulp/docker_manifest_list.rb +1 -1
  179. data/app/services/katello/pulp/erratum.rb +1 -1
  180. data/app/services/katello/pulp/file_unit.rb +1 -1
  181. data/app/services/katello/pulp/module_stream.rb +1 -1
  182. data/app/services/katello/pulp/ostree_branch.rb +1 -1
  183. data/app/services/katello/pulp/package_group.rb +1 -1
  184. data/app/services/katello/pulp/pulp_content_unit.rb +8 -0
  185. data/app/services/katello/pulp/puppet_module.rb +1 -1
  186. data/app/services/katello/pulp/repository/yum.rb +3 -3
  187. data/app/services/katello/pulp/yum_metadata_file.rb +1 -1
  188. data/app/services/katello/pulp3/ansible_collection.rb +1 -1
  189. data/app/services/katello/pulp3/api/ansible_collection.rb +4 -1
  190. data/app/services/katello/pulp3/api/content_guard.rb +45 -0
  191. data/app/services/katello/pulp3/api/core.rb +20 -12
  192. data/app/services/katello/pulp3/api/docker.rb +4 -1
  193. data/app/services/katello/pulp3/api/file.rb +4 -1
  194. data/app/services/katello/pulp3/api/yum.rb +28 -1
  195. data/app/services/katello/pulp3/content.rb +2 -2
  196. data/app/services/katello/pulp3/docker_manifest.rb +1 -1
  197. data/app/services/katello/pulp3/docker_manifest_list.rb +1 -1
  198. data/app/services/katello/pulp3/docker_tag.rb +1 -1
  199. data/app/services/katello/pulp3/erratum.rb +9 -1
  200. data/app/services/katello/pulp3/file_unit.rb +1 -1
  201. data/app/services/katello/pulp3/migration.rb +2 -1
  202. data/app/services/katello/pulp3/module_stream.rb +13 -3
  203. data/app/services/katello/pulp3/package_group.rb +1 -1
  204. data/app/services/katello/pulp3/pulp_content_unit.rb +19 -7
  205. data/app/services/katello/pulp3/repository.rb +37 -16
  206. data/app/services/katello/pulp3/repository/docker.rb +1 -1
  207. data/app/services/katello/pulp3/repository/yum.rb +106 -5
  208. data/app/services/katello/pulp3/repository_mirror.rb +4 -2
  209. data/app/services/katello/pulp3/rpm.rb +26 -39
  210. data/app/services/katello/pulp3/smart_proxy_mirror_repository.rb +1 -1
  211. data/app/services/katello/pulp3/smart_proxy_repository.rb +23 -3
  212. data/app/services/katello/pulp3/srpm.rb +8 -1
  213. data/app/services/katello/ui_notifications/subscriptions/expire_soon.rb +1 -1
  214. data/app/services/katello/ui_notifications/subscriptions/manifest_expired_warning.rb +63 -0
  215. data/app/views/katello/api/v2/activation_keys/product_content.json.rabl +1 -1
  216. data/app/views/katello/api/v2/content_facet/erratum.json.rabl +1 -1
  217. data/app/views/katello/api/v2/content_facet/show.json.rabl +4 -0
  218. data/app/views/katello/api/v2/content_view_histories/show.json.rabl +2 -6
  219. data/app/views/katello/api/v2/host_subscriptions/product_content.json.rabl +2 -1
  220. data/app/views/katello/api/v2/host_tracer/base.json.rabl +6 -4
  221. data/app/views/katello/api/v2/organizations/owner_details.rabl +5 -0
  222. data/app/views/katello/api/v2/organizations/show.json.rabl +6 -1
  223. data/app/views/katello/api/v2/organizations/upstream_consumer.rabl +1 -0
  224. data/app/views/katello/subscription_mailer/subscription_expiry.html.erb +47 -0
  225. data/app/views/katello/subscription_mailer/subscription_expiry.text.erb +19 -0
  226. data/app/views/users/_subscriptions_expiring_soon_query_builder.html.erb +16 -0
  227. data/config/initializers/monkeys.rb +2 -2
  228. data/config/katello.yaml.example +4 -0
  229. data/config/routes.rb +2 -2
  230. data/config/routes/api/rhsm.rb +1 -0
  231. data/config/routes/api/v2.rb +6 -1
  232. data/config/routes/overrides.rb +1 -1
  233. data/db/functions/empty_v01.sql +7 -0
  234. data/db/functions/evr_trigger_v01.sql +9 -0
  235. data/db/functions/isalpha_v01.sql +11 -0
  236. data/db/functions/isalphanum_v01.sql +12 -0
  237. data/db/functions/isdigit_v01.sql +10 -0
  238. data/db/functions/rpmver_array_v01.sql +60 -0
  239. data/db/migrate/20131016124255_add_foreign_keys_engine.rb +1 -1
  240. data/db/migrate/20140117160939_refactor_content_views.rb +1 -1
  241. data/db/migrate/20140626204657_add_unlimited_to_activation_keys.rb +3 -3
  242. data/db/migrate/20140626204902_add_unlimited_to_host_collection.rb +3 -3
  243. data/db/migrate/20140930170628_add_errata.rb +1 -1
  244. data/db/migrate/20150119153452_update_promote_errata_email_description.rb +2 -6
  245. data/db/migrate/20150606021722_create_puppet_modules.rb +1 -1
  246. data/db/migrate/20150813185339_create_subscriptions.rb +1 -1
  247. data/db/migrate/20150826170004_add_content_facet.rb +1 -1
  248. data/db/migrate/20150930183738_migrate_content_hosts.rb +6 -8
  249. data/db/migrate/20160908234510_add_rpm_nvra.rb +1 -1
  250. data/db/migrate/20160930150810_add_smart_proxy_download_policy.rb +1 -1
  251. data/db/migrate/20161014133811_move_content_view_version_description_to_histories.rb +1 -1
  252. data/db/migrate/20161026191118_fix_invalid_interfaces.rb +1 -1
  253. data/db/migrate/20180103230812_set_errata_updated_date.rb +1 -1
  254. data/db/migrate/20180410140909_add_organization_id_to_pool.rb +1 -1
  255. data/db/migrate/20180920214134_create_repository_root.rb +2 -3
  256. data/db/migrate/20190730183518_add_docker_tag_join_table.rb +1 -1
  257. data/db/migrate/20190730203334_add_docker_meta_tag_join_table.rb +1 -1
  258. data/db/migrate/20200204034123_add_pulp3_href_to_repository_erratum.rb +6 -0
  259. data/db/migrate/20200213184848_create_evr_type.rb +49 -0
  260. data/db/migrate/20200304201026_create_katello_module_stream_rpms.rb +15 -0
  261. data/db/migrate/20200407171926_create_content_guard.rb +10 -0
  262. data/db/migrate/20200506163345_add_applicability_indicesto_katello_host_available_module_streams.rb +12 -0
  263. data/db/migrate/20200511204005_create_katello_host_queue_elements.rb +12 -0
  264. data/db/migrate/20200526200422_encrypt_root_repository_upstream_password.rb +45 -0
  265. data/db/seeds.d/106-mail_notifications.rb +8 -0
  266. data/db/seeds.d/107-enable_dynflow.rb +1 -1
  267. data/db/seeds.d/109-katello-notification-blueprints.rb +6 -0
  268. data/db/seeds.d/111-upgrade_tasks.rb +2 -1
  269. data/db/seeds.d/75-job_templates.rb +2 -2
  270. data/db/triggers/evr_insert_trigger_katello_installed_packages_v01.sql +5 -0
  271. data/db/triggers/evr_insert_trigger_katello_rpms_v01.sql +5 -0
  272. data/db/triggers/evr_update_trigger_katello_installed_packages_v01.sql +10 -0
  273. data/db/triggers/evr_update_trigger_katello_rpms_v01.sql +10 -0
  274. data/engines/bastion/app/assets/javascripts/bastion/bastion.module.js +1 -1
  275. data/engines/bastion/app/assets/javascripts/bastion/routing.module.js +1 -1
  276. data/engines/bastion/vendor/assets/javascripts/bastion/angular-animate/angular-animate.js +465 -340
  277. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_af-na.js +19 -19
  278. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_af-za.js +19 -19
  279. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_af.js +19 -19
  280. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_agq-cm.js +2 -2
  281. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ak-gh.js +4 -4
  282. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ak.js +4 -4
  283. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_am-et.js +1 -1
  284. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_am.js +1 -1
  285. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-001.js +7 -7
  286. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ae.js +4 -4
  287. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-bh.js +6 -6
  288. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-dj.js +6 -6
  289. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-eg.js +4 -4
  290. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-er.js +4 -4
  291. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-il.js +8 -8
  292. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-iq.js +6 -6
  293. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-jo.js +6 -6
  294. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-km.js +10 -10
  295. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-kw.js +6 -6
  296. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-lb.js +6 -6
  297. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ly.js +2 -2
  298. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ma.js +4 -4
  299. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-mr.js +6 -6
  300. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-om.js +6 -6
  301. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ps.js +4 -4
  302. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-qa.js +4 -4
  303. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-sa.js +4 -4
  304. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-sd.js +4 -4
  305. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-so.js +6 -6
  306. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ss.js +4 -4
  307. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-sy.js +6 -6
  308. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-td.js +6 -6
  309. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-tn.js +2 -2
  310. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-xb.js +125 -0
  311. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar-ye.js +6 -6
  312. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ar.js +4 -4
  313. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_as-in.js +8 -8
  314. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_as.js +8 -8
  315. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_asa-tz.js +6 -6
  316. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_asa.js +4 -4
  317. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ast-es.js +7 -7
  318. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ast.js +7 -7
  319. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-cyrl-az.js +41 -41
  320. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-cyrl.js +41 -41
  321. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-latn-az.js +3 -3
  322. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az-latn.js +3 -3
  323. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_az.js +3 -3
  324. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bas-cm.js +2 -2
  325. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_be-by.js +17 -17
  326. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_be.js +17 -17
  327. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bez-tz.js +6 -6
  328. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bez.js +4 -4
  329. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bg-bg.js +10 -10
  330. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bg.js +10 -10
  331. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bm-ml.js +31 -3
  332. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bn-bd.js +4 -4
  333. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bn-in.js +4 -4
  334. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bn.js +4 -4
  335. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bo-cn.js +24 -24
  336. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bo-in.js +25 -25
  337. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bo.js +24 -24
  338. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_br-fr.js +12 -12
  339. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_br.js +12 -12
  340. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_brx-in.js +2 -2
  341. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_brx.js +2 -2
  342. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bs-latn-ba.js +12 -12
  343. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bs-latn.js +12 -12
  344. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_bs.js +12 -12
  345. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-ad.js +12 -12
  346. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-es.js +12 -12
  347. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-fr.js +12 -12
  348. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca-it.js +12 -12
  349. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ca.js +12 -12
  350. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ce-ru.js +143 -0
  351. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ce.js +143 -0
  352. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cgg-ug.js +6 -6
  353. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cgg.js +4 -4
  354. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_chr-us.js +4 -4
  355. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_chr.js +5 -5
  356. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-arab-iq.js +5 -5
  357. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-arab-ir.js +5 -5
  358. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-arab.js +5 -5
  359. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-iq.js +12 -12
  360. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-ir.js +9 -9
  361. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-latn-iq.js +5 -5
  362. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb-latn.js +5 -5
  363. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ckb.js +10 -10
  364. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cs-cz.js +2 -2
  365. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cs.js +2 -2
  366. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cu-ru.js +143 -0
  367. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cu.js +143 -0
  368. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cy-gb.js +3 -3
  369. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_cy.js +3 -3
  370. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_da-dk.js +1 -1
  371. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_da-gl.js +5 -5
  372. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_da.js +1 -1
  373. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dav-ke.js +5 -5
  374. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dav.js +5 -5
  375. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-at.js +1 -1
  376. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-ch.js +1 -1
  377. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-it.js +143 -0
  378. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_de-li.js +1 -1
  379. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dje-ne.js +2 -2
  380. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dua-cm.js +2 -2
  381. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_dyo-sn.js +2 -2
  382. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ebu-ke.js +5 -5
  383. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ebu.js +5 -5
  384. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ee-tg.js +6 -6
  385. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-001.js +1 -1
  386. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-150.js +7 -7
  387. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ai.js +4 -4
  388. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-at.js +143 -0
  389. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-au.js +22 -22
  390. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-be.js +4 -4
  391. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-bi.js +143 -0
  392. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-bw.js +4 -4
  393. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cc.js +4 -4
  394. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ch.js +143 -0
  395. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ck.js +4 -4
  396. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cm.js +6 -6
  397. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cx.js +4 -4
  398. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-cy.js +143 -0
  399. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-de.js +143 -0
  400. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-dg.js +4 -4
  401. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-dk.js +143 -0
  402. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-fi.js +143 -0
  403. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-fk.js +4 -4
  404. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gb.js +2 -2
  405. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gg.js +4 -4
  406. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gi.js +4 -4
  407. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-gy.js +2 -2
  408. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ie.js +4 -4
  409. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-il.js +143 -0
  410. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-im.js +4 -4
  411. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-io.js +4 -4
  412. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-je.js +4 -4
  413. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-jm.js +2 -2
  414. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ke.js +4 -4
  415. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-mg.js +6 -6
  416. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ms.js +4 -4
  417. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-mt.js +4 -4
  418. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-mu.js +6 -6
  419. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nf.js +4 -4
  420. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nl.js +143 -0
  421. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nr.js +4 -4
  422. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-nu.js +4 -4
  423. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-pk.js +2 -2
  424. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-pn.js +4 -4
  425. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-rw.js +6 -6
  426. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sc.js +4 -4
  427. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-se.js +143 -0
  428. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sh.js +4 -4
  429. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-si.js +143 -0
  430. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sl.js +2 -2
  431. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-sx.js +4 -4
  432. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-tk.js +4 -4
  433. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-tv.js +4 -4
  434. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-tz.js +6 -6
  435. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-ug.js +6 -6
  436. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-us-posix.js +143 -0
  437. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-vu.js +2 -2
  438. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-xa.js +143 -0
  439. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-za.js +4 -4
  440. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_en-zw.js +4 -4
  441. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-419.js +19 -19
  442. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ar.js +19 -19
  443. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-bo.js +18 -18
  444. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-br.js +125 -0
  445. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-bz.js +125 -0
  446. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-cl.js +19 -19
  447. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-co.js +17 -17
  448. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-cr.js +18 -18
  449. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-cu.js +19 -19
  450. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-do.js +14 -14
  451. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ea.js +12 -12
  452. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ec.js +17 -17
  453. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-es.js +12 -12
  454. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-gq.js +14 -14
  455. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-gt.js +17 -17
  456. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-hn.js +17 -17
  457. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ic.js +12 -12
  458. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-mx.js +18 -18
  459. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ni.js +17 -17
  460. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-pa.js +13 -13
  461. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-pe.js +4 -4
  462. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ph.js +16 -16
  463. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-pr.js +13 -13
  464. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-py.js +19 -19
  465. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-sv.js +17 -17
  466. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-us.js +15 -15
  467. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-uy.js +4 -4
  468. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es-ve.js +12 -12
  469. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_es.js +12 -12
  470. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_et-ee.js +8 -8
  471. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_et.js +8 -8
  472. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_eu-es.js +16 -16
  473. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_eu.js +16 -16
  474. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ewo-cm.js +2 -2
  475. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fa-af.js +25 -25
  476. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fa-ir.js +6 -6
  477. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fa.js +4 -4
  478. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-cm.js +2 -2
  479. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-gn.js +2 -2
  480. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-mr.js +6 -6
  481. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ff-sn.js +2 -2
  482. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fi-fi.js +12 -12
  483. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fi.js +12 -12
  484. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fo-dk.js +143 -0
  485. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fo-fo.js +32 -32
  486. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fo.js +32 -32
  487. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-be.js +13 -13
  488. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bf.js +14 -14
  489. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bi.js +14 -14
  490. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bj.js +14 -14
  491. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-bl.js +12 -12
  492. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ca.js +5 -5
  493. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cd.js +12 -12
  494. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cf.js +14 -14
  495. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cg.js +14 -14
  496. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ch.js +17 -17
  497. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ci.js +14 -14
  498. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-cm.js +16 -16
  499. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-dj.js +18 -18
  500. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-dz.js +16 -16
  501. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-fr.js +12 -12
  502. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ga.js +14 -14
  503. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gf.js +12 -12
  504. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gn.js +14 -14
  505. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gp.js +12 -12
  506. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-gq.js +14 -14
  507. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ht.js +12 -12
  508. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-km.js +14 -14
  509. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-lu.js +12 -12
  510. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ma.js +19 -19
  511. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mc.js +12 -12
  512. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mf.js +12 -12
  513. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mg.js +14 -14
  514. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ml.js +14 -14
  515. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mq.js +12 -12
  516. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mr.js +18 -18
  517. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-mu.js +14 -14
  518. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-nc.js +14 -14
  519. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-ne.js +14 -14
  520. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-pf.js +14 -14
  521. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-pm.js +12 -12
  522. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-re.js +12 -12
  523. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-rw.js +14 -14
  524. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-sc.js +12 -12
  525. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-sn.js +14 -14
  526. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-sy.js +18 -18
  527. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-td.js +18 -18
  528. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-tg.js +14 -14
  529. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-tn.js +18 -18
  530. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-vu.js +18 -18
  531. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-wf.js +14 -14
  532. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr-yt.js +12 -12
  533. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fr.js +12 -12
  534. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fy-nl.js +36 -36
  535. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_fy.js +36 -36
  536. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gl-es.js +27 -27
  537. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gl.js +27 -27
  538. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw-ch.js +2 -2
  539. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw-fr.js +2 -2
  540. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw-li.js +2 -2
  541. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gsw.js +2 -2
  542. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gu-in.js +3 -3
  543. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gu.js +3 -3
  544. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_guz-ke.js +7 -7
  545. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_guz.js +7 -7
  546. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gv-im.js +8 -8
  547. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_gv.js +8 -8
  548. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha-gh.js +143 -0
  549. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha-ne.js +143 -0
  550. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha-ng.js +143 -0
  551. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ha.js +7 -7
  552. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_he-il.js +2 -2
  553. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_he.js +2 -2
  554. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hr-ba.js +5 -5
  555. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hr-hr.js +5 -5
  556. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hr.js +5 -5
  557. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hy-am.js +22 -22
  558. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_hy.js +20 -20
  559. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_id-id.js +3 -3
  560. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_id.js +1 -1
  561. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ig-ng.js +4 -4
  562. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ig.js +4 -4
  563. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ii-cn.js +17 -17
  564. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ii.js +17 -17
  565. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_in.js +1 -1
  566. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_is-is.js +2 -2
  567. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-ch.js +19 -19
  568. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-it.js +16 -16
  569. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-sm.js +16 -16
  570. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it-va.js +143 -0
  571. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_it.js +16 -16
  572. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_iw.js +2 -2
  573. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ja-jp.js +2 -2
  574. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jgo-cm.js +4 -4
  575. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jgo.js +2 -2
  576. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jmc-tz.js +6 -6
  577. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_jmc.js +4 -4
  578. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ka-ge.js +2 -2
  579. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ka.js +2 -2
  580. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kab-dz.js +7 -7
  581. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kab.js +7 -7
  582. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kam-ke.js +5 -5
  583. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kam.js +5 -5
  584. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kde-tz.js +6 -6
  585. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kde.js +4 -4
  586. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_khq-ml.js +2 -2
  587. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ki-ke.js +5 -5
  588. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ki.js +5 -5
  589. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kk-kz.js +125 -0
  590. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kk.js +28 -28
  591. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kkj-cm.js +2 -2
  592. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kl-gl.js +14 -14
  593. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kl.js +14 -14
  594. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kln-ke.js +5 -5
  595. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kln.js +5 -5
  596. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_km-kh.js +8 -8
  597. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_km.js +8 -8
  598. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kn-in.js +2 -2
  599. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kn.js +2 -2
  600. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ko-kp.js +4 -4
  601. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ko-kr.js +4 -4
  602. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ko.js +2 -2
  603. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kok-in.js +8 -8
  604. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kok.js +8 -8
  605. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ks-in.js +143 -0
  606. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksb-tz.js +6 -6
  607. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksb.js +4 -4
  608. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksf-cm.js +2 -2
  609. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksh-de.js +8 -8
  610. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ksh.js +8 -8
  611. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kw-gb.js +6 -6
  612. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_kw.js +6 -6
  613. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ky-kg.js +125 -0
  614. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ky.js +7 -7
  615. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lag-tz.js +6 -6
  616. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lag.js +4 -4
  617. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lg-ug.js +6 -6
  618. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lg.js +4 -4
  619. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lkt-us.js +9 -9
  620. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lkt.js +9 -9
  621. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ln-cf.js +2 -2
  622. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ln-cg.js +2 -2
  623. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lo-la.js +9 -9
  624. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lo.js +7 -7
  625. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lrc-iq.js +143 -0
  626. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lrc-ir.js +143 -0
  627. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lrc.js +143 -0
  628. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luo-ke.js +5 -5
  629. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luo.js +5 -5
  630. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luy-ke.js +5 -5
  631. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_luy.js +5 -5
  632. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lv-lv.js +25 -25
  633. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_lv.js +25 -25
  634. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mas-ke.js +5 -5
  635. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mas-tz.js +6 -6
  636. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mas.js +5 -5
  637. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mer-ke.js +5 -5
  638. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mer.js +5 -5
  639. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mfe-mu.js +2 -2
  640. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mg-mg.js +8 -8
  641. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mg.js +6 -6
  642. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mgh-mz.js +5 -5
  643. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mgh.js +5 -5
  644. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mgo-cm.js +2 -2
  645. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mk-mk.js +4 -4
  646. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mk.js +4 -4
  647. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ml-in.js +4 -4
  648. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ml.js +4 -4
  649. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mn-mn.js +125 -0
  650. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mn.js +6 -6
  651. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mo.js +143 -0
  652. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ms-bn.js +39 -13
  653. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ms-my.js +35 -9
  654. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ms-sg.js +125 -0
  655. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mua-cm.js +2 -2
  656. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_my-mm.js +10 -10
  657. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_my.js +8 -8
  658. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mzn-ir.js +143 -0
  659. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_mzn.js +143 -0
  660. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nb-no.js +6 -6
  661. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nb-sj.js +6 -6
  662. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nb.js +6 -6
  663. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nd-zw.js +4 -4
  664. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nd.js +4 -4
  665. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nds-de.js +143 -0
  666. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nds-nl.js +143 -0
  667. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nds.js +143 -0
  668. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ne-in.js +5 -5
  669. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ne-np.js +1 -1
  670. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ne.js +1 -1
  671. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-aw.js +12 -12
  672. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-be.js +12 -12
  673. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-bq.js +12 -12
  674. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-cw.js +12 -12
  675. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-nl.js +12 -12
  676. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-sr.js +12 -12
  677. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl-sx.js +12 -12
  678. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nl.js +12 -12
  679. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nmg-cm.js +2 -2
  680. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nnh-cm.js +5 -5
  681. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nnh.js +3 -3
  682. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_no-no.js +6 -6
  683. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_no.js +6 -6
  684. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nus-ss.js +143 -0
  685. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nus.js +1 -1
  686. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nyn-ug.js +6 -6
  687. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_nyn.js +4 -4
  688. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_om-et.js +5 -5
  689. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_om-ke.js +8 -8
  690. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_om.js +5 -5
  691. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_os-ge.js +1 -1
  692. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_os-ru.js +2 -2
  693. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_os.js +1 -1
  694. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-arab-pk.js +5 -5
  695. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-arab.js +3 -3
  696. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-guru-in.js +2 -2
  697. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa-guru.js +2 -2
  698. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pa.js +2 -2
  699. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pl-pl.js +4 -4
  700. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pl.js +4 -4
  701. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_prg-001.js +143 -0
  702. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_prg.js +143 -0
  703. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ps-af.js +10 -10
  704. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ps.js +8 -8
  705. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-ao.js +8 -8
  706. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-br.js +5 -5
  707. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-ch.js +125 -0
  708. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-cv.js +8 -8
  709. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-gq.js +125 -0
  710. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-gw.js +10 -10
  711. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-lu.js +125 -0
  712. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-mo.js +12 -12
  713. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-mz.js +8 -8
  714. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-pt.js +8 -8
  715. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-st.js +10 -10
  716. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt-tl.js +8 -8
  717. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_pt.js +5 -5
  718. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu-bo.js +7 -7
  719. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu-ec.js +7 -7
  720. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu-pe.js +6 -6
  721. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_qu.js +6 -6
  722. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rm-ch.js +2 -2
  723. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rm.js +2 -2
  724. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rn-bi.js +2 -2
  725. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ro-md.js +12 -12
  726. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ro-ro.js +19 -19
  727. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ro.js +19 -19
  728. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rof-tz.js +6 -6
  729. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rof.js +4 -4
  730. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-by.js +10 -10
  731. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-kg.js +9 -9
  732. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-kz.js +9 -9
  733. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-md.js +9 -9
  734. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-ru.js +10 -10
  735. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru-ua.js +8 -8
  736. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ru.js +10 -10
  737. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rw-rw.js +5 -5
  738. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rw.js +3 -3
  739. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rwk-tz.js +6 -6
  740. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_rwk.js +4 -4
  741. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sah-ru.js +40 -40
  742. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sah.js +40 -40
  743. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_saq-ke.js +5 -5
  744. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_saq.js +5 -5
  745. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sbp-tz.js +6 -6
  746. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sbp.js +4 -4
  747. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_se-fi.js +19 -19
  748. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_seh-mz.js +1 -1
  749. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_seh.js +1 -1
  750. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ses-ml.js +2 -2
  751. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sg-cf.js +2 -2
  752. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sh.js +143 -0
  753. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-latn-ma.js +3 -3
  754. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-latn.js +3 -3
  755. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-tfng-ma.js +3 -3
  756. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi-tfng.js +3 -3
  757. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_shi.js +3 -3
  758. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_si-lk.js +6 -6
  759. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_si.js +6 -6
  760. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sk-sk.js +4 -4
  761. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sk.js +4 -4
  762. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sl-si.js +3 -3
  763. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sl.js +3 -3
  764. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_smn-fi.js +51 -51
  765. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_smn.js +51 -51
  766. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sn-zw.js +14 -14
  767. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sn.js +14 -14
  768. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-dj.js +5 -5
  769. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-et.js +3 -3
  770. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-ke.js +7 -7
  771. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so-so.js +4 -4
  772. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_so.js +2 -2
  773. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq-al.js +24 -24
  774. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq-mk.js +18 -18
  775. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq-xk.js +18 -18
  776. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sq.js +22 -22
  777. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-ba.js +21 -21
  778. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-me.js +25 -25
  779. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-rs.js +8 -8
  780. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl-xk.js +22 -22
  781. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-cyrl.js +6 -6
  782. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-ba.js +21 -21
  783. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-me.js +25 -25
  784. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-rs.js +8 -8
  785. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn-xk.js +22 -22
  786. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr-latn.js +6 -6
  787. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sr.js +6 -6
  788. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv-ax.js +12 -12
  789. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv-fi.js +12 -12
  790. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv-se.js +12 -12
  791. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sv.js +12 -12
  792. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-cd.js +45 -45
  793. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-ke.js +6 -6
  794. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-tz.js +10 -10
  795. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw-ug.js +10 -10
  796. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_sw.js +8 -8
  797. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-in.js +14 -14
  798. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-lk.js +14 -14
  799. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-my.js +14 -14
  800. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta-sg.js +14 -14
  801. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ta.js +14 -14
  802. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_te-in.js +2 -2
  803. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_te.js +2 -2
  804. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_teo-ke.js +5 -5
  805. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_teo-ug.js +6 -6
  806. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_teo.js +4 -4
  807. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ti-er.js +22 -22
  808. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ti-et.js +45 -45
  809. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ti.js +45 -45
  810. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tk-tm.js +143 -0
  811. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tk.js +143 -0
  812. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_to-to.js +2 -2
  813. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_to.js +2 -2
  814. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tr-cy.js +9 -9
  815. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tr-tr.js +6 -6
  816. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tr.js +6 -6
  817. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_twq-ne.js +2 -2
  818. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tzm-ma.js +143 -0
  819. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_tzm.js +4 -4
  820. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ug-cn.js +143 -0
  821. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ug.js +10 -10
  822. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uk-ua.js +22 -22
  823. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uk.js +22 -22
  824. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ur-in.js +6 -6
  825. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ur-pk.js +9 -9
  826. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_ur.js +7 -7
  827. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-arab-af.js +19 -19
  828. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-arab.js +17 -17
  829. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-cyrl-uz.js +49 -49
  830. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-cyrl.js +47 -47
  831. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-latn-uz.js +41 -41
  832. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz-latn.js +39 -39
  833. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_uz.js +39 -39
  834. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vi-vn.js +12 -12
  835. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vi.js +10 -10
  836. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vo-001.js +22 -7
  837. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vo.js +22 -7
  838. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vun-tz.js +6 -6
  839. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_vun.js +4 -4
  840. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_xog-ug.js +6 -6
  841. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_xog.js +4 -4
  842. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yav-cm.js +2 -2
  843. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yi-001.js +3 -3
  844. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yi.js +3 -3
  845. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yo-bj.js +7 -7
  846. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yo-ng.js +5 -5
  847. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yo.js +5 -5
  848. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yue-hk.js +143 -0
  849. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_yue.js +143 -0
  850. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zgh-ma.js +3 -3
  851. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zgh.js +3 -3
  852. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-cn.js +4 -4
  853. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hans-cn.js +4 -4
  854. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hans.js +4 -4
  855. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hant-hk.js +4 -4
  856. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hant-mo.js +4 -4
  857. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh-hk.js +4 -4
  858. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zh.js +4 -4
  859. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zu-za.js +17 -17
  860. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/angular-locale_zu.js +17 -17
  861. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ar-xb.js +2 -0
  862. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ce-ru.js +2 -0
  863. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ce.js +2 -0
  864. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/cu-ru.js +2 -0
  865. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/cu.js +2 -0
  866. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/de-it.js +2 -0
  867. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-at.js +2 -0
  868. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-bi.js +2 -0
  869. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-ch.js +2 -0
  870. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-cy.js +2 -0
  871. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-de.js +2 -0
  872. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-dk.js +2 -0
  873. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-fi.js +2 -0
  874. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-il.js +2 -0
  875. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-nl.js +2 -0
  876. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-se.js +2 -0
  877. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-si.js +2 -0
  878. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-us-posix.js +2 -0
  879. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/en-xa.js +2 -0
  880. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/es-br.js +2 -0
  881. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/es-bz.js +2 -0
  882. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/fo-dk.js +2 -0
  883. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ha-gh.js +2 -0
  884. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ha-ne.js +2 -0
  885. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ha-ng.js +2 -0
  886. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/it-va.js +2 -0
  887. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/kk-kz.js +2 -0
  888. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ks-in.js +2 -0
  889. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ky-kg.js +2 -0
  890. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/lrc-iq.js +2 -0
  891. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/lrc-ir.js +2 -0
  892. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/lrc.js +2 -0
  893. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mn-mn.js +2 -0
  894. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mo.js +2 -0
  895. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ms-sg.js +2 -0
  896. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mzn-ir.js +2 -0
  897. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/mzn.js +2 -0
  898. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nds-de.js +2 -0
  899. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nds-nl.js +2 -0
  900. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nds.js +2 -0
  901. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/nus-ss.js +2 -0
  902. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/prg-001.js +2 -0
  903. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/prg.js +2 -0
  904. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/pt-ch.js +2 -0
  905. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/pt-gq.js +2 -0
  906. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/pt-lu.js +2 -0
  907. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/sh.js +2 -0
  908. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/tk-tm.js +2 -0
  909. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/tk.js +2 -0
  910. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/tzm-ma.js +2 -0
  911. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/ug-cn.js +2 -0
  912. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/yue-hk.js +2 -0
  913. data/engines/bastion/vendor/assets/javascripts/bastion/angular-i18n/yue.js +2 -0
  914. data/engines/bastion/vendor/assets/javascripts/bastion/angular-resource/angular-resource.js +407 -264
  915. data/engines/bastion/vendor/assets/javascripts/bastion/angular-route/angular-route.js +397 -156
  916. data/engines/bastion/vendor/assets/javascripts/bastion/angular-sanitize/angular-sanitize.js +516 -320
  917. data/engines/bastion/vendor/assets/javascripts/bastion/angular-ui-router/angular-ui-router.js +10551 -4465
  918. data/engines/bastion/vendor/assets/javascripts/bastion/angular/angular.js +10455 -4892
  919. data/engines/bastion/vendor/assets/javascripts/bastion/ngUpload/ng-upload.js +2 -2
  920. data/engines/bastion_katello/README.md +1 -0
  921. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-key.factory.js +2 -2
  922. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/activation-keys/activation-keys.routes.js +0 -1
  923. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/ansible-collections/ansible-collections.factory.js +3 -3
  924. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/common/api-error-handler.service.js +2 -0
  925. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/content-credentials.routes.js +0 -1
  926. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/details/views/content-credential-info.html +3 -3
  927. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-credentials/views/content-credentials.html +3 -3
  928. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/content-hosts-bulk-traces-modal.controller.js +65 -0
  929. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/bulk/views/content-hosts-bulk-traces-modal.html +79 -0
  930. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-host-modal-helper.service.js +11 -0
  931. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts-helper.service.js +6 -0
  932. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content-hosts.controller.js +5 -0
  933. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-packages-actions.controller.js +8 -1
  934. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/content-host-traces.controller.js +10 -9
  935. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-errata.html +1 -0
  936. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/content/views/content-host-traces.html +14 -1
  937. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/content-host-details.controller.js +23 -10
  938. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/details/views/content-host-info.html +20 -0
  939. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/content-hosts.html +4 -0
  940. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-hosts/views/register-client.html +1 -1
  941. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/content-views/details/content-view-promotion.controller.js +1 -1
  942. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/debs/deb.factory.js +3 -3
  943. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-manifest-lists/docker-manifest-list.factory.js +3 -3
  944. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-manifests/docker-manifest.factory.js +3 -3
  945. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.factory.js +2 -2
  946. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/docker-tags/docker-tags.routes.js +0 -1
  947. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/environments.routes.js +0 -1
  948. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/environments/views/environments.html +1 -0
  949. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.controller.js +15 -6
  950. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/errata.routes.js +3 -0
  951. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/errata/erratum.factory.js +2 -2
  952. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/files/file.factory.js +3 -3
  953. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collection.factory.js +2 -2
  954. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/host-collections/host-collections.routes.js +0 -1
  955. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-bulk-action.factory.js +2 -1
  956. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/hosts/host-traces-resolve.factory.js +18 -0
  957. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/de.po +3869 -2260
  958. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/es.po +4155 -2272
  959. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/fr.po +4257 -2352
  960. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/it.po +3840 -2253
  961. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ja.po +3999 -2409
  962. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ko.po +3853 -2291
  963. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/pt_BR.po +4388 -2554
  964. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/ru.po +4121 -2427
  965. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_CN.po +3936 -2241
  966. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/i18n/locale/zh_TW.po +3824 -2189
  967. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/module-streams/module-stream.factory.js +3 -3
  968. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/package-groups/package-group.factory.js +3 -3
  969. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/packages/package.factory.js +2 -2
  970. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/repository-details.controller.js +1 -1
  971. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-advanced-sync-options.html +5 -5
  972. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/details/views/repository-info.html +1 -1
  973. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/details/repositories/new/views/new-repository.html +1 -3
  974. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/product.factory.js +2 -2
  975. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/products/products.routes.js +0 -1
  976. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/sync-plans/sync-plans.routes.js +0 -1
  977. data/engines/bastion_katello/app/assets/javascripts/bastion_katello/tasks/task-details.controller.js +3 -2
  978. data/lib/katello.rb +4 -1
  979. data/lib/katello/engine.rb +25 -3
  980. data/lib/katello/permissions/host_permissions.rb +3 -0
  981. data/lib/katello/permissions/organization_permissions.rb +1 -2
  982. data/lib/katello/plugin.rb +12 -3
  983. data/lib/katello/prevent_json_parsing.rb +1 -1
  984. data/lib/katello/scheduled_jobs.rb +1 -1
  985. data/lib/katello/tasks/clean_backend_objects.rake +1 -1
  986. data/lib/katello/tasks/common.rake +7 -0
  987. data/lib/katello/tasks/delete_orphaned_content.rake +3 -1
  988. data/lib/katello/tasks/import_applicability.rake +4 -6
  989. data/lib/katello/tasks/jenkins.rake +1 -1
  990. data/lib/katello/tasks/pulp3_content_switchover.rake +6 -8
  991. data/lib/katello/tasks/pulp3_migration.rake +2 -0
  992. data/lib/katello/tasks/pulp3_post_migration_check.rake +4 -0
  993. data/lib/katello/tasks/receptor/extract_orgs.rake +27 -0
  994. data/lib/katello/tasks/reimport.rake +15 -19
  995. data/lib/katello/tasks/repository.rake +7 -11
  996. data/lib/katello/tasks/reset.rake +12 -13
  997. data/lib/katello/tasks/update_content_default_http_proxy.rake +1 -1
  998. data/lib/katello/tasks/update_subscription_facet_backend_data.rake +14 -16
  999. data/lib/katello/tasks/upgrades/3.10/clear_invalid_repo_credentials.rake +1 -1
  1000. data/lib/katello/tasks/upgrades/3.10/update_gpg_key_urls.rake +1 -1
  1001. data/lib/katello/tasks/upgrades/3.11/update_puppet_repos.rake +9 -11
  1002. data/lib/katello/tasks/upgrades/3.15/set_sub_facet_dmi_uuid.rake +1 -1
  1003. data/lib/katello/tasks/upgrades/3.16/update_applicable_el8_hosts.rake +29 -0
  1004. data/lib/katello/tasks/upgrades/3.8/clear_checksum_type.rake +18 -22
  1005. data/lib/katello/version.rb +1 -1
  1006. data/lib/monkeys/ar_postgres_evr_t.rb +24 -0
  1007. data/lib/monkeys/fx_sqlite_skip.rb +13 -0
  1008. data/locale/action_names.rb +47 -39
  1009. data/locale/bn/katello.po +4004 -2559
  1010. data/locale/cs/katello.po +3744 -2221
  1011. data/locale/de/katello.po +4293 -3046
  1012. data/locale/en/katello.po +3125 -1558
  1013. data/locale/es/katello.po +4269 -3013
  1014. data/locale/fr/katello.po +4287 -3077
  1015. data/locale/gu/katello.po +4016 -2578
  1016. data/locale/hi/katello.po +4015 -2568
  1017. data/locale/it/katello.po +4279 -3040
  1018. data/locale/ja/katello.po +4326 -2856
  1019. data/locale/katello.pot +2618 -1464
  1020. data/locale/kn/katello.po +4023 -2587
  1021. data/locale/ko/katello.po +4311 -2818
  1022. data/locale/mr/katello.po +3962 -2509
  1023. data/locale/or/katello.po +4008 -2561
  1024. data/locale/pa/katello.po +3975 -2516
  1025. data/locale/pt/katello.po +3373 -1837
  1026. data/locale/pt_BR/katello.po +4248 -2967
  1027. data/locale/ru/katello.po +4295 -2901
  1028. data/locale/ta/katello.po +3998 -2560
  1029. data/locale/te/katello.po +4018 -2569
  1030. data/locale/zh_CN/katello.po +4335 -2806
  1031. data/locale/zh_TW/katello.po +4463 -2962
  1032. data/package.json +13 -39
  1033. data/webpack/__mocks__/foremanReact/components/{BreadcrumbBar.js → BreadcrumbBar/index.js} +0 -1
  1034. data/webpack/__mocks__/react-intl/index.js +3 -0
  1035. data/webpack/__mocks__/react-intl/locale-data/en.js +1 -0
  1036. data/webpack/containers/Application/config.js +5 -0
  1037. data/webpack/containers/Application/overrides.scss +8 -0
  1038. data/webpack/mockRequest.js +1 -0
  1039. data/webpack/move_to_foreman/common/helpers.js +2 -1
  1040. data/webpack/move_to_foreman/components/common/table/components/__snapshots__/Table.test.js.snap +1 -0
  1041. data/webpack/scenes/AnsibleCollections/Details/AnsibleCollectionDetailsActions.js +2 -2
  1042. data/webpack/scenes/AnsibleCollections/Details/__tests__/__snapshots__/AnsibleCollectionDetailsActions.test.js.snap +4 -0
  1043. data/webpack/scenes/ContentViews/ContentViewSelectors.js +13 -0
  1044. data/webpack/scenes/ContentViews/ContentViewsActions.js +18 -0
  1045. data/webpack/scenes/ContentViews/ContentViewsConstants.js +3 -0
  1046. data/webpack/scenes/ContentViews/ContentViewsPage.js +30 -0
  1047. data/webpack/scenes/ContentViews/Table/ContentViewsTable.js +104 -0
  1048. data/webpack/scenes/ContentViews/Table/TableWrapper.js +55 -0
  1049. data/webpack/scenes/ContentViews/Table/actionResolver.js +28 -0
  1050. data/webpack/scenes/ContentViews/Table/index.js +3 -0
  1051. data/webpack/scenes/ContentViews/Table/tableDataGenerator.js +133 -0
  1052. data/webpack/scenes/ContentViews/__tests__/contentViewList.fixtures.json +228 -0
  1053. data/webpack/scenes/ContentViews/__tests__/contentViewPage.test.js +99 -0
  1054. data/webpack/scenes/ContentViews/components/ContentViewName.js +33 -0
  1055. data/webpack/scenes/ContentViews/components/EmptyStateMessage.js +43 -0
  1056. data/webpack/scenes/ContentViews/components/IconWithCount.js +18 -0
  1057. data/webpack/scenes/ContentViews/components/IconWithCount.scss +3 -0
  1058. data/webpack/scenes/ContentViews/components/Loading.js +31 -0
  1059. data/webpack/scenes/ContentViews/components/contentViewName.scss +9 -0
  1060. data/webpack/scenes/ContentViews/details/ContentViewDetailActions.js +12 -0
  1061. data/webpack/scenes/ContentViews/details/ContentViewDetailSelectors.js +15 -0
  1062. data/webpack/scenes/ContentViews/details/DetailsContainer.js +35 -0
  1063. data/webpack/scenes/ContentViews/expansions/DetailsExpansion.js +11 -0
  1064. data/webpack/scenes/ContentViews/expansions/EnvironmentsExpansion.js +19 -0
  1065. data/webpack/scenes/ContentViews/expansions/RepositoriesExpansion.js +12 -0
  1066. data/webpack/scenes/ContentViews/expansions/VersionsExpansion.js +11 -0
  1067. data/webpack/scenes/ContentViews/index.js +4 -0
  1068. data/webpack/scenes/ModuleStreams/Details/ModuleStreamDetailsActions.js +2 -2
  1069. data/webpack/scenes/ModuleStreams/Details/__tests__/__snapshots__/ModuleStreamDetailsActions.test.js.snap +4 -0
  1070. data/webpack/scenes/RedHatRepositories/__tests__/__snapshots__/RedHatRepositoriesPage.test.js.snap +8 -0
  1071. data/webpack/scenes/Subscriptions/Manifest/__tests__/__snapshots__/ManageManifestModal.test.js.snap +3 -2
  1072. data/webpack/scenes/Subscriptions/SubscriptionActions.js +12 -14
  1073. data/webpack/scenes/Subscriptions/SubscriptionsPage.js +14 -4
  1074. data/webpack/scenes/Subscriptions/SubscriptionsSelectors.js +8 -0
  1075. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsActions.test.js +11 -22
  1076. data/webpack/scenes/Subscriptions/__tests__/SubscriptionsPage.test.js +11 -6
  1077. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsActions.test.js.snap +21 -17
  1078. data/webpack/scenes/Subscriptions/__tests__/__snapshots__/SubscriptionsPage.test.js.snap +8 -0
  1079. data/webpack/scenes/Subscriptions/components/SubscriptionsTable/__tests__/SubscriptionsTable.test.js +0 -1
  1080. data/webpack/scenes/Subscriptions/components/SubscriptionsToolbar/__snapshots__/SubscriptionsToolbar.test.js.snap +10 -0
  1081. data/webpack/scenes/Subscriptions/index.js +5 -1
  1082. data/webpack/scenes/Tasks/TaskActions.js +2 -1
  1083. data/webpack/scenes/Tasks/__tests__/__snapshots__/TaskActions.test.js.snap +12 -8
  1084. data/webpack/test-utils/nockWrapper.js +17 -0
  1085. data/webpack/test-utils/react-testing-lib-wrapper.js +42 -0
  1086. data/webpack/test_setup.js +10 -0
  1087. metadata +269 -49
  1088. data/app/lib/actions/candlepin/owner/auto_attach.rb +0 -15
  1089. data/app/lib/actions/katello/organization/auto_attach_subscriptions.rb +0 -16
  1090. data/app/services/katello/candlepin_listening_service.rb +0 -94
  1091. data/config/initializers/multipart_json_fix.rb +0 -15
  1092. data/config/initializers/runcible.rb +0 -5
  1093. data/lib/monkeys/json_munging_patch.rb +0 -25
  1094. data/lib/monkeys/multi_json_empty_fix.rb +0 -14
  1095. data/webpack/__mocks__/foremanReact/common/I18n.js +0 -5
  1096. data/webpack/__mocks__/foremanReact/common/helpers.js +0 -21
  1097. data/webpack/__mocks__/foremanReact/common/keyCodes.js +0 -8
  1098. data/webpack/__mocks__/foremanReact/components/PermissionDenied/index.js +0 -2
  1099. data/webpack/__mocks__/foremanReact/components/common/ModalProgressBar.js +0 -8
  1100. data/webpack/__mocks__/foremanReact/components/common/table.js +0 -6
  1101. data/webpack/__mocks__/foremanReact/redux/API.js +0 -6
  1102. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/IntervalSelectors.js +0 -6
  1103. data/webpack/__mocks__/foremanReact/redux/middlewares/IntervalMiddleware/index.js +0 -11
@@ -0,0 +1,45 @@
1
+ class EncryptRootRepositoryUpstreamPassword < ActiveRecord::Migration[6.0]
2
+ def encrypt_password_for_audit(audit)
3
+ changes = audit.audited_changes
4
+ name = :upstream_password.to_s
5
+ change = changes[name]
6
+
7
+ if change.is_a? Array
8
+ changes[name] = change.map { |_| AuditExtensions::REDACTED }
9
+ elsif change
10
+ changes[name] = AuditExtensions::REDACTED
11
+ end
12
+
13
+ audit.save!
14
+ end
15
+
16
+ def encrypt_upstream_password_changes_for_audits(root_repository)
17
+ root_repository.audits.each do |audit|
18
+ if audit.audited_changes.key? "upstream_password"
19
+ encrypt_password_for_audit(audit)
20
+ end
21
+ end
22
+ end
23
+
24
+ def modify_root_repository_upstream_password(action)
25
+ encryptable_field = :upstream_password
26
+
27
+ ::Katello::RootRepository.all.each do |root_repository|
28
+ original_upstream_password = root_repository.read_attribute(encryptable_field)
29
+ root_repository.update_column(encryptable_field,
30
+ root_repository.send("#{action}_field", original_upstream_password))
31
+
32
+ if action == :encrypt
33
+ encrypt_upstream_password_changes_for_audits(root_repository)
34
+ end
35
+ end
36
+ end
37
+
38
+ def up
39
+ modify_root_repository_upstream_password(:encrypt)
40
+ end
41
+
42
+ def down
43
+ modify_root_repository_upstream_password(:decrypt)
44
+ end
45
+ end
@@ -31,6 +31,14 @@ User.as(::User.anonymous_api_admin.login) do
31
31
  :mailer => 'Katello::ErrataMailer',
32
32
  :method => 'promote_errata',
33
33
  :subscription_type => 'alert'
34
+ },
35
+
36
+ {:name => :subscriptions_expiring_soon,
37
+ :description => N_('A list of subscriptions expiring soon'),
38
+ :mailer => 'Katello::SubscriptionMailer',
39
+ :method => 'subscription_expiry',
40
+ :subscription_type => 'report',
41
+ :queryable => true
34
42
  }
35
43
  ]
36
44
 
@@ -4,5 +4,5 @@
4
4
  # !!! PLEASE KEEP THIS SCRIPT IDEMPOTENT !!!
5
5
  #
6
6
  User.as(::User.anonymous_api_admin.login) do
7
- Setting.find_by(:name => "dynflow_enable_console").update_attributes!(:value => true) if Rails.env.development?
7
+ Setting.find_by(:name => "dynflow_enable_console").update!(:value => true) if Rails.env.development?
8
8
  end
@@ -19,6 +19,12 @@ blueprints = [
19
19
  message: N_('%{expiring_subs} subscriptions in %{subject} are going to expire in less than %{days} days. Please renew them before they expire to guarantee your hosts will continue receiving content.'),
20
20
  level: 'warning'
21
21
  },
22
+ {
23
+ group: N_('Subscriptions'),
24
+ name: 'manifest_expired_warning',
25
+ message: N_('The manifest imported within Organization %{subject} is no longer valid. Attempted CDN access returned Forbidden. Refreshing the manifest may resolve this issue.'),
26
+ level: 'warning'
27
+ },
22
28
  {
23
29
  group: N_('Subscriptions'),
24
30
  name: 'manifest_import_success',
@@ -12,6 +12,7 @@ UpgradeTask.define_tasks(:katello) do
12
12
  {:name => 'katello:upgrades:3.12:remove_pulp2_notifier'},
13
13
  {:name => 'katello:upgrades:3.13:republish_deb_metadata'},
14
14
  {:name => 'katello:upgrades:3.15:set_sub_facet_dmi_uuid'},
15
- {:name => 'katello:upgrades:3.15:reindex_rpm_modular'}
15
+ {:name => 'katello:upgrades:3.15:reindex_rpm_modular'},
16
+ {:name => 'katello:upgrades:3.16:update_applicable_el8_hosts'}
16
17
  ]
17
18
  end
@@ -12,8 +12,8 @@ if Katello.with_remote_execution?
12
12
  template = JobTemplate.import!(File.read(template), :default => true, :locked => true, :update => sync)
13
13
  end
14
14
 
15
- template.organizations << Organization.unscoped.all if template && template.organizations.empty?
16
- template.locations << Location.unscoped.all if template && template.locations.empty?
15
+ template.organizations << Organization.unscoped.all if template&.organizations&.empty?
16
+ template.locations << Location.unscoped.all if template&.locations&.empty?
17
17
  end
18
18
  end
19
19
  end
@@ -0,0 +1,5 @@
1
+ CREATE TRIGGER evr_insert_trigger_katello_installed_packages
2
+ BEFORE INSERT
3
+ ON katello_installed_packages
4
+ FOR EACH ROW
5
+ EXECUTE PROCEDURE evr_trigger();
@@ -0,0 +1,5 @@
1
+ CREATE TRIGGER evr_insert_trigger_katello_rpms
2
+ BEFORE INSERT
3
+ ON katello_rpms
4
+ FOR EACH ROW
5
+ EXECUTE PROCEDURE evr_trigger();
@@ -0,0 +1,10 @@
1
+ CREATE TRIGGER evr_update_trigger_katello_installed_packages
2
+ BEFORE UPDATE OF epoch, version, release
3
+ ON katello_installed_packages
4
+ FOR EACH ROW
5
+ WHEN (
6
+ OLD.epoch IS DISTINCT FROM NEW.epoch OR
7
+ OLD.version IS DISTINCT FROM NEW.version OR
8
+ OLD.release IS DISTINCT FROM NEW.release
9
+ )
10
+ EXECUTE PROCEDURE evr_trigger();
@@ -0,0 +1,10 @@
1
+ CREATE TRIGGER evr_update_trigger_katello_rpms
2
+ BEFORE UPDATE OF epoch, version, release
3
+ ON katello_rpms
4
+ FOR EACH ROW
5
+ WHEN (
6
+ OLD.epoch IS DISTINCT FROM NEW.epoch OR
7
+ OLD.version IS DISTINCT FROM NEW.version OR
8
+ OLD.release IS DISTINCT FROM NEW.release
9
+ )
10
+ EXECUTE PROCEDURE evr_trigger();
@@ -24,7 +24,7 @@ angular.module('Bastion').config(
24
24
  ['$httpProvider', '$provide', 'BastionConfig',
25
25
  function ($httpProvider, $provide, BastionConfig) {
26
26
  $httpProvider.defaults.headers.common = {
27
- Accept: 'application/json, text/plain, version=2; */*',
27
+ Accept: 'application/json, text/plain, */*',
28
28
  'X-CSRF-TOKEN': angular.element('meta[name=csrf-token]').attr('content')
29
29
  };
30
30
 
@@ -59,7 +59,7 @@ angular.module('Bastion.routing', ['ui.router']);
59
59
  var $window = $injector.get('$window'),
60
60
  $state = $injector.get('$state'),
61
61
  rootPath = getRootPath($location.path()),
62
- url = $location.absUrl(),
62
+ url = $location.url(),
63
63
  foundParentState;
64
64
 
65
65
  // ensure we don't double encode +s
@@ -1,24 +1,10 @@
1
1
  /**
2
- * @license AngularJS v1.5.5
3
- * (c) 2010-2016 Google, Inc. http://angularjs.org
2
+ * @license AngularJS v1.7.9
3
+ * (c) 2010-2018 Google, Inc. http://angularjs.org
4
4
  * License: MIT
5
5
  */
6
6
  (function(window, angular) {'use strict';
7
7
 
8
- /* jshint ignore:start */
9
- var noop = angular.noop;
10
- var copy = angular.copy;
11
- var extend = angular.extend;
12
- var jqLite = angular.element;
13
- var forEach = angular.forEach;
14
- var isArray = angular.isArray;
15
- var isString = angular.isString;
16
- var isObject = angular.isObject;
17
- var isUndefined = angular.isUndefined;
18
- var isDefined = angular.isDefined;
19
- var isFunction = angular.isFunction;
20
- var isElement = angular.isElement;
21
-
22
8
  var ELEMENT_NODE = 1;
23
9
  var COMMENT_NODE = 8;
24
10
 
@@ -43,7 +29,7 @@ var CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMA
43
29
  // Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit
44
30
  // therefore there is no reason to test anymore for other vendor prefixes:
45
31
  // http://caniuse.com/#search=transition
46
- if (isUndefined(window.ontransitionend) && isDefined(window.onwebkittransitionend)) {
32
+ if ((window.ontransitionend === undefined) && (window.onwebkittransitionend !== undefined)) {
47
33
  CSS_PREFIX = '-webkit-';
48
34
  TRANSITION_PROP = 'WebkitTransition';
49
35
  TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';
@@ -52,7 +38,7 @@ if (isUndefined(window.ontransitionend) && isDefined(window.onwebkittransitionen
52
38
  TRANSITIONEND_EVENT = 'transitionend';
53
39
  }
54
40
 
55
- if (isUndefined(window.onanimationend) && isDefined(window.onwebkitanimationend)) {
41
+ if ((window.onanimationend === undefined) && (window.onwebkitanimationend !== undefined)) {
56
42
  CSS_PREFIX = '-webkit-';
57
43
  ANIMATION_PROP = 'WebkitAnimation';
58
44
  ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';
@@ -74,14 +60,10 @@ var ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY;
74
60
  var TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY;
75
61
  var TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY;
76
62
 
77
- var isPromiseLike = function(p) {
78
- return p && p.then ? true : false;
79
- };
80
-
81
63
  var ngMinErr = angular.$$minErr('ng');
82
64
  function assertArg(arg, name, reason) {
83
65
  if (!arg) {
84
- throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required"));
66
+ throw ngMinErr('areq', 'Argument \'{0}\' is {1}', (name || '?'), (reason || 'required'));
85
67
  }
86
68
  return arg;
87
69
  }
@@ -132,8 +114,7 @@ function stripCommentsFromElement(element) {
132
114
  if (element instanceof jqLite) {
133
115
  switch (element.length) {
134
116
  case 0:
135
- return [];
136
- break;
117
+ return element;
137
118
 
138
119
  case 1:
139
120
  // there is no point of stripping anything if the element
@@ -146,7 +127,6 @@ function stripCommentsFromElement(element) {
146
127
 
147
128
  default:
148
129
  return jqLite(extractElementNode(element));
149
- break;
150
130
  }
151
131
  }
152
132
 
@@ -159,7 +139,7 @@ function extractElementNode(element) {
159
139
  if (!element[0]) return element;
160
140
  for (var i = 0; i < element.length; i++) {
161
141
  var elm = element[i];
162
- if (elm.nodeType == ELEMENT_NODE) {
142
+ if (elm.nodeType === ELEMENT_NODE) {
163
143
  return elm;
164
144
  }
165
145
  }
@@ -187,7 +167,7 @@ function applyAnimationClassesFactory($$jqLite) {
187
167
  $$removeClass($$jqLite, element, options.removeClass);
188
168
  options.removeClass = null;
189
169
  }
190
- }
170
+ };
191
171
  }
192
172
 
193
173
  function prepareAnimationOptions(options) {
@@ -290,10 +270,10 @@ function resolveElementClasses(existing, toAdd, toRemove) {
290
270
  var prop, allow;
291
271
  if (val === ADD_CLASS) {
292
272
  prop = 'addClass';
293
- allow = !existing[klass];
273
+ allow = !existing[klass] || existing[klass + REMOVE_CLASS_SUFFIX];
294
274
  } else if (val === REMOVE_CLASS) {
295
275
  prop = 'removeClass';
296
- allow = existing[klass];
276
+ allow = existing[klass] || existing[klass + ADD_CLASS_SUFFIX];
297
277
  }
298
278
  if (allow) {
299
279
  if (classes[prop].length) {
@@ -323,10 +303,10 @@ function resolveElementClasses(existing, toAdd, toRemove) {
323
303
  }
324
304
 
325
305
  function getDomNode(element) {
326
- return (element instanceof angular.element) ? element[0] : element;
306
+ return (element instanceof jqLite) ? element[0] : element;
327
307
  }
328
308
 
329
- function applyGeneratedPreparationClasses(element, event, options) {
309
+ function applyGeneratedPreparationClasses($$jqLite, element, event, options) {
330
310
  var classes = '';
331
311
  if (event) {
332
312
  classes = pendClasses(event, EVENT_CLASS_PREFIX, true);
@@ -354,15 +334,6 @@ function clearGeneratedClasses(element, options) {
354
334
  }
355
335
  }
356
336
 
357
- function blockTransitions(node, duration) {
358
- // we use a negative delay value since it performs blocking
359
- // yet it doesn't kill any existing transitions running on the
360
- // same element which makes this safe for class-based animations
361
- var value = duration ? '-' + duration + 's' : '';
362
- applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]);
363
- return [TRANSITION_DELAY_PROP, value];
364
- }
365
-
366
337
  function blockKeyframeAnimations(node, applyBlock) {
367
338
  var value = applyBlock ? 'paused' : '';
368
339
  var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY;
@@ -382,6 +353,17 @@ function concatWithSpace(a,b) {
382
353
  return a + ' ' + b;
383
354
  }
384
355
 
356
+ var helpers = {
357
+ blockTransitions: function(node, duration) {
358
+ // we use a negative delay value since it performs blocking
359
+ // yet it doesn't kill any existing transitions running on the
360
+ // same element which makes this safe for class-based animations
361
+ var value = duration ? '-' + duration + 's' : '';
362
+ applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]);
363
+ return [TRANSITION_DELAY_PROP, value];
364
+ }
365
+ };
366
+
385
367
  var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
386
368
  var queue, cancelFn;
387
369
 
@@ -443,7 +425,7 @@ var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
443
425
  * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move`
444
426
  * (structural) animation, child elements that also have an active structural animation are not animated.
445
427
  *
446
- * Note that even if `ngAnimteChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation).
428
+ * Note that even if `ngAnimateChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation).
447
429
  *
448
430
  *
449
431
  * @param {string} ngAnimateChildren If the value is empty, `true` or `on`,
@@ -452,7 +434,7 @@ var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
452
434
  * @example
453
435
  * <example module="ngAnimateChildren" name="ngAnimateChildren" deps="angular-animate.js" animations="true">
454
436
  <file name="index.html">
455
- <div ng-controller="mainController as main">
437
+ <div ng-controller="MainController as main">
456
438
  <label>Show container? <input type="checkbox" ng-model="main.enterElement" /></label>
457
439
  <label>Animate children? <input type="checkbox" ng-model="main.animateChildren" /></label>
458
440
  <hr>
@@ -502,7 +484,7 @@ var $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {
502
484
  </file>
503
485
  <file name="script.js">
504
486
  angular.module('ngAnimateChildren', ['ngAnimate'])
505
- .controller('mainController', function() {
487
+ .controller('MainController', function MainController() {
506
488
  this.animateChildren = false;
507
489
  this.enterElement = false;
508
490
  });
@@ -513,7 +495,7 @@ var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) {
513
495
  return {
514
496
  link: function(scope, element, attrs) {
515
497
  var val = attrs.ngAnimateChildren;
516
- if (angular.isString(val) && val.length === 0) { //empty attribute
498
+ if (isString(val) && val.length === 0) { //empty attribute
517
499
  element.data(NG_ANIMATE_CHILDREN_DATA, true);
518
500
  } else {
519
501
  // Interpolate and set the value, so that it is available to
@@ -530,6 +512,8 @@ var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) {
530
512
  };
531
513
  }];
532
514
 
515
+ /* exported $AnimateCssProvider */
516
+
533
517
  var ANIMATE_TIMER_KEY = '$$animateCss';
534
518
 
535
519
  /**
@@ -546,11 +530,11 @@ var ANIMATE_TIMER_KEY = '$$animateCss';
546
530
  * Note that only browsers that support CSS transitions and/or keyframe animations are capable of
547
531
  * rendering animations triggered via `$animateCss` (bad news for IE9 and lower).
548
532
  *
549
- * ## Usage
533
+ * ## General Use
550
534
  * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that
551
535
  * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however,
552
536
  * any automatic control over cancelling animations and/or preventing animations from being run on
553
- * child elements will not be handled by Angular. For this to work as expected, please use `$animate` to
537
+ * child elements will not be handled by AngularJS. For this to work as expected, please use `$animate` to
554
538
  * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger
555
539
  * the CSS animation.
556
540
  *
@@ -747,7 +731,6 @@ var ANIMATE_TIMER_KEY = '$$animateCss';
747
731
  * * `end` - This method will cancel the animation and remove all applied CSS classes and styles.
748
732
  */
749
733
  var ONE_SECOND = 1000;
750
- var BASE_TEN = 10;
751
734
 
752
735
  var ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;
753
736
  var CLOSING_TIME_BUFFER = 1.5;
@@ -809,7 +792,7 @@ function parseMaxTime(str) {
809
792
  forEach(values, function(value) {
810
793
  // it's always safe to consider only second values and omit `ms` values since
811
794
  // getComputedStyle will always handle the conversion for us
812
- if (value.charAt(value.length - 1) == 's') {
795
+ if (value.charAt(value.length - 1) === 's') {
813
796
  value = value.substring(0, value.length - 1);
814
797
  }
815
798
  value = parseFloat(value) || 0;
@@ -833,33 +816,6 @@ function getCssTransitionDurationStyle(duration, applyOnlyDuration) {
833
816
  return [style, value];
834
817
  }
835
818
 
836
- function createLocalCacheLookup() {
837
- var cache = Object.create(null);
838
- return {
839
- flush: function() {
840
- cache = Object.create(null);
841
- },
842
-
843
- count: function(key) {
844
- var entry = cache[key];
845
- return entry ? entry.total : 0;
846
- },
847
-
848
- get: function(key) {
849
- var entry = cache[key];
850
- return entry && entry.value;
851
- },
852
-
853
- put: function(key, value) {
854
- if (!cache[key]) {
855
- cache[key] = { total: 1, value: value };
856
- } else {
857
- cache[key].total++;
858
- }
859
- }
860
- };
861
- }
862
-
863
819
  // we do not reassign an already present style value since
864
820
  // if we detect the style property value again we may be
865
821
  // detecting styles that were added via the `from` styles.
@@ -877,27 +833,17 @@ function registerRestorableStyles(backup, node, properties) {
877
833
  });
878
834
  }
879
835
 
880
- var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
881
- var gcsLookup = createLocalCacheLookup();
882
- var gcsStaggerLookup = createLocalCacheLookup();
836
+ var $AnimateCssProvider = ['$animateProvider', /** @this */ function($animateProvider) {
883
837
 
884
- this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout',
838
+ this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', '$$animateCache',
885
839
  '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue',
886
- function($window, $$jqLite, $$AnimateRunner, $timeout,
840
+ function($window, $$jqLite, $$AnimateRunner, $timeout, $$animateCache,
887
841
  $$forceReflow, $sniffer, $$rAFScheduler, $$animateQueue) {
888
842
 
889
843
  var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
890
844
 
891
- var parentCounter = 0;
892
- function gcsHashFn(node, extraClasses) {
893
- var KEY = "$$ngAnimateParentKey";
894
- var parentNode = node.parentNode;
895
- var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter);
896
- return parentID + '-' + node.getAttribute('class') + '-' + extraClasses;
897
- }
898
-
899
- function computeCachedCssStyles(node, className, cacheKey, properties) {
900
- var timings = gcsLookup.get(cacheKey);
845
+ function computeCachedCssStyles(node, className, cacheKey, allowNoDuration, properties) {
846
+ var timings = $$animateCache.get(cacheKey);
901
847
 
902
848
  if (!timings) {
903
849
  timings = computeCssStyles($window, node, properties);
@@ -906,20 +852,26 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
906
852
  }
907
853
  }
908
854
 
855
+ // if a css animation has no duration we
856
+ // should mark that so that repeated addClass/removeClass calls are skipped
857
+ var hasDuration = allowNoDuration || (timings.transitionDuration > 0 || timings.animationDuration > 0);
858
+
909
859
  // we keep putting this in multiple times even though the value and the cacheKey are the same
910
860
  // because we're keeping an internal tally of how many duplicate animations are detected.
911
- gcsLookup.put(cacheKey, timings);
861
+ $$animateCache.put(cacheKey, timings, hasDuration);
862
+
912
863
  return timings;
913
864
  }
914
865
 
915
866
  function computeCachedCssStaggerStyles(node, className, cacheKey, properties) {
916
867
  var stagger;
868
+ var staggerCacheKey = 'stagger-' + cacheKey;
917
869
 
918
870
  // if we have one or more existing matches of matching elements
919
871
  // containing the same parent + CSS styles (which is how cacheKey works)
920
872
  // then staggering is possible
921
- if (gcsLookup.count(cacheKey) > 0) {
922
- stagger = gcsStaggerLookup.get(cacheKey);
873
+ if ($$animateCache.count(cacheKey) > 0) {
874
+ stagger = $$animateCache.get(staggerCacheKey);
923
875
 
924
876
  if (!stagger) {
925
877
  var staggerClassName = pendClasses(className, '-stagger');
@@ -934,20 +886,18 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
934
886
 
935
887
  $$jqLite.removeClass(node, staggerClassName);
936
888
 
937
- gcsStaggerLookup.put(cacheKey, stagger);
889
+ $$animateCache.put(staggerCacheKey, stagger, true);
938
890
  }
939
891
  }
940
892
 
941
893
  return stagger || {};
942
894
  }
943
895
 
944
- var cancelLastRAFRequest;
945
896
  var rafWaitQueue = [];
946
897
  function waitUntilQuiet(callback) {
947
898
  rafWaitQueue.push(callback);
948
899
  $$rAFScheduler.waitUntilQuiet(function() {
949
- gcsLookup.flush();
950
- gcsStaggerLookup.flush();
900
+ $$animateCache.flush();
951
901
 
952
902
  // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable.
953
903
  // PLEASE EXAMINE THE `$$forceReflow` service to understand why.
@@ -962,8 +912,8 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
962
912
  });
963
913
  }
964
914
 
965
- function computeTimings(node, className, cacheKey) {
966
- var timings = computeCachedCssStyles(node, className, cacheKey, DETECT_CSS_PROPERTIES);
915
+ function computeTimings(node, className, cacheKey, allowNoDuration) {
916
+ var timings = computeCachedCssStyles(node, className, cacheKey, allowNoDuration, DETECT_CSS_PROPERTIES);
967
917
  var aD = timings.animationDelay;
968
918
  var tD = timings.transitionDelay;
969
919
  timings.maxDelay = aD && tD
@@ -1050,7 +1000,6 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1050
1000
 
1051
1001
  var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim();
1052
1002
  var fullClassName = classes + ' ' + preparationClasses;
1053
- var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX);
1054
1003
  var hasToStyles = styles.to && Object.keys(styles.to).length > 0;
1055
1004
  var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0;
1056
1005
 
@@ -1063,7 +1012,12 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1063
1012
  return closeAndReturnNoopAnimator();
1064
1013
  }
1065
1014
 
1066
- var cacheKey, stagger;
1015
+ var stagger, cacheKey = $$animateCache.cacheKey(node, method, options.addClass, options.removeClass);
1016
+ if ($$animateCache.containsCachedAnimationWithoutDuration(cacheKey)) {
1017
+ preparationClasses = null;
1018
+ return closeAndReturnNoopAnimator();
1019
+ }
1020
+
1067
1021
  if (options.stagger > 0) {
1068
1022
  var staggerVal = parseFloat(options.stagger);
1069
1023
  stagger = {
@@ -1073,7 +1027,6 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1073
1027
  animationDuration: 0
1074
1028
  };
1075
1029
  } else {
1076
- cacheKey = gcsHashFn(node, fullClassName);
1077
1030
  stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES);
1078
1031
  }
1079
1032
 
@@ -1107,7 +1060,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1107
1060
  var itemIndex = stagger
1108
1061
  ? options.staggerIndex >= 0
1109
1062
  ? options.staggerIndex
1110
- : gcsLookup.count(cacheKey)
1063
+ : $$animateCache.count(cacheKey)
1111
1064
  : 0;
1112
1065
 
1113
1066
  var isFirst = itemIndex === 0;
@@ -1119,10 +1072,10 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1119
1072
  // that if there is no transition defined then nothing will happen and this will also allow
1120
1073
  // other transitions to be stacked on top of each other without any chopping them out.
1121
1074
  if (isFirst && !options.skipBlocking) {
1122
- blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE);
1075
+ helpers.blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE);
1123
1076
  }
1124
1077
 
1125
- var timings = computeTimings(node, fullClassName, cacheKey);
1078
+ var timings = computeTimings(node, fullClassName, cacheKey, !isStructural);
1126
1079
  var relativeDelay = timings.maxDelay;
1127
1080
  maxDelay = Math.max(relativeDelay, 0);
1128
1081
  maxDuration = timings.maxDuration;
@@ -1130,7 +1083,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1130
1083
  var flags = {};
1131
1084
  flags.hasTransitions = timings.transitionDuration > 0;
1132
1085
  flags.hasAnimations = timings.animationDuration > 0;
1133
- flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty == 'all';
1086
+ flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty === 'all';
1134
1087
  flags.applyTransitionDuration = hasToStyles && (
1135
1088
  (flags.hasTransitions && !flags.hasTransitionAll)
1136
1089
  || (flags.hasAnimations && !flags.hasTransitions));
@@ -1160,9 +1113,11 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1160
1113
  return closeAndReturnNoopAnimator();
1161
1114
  }
1162
1115
 
1116
+ var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX);
1117
+
1163
1118
  if (options.delay != null) {
1164
1119
  var delayStyle;
1165
- if (typeof options.delay !== "boolean") {
1120
+ if (typeof options.delay !== 'boolean') {
1166
1121
  delayStyle = parseFloat(options.delay);
1167
1122
  // number in options.delay means we have to recalculate the delay for the closing timeout
1168
1123
  maxDelay = Math.max(delayStyle, 0);
@@ -1203,7 +1158,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1203
1158
  if (flags.blockTransition || flags.blockKeyframeAnimation) {
1204
1159
  applyBlocking(maxDuration);
1205
1160
  } else if (!options.skipBlocking) {
1206
- blockTransitions(node, false);
1161
+ helpers.blockTransitions(node, false);
1207
1162
  }
1208
1163
 
1209
1164
  // TODO(matsko): for 1.5 change this code to have an animator object for better debugging
@@ -1240,20 +1195,23 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1240
1195
  close(true);
1241
1196
  }
1242
1197
 
1243
- function close(rejected) { // jshint ignore:line
1198
+ function close(rejected) {
1244
1199
  // if the promise has been called already then we shouldn't close
1245
1200
  // the animation again
1246
1201
  if (animationClosed || (animationCompleted && animationPaused)) return;
1247
1202
  animationClosed = true;
1248
1203
  animationPaused = false;
1249
1204
 
1250
- if (!options.$$skipPreparationClasses) {
1205
+ if (preparationClasses && !options.$$skipPreparationClasses) {
1251
1206
  $$jqLite.removeClass(element, preparationClasses);
1252
1207
  }
1253
- $$jqLite.removeClass(element, activeClasses);
1208
+
1209
+ if (activeClasses) {
1210
+ $$jqLite.removeClass(element, activeClasses);
1211
+ }
1254
1212
 
1255
1213
  blockKeyframeAnimations(node, false);
1256
- blockTransitions(node, false);
1214
+ helpers.blockTransitions(node, false);
1257
1215
 
1258
1216
  forEach(temporaryStyles, function(entry) {
1259
1217
  // There is only one way to remove inline style properties entirely from elements.
@@ -1267,8 +1225,11 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1267
1225
 
1268
1226
  if (Object.keys(restoreStyles).length) {
1269
1227
  forEach(restoreStyles, function(value, prop) {
1270
- value ? node.style.setProperty(prop, value)
1271
- : node.style.removeProperty(prop);
1228
+ if (value) {
1229
+ node.style.setProperty(prop, value);
1230
+ } else {
1231
+ node.style.removeProperty(prop);
1232
+ }
1272
1233
  });
1273
1234
  }
1274
1235
 
@@ -1301,7 +1262,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1301
1262
 
1302
1263
  function applyBlocking(duration) {
1303
1264
  if (flags.blockTransition) {
1304
- blockTransitions(node, duration);
1265
+ helpers.blockTransitions(node, duration);
1305
1266
  }
1306
1267
 
1307
1268
  if (flags.blockKeyframeAnimation) {
@@ -1332,6 +1293,12 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1332
1293
  event.stopPropagation();
1333
1294
  var ev = event.originalEvent || event;
1334
1295
 
1296
+ if (ev.target !== node) {
1297
+ // Since TransitionEvent / AnimationEvent bubble up,
1298
+ // we have to ignore events by finished child animations
1299
+ return;
1300
+ }
1301
+
1335
1302
  // we now always use `Date.now()` due to the recent changes with
1336
1303
  // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info)
1337
1304
  var timeStamp = ev.$manualTimeStamp || Date.now();
@@ -1371,9 +1338,11 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1371
1338
  animationPaused = !playAnimation;
1372
1339
  if (timings.animationDuration) {
1373
1340
  var value = blockKeyframeAnimations(node, animationPaused);
1374
- animationPaused
1375
- ? temporaryStyles.push(value)
1376
- : removeFromArray(temporaryStyles, value);
1341
+ if (animationPaused) {
1342
+ temporaryStyles.push(value);
1343
+ } else {
1344
+ removeFromArray(temporaryStyles, value);
1345
+ }
1377
1346
  }
1378
1347
  } else if (animationPaused && playAnimation) {
1379
1348
  animationPaused = false;
@@ -1422,10 +1391,10 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1422
1391
  $$jqLite.addClass(element, activeClasses);
1423
1392
 
1424
1393
  if (flags.recalculateTimingStyles) {
1425
- fullClassName = node.className + ' ' + preparationClasses;
1426
- cacheKey = gcsHashFn(node, fullClassName);
1394
+ fullClassName = node.getAttribute('class') + ' ' + preparationClasses;
1395
+ cacheKey = $$animateCache.cacheKey(node, method, options.addClass, options.removeClass);
1427
1396
 
1428
- timings = computeTimings(node, fullClassName, cacheKey);
1397
+ timings = computeTimings(node, fullClassName, cacheKey, false);
1429
1398
  relativeDelay = timings.maxDelay;
1430
1399
  maxDelay = Math.max(relativeDelay, 0);
1431
1400
  maxDuration = timings.maxDuration;
@@ -1440,7 +1409,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1440
1409
  }
1441
1410
 
1442
1411
  if (flags.applyAnimationDelay) {
1443
- relativeDelay = typeof options.delay !== "boolean" && truthyTimingValue(options.delay)
1412
+ relativeDelay = typeof options.delay !== 'boolean' && truthyTimingValue(options.delay)
1444
1413
  ? parseFloat(options.delay)
1445
1414
  : relativeDelay;
1446
1415
 
@@ -1532,7 +1501,7 @@ var $AnimateCssProvider = ['$animateProvider', function($animateProvider) {
1532
1501
  }];
1533
1502
  }];
1534
1503
 
1535
- var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationProvider) {
1504
+ var $$AnimateCssDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) {
1536
1505
  $$animationProvider.drivers.push('$$animateCssDriver');
1537
1506
 
1538
1507
  var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim';
@@ -1561,8 +1530,6 @@ var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationPro
1561
1530
  isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode
1562
1531
  );
1563
1532
 
1564
- var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
1565
-
1566
1533
  return function initDriverFn(animationDetails) {
1567
1534
  return animationDetails.from && animationDetails.to
1568
1535
  ? prepareFromToAnchorAnimation(animationDetails.from,
@@ -1804,7 +1771,7 @@ var $$AnimateCssDriverProvider = ['$$animationProvider', function($$animationPro
1804
1771
  // TODO(matsko): add documentation
1805
1772
  // by the time...
1806
1773
 
1807
- var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
1774
+ var $$AnimateJsProvider = ['$animateProvider', /** @this */ function($animateProvider) {
1808
1775
  this.$get = ['$injector', '$$AnimateRunner', '$$jqLite',
1809
1776
  function($injector, $$AnimateRunner, $$jqLite) {
1810
1777
 
@@ -1843,7 +1810,7 @@ var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
1843
1810
  var before, after;
1844
1811
  if (animations.length) {
1845
1812
  var afterFn, beforeFn;
1846
- if (event == 'leave') {
1813
+ if (event === 'leave') {
1847
1814
  beforeFn = 'leave';
1848
1815
  afterFn = 'afterLeave'; // TODO(matsko): get rid of this
1849
1816
  } else {
@@ -2028,7 +1995,7 @@ var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
2028
1995
  function packageAnimations(element, event, options, animations, fnName) {
2029
1996
  var operations = groupEventedAnimations(element, event, options, animations, fnName);
2030
1997
  if (operations.length === 0) {
2031
- var a,b;
1998
+ var a, b;
2032
1999
  if (fnName === 'beforeSetClass') {
2033
2000
  a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass');
2034
2001
  b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass');
@@ -2056,11 +2023,19 @@ var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
2056
2023
  });
2057
2024
  }
2058
2025
 
2059
- runners.length ? $$AnimateRunner.all(runners, callback) : callback();
2026
+ if (runners.length) {
2027
+ $$AnimateRunner.all(runners, callback);
2028
+ } else {
2029
+ callback();
2030
+ }
2060
2031
 
2061
2032
  return function endFn(reject) {
2062
2033
  forEach(runners, function(runner) {
2063
- reject ? runner.cancel() : runner.end();
2034
+ if (reject) {
2035
+ runner.cancel();
2036
+ } else {
2037
+ runner.end();
2038
+ }
2064
2039
  });
2065
2040
  };
2066
2041
  };
@@ -2070,7 +2045,7 @@ var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
2070
2045
  function lookupAnimations(classes) {
2071
2046
  classes = isArray(classes) ? classes : classes.split(' ');
2072
2047
  var matches = [], flagMap = {};
2073
- for (var i=0; i < classes.length; i++) {
2048
+ for (var i = 0; i < classes.length; i++) {
2074
2049
  var klass = classes[i],
2075
2050
  animationFactory = $animateProvider.$$registeredAnimations[klass];
2076
2051
  if (animationFactory && !flagMap[klass]) {
@@ -2083,7 +2058,7 @@ var $$AnimateJsProvider = ['$animateProvider', function($animateProvider) {
2083
2058
  }];
2084
2059
  }];
2085
2060
 
2086
- var $$AnimateJsDriverProvider = ['$$animationProvider', function($$animationProvider) {
2061
+ var $$AnimateJsDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) {
2087
2062
  $$animationProvider.drivers.push('$$animateJsDriver');
2088
2063
  this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) {
2089
2064
  return function initDriverFn(animationDetails) {
@@ -2145,7 +2120,7 @@ var $$AnimateJsDriverProvider = ['$$animationProvider', function($$animationProv
2145
2120
 
2146
2121
  var NG_ANIMATE_ATTR_NAME = 'data-ng-animate';
2147
2122
  var NG_ANIMATE_PIN_DATA = '$ngAnimatePin';
2148
- var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2123
+ var $$AnimateQueueProvider = ['$animateProvider', /** @this */ function($animateProvider) {
2149
2124
  var PRE_DIGEST_STATE = 1;
2150
2125
  var RUNNING_STATE = 2;
2151
2126
  var ONE_SPACE = ' ';
@@ -2156,6 +2131,15 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2156
2131
  join: []
2157
2132
  };
2158
2133
 
2134
+ function getEventData(options) {
2135
+ return {
2136
+ addClass: options.addClass,
2137
+ removeClass: options.removeClass,
2138
+ from: options.from,
2139
+ to: options.to
2140
+ };
2141
+ }
2142
+
2159
2143
  function makeTruthyCssClassMap(classString) {
2160
2144
  if (!classString) {
2161
2145
  return null;
@@ -2179,9 +2163,9 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2179
2163
  }
2180
2164
  }
2181
2165
 
2182
- function isAllowed(ruleType, element, currentAnimation, previousAnimation) {
2166
+ function isAllowed(ruleType, currentAnimation, previousAnimation) {
2183
2167
  return rules[ruleType].some(function(fn) {
2184
- return fn(element, currentAnimation, previousAnimation);
2168
+ return fn(currentAnimation, previousAnimation);
2185
2169
  });
2186
2170
  }
2187
2171
 
@@ -2191,40 +2175,40 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2191
2175
  return and ? a && b : a || b;
2192
2176
  }
2193
2177
 
2194
- rules.join.push(function(element, newAnimation, currentAnimation) {
2178
+ rules.join.push(function(newAnimation, currentAnimation) {
2195
2179
  // if the new animation is class-based then we can just tack that on
2196
2180
  return !newAnimation.structural && hasAnimationClasses(newAnimation);
2197
2181
  });
2198
2182
 
2199
- rules.skip.push(function(element, newAnimation, currentAnimation) {
2183
+ rules.skip.push(function(newAnimation, currentAnimation) {
2200
2184
  // there is no need to animate anything if no classes are being added and
2201
2185
  // there is no structural animation that will be triggered
2202
2186
  return !newAnimation.structural && !hasAnimationClasses(newAnimation);
2203
2187
  });
2204
2188
 
2205
- rules.skip.push(function(element, newAnimation, currentAnimation) {
2189
+ rules.skip.push(function(newAnimation, currentAnimation) {
2206
2190
  // why should we trigger a new structural animation if the element will
2207
2191
  // be removed from the DOM anyway?
2208
- return currentAnimation.event == 'leave' && newAnimation.structural;
2192
+ return currentAnimation.event === 'leave' && newAnimation.structural;
2209
2193
  });
2210
2194
 
2211
- rules.skip.push(function(element, newAnimation, currentAnimation) {
2195
+ rules.skip.push(function(newAnimation, currentAnimation) {
2212
2196
  // if there is an ongoing current animation then don't even bother running the class-based animation
2213
2197
  return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural;
2214
2198
  });
2215
2199
 
2216
- rules.cancel.push(function(element, newAnimation, currentAnimation) {
2200
+ rules.cancel.push(function(newAnimation, currentAnimation) {
2217
2201
  // there can never be two structural animations running at the same time
2218
2202
  return currentAnimation.structural && newAnimation.structural;
2219
2203
  });
2220
2204
 
2221
- rules.cancel.push(function(element, newAnimation, currentAnimation) {
2205
+ rules.cancel.push(function(newAnimation, currentAnimation) {
2222
2206
  // if the previous animation is already running, but the new animation will
2223
2207
  // be triggered, but the new animation is structural
2224
2208
  return currentAnimation.state === RUNNING_STATE && newAnimation.structural;
2225
2209
  });
2226
2210
 
2227
- rules.cancel.push(function(element, newAnimation, currentAnimation) {
2211
+ rules.cancel.push(function(newAnimation, currentAnimation) {
2228
2212
  // cancel the animation if classes added / removed in both animation cancel each other out,
2229
2213
  // but only if the current animation isn't structural
2230
2214
 
@@ -2243,15 +2227,21 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2243
2227
  return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA);
2244
2228
  });
2245
2229
 
2246
- this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$HashMap',
2230
+ this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$Map',
2247
2231
  '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow',
2248
- function($$rAF, $rootScope, $rootElement, $document, $$HashMap,
2249
- $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow) {
2232
+ '$$isDocumentHidden',
2233
+ function($$rAF, $rootScope, $rootElement, $document, $$Map,
2234
+ $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow,
2235
+ $$isDocumentHidden) {
2250
2236
 
2251
- var activeAnimationsLookup = new $$HashMap();
2252
- var disabledElementsLookup = new $$HashMap();
2237
+ var activeAnimationsLookup = new $$Map();
2238
+ var disabledElementsLookup = new $$Map();
2253
2239
  var animationsEnabled = null;
2254
2240
 
2241
+ function removeFromDisabledElementsLookup(evt) {
2242
+ disabledElementsLookup.delete(evt.target);
2243
+ }
2244
+
2255
2245
  function postDigestTaskFactory() {
2256
2246
  var postDigestCalled = false;
2257
2247
  return function(fn) {
@@ -2299,16 +2289,19 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2299
2289
  }
2300
2290
  );
2301
2291
 
2302
- var callbackRegistry = {};
2292
+ var callbackRegistry = Object.create(null);
2303
2293
 
2304
- // remember that the classNameFilter is set during the provider/config
2305
- // stage therefore we can optimize here and setup a helper function
2294
+ // remember that the `customFilter`/`classNameFilter` are set during the
2295
+ // provider/config stage therefore we can optimize here and setup helper functions
2296
+ var customFilter = $animateProvider.customFilter();
2306
2297
  var classNameFilter = $animateProvider.classNameFilter();
2307
- var isAnimatableClassName = !classNameFilter
2308
- ? function() { return true; }
2309
- : function(className) {
2310
- return classNameFilter.test(className);
2311
- };
2298
+ var returnTrue = function() { return true; };
2299
+
2300
+ var isAnimatableByFilter = customFilter || returnTrue;
2301
+ var isAnimatableClassName = !classNameFilter ? returnTrue : function(node, options) {
2302
+ var className = [node.getAttribute('class'), options.addClass, options.removeClass].join(' ');
2303
+ return classNameFilter.test(className);
2304
+ };
2312
2305
 
2313
2306
  var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
2314
2307
 
@@ -2317,16 +2310,12 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2317
2310
  }
2318
2311
 
2319
2312
  // IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259.
2320
- var contains = window.Node.prototype.contains || function(arg) {
2321
- // jshint bitwise: false
2313
+ var contains = window.Node.prototype.contains || /** @this */ function(arg) {
2314
+ // eslint-disable-next-line no-bitwise
2322
2315
  return this === arg || !!(this.compareDocumentPosition(arg) & 16);
2323
- // jshint bitwise: true
2324
2316
  };
2325
2317
 
2326
- function findCallbacks(parent, element, event) {
2327
- var targetNode = getDomNode(element);
2328
- var targetParentNode = getDomNode(parent);
2329
-
2318
+ function findCallbacks(targetParentNode, targetNode, event) {
2330
2319
  var matches = [];
2331
2320
  var entries = callbackRegistry[event];
2332
2321
  if (entries) {
@@ -2351,11 +2340,11 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2351
2340
  });
2352
2341
  }
2353
2342
 
2354
- function cleanupEventListeners(phase, element) {
2355
- if (phase === 'close' && !element[0].parentNode) {
2343
+ function cleanupEventListeners(phase, node) {
2344
+ if (phase === 'close' && !node.parentNode) {
2356
2345
  // If the element is not attached to a parentNode, it has been removed by
2357
2346
  // the domOperation, and we can safely remove the event callbacks
2358
- $animate.off(element);
2347
+ $animate.off(node);
2359
2348
  }
2360
2349
  }
2361
2350
 
@@ -2382,7 +2371,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2382
2371
  },
2383
2372
 
2384
2373
  off: function(event, container, callback) {
2385
- if (arguments.length === 1 && !angular.isString(arguments[0])) {
2374
+ if (arguments.length === 1 && !isString(arguments[0])) {
2386
2375
  container = arguments[0];
2387
2376
  for (var eventType in callbackRegistry) {
2388
2377
  callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container);
@@ -2430,14 +2419,18 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2430
2419
  bool = animationsEnabled = !!element;
2431
2420
  } else {
2432
2421
  var node = getDomNode(element);
2433
- var recordExists = disabledElementsLookup.get(node);
2434
2422
 
2435
2423
  if (argCount === 1) {
2436
2424
  // (element) - Element getter
2437
- bool = !recordExists;
2425
+ bool = !disabledElementsLookup.get(node);
2438
2426
  } else {
2439
2427
  // (element, bool) - Element setter
2440
- disabledElementsLookup.put(node, !bool);
2428
+ if (!disabledElementsLookup.has(node)) {
2429
+ // The element is added to the map for the first time.
2430
+ // Create a listener to remove it on `$destroy` (to avoid memory leak).
2431
+ jqLite(element).on('$destroy', removeFromDisabledElementsLookup);
2432
+ }
2433
+ disabledElementsLookup.set(node, !bool);
2441
2434
  }
2442
2435
  }
2443
2436
  }
@@ -2448,18 +2441,15 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2448
2441
 
2449
2442
  return $animate;
2450
2443
 
2451
- function queueAnimation(element, event, initialOptions) {
2444
+ function queueAnimation(originalElement, event, initialOptions) {
2452
2445
  // we always make a copy of the options since
2453
2446
  // there should never be any side effects on
2454
2447
  // the input data when running `$animateCss`.
2455
2448
  var options = copy(initialOptions);
2456
2449
 
2457
- var node, parent;
2458
- element = stripCommentsFromElement(element);
2459
- if (element) {
2460
- node = getDomNode(element);
2461
- parent = element.parent();
2462
- }
2450
+ var element = stripCommentsFromElement(originalElement);
2451
+ var node = getDomNode(element);
2452
+ var parentNode = node && node.parentNode;
2463
2453
 
2464
2454
  options = prepareAnimationOptions(options);
2465
2455
 
@@ -2494,49 +2484,45 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2494
2484
  options.to = null;
2495
2485
  }
2496
2486
 
2497
- // there are situations where a directive issues an animation for
2498
- // a jqLite wrapper that contains only comment nodes... If this
2499
- // happens then there is no way we can perform an animation
2500
- if (!node) {
2501
- close();
2502
- return runner;
2503
- }
2504
-
2505
- var className = [node.className, options.addClass, options.removeClass].join(' ');
2506
- if (!isAnimatableClassName(className)) {
2487
+ // If animations are hard-disabled for the whole application there is no need to continue.
2488
+ // There are also situations where a directive issues an animation for a jqLite wrapper that
2489
+ // contains only comment nodes. In this case, there is no way we can perform an animation.
2490
+ if (!animationsEnabled ||
2491
+ !node ||
2492
+ !isAnimatableByFilter(node, event, initialOptions) ||
2493
+ !isAnimatableClassName(node, options)) {
2507
2494
  close();
2508
2495
  return runner;
2509
2496
  }
2510
2497
 
2511
2498
  var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0;
2512
2499
 
2513
- var documentHidden = $document[0].hidden;
2500
+ var documentHidden = $$isDocumentHidden();
2514
2501
 
2515
- // this is a hard disable of all animations for the application or on
2516
- // the element itself, therefore there is no need to continue further
2517
- // past this point if not enabled
2502
+ // This is a hard disable of all animations the element itself, therefore there is no need to
2503
+ // continue further past this point if not enabled
2518
2504
  // Animations are also disabled if the document is currently hidden (page is not visible
2519
2505
  // to the user), because browsers slow down or do not flush calls to requestAnimationFrame
2520
- var skipAnimations = !animationsEnabled || documentHidden || disabledElementsLookup.get(node);
2506
+ var skipAnimations = documentHidden || disabledElementsLookup.get(node);
2521
2507
  var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {};
2522
2508
  var hasExistingAnimation = !!existingAnimation.state;
2523
2509
 
2524
2510
  // there is no point in traversing the same collection of parent ancestors if a followup
2525
2511
  // animation will be run on the same element that already did all that checking work
2526
- if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state != PRE_DIGEST_STATE)) {
2527
- skipAnimations = !areAnimationsAllowed(element, parent, event);
2512
+ if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state !== PRE_DIGEST_STATE)) {
2513
+ skipAnimations = !areAnimationsAllowed(node, parentNode, event);
2528
2514
  }
2529
2515
 
2530
2516
  if (skipAnimations) {
2531
2517
  // Callbacks should fire even if the document is hidden (regression fix for issue #14120)
2532
- if (documentHidden) notifyProgress(runner, event, 'start');
2518
+ if (documentHidden) notifyProgress(runner, event, 'start', getEventData(options));
2533
2519
  close();
2534
- if (documentHidden) notifyProgress(runner, event, 'close');
2520
+ if (documentHidden) notifyProgress(runner, event, 'close', getEventData(options));
2535
2521
  return runner;
2536
2522
  }
2537
2523
 
2538
2524
  if (isStructural) {
2539
- closeChildAnimations(element);
2525
+ closeChildAnimations(node);
2540
2526
  }
2541
2527
 
2542
2528
  var newAnimation = {
@@ -2551,7 +2537,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2551
2537
  };
2552
2538
 
2553
2539
  if (hasExistingAnimation) {
2554
- var skipAnimationFlag = isAllowed('skip', element, newAnimation, existingAnimation);
2540
+ var skipAnimationFlag = isAllowed('skip', newAnimation, existingAnimation);
2555
2541
  if (skipAnimationFlag) {
2556
2542
  if (existingAnimation.state === RUNNING_STATE) {
2557
2543
  close();
@@ -2561,7 +2547,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2561
2547
  return existingAnimation.runner;
2562
2548
  }
2563
2549
  }
2564
- var cancelAnimationFlag = isAllowed('cancel', element, newAnimation, existingAnimation);
2550
+ var cancelAnimationFlag = isAllowed('cancel', newAnimation, existingAnimation);
2565
2551
  if (cancelAnimationFlag) {
2566
2552
  if (existingAnimation.state === RUNNING_STATE) {
2567
2553
  // this will end the animation right away and it is safe
@@ -2583,12 +2569,12 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2583
2569
  // a joined animation means that this animation will take over the existing one
2584
2570
  // so an example would involve a leave animation taking over an enter. Then when
2585
2571
  // the postDigest kicks in the enter will be ignored.
2586
- var joinAnimationFlag = isAllowed('join', element, newAnimation, existingAnimation);
2572
+ var joinAnimationFlag = isAllowed('join', newAnimation, existingAnimation);
2587
2573
  if (joinAnimationFlag) {
2588
2574
  if (existingAnimation.state === RUNNING_STATE) {
2589
2575
  normalizeAnimationDetails(element, newAnimation);
2590
2576
  } else {
2591
- applyGeneratedPreparationClasses(element, isStructural ? event : null, options);
2577
+ applyGeneratedPreparationClasses($$jqLite, element, isStructural ? event : null, options);
2592
2578
 
2593
2579
  event = newAnimation.event = existingAnimation.event;
2594
2580
  options = mergeAnimationDetails(element, existingAnimation, newAnimation);
@@ -2617,7 +2603,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2617
2603
 
2618
2604
  if (!isValidAnimation) {
2619
2605
  close();
2620
- clearElementAnimationState(element);
2606
+ clearElementAnimationState(node);
2621
2607
  return runner;
2622
2608
  }
2623
2609
 
@@ -2625,9 +2611,18 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2625
2611
  var counter = (existingAnimation.counter || 0) + 1;
2626
2612
  newAnimation.counter = counter;
2627
2613
 
2628
- markElementAnimationState(element, PRE_DIGEST_STATE, newAnimation);
2614
+ markElementAnimationState(node, PRE_DIGEST_STATE, newAnimation);
2629
2615
 
2630
2616
  $rootScope.$$postDigest(function() {
2617
+ // It is possible that the DOM nodes inside `originalElement` have been replaced. This can
2618
+ // happen if the animated element is a transcluded clone and also has a `templateUrl`
2619
+ // directive on it. Therefore, we must recreate `element` in order to interact with the
2620
+ // actual DOM nodes.
2621
+ // Note: We still need to use the old `node` for certain things, such as looking up in
2622
+ // HashMaps where it was used as the key.
2623
+
2624
+ element = stripCommentsFromElement(originalElement);
2625
+
2631
2626
  var animationDetails = activeAnimationsLookup.get(node);
2632
2627
  var animationCancelled = !animationDetails;
2633
2628
  animationDetails = animationDetails || {};
@@ -2666,7 +2661,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2666
2661
  // isn't allowed to animate from here then we need to clear the state of the element
2667
2662
  // so that any future animations won't read the expired animation data.
2668
2663
  if (!isValidAnimation) {
2669
- clearElementAnimationState(element);
2664
+ clearElementAnimationState(node);
2670
2665
  }
2671
2666
 
2672
2667
  return;
@@ -2678,21 +2673,21 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2678
2673
  ? 'setClass'
2679
2674
  : animationDetails.event;
2680
2675
 
2681
- markElementAnimationState(element, RUNNING_STATE);
2676
+ markElementAnimationState(node, RUNNING_STATE);
2682
2677
  var realRunner = $$animation(element, event, animationDetails.options);
2683
2678
 
2684
2679
  // this will update the runner's flow-control events based on
2685
2680
  // the `realRunner` object.
2686
2681
  runner.setHost(realRunner);
2687
- notifyProgress(runner, event, 'start', {});
2682
+ notifyProgress(runner, event, 'start', getEventData(options));
2688
2683
 
2689
2684
  realRunner.done(function(status) {
2690
2685
  close(!status);
2691
2686
  var animationDetails = activeAnimationsLookup.get(node);
2692
2687
  if (animationDetails && animationDetails.counter === counter) {
2693
- clearElementAnimationState(getDomNode(element));
2688
+ clearElementAnimationState(node);
2694
2689
  }
2695
- notifyProgress(runner, event, 'close', {});
2690
+ notifyProgress(runner, event, 'close', getEventData(options));
2696
2691
  });
2697
2692
  });
2698
2693
 
@@ -2700,7 +2695,7 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2700
2695
 
2701
2696
  function notifyProgress(runner, event, phase, data) {
2702
2697
  runInNextPostDigestOrNow(function() {
2703
- var callbacks = findCallbacks(parent, element, event);
2698
+ var callbacks = findCallbacks(parentNode, node, event);
2704
2699
  if (callbacks.length) {
2705
2700
  // do not optimize this call here to RAF because
2706
2701
  // we don't know how heavy the callback code here will
@@ -2710,16 +2705,16 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2710
2705
  forEach(callbacks, function(callback) {
2711
2706
  callback(element, phase, data);
2712
2707
  });
2713
- cleanupEventListeners(phase, element);
2708
+ cleanupEventListeners(phase, node);
2714
2709
  });
2715
2710
  } else {
2716
- cleanupEventListeners(phase, element);
2711
+ cleanupEventListeners(phase, node);
2717
2712
  }
2718
2713
  });
2719
2714
  runner.progress(event, phase, data);
2720
2715
  }
2721
2716
 
2722
- function close(reject) { // jshint ignore:line
2717
+ function close(reject) {
2723
2718
  clearGeneratedClasses(element, options);
2724
2719
  applyAnimationClasses(element, options);
2725
2720
  applyAnimationStyles(element, options);
@@ -2728,11 +2723,10 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2728
2723
  }
2729
2724
  }
2730
2725
 
2731
- function closeChildAnimations(element) {
2732
- var node = getDomNode(element);
2726
+ function closeChildAnimations(node) {
2733
2727
  var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']');
2734
2728
  forEach(children, function(child) {
2735
- var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME));
2729
+ var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME), 10);
2736
2730
  var animationDetails = activeAnimationsLookup.get(child);
2737
2731
  if (animationDetails) {
2738
2732
  switch (state) {
@@ -2740,21 +2734,16 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2740
2734
  animationDetails.runner.end();
2741
2735
  /* falls through */
2742
2736
  case PRE_DIGEST_STATE:
2743
- activeAnimationsLookup.remove(child);
2737
+ activeAnimationsLookup.delete(child);
2744
2738
  break;
2745
2739
  }
2746
2740
  }
2747
2741
  });
2748
2742
  }
2749
2743
 
2750
- function clearElementAnimationState(element) {
2751
- var node = getDomNode(element);
2744
+ function clearElementAnimationState(node) {
2752
2745
  node.removeAttribute(NG_ANIMATE_ATTR_NAME);
2753
- activeAnimationsLookup.remove(node);
2754
- }
2755
-
2756
- function isMatchingElement(nodeOrElmA, nodeOrElmB) {
2757
- return getDomNode(nodeOrElmA) === getDomNode(nodeOrElmB);
2746
+ activeAnimationsLookup.delete(node);
2758
2747
  }
2759
2748
 
2760
2749
  /**
@@ -2764,54 +2753,54 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2764
2753
  * c) the element is not a child of the body
2765
2754
  * d) the element is not a child of the $rootElement
2766
2755
  */
2767
- function areAnimationsAllowed(element, parentElement, event) {
2768
- var bodyElement = jqLite($document[0].body);
2769
- var bodyElementDetected = isMatchingElement(element, bodyElement) || element[0].nodeName === 'HTML';
2770
- var rootElementDetected = isMatchingElement(element, $rootElement);
2756
+ function areAnimationsAllowed(node, parentNode, event) {
2757
+ var bodyNode = $document[0].body;
2758
+ var rootNode = getDomNode($rootElement);
2759
+
2760
+ var bodyNodeDetected = (node === bodyNode) || node.nodeName === 'HTML';
2761
+ var rootNodeDetected = (node === rootNode);
2771
2762
  var parentAnimationDetected = false;
2763
+ var elementDisabled = disabledElementsLookup.get(node);
2772
2764
  var animateChildren;
2773
- var elementDisabled = disabledElementsLookup.get(getDomNode(element));
2774
2765
 
2775
- var parentHost = jqLite.data(element[0], NG_ANIMATE_PIN_DATA);
2766
+ var parentHost = jqLite.data(node, NG_ANIMATE_PIN_DATA);
2776
2767
  if (parentHost) {
2777
- parentElement = parentHost;
2768
+ parentNode = getDomNode(parentHost);
2778
2769
  }
2779
2770
 
2780
- parentElement = getDomNode(parentElement);
2781
-
2782
- while (parentElement) {
2783
- if (!rootElementDetected) {
2784
- // angular doesn't want to attempt to animate elements outside of the application
2771
+ while (parentNode) {
2772
+ if (!rootNodeDetected) {
2773
+ // AngularJS doesn't want to attempt to animate elements outside of the application
2785
2774
  // therefore we need to ensure that the rootElement is an ancestor of the current element
2786
- rootElementDetected = isMatchingElement(parentElement, $rootElement);
2775
+ rootNodeDetected = (parentNode === rootNode);
2787
2776
  }
2788
2777
 
2789
- if (parentElement.nodeType !== ELEMENT_NODE) {
2778
+ if (parentNode.nodeType !== ELEMENT_NODE) {
2790
2779
  // no point in inspecting the #document element
2791
2780
  break;
2792
2781
  }
2793
2782
 
2794
- var details = activeAnimationsLookup.get(parentElement) || {};
2783
+ var details = activeAnimationsLookup.get(parentNode) || {};
2795
2784
  // either an enter, leave or move animation will commence
2796
2785
  // therefore we can't allow any animations to take place
2797
2786
  // but if a parent animation is class-based then that's ok
2798
2787
  if (!parentAnimationDetected) {
2799
- var parentElementDisabled = disabledElementsLookup.get(parentElement);
2788
+ var parentNodeDisabled = disabledElementsLookup.get(parentNode);
2800
2789
 
2801
- if (parentElementDisabled === true && elementDisabled !== false) {
2790
+ if (parentNodeDisabled === true && elementDisabled !== false) {
2802
2791
  // disable animations if the user hasn't explicitly enabled animations on the
2803
2792
  // current element
2804
2793
  elementDisabled = true;
2805
2794
  // element is disabled via parent element, no need to check anything else
2806
2795
  break;
2807
- } else if (parentElementDisabled === false) {
2796
+ } else if (parentNodeDisabled === false) {
2808
2797
  elementDisabled = false;
2809
2798
  }
2810
2799
  parentAnimationDetected = details.structural;
2811
2800
  }
2812
2801
 
2813
2802
  if (isUndefined(animateChildren) || animateChildren === true) {
2814
- var value = jqLite.data(parentElement, NG_ANIMATE_CHILDREN_DATA);
2803
+ var value = jqLite.data(parentNode, NG_ANIMATE_CHILDREN_DATA);
2815
2804
  if (isDefined(value)) {
2816
2805
  animateChildren = value;
2817
2806
  }
@@ -2820,57 +2809,115 @@ var $$AnimateQueueProvider = ['$animateProvider', function($animateProvider) {
2820
2809
  // there is no need to continue traversing at this point
2821
2810
  if (parentAnimationDetected && animateChildren === false) break;
2822
2811
 
2823
- if (!bodyElementDetected) {
2812
+ if (!bodyNodeDetected) {
2824
2813
  // we also need to ensure that the element is or will be a part of the body element
2825
2814
  // otherwise it is pointless to even issue an animation to be rendered
2826
- bodyElementDetected = isMatchingElement(parentElement, bodyElement);
2815
+ bodyNodeDetected = (parentNode === bodyNode);
2827
2816
  }
2828
2817
 
2829
- if (bodyElementDetected && rootElementDetected) {
2818
+ if (bodyNodeDetected && rootNodeDetected) {
2830
2819
  // If both body and root have been found, any other checks are pointless,
2831
2820
  // as no animation data should live outside the application
2832
2821
  break;
2833
2822
  }
2834
2823
 
2835
- if (!rootElementDetected) {
2836
- // If no rootElement is detected, check if the parentElement is pinned to another element
2837
- parentHost = jqLite.data(parentElement, NG_ANIMATE_PIN_DATA);
2824
+ if (!rootNodeDetected) {
2825
+ // If `rootNode` is not detected, check if `parentNode` is pinned to another element
2826
+ parentHost = jqLite.data(parentNode, NG_ANIMATE_PIN_DATA);
2838
2827
  if (parentHost) {
2839
2828
  // The pin target element becomes the next parent element
2840
- parentElement = getDomNode(parentHost);
2829
+ parentNode = getDomNode(parentHost);
2841
2830
  continue;
2842
2831
  }
2843
2832
  }
2844
2833
 
2845
- parentElement = parentElement.parentNode;
2834
+ parentNode = parentNode.parentNode;
2846
2835
  }
2847
2836
 
2848
2837
  var allowAnimation = (!parentAnimationDetected || animateChildren) && elementDisabled !== true;
2849
- return allowAnimation && rootElementDetected && bodyElementDetected;
2838
+ return allowAnimation && rootNodeDetected && bodyNodeDetected;
2850
2839
  }
2851
2840
 
2852
- function markElementAnimationState(element, state, details) {
2841
+ function markElementAnimationState(node, state, details) {
2853
2842
  details = details || {};
2854
2843
  details.state = state;
2855
2844
 
2856
- var node = getDomNode(element);
2857
2845
  node.setAttribute(NG_ANIMATE_ATTR_NAME, state);
2858
2846
 
2859
2847
  var oldValue = activeAnimationsLookup.get(node);
2860
2848
  var newValue = oldValue
2861
2849
  ? extend(oldValue, details)
2862
2850
  : details;
2863
- activeAnimationsLookup.put(node, newValue);
2851
+ activeAnimationsLookup.set(node, newValue);
2864
2852
  }
2865
2853
  }];
2866
2854
  }];
2867
2855
 
2868
- var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
2856
+ /** @this */
2857
+ var $$AnimateCacheProvider = function() {
2858
+
2859
+ var KEY = '$$ngAnimateParentKey';
2860
+ var parentCounter = 0;
2861
+ var cache = Object.create(null);
2862
+
2863
+ this.$get = [function() {
2864
+ return {
2865
+ cacheKey: function(node, method, addClass, removeClass) {
2866
+ var parentNode = node.parentNode;
2867
+ var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter);
2868
+ var parts = [parentID, method, node.getAttribute('class')];
2869
+ if (addClass) {
2870
+ parts.push(addClass);
2871
+ }
2872
+ if (removeClass) {
2873
+ parts.push(removeClass);
2874
+ }
2875
+ return parts.join(' ');
2876
+ },
2877
+
2878
+ containsCachedAnimationWithoutDuration: function(key) {
2879
+ var entry = cache[key];
2880
+
2881
+ // nothing cached, so go ahead and animate
2882
+ // otherwise it should be a valid animation
2883
+ return (entry && !entry.isValid) || false;
2884
+ },
2885
+
2886
+ flush: function() {
2887
+ cache = Object.create(null);
2888
+ },
2889
+
2890
+ count: function(key) {
2891
+ var entry = cache[key];
2892
+ return entry ? entry.total : 0;
2893
+ },
2894
+
2895
+ get: function(key) {
2896
+ var entry = cache[key];
2897
+ return entry && entry.value;
2898
+ },
2899
+
2900
+ put: function(key, value, isValid) {
2901
+ if (!cache[key]) {
2902
+ cache[key] = { total: 1, value: value, isValid: isValid };
2903
+ } else {
2904
+ cache[key].total++;
2905
+ cache[key].value = value;
2906
+ }
2907
+ }
2908
+ };
2909
+ }];
2910
+ };
2911
+
2912
+ /* exported $$AnimationProvider */
2913
+
2914
+ var $$AnimationProvider = ['$animateProvider', /** @this */ function($animateProvider) {
2869
2915
  var NG_ANIMATE_REF_ATTR = 'ng-animate-ref';
2870
2916
 
2871
2917
  var drivers = this.drivers = [];
2872
2918
 
2873
2919
  var RUNNER_STORAGE_KEY = '$$animationRunner';
2920
+ var PREPARE_CLASSES_KEY = '$$animatePrepareClasses';
2874
2921
 
2875
2922
  function setRunner(element, runner) {
2876
2923
  element.data(RUNNER_STORAGE_KEY, runner);
@@ -2884,22 +2931,23 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
2884
2931
  return element.data(RUNNER_STORAGE_KEY);
2885
2932
  }
2886
2933
 
2887
- this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$HashMap', '$$rAFScheduler',
2888
- function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$HashMap, $$rAFScheduler) {
2934
+ this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$Map', '$$rAFScheduler', '$$animateCache',
2935
+ function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$Map, $$rAFScheduler, $$animateCache) {
2889
2936
 
2890
2937
  var animationQueue = [];
2891
2938
  var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);
2892
2939
 
2893
2940
  function sortAnimations(animations) {
2894
2941
  var tree = { children: [] };
2895
- var i, lookup = new $$HashMap();
2942
+ var i, lookup = new $$Map();
2896
2943
 
2897
- // this is done first beforehand so that the hashmap
2944
+ // this is done first beforehand so that the map
2898
2945
  // is filled with a list of the elements that will be animated
2899
2946
  for (i = 0; i < animations.length; i++) {
2900
2947
  var animation = animations[i];
2901
- lookup.put(animation.domNode, animations[i] = {
2948
+ lookup.set(animation.domNode, animations[i] = {
2902
2949
  domNode: animation.domNode,
2950
+ element: animation.element,
2903
2951
  fn: animation.fn,
2904
2952
  children: []
2905
2953
  });
@@ -2917,7 +2965,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
2917
2965
 
2918
2966
  var elementNode = entry.domNode;
2919
2967
  var parentNode = elementNode.parentNode;
2920
- lookup.put(elementNode, entry);
2968
+ lookup.set(elementNode, entry);
2921
2969
 
2922
2970
  var parentEntry;
2923
2971
  while (parentNode) {
@@ -2956,7 +3004,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
2956
3004
  result.push(row);
2957
3005
  row = [];
2958
3006
  }
2959
- row.push(entry.fn);
3007
+ row.push(entry);
2960
3008
  entry.children.forEach(function(childEntry) {
2961
3009
  nextLevelEntries++;
2962
3010
  queue.push(childEntry);
@@ -2991,8 +3039,6 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
2991
3039
  return runner;
2992
3040
  }
2993
3041
 
2994
- setRunner(element, runner);
2995
-
2996
3042
  var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass));
2997
3043
  var tempClasses = options.tempClasses;
2998
3044
  if (tempClasses) {
@@ -3000,12 +3046,12 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3000
3046
  options.tempClasses = null;
3001
3047
  }
3002
3048
 
3003
- var prepareClassName;
3004
3049
  if (isStructural) {
3005
- prepareClassName = 'ng-' + event + PREPARE_CLASS_SUFFIX;
3006
- $$jqLite.addClass(element, prepareClassName);
3050
+ element.data(PREPARE_CLASSES_KEY, 'ng-' + event + PREPARE_CLASS_SUFFIX);
3007
3051
  }
3008
3052
 
3053
+ setRunner(element, runner);
3054
+
3009
3055
  animationQueue.push({
3010
3056
  // this data is used by the postDigest code and passed into
3011
3057
  // the driver step function
@@ -3045,16 +3091,31 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3045
3091
  var toBeSortedAnimations = [];
3046
3092
 
3047
3093
  forEach(groupedAnimations, function(animationEntry) {
3094
+ var element = animationEntry.from ? animationEntry.from.element : animationEntry.element;
3095
+ var extraClasses = options.addClass;
3096
+
3097
+ extraClasses = (extraClasses ? (extraClasses + ' ') : '') + NG_ANIMATE_CLASSNAME;
3098
+ var cacheKey = $$animateCache.cacheKey(element[0], animationEntry.event, extraClasses, options.removeClass);
3099
+
3048
3100
  toBeSortedAnimations.push({
3049
- domNode: getDomNode(animationEntry.from ? animationEntry.from.element : animationEntry.element),
3101
+ element: element,
3102
+ domNode: getDomNode(element),
3050
3103
  fn: function triggerAnimationStart() {
3104
+ var startAnimationFn, closeFn = animationEntry.close;
3105
+
3106
+ // in the event that we've cached the animation status for this element
3107
+ // and it's in fact an invalid animation (something that has duration = 0)
3108
+ // then we should skip all the heavy work from here on
3109
+ if ($$animateCache.containsCachedAnimationWithoutDuration(cacheKey)) {
3110
+ closeFn();
3111
+ return;
3112
+ }
3113
+
3051
3114
  // it's important that we apply the `ng-animate` CSS class and the
3052
3115
  // temporary classes before we do any driver invoking since these
3053
3116
  // CSS classes may be required for proper CSS detection.
3054
3117
  animationEntry.beforeStart();
3055
3118
 
3056
- var startAnimationFn, closeFn = animationEntry.close;
3057
-
3058
3119
  // in the event that the element was removed before the digest runs or
3059
3120
  // during the RAF sequencing then we should not trigger the animation.
3060
3121
  var targetElement = animationEntry.anchors
@@ -3084,7 +3145,32 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3084
3145
  // we need to sort each of the animations in order of parent to child
3085
3146
  // relationships. This ensures that the child classes are applied at the
3086
3147
  // right time.
3087
- $$rAFScheduler(sortAnimations(toBeSortedAnimations));
3148
+ var finalAnimations = sortAnimations(toBeSortedAnimations);
3149
+ for (var i = 0; i < finalAnimations.length; i++) {
3150
+ var innerArray = finalAnimations[i];
3151
+ for (var j = 0; j < innerArray.length; j++) {
3152
+ var entry = innerArray[j];
3153
+ var element = entry.element;
3154
+
3155
+ // the RAFScheduler code only uses functions
3156
+ finalAnimations[i][j] = entry.fn;
3157
+
3158
+ // the first row of elements shouldn't have a prepare-class added to them
3159
+ // since the elements are at the top of the animation hierarchy and they
3160
+ // will be applied without a RAF having to pass...
3161
+ if (i === 0) {
3162
+ element.removeData(PREPARE_CLASSES_KEY);
3163
+ continue;
3164
+ }
3165
+
3166
+ var prepareClassName = element.data(PREPARE_CLASSES_KEY);
3167
+ if (prepareClassName) {
3168
+ $$jqLite.addClass(element, prepareClassName);
3169
+ }
3170
+ }
3171
+ }
3172
+
3173
+ $$rAFScheduler(finalAnimations);
3088
3174
  });
3089
3175
 
3090
3176
  return runner;
@@ -3213,8 +3299,6 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3213
3299
  // may attempt more elements, but custom drivers are more particular
3214
3300
  for (var i = drivers.length - 1; i >= 0; i--) {
3215
3301
  var driverName = drivers[i];
3216
- if (!$injector.has(driverName)) continue; // TODO(matsko): remove this check
3217
-
3218
3302
  var factory = $injector.get(driverName);
3219
3303
  var driver = factory(animationDetails);
3220
3304
  if (driver) {
@@ -3224,10 +3308,10 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3224
3308
  }
3225
3309
 
3226
3310
  function beforeStart() {
3227
- element.addClass(NG_ANIMATE_CLASSNAME);
3228
- if (tempClasses) {
3229
- $$jqLite.addClass(element, tempClasses);
3230
- }
3311
+ tempClasses = (tempClasses ? (tempClasses + ' ') : '') + NG_ANIMATE_CLASSNAME;
3312
+ $$jqLite.addClass(element, tempClasses);
3313
+
3314
+ var prepareClassName = element.data(PREPARE_CLASSES_KEY);
3231
3315
  if (prepareClassName) {
3232
3316
  $$jqLite.removeClass(element, prepareClassName);
3233
3317
  prepareClassName = null;
@@ -3243,7 +3327,8 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3243
3327
  }
3244
3328
 
3245
3329
  function update(element) {
3246
- getRunner(element).setHost(newRunner);
3330
+ var runner = getRunner(element);
3331
+ if (runner) runner.setHost(newRunner);
3247
3332
  }
3248
3333
  }
3249
3334
 
@@ -3254,7 +3339,7 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3254
3339
  }
3255
3340
  }
3256
3341
 
3257
- function close(rejected) { // jshint ignore:line
3342
+ function close(rejected) {
3258
3343
  element.off('$destroy', handleDestroyedElement);
3259
3344
  removeRunner(element);
3260
3345
 
@@ -3266,7 +3351,6 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3266
3351
  $$jqLite.removeClass(element, tempClasses);
3267
3352
  }
3268
3353
 
3269
- element.removeClass(NG_ANIMATE_CLASSNAME);
3270
3354
  runner.complete(!rejected);
3271
3355
  }
3272
3356
  };
@@ -3360,12 +3444,13 @@ var $$AnimationProvider = ['$animateProvider', function($animateProvider) {
3360
3444
  * </file>
3361
3445
  * </example>
3362
3446
  */
3363
- var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $rootScope) {
3447
+ var ngAnimateSwapDirective = ['$animate', function($animate) {
3364
3448
  return {
3365
3449
  restrict: 'A',
3366
3450
  transclude: 'element',
3367
3451
  terminal: true,
3368
- priority: 600, // we use 600 here to ensure that the directive is caught before others
3452
+ priority: 550, // We use 550 here to ensure that the directive is caught before others,
3453
+ // but after `ngIf` (at priority 600).
3369
3454
  link: function(scope, $element, attrs, ctrl, $transclude) {
3370
3455
  var previousElement, previousScope;
3371
3456
  scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) {
@@ -3377,10 +3462,10 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3377
3462
  previousScope = null;
3378
3463
  }
3379
3464
  if (value || value === 0) {
3380
- previousScope = scope.$new();
3381
- $transclude(previousScope, function(element) {
3382
- previousElement = element;
3383
- $animate.enter(element, null, $element);
3465
+ $transclude(function(clone, childScope) {
3466
+ previousElement = clone;
3467
+ previousScope = childScope;
3468
+ $animate.enter(clone, null, $element);
3384
3469
  });
3385
3470
  }
3386
3471
  });
@@ -3388,31 +3473,15 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3388
3473
  };
3389
3474
  }];
3390
3475
 
3391
- /* global angularAnimateModule: true,
3392
-
3393
- ngAnimateSwapDirective,
3394
- $$AnimateAsyncRunFactory,
3395
- $$rAFSchedulerFactory,
3396
- $$AnimateChildrenDirective,
3397
- $$AnimateQueueProvider,
3398
- $$AnimationProvider,
3399
- $AnimateCssProvider,
3400
- $$AnimateCssDriverProvider,
3401
- $$AnimateJsProvider,
3402
- $$AnimateJsDriverProvider,
3403
- */
3404
-
3405
3476
  /**
3406
3477
  * @ngdoc module
3407
3478
  * @name ngAnimate
3408
3479
  * @description
3409
3480
  *
3410
3481
  * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via
3411
- * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an Angular app.
3482
+ * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an AngularJS app.
3412
3483
  *
3413
- * <div doc-module-components="ngAnimate"></div>
3414
- *
3415
- * # Usage
3484
+ * ## Usage
3416
3485
  * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based
3417
3486
  * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For
3418
3487
  * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within
@@ -3421,25 +3490,33 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3421
3490
  * ## Directive Support
3422
3491
  * The following directives are "animation aware":
3423
3492
  *
3424
- * | Directive | Supported Animations |
3425
- * |----------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|
3426
- * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave and move |
3427
- * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave |
3428
- * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave |
3429
- * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave |
3430
- * | {@link ng.directive:ngIf#animations ngIf} | enter and leave |
3431
- * | {@link ng.directive:ngClass#animations ngClass} | add and remove (the CSS class(es) present) |
3432
- * | {@link ng.directive:ngShow#animations ngShow} & {@link ng.directive:ngHide#animations ngHide} | add and remove (the ng-hide class value) |
3433
- * | {@link ng.directive:form#animation-hooks form} & {@link ng.directive:ngModel#animation-hooks ngModel} | add and remove (dirty, pristine, valid, invalid & all other validations) |
3434
- * | {@link module:ngMessages#animations ngMessages} | add and remove (ng-active & ng-inactive) |
3435
- * | {@link module:ngMessages#animations ngMessage} | enter and leave |
3436
- *
3437
- * (More information can be found by visiting each the documentation associated with each directive.)
3493
+ * | Directive | Supported Animations |
3494
+ * |-------------------------------------------------------------------------------|---------------------------------------------------------------------------|
3495
+ * | {@link ng.directive:form#animations form / ngForm} | add and remove ({@link ng.directive:form#css-classes various classes}) |
3496
+ * | {@link ngAnimate.directive:ngAnimateSwap#animations ngAnimateSwap} | enter and leave |
3497
+ * | {@link ng.directive:ngClass#animations ngClass / {{class&#125;&#8203;&#125;} | add and remove |
3498
+ * | {@link ng.directive:ngClassEven#animations ngClassEven} | add and remove |
3499
+ * | {@link ng.directive:ngClassOdd#animations ngClassOdd} | add and remove |
3500
+ * | {@link ng.directive:ngHide#animations ngHide} | add and remove (the `ng-hide` class) |
3501
+ * | {@link ng.directive:ngIf#animations ngIf} | enter and leave |
3502
+ * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave |
3503
+ * | {@link module:ngMessages#animations ngMessage / ngMessageExp} | enter and leave |
3504
+ * | {@link module:ngMessages#animations ngMessages} | add and remove (the `ng-active`/`ng-inactive` classes) |
3505
+ * | {@link ng.directive:ngModel#animations ngModel} | add and remove ({@link ng.directive:ngModel#css-classes various classes}) |
3506
+ * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave, and move |
3507
+ * | {@link ng.directive:ngShow#animations ngShow} | add and remove (the `ng-hide` class) |
3508
+ * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave |
3509
+ * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave |
3510
+ *
3511
+ * (More information can be found by visiting the documentation associated with each directive.)
3512
+ *
3513
+ * For a full breakdown of the steps involved during each animation event, refer to the
3514
+ * {@link ng.$animate `$animate` API docs}.
3438
3515
  *
3439
3516
  * ## CSS-based Animations
3440
3517
  *
3441
3518
  * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML
3442
- * and CSS code we can create an animation that will be picked up by Angular when an the underlying directive performs an operation.
3519
+ * and CSS code we can create an animation that will be picked up by AngularJS when an underlying directive performs an operation.
3443
3520
  *
3444
3521
  * The example below shows how an `enter` animation can be made possible on an element using `ng-if`:
3445
3522
  *
@@ -3579,6 +3656,10 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3579
3656
  * /&#42; As of 1.4.4, this must always be set: it signals ngAnimate
3580
3657
  * to not accidentally inherit a delay property from another CSS class &#42;/
3581
3658
  * transition-duration: 0s;
3659
+ *
3660
+ * /&#42; if you are using animations instead of transitions you should configure as follows:
3661
+ * animation-delay: 0.1s;
3662
+ * animation-duration: 0s; &#42;/
3582
3663
  * }
3583
3664
  * .my-animation.ng-enter.ng-enter-active {
3584
3665
  * /&#42; standard transition styles &#42;/
@@ -3667,9 +3748,22 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3667
3748
  * .message.ng-enter-prepare {
3668
3749
  * opacity: 0;
3669
3750
  * }
3670
- *
3671
3751
  * ```
3672
3752
  *
3753
+ * ### Animating between value changes
3754
+ *
3755
+ * Sometimes you need to animate between different expression states, whose values
3756
+ * don't necessary need to be known or referenced in CSS styles.
3757
+ * Unless possible with another {@link ngAnimate#directive-support "animation aware" directive},
3758
+ * that specific use case can always be covered with {@link ngAnimate.directive:ngAnimateSwap} as
3759
+ * can be seen in {@link ngAnimate.directive:ngAnimateSwap#examples this example}.
3760
+ *
3761
+ * Note that {@link ngAnimate.directive:ngAnimateSwap} is a *structural directive*, which means it
3762
+ * creates a new instance of the element (including any other/child directives it may have) and
3763
+ * links it to a new scope every time *swap* happens. In some cases this might not be desirable
3764
+ * (e.g. for performance reasons, or when you wish to retain internal state on the original
3765
+ * element instance).
3766
+ *
3673
3767
  * ## JavaScript-based Animations
3674
3768
  *
3675
3769
  * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared
@@ -3694,7 +3788,7 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3694
3788
  * enter: function(element, doneFn) {
3695
3789
  * jQuery(element).fadeIn(1000, doneFn);
3696
3790
  *
3697
- * // remember to call doneFn so that angular
3791
+ * // remember to call doneFn so that AngularJS
3698
3792
  * // knows that the animation has concluded
3699
3793
  * },
3700
3794
  *
@@ -3742,7 +3836,7 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3742
3836
  *
3743
3837
  * ## CSS + JS Animations Together
3744
3838
  *
3745
- * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of Angular,
3839
+ * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of AngularJS,
3746
3840
  * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking
3747
3841
  * charge of the animation**:
3748
3842
  *
@@ -3934,7 +4028,7 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3934
4028
  deps="angular-animate.js;angular-route.js"
3935
4029
  animations="true">
3936
4030
  <file name="index.html">
3937
- <a href="#/">Home</a>
4031
+ <a href="#!/">Home</a>
3938
4032
  <hr />
3939
4033
  <div class="view-container">
3940
4034
  <div ng-view class="view"></div>
@@ -3954,22 +4048,23 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3954
4048
  }])
3955
4049
  .run(['$rootScope', function($rootScope) {
3956
4050
  $rootScope.records = [
3957
- { id:1, title: "Miss Beulah Roob" },
3958
- { id:2, title: "Trent Morissette" },
3959
- { id:3, title: "Miss Ava Pouros" },
3960
- { id:4, title: "Rod Pouros" },
3961
- { id:5, title: "Abdul Rice" },
3962
- { id:6, title: "Laurie Rutherford Sr." },
3963
- { id:7, title: "Nakia McLaughlin" },
3964
- { id:8, title: "Jordon Blanda DVM" },
3965
- { id:9, title: "Rhoda Hand" },
3966
- { id:10, title: "Alexandrea Sauer" }
4051
+ { id: 1, title: 'Miss Beulah Roob' },
4052
+ { id: 2, title: 'Trent Morissette' },
4053
+ { id: 3, title: 'Miss Ava Pouros' },
4054
+ { id: 4, title: 'Rod Pouros' },
4055
+ { id: 5, title: 'Abdul Rice' },
4056
+ { id: 6, title: 'Laurie Rutherford Sr.' },
4057
+ { id: 7, title: 'Nakia McLaughlin' },
4058
+ { id: 8, title: 'Jordon Blanda DVM' },
4059
+ { id: 9, title: 'Rhoda Hand' },
4060
+ { id: 10, title: 'Alexandrea Sauer' }
3967
4061
  ];
3968
4062
  }])
3969
4063
  .controller('HomeController', [function() {
3970
4064
  //empty
3971
4065
  }])
3972
- .controller('ProfileController', ['$rootScope', '$routeParams', function($rootScope, $routeParams) {
4066
+ .controller('ProfileController', ['$rootScope', '$routeParams',
4067
+ function ProfileController($rootScope, $routeParams) {
3973
4068
  var index = parseInt($routeParams.id, 10);
3974
4069
  var record = $rootScope.records[index - 1];
3975
4070
 
@@ -3981,7 +4076,7 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
3981
4076
  <h2>Welcome to the home page</h1>
3982
4077
  <p>Please click on an element</p>
3983
4078
  <a class="record"
3984
- ng-href="#/profile/{{ record.id }}"
4079
+ ng-href="#!/profile/{{ record.id }}"
3985
4080
  ng-animate-ref="{{ record.id }}"
3986
4081
  ng-repeat="record in records">
3987
4082
  {{ record.title }}
@@ -4057,7 +4152,7 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
4057
4152
  *
4058
4153
  * ## Using $animate in your directive code
4059
4154
  *
4060
- * So far we've explored how to feed in animations into an Angular application, but how do we trigger animations within our own directives in our application?
4155
+ * So far we've explored how to feed in animations into an AngularJS application, but how do we trigger animations within our own directives in our application?
4061
4156
  * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's
4062
4157
  * imagine we have a greeting box that shows and hides itself when the data changes
4063
4158
  *
@@ -4100,7 +4195,7 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
4100
4195
  * });
4101
4196
  * ```
4102
4197
  *
4103
- * (Note that earlier versions of Angular prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case
4198
+ * (Note that earlier versions of AngularJS prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case
4104
4199
  * anymore.)
4105
4200
  *
4106
4201
  * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering
@@ -4115,9 +4210,22 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
4115
4210
  * }])
4116
4211
  * ```
4117
4212
  *
4118
- * (Note that you will need to trigger a digest within the callback to get angular to notice any scope-related changes.)
4213
+ * (Note that you will need to trigger a digest within the callback to get AngularJS to notice any scope-related changes.)
4119
4214
  */
4120
4215
 
4216
+ var copy;
4217
+ var extend;
4218
+ var forEach;
4219
+ var isArray;
4220
+ var isDefined;
4221
+ var isElement;
4222
+ var isFunction;
4223
+ var isObject;
4224
+ var isString;
4225
+ var isUndefined;
4226
+ var jqLite;
4227
+ var noop;
4228
+
4121
4229
  /**
4122
4230
  * @ngdoc service
4123
4231
  * @name $animate
@@ -4128,13 +4236,30 @@ var ngAnimateSwapDirective = ['$animate', '$rootScope', function($animate, $root
4128
4236
  *
4129
4237
  * Click here {@link ng.$animate to learn more about animations with `$animate`}.
4130
4238
  */
4131
- angular.module('ngAnimate', [])
4239
+ angular.module('ngAnimate', [], function initAngularHelpers() {
4240
+ // Access helpers from AngularJS core.
4241
+ // Do it inside a `config` block to ensure `window.angular` is available.
4242
+ noop = angular.noop;
4243
+ copy = angular.copy;
4244
+ extend = angular.extend;
4245
+ jqLite = angular.element;
4246
+ forEach = angular.forEach;
4247
+ isArray = angular.isArray;
4248
+ isString = angular.isString;
4249
+ isObject = angular.isObject;
4250
+ isUndefined = angular.isUndefined;
4251
+ isDefined = angular.isDefined;
4252
+ isFunction = angular.isFunction;
4253
+ isElement = angular.isElement;
4254
+ })
4255
+ .info({ angularVersion: '1.7.9' })
4132
4256
  .directive('ngAnimateSwap', ngAnimateSwapDirective)
4133
4257
 
4134
4258
  .directive('ngAnimateChildren', $$AnimateChildrenDirective)
4135
4259
  .factory('$$rAFScheduler', $$rAFSchedulerFactory)
4136
4260
 
4137
4261
  .provider('$$animateQueue', $$AnimateQueueProvider)
4262
+ .provider('$$animateCache', $$AnimateCacheProvider)
4138
4263
  .provider('$$animation', $$AnimationProvider)
4139
4264
 
4140
4265
  .provider('$animateCss', $AnimateCssProvider)