From fbe6541037deb30bfd99ed543b18c597b634aa9c Mon Sep 17 00:00:00 2001 From: echarp <manu@echarp.org> Date: Thu, 1 Mar 2018 22:18:04 +0100 Subject: [PATCH] Bundle update --- Gemfile.lock | 102 +- app/assets/images/agendadescommuns.png | Bin 2760 -> 2760 bytes app/assets/images/communs.png | Bin 2760 -> 2760 bytes app/assets/images/lef-small.png | Bin 1059 -> 1059 bytes app/assets/images/lef.png | Bin 7377 -> 7377 bytes app/assets/images/team.png | Bin 3586 -> 3586 bytes ...fest-d66893f1fe62a081525d8463c9642047.json | 2 +- ...80c64307369714b2e1e2d4eb9f69dfd986ab33.png | Bin 0 -> 2760 bytes ...56216db56c683c32b97f14ac21d595c4eeea3b0.js | 62321 ++++++++++++++++ ...16db56c683c32b97f14ac21d595c4eeea3b0.js.gz | Bin 0 -> 475223 bytes ...80c64307369714b2e1e2d4eb9f69dfd986ab33.png | Bin 0 -> 2760 bytes ...03013292a76cc4997877e626f123fe9afc2f75.png | Bin 0 -> 7377 bytes ...844a6e9600b782c2c81f78723b730072fa942e.png | Bin 0 -> 1059 bytes ...eafcbe3e5aa13dc675bb8ef34b220481db98fa.png | Bin 0 -> 3586 bytes ...a31070cd443b4c3e78d6055867520c0e56114b5.js | 26165 +++++++ ...070cd443b4c3e78d6055867520c0e56114b5.js.gz | Bin 0 -> 187781 bytes ...c47f6caf03450313cfff2129dc5db90a9a8f120.js | 1 + ...f6caf03450313cfff2129dc5db90a9a8f120.js.gz | Bin 0 -> 1574 bytes public/assets/tinymce/jquery.tinymce.js | 2 +- public/assets/tinymce/jquery.tinymce.js.gz | 2 +- ...e498020361da372386e2cee1447d739930902c3.js | 1 + ...8020361da372386e2cee1447d739930902c3.js.gz | Bin 0 -> 757 bytes .../assets/tinymce/plugins/anchor/plugin.js | 2 +- .../tinymce/plugins/anchor/plugin.js.gz | 2 +- ...c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js | 1 + ...86f5d00b986eb32b8c45d2111ea9a4fb34d3.js.gz | Bin 0 -> 1009 bytes .../assets/tinymce/plugins/autolink/plugin.js | 2 +- .../tinymce/plugins/autolink/plugin.js.gz | 2 +- ...80d3920072907ae2c782cf3a7da23f8e233fe5b.js | 1 + ...3920072907ae2c782cf3a7da23f8e233fe5b.js.gz | Bin 0 -> 886 bytes .../tinymce/plugins/contextmenu/plugin.js | 2 +- .../tinymce/plugins/contextmenu/plugin.js.gz | 2 +- ...374e238f57f78ac7745015b43e9337637d0f711.js | 1 + ...e238f57f78ac7745015b43e9337637d0f711.js.gz | Bin 0 -> 890 bytes .../tinymce/plugins/fullscreen/plugin.js | 2 +- .../tinymce/plugins/fullscreen/plugin.js.gz | 2 +- ...600b1d819787ff5fce5425f7c011487822127a8.js | 1 + ...b1d819787ff5fce5425f7c011487822127a8.js.gz | Bin 0 -> 3411 bytes public/assets/tinymce/plugins/help/plugin.js | 2 +- .../assets/tinymce/plugins/help/plugin.js.gz | 2 +- ...bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js | 1 + ...4fd8c0f4eba1edf2baf5a31a3b59bb677622.js.gz | Bin 0 -> 248 bytes public/assets/tinymce/plugins/hr/plugin.js | 2 +- public/assets/tinymce/plugins/hr/plugin.js.gz | 2 +- ...b99098a17dcaec6115c810288a177a8e2065f25.js | 1 + ...098a17dcaec6115c810288a177a8e2065f25.js.gz | Bin 0 -> 4928 bytes public/assets/tinymce/plugins/image/plugin.js | 2 +- .../assets/tinymce/plugins/image/plugin.js.gz | 2 +- ...cd30da969df899c85b7ed81b0b875123d093bfc.js | 1 + ...0da969df899c85b7ed81b0b875123d093bfc.js.gz | Bin 0 -> 12042 bytes .../tinymce/plugins/imagetools/plugin.js | 2 +- .../tinymce/plugins/imagetools/plugin.js.gz | 2 +- ...99bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js | 1 + ...d00c9e9c71a4440e9b87436d6bba6f3cdee3.js.gz | Bin 0 -> 3373 bytes public/assets/tinymce/plugins/link/plugin.js | 2 +- .../assets/tinymce/plugins/link/plugin.js.gz | 2 +- ...206200724018140203ef2f3754ffef659e1e215.js | 1 + ...200724018140203ef2f3754ffef659e1e215.js.gz | Bin 0 -> 4748 bytes public/assets/tinymce/plugins/lists/plugin.js | 2 +- .../assets/tinymce/plugins/lists/plugin.js.gz | 2 +- ...e355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js | 1 + ...5c1a8d8d566f2c3393fbdcf8f47d61b36f94.js.gz | Bin 0 -> 5329 bytes public/assets/tinymce/plugins/media/plugin.js | 2 +- .../assets/tinymce/plugins/media/plugin.js.gz | 2 +- ...7546c8c9d63f331b33add21b7c69e6db7d09b8e.js | 1 + ...6c8c9d63f331b33add21b7c69e6db7d09b8e.js.gz | Bin 0 -> 8358 bytes public/assets/tinymce/plugins/paste/plugin.js | 2 +- .../assets/tinymce/plugins/paste/plugin.js.gz | 2 +- ...2d853c309a732dbcb0176250869795b44fa9b28.js | 1 + ...53c309a732dbcb0176250869795b44fa9b28.js.gz | Bin 0 -> 987 bytes .../assets/tinymce/plugins/preview/plugin.js | 2 +- .../tinymce/plugins/preview/plugin.js.gz | 2 +- ...908c03d7906a77fef6a319a302ffff44099fe26.js | 1 + ...c03d7906a77fef6a319a302ffff44099fe26.js.gz | Bin 0 -> 228 bytes public/assets/tinymce/plugins/print/plugin.js | 2 +- .../assets/tinymce/plugins/print/plugin.js.gz | 2 +- ...01763a43aa95f1011e6d35558b40e178fbb3f89.js | 1 + ...63a43aa95f1011e6d35558b40e178fbb3f89.js.gz | Bin 0 -> 2897 bytes .../tinymce/plugins/searchreplace/plugin.js | 2 +- .../plugins/searchreplace/plugin.js.gz | 2 +- ...3c64b2a20336702c6afc44cba6d1e25f5df4a07.js | 1 + ...4b2a20336702c6afc44cba6d1e25f5df4a07.js.gz | Bin 0 -> 3952 bytes .../tinymce/plugins/spellchecker/plugin.js | 2 +- .../tinymce/plugins/spellchecker/plugin.js.gz | 2 +- ...61df619b504a04a91099a51ae8c21711dc8ae04.js | 1 + ...f619b504a04a91099a51ae8c21711dc8ae04.js.gz | Bin 0 -> 37645 bytes public/assets/tinymce/plugins/table/plugin.js | 2 +- .../assets/tinymce/plugins/table/plugin.js.gz | 2 +- ...07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js | 1 + ...f99ea79620d2b3d10d8320cb5ca8b49ccf2d.js.gz | Bin 0 -> 2096 bytes .../assets/tinymce/plugins/template/plugin.js | 2 +- .../tinymce/plugins/template/plugin.js.gz | 2 +- ...07fd184b02050fa6a601688dd34e0dee6dc79d.css | 1 + ...d184b02050fa6a601688dd34e0dee6dc79d.css.gz | Bin 0 -> 8250 bytes .../tinymce/skins/lightgray/skin.min.css | 2 +- .../tinymce/skins/lightgray/skin.min.css.gz | 2 +- ...980006c5f34559fa064b0091e5bc2a4da771110.js | 1 + ...006c5f34559fa064b0091e5bc2a4da771110.js.gz | Bin 0 -> 43605 bytes public/assets/tinymce/themes/inlite/theme.js | 2 +- .../assets/tinymce/themes/inlite/theme.js.gz | 2 +- ...12e8eb41ac06e509382c1bf19491d8222c56796.js | 1 + ...8eb41ac06e509382c1bf19491d8222c56796.js.gz | Bin 0 -> 53143 bytes public/assets/tinymce/themes/mobile/theme.js | 2 +- .../assets/tinymce/themes/mobile/theme.js.gz | 2 +- ...cbf9af2b62a1960298a453bb1d974ed324f11f2.js | 1 + ...9af2b62a1960298a453bb1d974ed324f11f2.js.gz | Bin 0 -> 43134 bytes public/assets/tinymce/themes/modern/theme.js | 2 +- .../assets/tinymce/themes/modern/theme.js.gz | 2 +- ...4b3690230e792c04888900b081b11f54e30257a.js | 26106 +++++++ ...690230e792c04888900b081b11f54e30257a.js.gz | Bin 0 -> 187339 bytes public/assets/tinymce/tinymce.js | 2 +- public/assets/tinymce/tinymce.js.gz | 2 +- 112 files changed, 114715 insertions(+), 100 deletions(-) create mode 100644 public/assets/agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png create mode 100644 public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js create mode 100644 public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js.gz create mode 100644 public/assets/communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png create mode 100644 public/assets/lef-15f93c1dccd4849a5e30613a3303013292a76cc4997877e626f123fe9afc2f75.png create mode 100644 public/assets/lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png create mode 100644 public/assets/team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png create mode 100644 public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js create mode 100644 public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js.gz create mode 100644 public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js create mode 100644 public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js.gz create mode 100644 public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js create mode 100644 public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js.gz create mode 100644 public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js create mode 100644 public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js.gz create mode 100644 public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js create mode 100644 public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js.gz create mode 100644 public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js create mode 100644 public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js.gz create mode 100644 public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js create mode 100644 public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js.gz create mode 100644 public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js create mode 100644 public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js.gz create mode 100644 public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js create mode 100644 public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js.gz create mode 100644 public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js create mode 100644 public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js.gz create mode 100644 public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js create mode 100644 public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js.gz create mode 100644 public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js create mode 100644 public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js.gz create mode 100644 public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js create mode 100644 public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js.gz create mode 100644 public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js create mode 100644 public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js.gz create mode 100644 public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js create mode 100644 public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js.gz create mode 100644 public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js create mode 100644 public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js.gz create mode 100644 public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js create mode 100644 public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js.gz create mode 100644 public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js create mode 100644 public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js.gz create mode 100644 public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js create mode 100644 public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js.gz create mode 100644 public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js create mode 100644 public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js.gz create mode 100644 public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css create mode 100644 public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css.gz create mode 100644 public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js create mode 100644 public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js.gz create mode 100644 public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js create mode 100644 public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js.gz create mode 100644 public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js create mode 100644 public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js.gz create mode 100644 public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js create mode 100644 public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js.gz diff --git a/Gemfile.lock b/Gemfile.lock index 1f3ed16d3..5eda0904e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,25 +2,25 @@ GEM remote: https://rubygems.org/ remote: https://rails-assets.org/ specs: - actioncable (5.1.4) - actionpack (= 5.1.4) + actioncable (5.1.5) + actionpack (= 5.1.5) nio4r (~> 2.0) websocket-driver (~> 0.6.1) - actionmailer (5.1.4) - actionpack (= 5.1.4) - actionview (= 5.1.4) - activejob (= 5.1.4) + actionmailer (5.1.5) + actionpack (= 5.1.5) + actionview (= 5.1.5) + activejob (= 5.1.5) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (5.1.4) - actionview (= 5.1.4) - activesupport (= 5.1.4) + actionpack (5.1.5) + actionview (= 5.1.5) + activesupport (= 5.1.5) rack (~> 2.0) rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.1.4) - activesupport (= 5.1.4) + actionview (5.1.5) + activesupport (= 5.1.5) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) @@ -39,16 +39,16 @@ GEM ransack (~> 1.3) sass (~> 3.1) sprockets (< 4.1) - activejob (5.1.4) - activesupport (= 5.1.4) + activejob (5.1.5) + activesupport (= 5.1.5) globalid (>= 0.3.6) - activemodel (5.1.4) - activesupport (= 5.1.4) - activerecord (5.1.4) - activemodel (= 5.1.4) - activesupport (= 5.1.4) + activemodel (5.1.5) + activesupport (= 5.1.5) + activerecord (5.1.5) + activemodel (= 5.1.5) + activesupport (= 5.1.5) arel (~> 8.0) - activesupport (5.1.4) + activesupport (5.1.5) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (~> 0.7) minitest (~> 5.1) @@ -63,14 +63,14 @@ GEM ast (2.4.0) bcrypt (3.1.11) bindex (0.5.0) - brakeman (4.1.1) + brakeman (4.2.0) buftok (0.2.0) builder (3.2.3) bundler-audit (0.6.0) bundler (~> 1.2) thor (~> 0.18) byebug (10.0.0) - capybara (2.17.0) + capybara (2.18.0) addressable mini_mime (>= 0.1.3) nokogiri (>= 1.3.3) @@ -95,8 +95,8 @@ GEM railties (>= 4.1.0, < 5.2) responders warden (~> 1.2.3) - devise-i18n (1.5.1) - devise (>= 3.4) + devise-i18n (1.6.0) + devise (>= 4.4) differ (0.1.2) domain_name (0.5.20170404) unf (>= 0.0.5, < 1.0.0) @@ -110,7 +110,7 @@ GEM erubis (2.7.0) eventmachine (1.2.5) execjs (2.7.0) - ffi (1.9.21) + ffi (1.9.23) flag-icons-rails (2.5.0) sass (~> 3.2) font-awesome-sass (5.0.6.2) @@ -119,7 +119,7 @@ GEM formtastic (3.1.5) actionpack (>= 3.2.13) formtastic_i18n (0.6.0) - geocoder (1.4.5) + geocoder (1.4.6) globalid (0.4.1) activesupport (>= 4.2.0) guard (2.14.2) @@ -191,7 +191,7 @@ GEM http-form_data (2.0.0) http_accept_language (2.1.1) http_parser.rb (0.6.0) - i18n (0.9.4) + i18n (0.9.5) concurrent-ruby (~> 1.0) i18n-active_record (0.2.2) i18n (>= 0.5.0) @@ -228,7 +228,7 @@ GEM rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) - loofah (2.1.1) + loofah (2.2.0) crass (~> 1.0.2) nokogiri (>= 1.5.9) lumberjack (1.0.12) @@ -236,7 +236,7 @@ GEM mini_mime (>= 0.1.1) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) - meta-tags (2.7.1) + meta-tags (2.8.0) actionpack (>= 3.2.0, < 5.3) method_source (0.9.0) mini_mime (1.0.0) @@ -259,8 +259,8 @@ GEM activerecord (>= 4.2, < 5.2) request_store (~> 1.1) parallel (1.12.1) - parser (2.4.0.2) - ast (~> 2.3) + parser (2.5.0.2) + ast (~> 2.4.0) piwik_analytics (1.0.2) actionpack activesupport @@ -271,24 +271,24 @@ GEM pry (0.11.3) coderay (~> 1.1.0) method_source (~> 0.9.0) - public_suffix (3.0.1) + public_suffix (3.0.2) puma (3.11.2) rack (2.0.4) rack-livereload (0.3.16) rack - rack-test (0.8.2) + rack-test (0.8.3) rack (>= 1.0, < 3) - rails (5.1.4) - actioncable (= 5.1.4) - actionmailer (= 5.1.4) - actionpack (= 5.1.4) - actionview (= 5.1.4) - activejob (= 5.1.4) - activemodel (= 5.1.4) - activerecord (= 5.1.4) - activesupport (= 5.1.4) + rails (5.1.5) + actioncable (= 5.1.5) + actionmailer (= 5.1.5) + actionpack (= 5.1.5) + actionview (= 5.1.5) + activejob (= 5.1.5) + activemodel (= 5.1.5) + activerecord (= 5.1.5) + activesupport (= 5.1.5) bundler (>= 1.3.0) - railties (= 5.1.4) + railties (= 5.1.5) sprockets-rails (>= 2.0.0) rails-assets-jquery-sparkline (2.1.3) rails-assets-leaflet (1.3.1) @@ -303,12 +303,12 @@ GEM nokogiri (>= 1.6) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - rails-i18n (5.0.4) - i18n (~> 0.7) - railties (~> 5.0) - railties (5.1.4) - actionpack (= 5.1.4) - activesupport (= 5.1.4) + rails-i18n (5.1.1) + i18n (>= 0.7, < 2) + railties (>= 5.0, < 6) + railties (5.1.5) + actionpack (= 5.1.5) + activesupport (= 5.1.5) method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) @@ -339,7 +339,7 @@ GEM unicode-display_width (~> 1.0, >= 1.0.1) ruby-progressbar (1.9.0) ruby_dep (1.5.0) - ruby_parser (3.10.1) + ruby_parser (3.11.0) sexp_processor (~> 4.9) rubyzip (1.2.1) sass (3.5.5) @@ -358,7 +358,7 @@ GEM selenium-webdriver (3.9.0) childprocess (~> 0.5) rubyzip (~> 1.2) - sexp_processor (4.10.0) + sexp_processor (4.10.1) shellany (0.0.1) simple_calendar (2.2.7) rails (>= 3.0) @@ -388,7 +388,7 @@ GEM thor (0.20.0) thread_safe (0.3.6) tilt (2.0.8) - tinymce-rails (4.7.6) + tinymce-rails (4.7.9) railties (>= 3.1.1) tinymce-rails-langs (4.20180103) tinymce-rails (~> 4.1, >= 4.1.10) diff --git a/app/assets/images/agendadescommuns.png b/app/assets/images/agendadescommuns.png index 6d2d71381833c282b18fb1113d180cad02bca40d..d7efd7497697d8794831be04696626492652c9b3 100644 GIT binary patch delta 18 ZcmX>hdO~!9@x}-q=849tn^Txm*a1Nj1_S^A delta 19 acmX>hdO~!9@nm~u)s4nH%$rk~Q`iASQw8t< diff --git a/app/assets/images/communs.png b/app/assets/images/communs.png index 6d2d71381833c282b18fb1113d180cad02bca40d..d7efd7497697d8794831be04696626492652c9b3 100644 GIT binary patch delta 18 ZcmX>hdO~!9@x}-q=849tn^Txm*a1Nj1_S^A delta 19 acmX>hdO~!9@nm~u)s4nH%$rk~Q`iASQw8t< diff --git a/app/assets/images/lef-small.png b/app/assets/images/lef-small.png index 74b0c2c09d3af93e9a9ce71d6a2f4bc0f3b3d3b1..d449b7d011987a89c379f7d053248167570e9ac3 100644 GIT binary patch delta 55 zcmZ3?v6y3m2|rtsx4R3&e-K=-clqRrhFToV3p`yMLo5V0md;}qc%@@|hye&ZUHx3v IIVCg!03n(Z+yDRo delta 42 wcmZ3?v6y3m$wW8xiN-=4%nLkS977}|H<r$07HANj;miO8p00i_>zopr01K}SBme*a diff --git a/app/assets/images/lef.png b/app/assets/images/lef.png index 64433c0ecc5a748e3361ca6952ddbf4dd86927af..b21875dc73ab08b87644674d75f9423476832470 100644 GIT binary patch delta 29 icmca;dC_u$3O`$tx4R3&e-K=-clqRris2i(++_f>CJa#k delta 16 Xcmca;dC_u$%0#n}iOND7yWC{}J9P#~ diff --git a/app/assets/images/team.png b/app/assets/images/team.png index 13af6148c58239942645cc9222e764158d981017..1da5a922f7e2065ea7fc9a78d652f77a0e35e2f2 100644 GIT binary patch delta 30 kcmZpYX_A>>&6II(qwQ8+fsYR&bs2!b)78&qol`;+0H)0fSpWb4 delta 30 kcmZpYX_A>>%~Ww~qwQ8+ftcNi3JgHt>FVdQ&MBb@0Gu%irT_o{ diff --git a/public/assets/.sprockets-manifest-d66893f1fe62a081525d8463c9642047.json b/public/assets/.sprockets-manifest-d66893f1fe62a081525d8463c9642047.json index f68ee6841..2f5a56131 100644 --- a/public/assets/.sprockets-manifest-d66893f1fe62a081525d8463c9642047.json +++ b/public/assets/.sprockets-manifest-d66893f1fe62a081525d8463c9642047.json @@ -1 +1 @@ -{"files":{"active_admin-d4f38d29ff0b2b9b05ed4ecbcebd736e750ad4b29369bc58d35194f7e107eaae.css":{"logical_path":"active_admin.css","mtime":"2018-01-18T21:11:12+01:00","size":80636,"digest":"d4f38d29ff0b2b9b05ed4ecbcebd736e750ad4b29369bc58d35194f7e107eaae","integrity":"sha256-1PONKf8LK5sF7U7Lzr1zbnUK1LKTabxY01GU9+EH6q4="},"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif":{"logical_path":"active_admin/nested_menu_arrow.gif","mtime":"2018-01-18T21:11:12+01:00","size":70,"digest":"15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442","integrity":"sha256-FQhNk8ZcGWTXB3cA6nSL0tcM+i1MGXB8WKnGTiMt1EI="},"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif":{"logical_path":"active_admin/nested_menu_arrow_dark.gif","mtime":"2018-01-18T21:11:12+01:00","size":70,"digest":"7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034","integrity":"sha256-fEO44KX4gjh19JoJPJ16azdPiFtvnMJIrpzX5umykDQ="},"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png":{"logical_path":"active_admin/orderable.png","mtime":"2018-01-18T21:11:12+01:00","size":220,"digest":"29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617","integrity":"sha256-KTdNu1WwAS14o3xhTVc7s0dPB3mEm0eKFH0PGEXKZhc="},"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css":{"logical_path":"active_admin/print.css","mtime":"2018-01-18T21:11:12+01:00","size":7086,"digest":"cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6","integrity":"sha256-z5nL8n+5IGWp6s0o5vrUj6csra9uCRh5Do01sR2PmfY="},"active_admin-115a9ff718613239e12adb1f3bf498a1ccba1735051b69a5d1fbee5e495ff489.js":{"logical_path":"active_admin.js","mtime":"2018-01-05T22:13:22+01:00","size":961412,"digest":"115a9ff718613239e12adb1f3bf498a1ccba1735051b69a5d1fbee5e495ff489","integrity":"sha256-EVqf9xhhMjnhKtsfO/SYocy6FzUFG2ml0fvuXklf9Ik="},"tinymce-d01e33fd7bee04ec85526d769634c548ffc9d13584e1e3ecb754f48c8a3a0662.js":{"logical_path":"tinymce.js","mtime":"2017-10-07T18:51:24+02:00","size":1055,"digest":"d01e33fd7bee04ec85526d769634c548ffc9d13584e1e3ecb754f48c8a3a0662","integrity":"sha256-0B4z/XvuBOyFUm12ljTFSP/J0TWE4ePst1T0jIo6BmI="},"application-ba1c3eda80784b6eec3860ce601adf04370c8c8b17855bd3438a42dc8a69cfa2.css":{"logical_path":"application.css","mtime":"2017-10-07T18:51:24+02:00","size":229915,"digest":"ba1c3eda80784b6eec3860ce601adf04370c8c8b17855bd3438a42dc8a69cfa2","integrity":"sha256-uhw+2oB4S27sOGDOYBrfBDcMjIsXhVvTQ4pC3Ippz6I="},"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png":{"logical_path":"jquery-ui/ui-icons_444444_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d","integrity":"sha256-MdmIdltOb1ZVPClYjFADgdw+bwqimAyCEiAuVkSu/V0="},"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png":{"logical_path":"jquery-ui/ui-icons_555555_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5","integrity":"sha256-MhdSYdrudsgrsO3w7qFqVkIYZvvDHpTzwdVwqhFFAvU="},"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png":{"logical_path":"jquery-ui/ui-icons_ffffff_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a","integrity":"sha256-NQ3xtxMQN94g6DxcDzpBp3DSrEi1di6ncrP0qKe51Ho="},"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png":{"logical_path":"jquery-ui/ui-icons_777620_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b","integrity":"sha256-CwIPxuaW2I0pbnux9h8esq2CeEjixzgqTD4JmecC3Zs="},"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png":{"logical_path":"jquery-ui/ui-icons_cc0000_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69","integrity":"sha256-QJhaZLTV3SE/uif82GKhvRszepdnT2/wuewgq87kvGk="},"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png":{"logical_path":"jquery-ui/ui-icons_777777_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f","integrity":"sha256-+vMgB64SDDAiE1V2JuZg3RDnEcXdTxET018m3AW3jS8="},"flags/4x3/ad-3fc30cc000942b4f3369bdf6ccb85b16f59f4e78f9c53d73252ab529da35ba0a.svg":{"logical_path":"flags/4x3/ad.svg","mtime":"2017-10-08T14:45:34+02:00","size":56452,"digest":"3fc30cc000942b4f3369bdf6ccb85b16f59f4e78f9c53d73252ab529da35ba0a","integrity":"sha256-P8MMwACUK08zab32zLhbFvWfTnj5xT1zJSq1Kdo1ugo="},"flags/1x1/ad-db2c38d603b8eecc9085d6ac1261bbefd3bcd852d44bec476e5e115914bcb2fd.svg":{"logical_path":"flags/1x1/ad.svg","mtime":"2017-10-08T14:45:34+02:00","size":55630,"digest":"db2c38d603b8eecc9085d6ac1261bbefd3bcd852d44bec476e5e115914bcb2fd","integrity":"sha256-2yw41gO47syQhdasEmG779O82FLUS+xHbl4RWRS8sv0="},"flags/4x3/ae-7f41692ef179841ca6e9cae42c704113274707228ff3d2b1ee5169916db15b1e.svg":{"logical_path":"flags/4x3/ae.svg","mtime":"2017-10-08T14:45:34+02:00","size":257,"digest":"7f41692ef179841ca6e9cae42c704113274707228ff3d2b1ee5169916db15b1e","integrity":"sha256-f0FpLvF5hBym6crkLHBBEydHByKP89Kx7lFpkW2xWx4="},"flags/1x1/ae-8c9b9b1f108511722e1f1b0f9a029edf808ff285406545f24e327052e0efa780.svg":{"logical_path":"flags/1x1/ae.svg","mtime":"2017-10-08T14:45:34+02:00","size":273,"digest":"8c9b9b1f108511722e1f1b0f9a029edf808ff285406545f24e327052e0efa780","integrity":"sha256-jJubHxCFEXIuHxsPmgKe34CP8oVAZUXyTjJwUuDvp4A="},"flags/4x3/af-e271fd8f2fcdd0adda22a0e699173ff4e4cc65adfe7f05652cb77375eea99a93.svg":{"logical_path":"flags/4x3/af.svg","mtime":"2017-10-08T14:45:34+02:00","size":97407,"digest":"e271fd8f2fcdd0adda22a0e699173ff4e4cc65adfe7f05652cb77375eea99a93","integrity":"sha256-4nH9jy/N0K3aIqDmmRc/9OTMZa3+fwVlLLdzde6pmpM="},"flags/1x1/af-2629bc2e10edd54c384650f9aab1c6dfaf7101fda43ba3af627f0ec226db5892.svg":{"logical_path":"flags/1x1/af.svg","mtime":"2017-10-08T14:45:34+02:00","size":90925,"digest":"2629bc2e10edd54c384650f9aab1c6dfaf7101fda43ba3af627f0ec226db5892","integrity":"sha256-Jim8LhDt1Uw4RlD5qrHG369xAf2kO6OvYn8OwibbWJI="},"flags/4x3/ag-91fee45d7e1bab658f840a721364dd6eff0b67f9135dc8445a1b3554c347c2e9.svg":{"logical_path":"flags/4x3/ag.svg","mtime":"2017-10-08T14:45:34+02:00","size":902,"digest":"91fee45d7e1bab658f840a721364dd6eff0b67f9135dc8445a1b3554c347c2e9","integrity":"sha256-kf7kXX4bq2WPhApyE2Tdbv8LZ/kTXchEWhs1VMNHwuk="},"flags/1x1/ag-476bf833d4e0789f71d7b0d24164734ed97627f36edd09cc75991bcfbb2aa7af.svg":{"logical_path":"flags/1x1/ag.svg","mtime":"2017-10-08T14:45:34+02:00","size":862,"digest":"476bf833d4e0789f71d7b0d24164734ed97627f36edd09cc75991bcfbb2aa7af","integrity":"sha256-R2v4M9TgeJ9x17DSQWRzTtl2J/Nu3QnMdZkbz7sqp68="},"flags/4x3/ai-0106851bba5120a0f2bca5e6187ea65c9846e696f5ca57631aa89371cdf98871.svg":{"logical_path":"flags/4x3/ai.svg","mtime":"2017-10-08T14:45:34+02:00","size":55336,"digest":"0106851bba5120a0f2bca5e6187ea65c9846e696f5ca57631aa89371cdf98871","integrity":"sha256-AQaFG7pRIKDyvKXmGH6mXJhG5pb1yldjGqiTcc35iHE="},"flags/1x1/ai-50a3279d492c2932919c02880b69da7bb7948ce96988d8ccc9b16357f006165c.svg":{"logical_path":"flags/1x1/ai.svg","mtime":"2017-10-08T14:45:34+02:00","size":58220,"digest":"50a3279d492c2932919c02880b69da7bb7948ce96988d8ccc9b16357f006165c","integrity":"sha256-UKMnnUksKTKRnAKIC2nae7eUjOlpiNjMybFjV/AGFlw="},"flags/4x3/al-f8bc9837446a4880d29088f18bfc014b4cde95d8edda1241be22b5724a74ea8d.svg":{"logical_path":"flags/4x3/al.svg","mtime":"2017-10-08T14:45:34+02:00","size":4647,"digest":"f8bc9837446a4880d29088f18bfc014b4cde95d8edda1241be22b5724a74ea8d","integrity":"sha256-+LyYN0RqSIDSkIjxi/wBS0zeldjt2hJBviK1ckp06o0="},"flags/1x1/al-fb2c4d723ddbfb2c659ee2b3052d33347c130fb1024e2cb0ddd17f25b082542c.svg":{"logical_path":"flags/1x1/al.svg","mtime":"2017-10-08T14:45:34+02:00","size":4908,"digest":"fb2c4d723ddbfb2c659ee2b3052d33347c130fb1024e2cb0ddd17f25b082542c","integrity":"sha256-+yxNcj3b+yxlnuKzBS0zNHwTD7ECTiyw3dF/JbCCVCw="},"flags/4x3/am-aeabb81fbe6ac768ba7b95bb22e5a1791eb35ff83d0b5d6785c88ddc6835444e.svg":{"logical_path":"flags/4x3/am.svg","mtime":"2017-10-08T14:45:34+02:00","size":226,"digest":"aeabb81fbe6ac768ba7b95bb22e5a1791eb35ff83d0b5d6785c88ddc6835444e","integrity":"sha256-rqu4H75qx2i6e5W7IuWheR6zX/g9C11nhciN3Gg1RE4="},"flags/1x1/am-6fc2c9fb24a6a079960d619cc1fdaeee31cdb52d27c75bb9b065d9664d853c11.svg":{"logical_path":"flags/1x1/am.svg","mtime":"2017-10-08T14:45:34+02:00","size":242,"digest":"6fc2c9fb24a6a079960d619cc1fdaeee31cdb52d27c75bb9b065d9664d853c11","integrity":"sha256-b8LJ+ySmoHmWDWGcwf2u7jHNtS0nx1u5sGXZZk2FPBE="},"flags/4x3/ao-34ea70b51c9069ef1a859935f07a64cfffab4e08438a9c746898da56b495d127.svg":{"logical_path":"flags/4x3/ao.svg","mtime":"2017-10-08T14:45:34+02:00","size":2245,"digest":"34ea70b51c9069ef1a859935f07a64cfffab4e08438a9c746898da56b495d127","integrity":"sha256-NOpwtRyQae8ahZk18Hpkz/+rTghDipx0aJjaVrSV0Sc="},"flags/1x1/ao-1240d65f5dd9d8945701ed46611bd97f53f2cecf15b435cc54604eb79f4b97a8.svg":{"logical_path":"flags/1x1/ao.svg","mtime":"2017-10-08T14:45:34+02:00","size":2251,"digest":"1240d65f5dd9d8945701ed46611bd97f53f2cecf15b435cc54604eb79f4b97a8","integrity":"sha256-EkDWX13Z2JRXAe1GYRvZf1Pyzs8VtDXMVGBOt59Ll6g="},"flags/4x3/aq-6e2cee0eae620cd3f1fe6be665fd216f9a54a2afe215441005904dfeca24c169.svg":{"logical_path":"flags/4x3/aq.svg","mtime":"2017-10-08T14:45:34+02:00","size":4488,"digest":"6e2cee0eae620cd3f1fe6be665fd216f9a54a2afe215441005904dfeca24c169","integrity":"sha256-bizuDq5iDNPx/mvmZf0hb5pUoq/iFUQQBZBN/sokwWk="},"flags/1x1/aq-73c87173b09f476af2367895c76cf65d159c0a0b2ec292c1f1f5b08b2e78f829.svg":{"logical_path":"flags/1x1/aq.svg","mtime":"2017-10-08T14:45:34+02:00","size":4611,"digest":"73c87173b09f476af2367895c76cf65d159c0a0b2ec292c1f1f5b08b2e78f829","integrity":"sha256-c8hxc7CfR2ryNniVx2z2XRWcCgsuwpLB8fWwiy54+Ck="},"flags/4x3/ar-71eca3c44a303392f2c8db443add184c4c79d9fa8a3e729be2528c8db53790b6.svg":{"logical_path":"flags/4x3/ar.svg","mtime":"2017-10-08T14:45:34+02:00","size":34347,"digest":"71eca3c44a303392f2c8db443add184c4c79d9fa8a3e729be2528c8db53790b6","integrity":"sha256-ceyjxEowM5LyyNtEOt0YTEx52fqKPnKb4lKMjbU3kLY="},"flags/1x1/ar-0f75960e9ea2b2533e9112d4fc02154182f72460720c5a7d4dc21ef47758c369.svg":{"logical_path":"flags/1x1/ar.svg","mtime":"2017-10-08T14:45:34+02:00","size":34266,"digest":"0f75960e9ea2b2533e9112d4fc02154182f72460720c5a7d4dc21ef47758c369","integrity":"sha256-D3WWDp6islM+kRLU/AIVQYL3JGByDFp9TcIe9HdYw2k="},"flags/4x3/as-29ac7248b1c428a68d0e2b1cfca4fade7b0fcb38151bf980d35c3b0be63d3d91.svg":{"logical_path":"flags/4x3/as.svg","mtime":"2017-10-08T14:45:34+02:00","size":11465,"digest":"29ac7248b1c428a68d0e2b1cfca4fade7b0fcb38151bf980d35c3b0be63d3d91","integrity":"sha256-KaxySLHEKKaNDisc/KT63nsPyzgVG/mA01w7C+Y9PZE="},"flags/1x1/as-f516550a6b6cf7e277a1877cad9afe10f694ac32c92df7709690913fd59ecf20.svg":{"logical_path":"flags/1x1/as.svg","mtime":"2017-10-08T14:45:34+02:00","size":11530,"digest":"f516550a6b6cf7e277a1877cad9afe10f694ac32c92df7709690913fd59ecf20","integrity":"sha256-9RZVCmts9+J3oYd8rZr+EPaUrDLJLfdwlpCRP9WezyA="},"flags/4x3/at-e6517cfc6605c0ffa13da8db795d6e4cd353f72434f8fe38a2ebab7ba685081b.svg":{"logical_path":"flags/4x3/at.svg","mtime":"2017-10-08T14:45:34+02:00","size":263,"digest":"e6517cfc6605c0ffa13da8db795d6e4cd353f72434f8fe38a2ebab7ba685081b","integrity":"sha256-5lF8/GYFwP+hPajbeV1uTNNT9yQ0+P44ouure6aFCBs="},"flags/1x1/at-b9f9e8349460db6d35662b445a8a5fff96fccd904fff3411b711d31b2d7b7f16.svg":{"logical_path":"flags/1x1/at.svg","mtime":"2017-10-08T14:45:34+02:00","size":259,"digest":"b9f9e8349460db6d35662b445a8a5fff96fccd904fff3411b711d31b2d7b7f16","integrity":"sha256-ufnoNJRg2201ZitEWopf/5b8zZBP/zQRtxHTGy17fxY="},"flags/4x3/au-c929c02559051c3f51c0d93dd9df0d886b6c1efa083c0f101d2b3fd39706726e.svg":{"logical_path":"flags/4x3/au.svg","mtime":"2017-10-08T14:45:34+02:00","size":1773,"digest":"c929c02559051c3f51c0d93dd9df0d886b6c1efa083c0f101d2b3fd39706726e","integrity":"sha256-ySnAJVkFHD9RwNk92d8NiGtsHvoIPA8QHSs/05cGcm4="},"flags/1x1/au-96828c63a52eff55282096c045a3822cde99a00bf20528810d31f27b27208593.svg":{"logical_path":"flags/1x1/au.svg","mtime":"2017-10-08T14:45:34+02:00","size":1746,"digest":"96828c63a52eff55282096c045a3822cde99a00bf20528810d31f27b27208593","integrity":"sha256-loKMY6Uu/1UoIJbARaOCLN6ZoAvyBSiBDTHyeycghZM="},"flags/4x3/aw-44597b0ede9ff7df0e659c464a51fdbc1a7f5cc5cd621d281302843c23a905bf.svg":{"logical_path":"flags/4x3/aw.svg","mtime":"2017-10-08T14:45:34+02:00","size":14674,"digest":"44597b0ede9ff7df0e659c464a51fdbc1a7f5cc5cd621d281302843c23a905bf","integrity":"sha256-RFl7Dt6f998OZZxGSlH9vBp/XMXNYh0oEwKEPCOpBb8="},"flags/1x1/aw-2bd4b1890e233baeae0bcaaf1841803de35dd9c422f486588e48bf3506d69ae0.svg":{"logical_path":"flags/1x1/aw.svg","mtime":"2017-10-08T14:45:34+02:00","size":14194,"digest":"2bd4b1890e233baeae0bcaaf1841803de35dd9c422f486588e48bf3506d69ae0","integrity":"sha256-K9SxiQ4jO66uC8qvGEGAPeNd2cQi9IZYjki/NQbWmuA="},"flags/4x3/ax-95093e740b0b492f7cd96fe370fa2478f0d0148b89b424cd8436807234ade9dd.svg":{"logical_path":"flags/4x3/ax.svg","mtime":"2017-10-08T14:45:34+02:00","size":563,"digest":"95093e740b0b492f7cd96fe370fa2478f0d0148b89b424cd8436807234ade9dd","integrity":"sha256-lQk+dAsLSS982W/jcPokePDQFIuJtCTNhDaAcjSt6d0="},"flags/1x1/ax-99af962543005067e7239903eb6bc23226d30ce14a7c6408693dc9641193ddc3.svg":{"logical_path":"flags/1x1/ax.svg","mtime":"2017-10-08T14:45:34+02:00","size":549,"digest":"99af962543005067e7239903eb6bc23226d30ce14a7c6408693dc9641193ddc3","integrity":"sha256-ma+WJUMAUGfnI5kD62vCMibTDOFKfGQIaT3JZBGT3cM="},"flags/4x3/az-c0959e214bf9a3e94993cfc03f4884b15f6d8c4dd20842a5052a29a8495fd431.svg":{"logical_path":"flags/4x3/az.svg","mtime":"2017-10-08T14:45:34+02:00","size":567,"digest":"c0959e214bf9a3e94993cfc03f4884b15f6d8c4dd20842a5052a29a8495fd431","integrity":"sha256-wJWeIUv5o+lJk8/AP0iEsV9tjE3SCEKlBSopqElf1DE="},"flags/1x1/az-3db731c28289795dc3bda91b3bab129d994a09b8ee0959d34f21a1f840f894de.svg":{"logical_path":"flags/1x1/az.svg","mtime":"2017-10-08T14:45:34+02:00","size":611,"digest":"3db731c28289795dc3bda91b3bab129d994a09b8ee0959d34f21a1f840f894de","integrity":"sha256-PbcxwoKJeV3DvakbO6sSnZlKCbjuCVnTTyGh+ED4lN4="},"flags/4x3/ba-388ea99507a04cc5d4768bd708d984714aeebbe4177a1cf8ffe0b8331dd856d9.svg":{"logical_path":"flags/4x3/ba.svg","mtime":"2017-10-08T14:45:34+02:00","size":1512,"digest":"388ea99507a04cc5d4768bd708d984714aeebbe4177a1cf8ffe0b8331dd856d9","integrity":"sha256-OI6plQegTMXUdovXCNmEcUruu+QXehz4/+C4Mx3YVtk="},"flags/1x1/ba-b7d7ab49229704dff0192935c9fb7fb4ea6ba989ce4fee832a738a5d78b39d71.svg":{"logical_path":"flags/1x1/ba.svg","mtime":"2017-10-08T14:45:34+02:00","size":1482,"digest":"b7d7ab49229704dff0192935c9fb7fb4ea6ba989ce4fee832a738a5d78b39d71","integrity":"sha256-t9erSSKXBN/wGSk1yft/tOprqYnOT+6DKnOKXXiznXE="},"flags/4x3/bb-6df74e1044b7f42c2c3b1082d46eb0198aa65a180459fdd950838cd2e6c00ee1.svg":{"logical_path":"flags/4x3/bb.svg","mtime":"2017-10-08T14:45:34+02:00","size":767,"digest":"6df74e1044b7f42c2c3b1082d46eb0198aa65a180459fdd950838cd2e6c00ee1","integrity":"sha256-bfdOEES39CwsOxCC1G6wGYqmWhgEWf3ZUIOM0ubADuE="},"flags/1x1/bb-eb10f33cbde25ab6ccaa49cbe3976b4f5ece2fa1d3d485394caa158f10b8b8c9.svg":{"logical_path":"flags/1x1/bb.svg","mtime":"2017-10-08T14:45:34+02:00","size":763,"digest":"eb10f33cbde25ab6ccaa49cbe3976b4f5ece2fa1d3d485394caa158f10b8b8c9","integrity":"sha256-6xDzPL3iWrbMqknL45drT17OL6HT1IU5TKoVjxC4uMk="},"flags/4x3/bd-6cc222c4343f0027697ddd9e8d48f2cf93d3f677b6460b530eabefd2410cfef3.svg":{"logical_path":"flags/4x3/bd.svg","mtime":"2017-10-08T14:45:34+02:00","size":205,"digest":"6cc222c4343f0027697ddd9e8d48f2cf93d3f677b6460b530eabefd2410cfef3","integrity":"sha256-bMIixDQ/ACdpfd2ejUjyz5PT9ne2RgtTDqvv0kEM/vM="},"flags/1x1/bd-2dc72311aca457668c8bce4f3a22c1b76320e00be50a58fb4001ea39caf6725c.svg":{"logical_path":"flags/1x1/bd.svg","mtime":"2017-10-08T14:45:34+02:00","size":209,"digest":"2dc72311aca457668c8bce4f3a22c1b76320e00be50a58fb4001ea39caf6725c","integrity":"sha256-LccjEaykV2aMi85POiLBt2Mg4AvlClj7QAHqOcr2clw="},"flags/4x3/be-2b7e73068f4f120ed0ccc3a9fbb8566c9574b206afd8373ed9050e2a971c4f99.svg":{"logical_path":"flags/4x3/be.svg","mtime":"2017-10-08T14:45:34+02:00","size":318,"digest":"2b7e73068f4f120ed0ccc3a9fbb8566c9574b206afd8373ed9050e2a971c4f99","integrity":"sha256-K35zBo9PEg7QzMOp+7hWbJV0sgav2Dc+2QUOKpccT5k="},"flags/1x1/be-c4c9351d83a4db1f8c7c73dd6476569f0dfd82290ffd20275b7372908c2f2a7e.svg":{"logical_path":"flags/1x1/be.svg","mtime":"2017-10-08T14:45:34+02:00","size":318,"digest":"c4c9351d83a4db1f8c7c73dd6476569f0dfd82290ffd20275b7372908c2f2a7e","integrity":"sha256-xMk1HYOk2x+MfHPdZHZWnw39gikP/SAnW3NykIwvKn4="},"flags/4x3/bf-56669967fef6bb607ea2fd26d32d922cf78f176115287e37e9cf0b8bbec677f0.svg":{"logical_path":"flags/4x3/bf.svg","mtime":"2017-10-08T14:45:34+02:00","size":447,"digest":"56669967fef6bb607ea2fd26d32d922cf78f176115287e37e9cf0b8bbec677f0","integrity":"sha256-VmaZZ/72u2B+ov0m0y2SLPePF2EVKH436c8Li77Gd/A="},"flags/1x1/bf-ffc3651e87b9ccc9374d5bc95617aad474bcaa35871c83ae91fa71eb8b46bab3.svg":{"logical_path":"flags/1x1/bf.svg","mtime":"2017-10-08T14:45:34+02:00","size":459,"digest":"ffc3651e87b9ccc9374d5bc95617aad474bcaa35871c83ae91fa71eb8b46bab3","integrity":"sha256-/8NlHoe5zMk3TVvJVheq1HS8qjWHHIOukfpx64tGurM="},"flags/4x3/bg-ad796782d048f6ddc6715f7ea915a2c86716753579735ec071a106a7f3fc13b6.svg":{"logical_path":"flags/4x3/bg.svg","mtime":"2017-10-08T14:45:34+02:00","size":305,"digest":"ad796782d048f6ddc6715f7ea915a2c86716753579735ec071a106a7f3fc13b6","integrity":"sha256-rXlngtBI9t3GcV9+qRWiyGcWdTV5c17AcaEGp/P8E7Y="},"flags/1x1/bg-962bd196cc8e4b702757e17a9002e867843c16415a47a52ecd97459278e5fa1f.svg":{"logical_path":"flags/1x1/bg.svg","mtime":"2017-10-08T14:45:34+02:00","size":309,"digest":"962bd196cc8e4b702757e17a9002e867843c16415a47a52ecd97459278e5fa1f","integrity":"sha256-livRlsyOS3AnV+F6kALoZ4Q8FkFaR6UuzZdFknjl+h8="},"flags/4x3/bh-aeff05c6dfa41e89db539312faedc41198ba2f2d9bf5ad9f22992a0a5a4151e8.svg":{"logical_path":"flags/4x3/bh.svg","mtime":"2017-10-08T14:45:34+02:00","size":622,"digest":"aeff05c6dfa41e89db539312faedc41198ba2f2d9bf5ad9f22992a0a5a4151e8","integrity":"sha256-rv8Fxt+kHonbU5MS+u3EEZi6Ly2b9a2fIpkqClpBUeg="},"flags/1x1/bh-12da0d548841b860a7aedbbc858df1278a4f56105ae643f9379f5c2a3caa294a.svg":{"logical_path":"flags/1x1/bh.svg","mtime":"2017-10-08T14:45:34+02:00","size":689,"digest":"12da0d548841b860a7aedbbc858df1278a4f56105ae643f9379f5c2a3caa294a","integrity":"sha256-EtoNVIhBuGCnrtu8hY3xJ4pPVhBa5kP5N59cKjyqKUo="},"flags/4x3/bi-7f43c6407a6f007fd70e7b43f9b34e870cc757736a9e2399c46381c8434d238f.svg":{"logical_path":"flags/4x3/bi.svg","mtime":"2017-10-08T14:45:34+02:00","size":1317,"digest":"7f43c6407a6f007fd70e7b43f9b34e870cc757736a9e2399c46381c8434d238f","integrity":"sha256-f0PGQHpvAH/XDntD+bNOhwzHV3NqniOZxGOByENNI48="},"flags/1x1/bi-454adb690bfce8243896377b9c314ef8f447ec4d85dc677860f521a6c30c896e.svg":{"logical_path":"flags/1x1/bi.svg","mtime":"2017-10-08T14:45:34+02:00","size":1248,"digest":"454adb690bfce8243896377b9c314ef8f447ec4d85dc677860f521a6c30c896e","integrity":"sha256-RUrbaQv86CQ4ljd7nDFO+PRH7E2F3Gd4YPUhpsMMiW4="},"flags/4x3/bj-85ecb891b5ebbe5802bd23d41fa44f1c1dbf047aceba991e6006e377c53fa263.svg":{"logical_path":"flags/4x3/bj.svg","mtime":"2017-10-08T14:45:34+02:00","size":503,"digest":"85ecb891b5ebbe5802bd23d41fa44f1c1dbf047aceba991e6006e377c53fa263","integrity":"sha256-hey4kbXrvlgCvSPUH6RPHB2/BHrOupkeYAbjd8U/omM="},"flags/1x1/bj-861b63ba692ecf3e1705296e51ef4f80da47a2eff5cfa29a787bcbc4fc989a53.svg":{"logical_path":"flags/1x1/bj.svg","mtime":"2017-10-08T14:45:34+02:00","size":504,"digest":"861b63ba692ecf3e1705296e51ef4f80da47a2eff5cfa29a787bcbc4fc989a53","integrity":"sha256-hhtjumkuzz4XBSluUe9PgNpHou/1z6KaeHvLxPyYmlM="},"flags/4x3/bl-2c832da5dfab278f90dcfd6265c08211802e94d9b6a5634df6dacdb750723312.svg":{"logical_path":"flags/4x3/bl.svg","mtime":"2017-10-08T14:45:34+02:00","size":327,"digest":"2c832da5dfab278f90dcfd6265c08211802e94d9b6a5634df6dacdb750723312","integrity":"sha256-LIMtpd+rJ4+Q3P1iZcCCEYAulNm2pWNN9trNt1ByMxI="},"flags/1x1/bl-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/bl.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/bm-05e6a9d863d77266cc3e2a74fddea640757e09b54d3032711f0d1890b5b61d3d.svg":{"logical_path":"flags/4x3/bm.svg","mtime":"2017-10-08T14:45:34+02:00","size":32127,"digest":"05e6a9d863d77266cc3e2a74fddea640757e09b54d3032711f0d1890b5b61d3d","integrity":"sha256-Beap2GPXcmbMPip0/d6mQHV+CbVNMDJxHw0YkLW2HT0="},"flags/1x1/bm-0a16d9ab856676f9511627004ba4ee08ebe041533a33046c3f732ffb2793cf8a.svg":{"logical_path":"flags/1x1/bm.svg","mtime":"2017-10-08T14:45:34+02:00","size":31633,"digest":"0a16d9ab856676f9511627004ba4ee08ebe041533a33046c3f732ffb2793cf8a","integrity":"sha256-ChbZq4VmdvlRFicAS6TuCOvgQVM6MwRsP3Mv+yeTz4o="},"flags/4x3/bn-1560949666220d88ee037b03ce1ac0b95c1b91667f05cf2b8b06a043efb01253.svg":{"logical_path":"flags/4x3/bn.svg","mtime":"2017-10-08T14:45:34+02:00","size":21816,"digest":"1560949666220d88ee037b03ce1ac0b95c1b91667f05cf2b8b06a043efb01253","integrity":"sha256-FWCUlmYiDYjuA3sDzhrAuVwbkWZ/Bc8riwagQ++wElM="},"flags/1x1/bn-387ebb4b9e1b3796c94edd61402851eafb8b185d7061671b832c1879db69d6eb.svg":{"logical_path":"flags/1x1/bn.svg","mtime":"2017-10-08T14:45:34+02:00","size":22121,"digest":"387ebb4b9e1b3796c94edd61402851eafb8b185d7061671b832c1879db69d6eb","integrity":"sha256-OH67S54bN5bJTt1hQChR6vuLGF1wYWcbgywYedtp1us="},"flags/4x3/bo-96c7f8e64029f530108baee22d8a07cad2787f41eeed0b647f800bb533c39c63.svg":{"logical_path":"flags/4x3/bo.svg","mtime":"2017-10-08T14:45:34+02:00","size":212103,"digest":"96c7f8e64029f530108baee22d8a07cad2787f41eeed0b647f800bb533c39c63","integrity":"sha256-lsf45kAp9TAQi67iLYoHytJ4f0Hu7Qtkf4ALtTPDnGM="},"flags/1x1/bo-ef679f07e201a91bc3e2152310eb597f731f7133d58be7fc0b1bbb3d8538c666.svg":{"logical_path":"flags/1x1/bo.svg","mtime":"2017-10-08T14:45:34+02:00","size":210767,"digest":"ef679f07e201a91bc3e2152310eb597f731f7133d58be7fc0b1bbb3d8538c666","integrity":"sha256-72efB+IBqRvD4hUjEOtZf3MfcTPVi+f8Cxu7PYU4xmY="},"flags/4x3/bq-687781ca2bff027ee1c2bf587d45147cbe81af412d8a4c52e89673535bfa6a6c.svg":{"logical_path":"flags/4x3/bq.svg","mtime":"2017-10-08T14:45:34+02:00","size":227,"digest":"687781ca2bff027ee1c2bf587d45147cbe81af412d8a4c52e89673535bfa6a6c","integrity":"sha256-aHeByiv/An7hwr9YfUUUfL6Br0EtikxS6JZzU1v6amw="},"flags/1x1/bq-4c8a202ed7a99c1515fad01c0b79234163b42cfdc813aee71c0d277b49aadaa5.svg":{"logical_path":"flags/1x1/bq.svg","mtime":"2017-10-08T14:45:34+02:00","size":231,"digest":"4c8a202ed7a99c1515fad01c0b79234163b42cfdc813aee71c0d277b49aadaa5","integrity":"sha256-TIogLtepnBUV+tAcC3kjQWO0LP3IE67nHA0ne0mq2qU="},"flags/4x3/br-8370504ef87598decf706a50bc8b5deecfa80f965b4c3642d2207c9e0804be3a.svg":{"logical_path":"flags/4x3/br.svg","mtime":"2017-10-08T14:45:34+02:00","size":12470,"digest":"8370504ef87598decf706a50bc8b5deecfa80f965b4c3642d2207c9e0804be3a","integrity":"sha256-g3BQTvh1mN7PcGpQvItd7s+oD5ZbTDZC0iB8nggEvjo="},"flags/1x1/br-cce00e29adbdf110d4155153c8f21e36c46c34847baffafc33b806e121e320d7.svg":{"logical_path":"flags/1x1/br.svg","mtime":"2017-10-08T14:45:34+02:00","size":12219,"digest":"cce00e29adbdf110d4155153c8f21e36c46c34847baffafc33b806e121e320d7","integrity":"sha256-zOAOKa298RDUFVFTyPIeNsRsNIR7r/r8M7gG4SHjINc="},"flags/4x3/bs-80764fdde4884571c2ce5c348231dfe2c57c9e81d4d0d8722ae649ef37a9888c.svg":{"logical_path":"flags/4x3/bs.svg","mtime":"2017-10-08T14:45:34+02:00","size":608,"digest":"80764fdde4884571c2ce5c348231dfe2c57c9e81d4d0d8722ae649ef37a9888c","integrity":"sha256-gHZP3eSIRXHCzlw0gjHf4sV8noHU0NhyKuZJ7zepiIw="},"flags/1x1/bs-0a06f669be5ce81e27f5d9ace25e2254113cad9c2964208b5cd136e8b173b6e8.svg":{"logical_path":"flags/1x1/bs.svg","mtime":"2017-10-08T14:45:34+02:00","size":658,"digest":"0a06f669be5ce81e27f5d9ace25e2254113cad9c2964208b5cd136e8b173b6e8","integrity":"sha256-Cgb2ab5c6B4n9dms4l4iVBE8rZwpZCCLXNE26LFztug="},"flags/4x3/bt-9d00de93c399a0ed1118946c0d662d997847480445bfbbba259e42f80b170be6.svg":{"logical_path":"flags/4x3/bt.svg","mtime":"2017-10-08T14:45:34+02:00","size":41510,"digest":"9d00de93c399a0ed1118946c0d662d997847480445bfbbba259e42f80b170be6","integrity":"sha256-nQDek8OZoO0RGJRsDWYtmXhHSARFv7u6JZ5C+AsXC+Y="},"flags/1x1/bt-32fb8022976e00163073b1f3ff2f62dda6915dd4270d2e09ae51babe67d2ce32.svg":{"logical_path":"flags/1x1/bt.svg","mtime":"2017-10-08T14:45:34+02:00","size":40896,"digest":"32fb8022976e00163073b1f3ff2f62dda6915dd4270d2e09ae51babe67d2ce32","integrity":"sha256-MvuAIpduABYwc7Hz/y9i3aaRXdQnDS4JrlG6vmfSzjI="},"flags/4x3/bv-e0fd8f945e245badbcc8deedd6c139e2e19d26b3aea7bf1b9714595a2b08def1.svg":{"logical_path":"flags/4x3/bv.svg","mtime":"2017-10-08T14:45:34+02:00","size":647,"digest":"e0fd8f945e245badbcc8deedd6c139e2e19d26b3aea7bf1b9714595a2b08def1","integrity":"sha256-4P2PlF4kW628yN7t1sE54uGdJrOup78blxRZWisI3vE="},"flags/1x1/bv-dceefec7161747877af75d9c4b5bd8c53bfeb5cbbe94b41de9a2201321673653.svg":{"logical_path":"flags/1x1/bv.svg","mtime":"2017-10-08T14:45:34+02:00","size":647,"digest":"dceefec7161747877af75d9c4b5bd8c53bfeb5cbbe94b41de9a2201321673653","integrity":"sha256-3O7+xxYXR4d6912cS1vYxTv+tcu+lLQd6aIgEyFnNlM="},"flags/4x3/bw-b5231bca6e8f2dd2371e3b4f776cb33af3889d2ad41c3791feb7cba3afe12992.svg":{"logical_path":"flags/4x3/bw.svg","mtime":"2017-10-08T14:45:34+02:00","size":327,"digest":"b5231bca6e8f2dd2371e3b4f776cb33af3889d2ad41c3791feb7cba3afe12992","integrity":"sha256-tSMbym6PLdI3HjtPd2yzOvOInSrUHDeR/rfLo6/hKZI="},"flags/1x1/bw-35bd0c7c542ab29aa65df0322f37befe54917cde0ec29a6358a8cbfcd3eb78a2.svg":{"logical_path":"flags/1x1/bw.svg","mtime":"2017-10-08T14:45:34+02:00","size":285,"digest":"35bd0c7c542ab29aa65df0322f37befe54917cde0ec29a6358a8cbfcd3eb78a2","integrity":"sha256-Nb0MfFQqspqmXfAyLze+/lSRfN4OwppjWKjL/NPreKI="},"flags/4x3/by-0111fe7946228bd49fa5ffc1d04e1dbea12bb0483cee4bf146e23fcb5d7bd829.svg":{"logical_path":"flags/4x3/by.svg","mtime":"2017-10-08T14:45:34+02:00","size":9067,"digest":"0111fe7946228bd49fa5ffc1d04e1dbea12bb0483cee4bf146e23fcb5d7bd829","integrity":"sha256-ARH+eUYii9Sfpf/B0E4dvqErsEg87kvxRuI/y1172Ck="},"flags/1x1/by-3a64902f39b8bac7c042cadcd2ace69975498cc6254f60f31829ebbfe31c2ef5.svg":{"logical_path":"flags/1x1/by.svg","mtime":"2017-10-08T14:45:34+02:00","size":8989,"digest":"3a64902f39b8bac7c042cadcd2ace69975498cc6254f60f31829ebbfe31c2ef5","integrity":"sha256-OmSQLzm4usfAQsrc0qzmmXVJjMYlT2DzGCnrv+McLvU="},"flags/4x3/bz-f6761e8e1132b192c6c2dddcb1d0239ed14e801b8902a7ee8fb0cb869a517eab.svg":{"logical_path":"flags/4x3/bz.svg","mtime":"2017-10-08T14:45:34+02:00","size":77834,"digest":"f6761e8e1132b192c6c2dddcb1d0239ed14e801b8902a7ee8fb0cb869a517eab","integrity":"sha256-9nYejhEysZLGwt3csdAjntFOgBuJAqfuj7DLhppRfqs="},"flags/1x1/bz-2d1e5ec107a277b8e97fede80f512c23ebbf9c225a2c5450dc51c5fb03c9571b.svg":{"logical_path":"flags/1x1/bz.svg","mtime":"2017-10-08T14:45:34+02:00","size":78036,"digest":"2d1e5ec107a277b8e97fede80f512c23ebbf9c225a2c5450dc51c5fb03c9571b","integrity":"sha256-LR5ewQeid7jpf+3oD1EsI+u/nCJaLFRQ3FHF+wPJVxs="},"flags/4x3/ca-cf63f34a0cef8ed56b4cf1ba24fecc20cea252a9eb9e2c16acccf4eb80b32f49.svg":{"logical_path":"flags/4x3/ca.svg","mtime":"2017-10-08T14:45:34+02:00","size":1143,"digest":"cf63f34a0cef8ed56b4cf1ba24fecc20cea252a9eb9e2c16acccf4eb80b32f49","integrity":"sha256-z2PzSgzvjtVrTPG6JP7MIM6iUqnrniwWrMz064CzL0k="},"flags/1x1/ca-5c78fbcd8924e8f76111f1cc50317decd6b7c1761e57f19ad33f0b295d002138.svg":{"logical_path":"flags/1x1/ca.svg","mtime":"2017-10-08T14:45:34+02:00","size":1081,"digest":"5c78fbcd8924e8f76111f1cc50317decd6b7c1761e57f19ad33f0b295d002138","integrity":"sha256-XHj7zYkk6PdhEfHMUDF97Na3wXYeV/Ga0z8LKV0AITg="},"flags/4x3/cc-f5d8e042b0f7ee2be5ed555b4ea6a0586e69eeb9230701967903364c19e49006.svg":{"logical_path":"flags/4x3/cc.svg","mtime":"2017-10-08T14:45:34+02:00","size":4337,"digest":"f5d8e042b0f7ee2be5ed555b4ea6a0586e69eeb9230701967903364c19e49006","integrity":"sha256-9djgQrD37ivl7VVbTqagWG5p7rkjBwGWeQM2TBnkkAY="},"flags/1x1/cc-7dc42986b5859331d9f6c96ae7a97b378ff38e4480072cbecceae78e338891a0.svg":{"logical_path":"flags/1x1/cc.svg","mtime":"2017-10-08T14:45:34+02:00","size":4318,"digest":"7dc42986b5859331d9f6c96ae7a97b378ff38e4480072cbecceae78e338891a0","integrity":"sha256-fcQphrWFkzHZ9slq56l7N4/zjkSAByy+zOrnjjOIkaA="},"flags/4x3/cd-9d7d8b11e63073792e3d5e0327cc673101c65ae7545d721b8b1504c31a0c0078.svg":{"logical_path":"flags/4x3/cd.svg","mtime":"2017-10-08T14:45:34+02:00","size":352,"digest":"9d7d8b11e63073792e3d5e0327cc673101c65ae7545d721b8b1504c31a0c0078","integrity":"sha256-nX2LEeYwc3kuPV4DJ8xnMQHGWudUXXIbixUEwxoMAHg="},"flags/1x1/cd-f42723b2e3b7815b2a4b970c5d8a8abea987cf16ff26dbab0c1a78f3ffa3d1fd.svg":{"logical_path":"flags/1x1/cd.svg","mtime":"2017-10-08T14:45:34+02:00","size":512,"digest":"f42723b2e3b7815b2a4b970c5d8a8abea987cf16ff26dbab0c1a78f3ffa3d1fd","integrity":"sha256-9CcjsuO3gVsqS5cMXYqKvqmHzxb/JturDBp48/+j0f0="},"flags/4x3/cf-902b209a0eaeb8f41f529b5c98240d4fa94dffd58ac3bdc2b6c574125897bb8c.svg":{"logical_path":"flags/4x3/cf.svg","mtime":"2017-10-08T14:45:34+02:00","size":757,"digest":"902b209a0eaeb8f41f529b5c98240d4fa94dffd58ac3bdc2b6c574125897bb8c","integrity":"sha256-kCsgmg6uuPQfUptcmCQNT6lN/9WKw73CtsV0EliXu4w="},"flags/1x1/cf-f9b65e234b309ba4f3b2261dcb605b257bd941a308d208b1eaa89af874c779ec.svg":{"logical_path":"flags/1x1/cf.svg","mtime":"2017-10-08T14:45:34+02:00","size":679,"digest":"f9b65e234b309ba4f3b2261dcb605b257bd941a308d208b1eaa89af874c779ec","integrity":"sha256-+bZeI0swm6TzsiYdy2BbJXvZQaMI0gix6qia+HTHeew="},"flags/4x3/cg-f62e43d08581b8665ab9a7e61ab62cc6b3dd8e6fd0722c7d45c6ddc3f46ec5ab.svg":{"logical_path":"flags/4x3/cg.svg","mtime":"2017-10-08T14:45:34+02:00","size":492,"digest":"f62e43d08581b8665ab9a7e61ab62cc6b3dd8e6fd0722c7d45c6ddc3f46ec5ab","integrity":"sha256-9i5D0IWBuGZauafmGrYsxrPdjm/Qcix9Rcbdw/Ruxas="},"flags/1x1/cg-f2fbf08b1f5fd7e097600a9399d467cb9af8d24fd103a3eeb99f5cf58e6fc0b6.svg":{"logical_path":"flags/1x1/cg.svg","mtime":"2017-10-08T14:45:34+02:00","size":507,"digest":"f2fbf08b1f5fd7e097600a9399d467cb9af8d24fd103a3eeb99f5cf58e6fc0b6","integrity":"sha256-8vvwix9f1+CXYAqTmdRny5r40k/RA6PuuZ9c9Y5vwLY="},"flags/4x3/ch-830fe6654b170d461a76a7932b39d352ec30895d512c009a5c193c5a28289158.svg":{"logical_path":"flags/4x3/ch.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"830fe6654b170d461a76a7932b39d352ec30895d512c009a5c193c5a28289158","integrity":"sha256-gw/mZUsXDUYadqeTKznTUuwwiV1RLACaXBk8WigokVg="},"flags/1x1/ch-9f95a95e181489d64144d4502991c00823cf19fefc029cb639199cb100863a0a.svg":{"logical_path":"flags/1x1/ch.svg","mtime":"2017-10-08T14:45:34+02:00","size":354,"digest":"9f95a95e181489d64144d4502991c00823cf19fefc029cb639199cb100863a0a","integrity":"sha256-n5WpXhgUidZBRNRQKZHACCPPGf78Apy2ORmcsQCGOgo="},"flags/4x3/ci-3e6b86d6fc1a24b5635c258bbde180f8638e114be354d7379406d5718e46b70b.svg":{"logical_path":"flags/4x3/ci.svg","mtime":"2017-10-08T14:45:34+02:00","size":346,"digest":"3e6b86d6fc1a24b5635c258bbde180f8638e114be354d7379406d5718e46b70b","integrity":"sha256-PmuG1vwaJLVjXCWLveGA+GOOEUvjVNc3lAbVcY5Gtws="},"flags/1x1/ci-816edfc3bfc44353f99572310ba67643f979b1681c2643ecc34255df1dbee05e.svg":{"logical_path":"flags/1x1/ci.svg","mtime":"2017-10-08T14:45:34+02:00","size":305,"digest":"816edfc3bfc44353f99572310ba67643f979b1681c2643ecc34255df1dbee05e","integrity":"sha256-gW7fw7/EQ1P5lXIxC6Z2Q/l5sWgcJkPsw0JV3x2+4F4="},"flags/4x3/ck-cadf8156d64ddcff3d60079d017b12bb4e25867e58fa2618f42defa4f7bc8587.svg":{"logical_path":"flags/4x3/ck.svg","mtime":"2017-10-08T14:45:34+02:00","size":2639,"digest":"cadf8156d64ddcff3d60079d017b12bb4e25867e58fa2618f42defa4f7bc8587","integrity":"sha256-yt+BVtZN3P89YAedAXsSu04lhn5Y+iYY9C3vpPe8hYc="},"flags/1x1/ck-450d3b83c32f220510bdbab3ec0fca14edf895e53db9e26e4cd00a3edfb3e224.svg":{"logical_path":"flags/1x1/ck.svg","mtime":"2017-10-08T14:45:34+02:00","size":2526,"digest":"450d3b83c32f220510bdbab3ec0fca14edf895e53db9e26e4cd00a3edfb3e224","integrity":"sha256-RQ07g8MvIgUQvbqz7A/KFO34leU9ueJuTNAKPt+z4iQ="},"flags/4x3/cl-28ce953691b1c4b0c6d562370913b3ad645e29e56296c16762992e3c30f2a4a8.svg":{"logical_path":"flags/4x3/cl.svg","mtime":"2017-10-08T14:45:34+02:00","size":635,"digest":"28ce953691b1c4b0c6d562370913b3ad645e29e56296c16762992e3c30f2a4a8","integrity":"sha256-KM6VNpGxxLDG1WI3CROzrWReKeVilsFnYpkuPDDypKg="},"flags/1x1/cl-ed5421f0ff3ba05785268eed2abd3abf76125ec832e519bc10a30db278c23662.svg":{"logical_path":"flags/1x1/cl.svg","mtime":"2017-10-08T14:45:34+02:00","size":665,"digest":"ed5421f0ff3ba05785268eed2abd3abf76125ec832e519bc10a30db278c23662","integrity":"sha256-7VQh8P87oFeFJo7tKr06v3YSXsgy5Rm8EKMNsnjCNmI="},"flags/4x3/cm-d22cb6519bfbf9fbae46b283f6d882f8d46713f18ba59969ae45c542ba2bc621.svg":{"logical_path":"flags/4x3/cm.svg","mtime":"2017-10-08T14:45:34+02:00","size":847,"digest":"d22cb6519bfbf9fbae46b283f6d882f8d46713f18ba59969ae45c542ba2bc621","integrity":"sha256-0iy2UZv7+fuuRrKD9tiC+NRnE/GLpZlprkXFQrorxiE="},"flags/1x1/cm-4619b0400d175f6c0f686526cfdbfcc6f7c2fc7587449e05ab0385cc7d4e8bd4.svg":{"logical_path":"flags/1x1/cm.svg","mtime":"2017-10-08T14:45:34+02:00","size":847,"digest":"4619b0400d175f6c0f686526cfdbfcc6f7c2fc7587449e05ab0385cc7d4e8bd4","integrity":"sha256-RhmwQA0XX2wPaGUmz9v8xvfC/HWHRJ4FqwOFzH1Oi9Q="},"flags/4x3/cn-7af9da3dd810174340b79e6fe636bec183c71d7ce314ac4a5a815bfd388dea54.svg":{"logical_path":"flags/4x3/cn.svg","mtime":"2017-10-08T14:45:34+02:00","size":848,"digest":"7af9da3dd810174340b79e6fe636bec183c71d7ce314ac4a5a815bfd388dea54","integrity":"sha256-evnaPdgQF0NAt55v5ja+wYPHHXzjFKxKWoFb/TiN6lQ="},"flags/1x1/cn-22e04d44d7f85e6f5800bddc6a497e5722de8db2ad74c6c525c392bd7b8c6e09.svg":{"logical_path":"flags/1x1/cn.svg","mtime":"2017-10-08T14:45:34+02:00","size":792,"digest":"22e04d44d7f85e6f5800bddc6a497e5722de8db2ad74c6c525c392bd7b8c6e09","integrity":"sha256-IuBNRNf4Xm9YAL3cakl+VyLejbKtdMbFJcOSvXuMbgk="},"flags/4x3/co-ef2a3c7e495d85d7df1b9bda27023cd558abe89402cad0ff42428c2c5b877551.svg":{"logical_path":"flags/4x3/co.svg","mtime":"2017-10-08T14:45:34+02:00","size":304,"digest":"ef2a3c7e495d85d7df1b9bda27023cd558abe89402cad0ff42428c2c5b877551","integrity":"sha256-7yo8fkldhdffG5vaJwI81Vir6JQCytD/QkKMLFuHdVE="},"flags/1x1/co-42915db89e2fa2f9f97c09ecafc188eb2ec4e51efa87685a01c25d2f0afddf45.svg":{"logical_path":"flags/1x1/co.svg","mtime":"2017-10-08T14:45:34+02:00","size":320,"digest":"42915db89e2fa2f9f97c09ecafc188eb2ec4e51efa87685a01c25d2f0afddf45","integrity":"sha256-QpFduJ4vovn5fAnsr8GI6y7E5R76h2haAcJdLwr930U="},"flags/4x3/cr-7853ef9dbb5832a6d2738b44afdecfcdaa80c56cb66c448b8a8657e236854c8d.svg":{"logical_path":"flags/4x3/cr.svg","mtime":"2017-10-08T14:45:34+02:00","size":303,"digest":"7853ef9dbb5832a6d2738b44afdecfcdaa80c56cb66c448b8a8657e236854c8d","integrity":"sha256-eFPvnbtYMqbSc4tEr97PzaqAxWy2bESLioZX4jaFTI0="},"flags/1x1/cr-b86f916cc80cc14db90b66c652a2919a26baf2864451685af9c34d6310c3f8c6.svg":{"logical_path":"flags/1x1/cr.svg","mtime":"2017-10-08T14:45:34+02:00","size":320,"digest":"b86f916cc80cc14db90b66c652a2919a26baf2864451685af9c34d6310c3f8c6","integrity":"sha256-uG+RbMgMwU25C2bGUqKRmia68oZEUWha+cNNYxDD+MY="},"flags/4x3/cu-e3a3afa4a5c661ad431dc45eb501d7e1280b4a397bafa3956a9fc5bab8735f45.svg":{"logical_path":"flags/4x3/cu.svg","mtime":"2017-10-08T14:45:34+02:00","size":682,"digest":"e3a3afa4a5c661ad431dc45eb501d7e1280b4a397bafa3956a9fc5bab8735f45","integrity":"sha256-46OvpKXGYa1DHcRetQHX4SgLSjl7r6OVap/FurhzX0U="},"flags/1x1/cu-9563bc3aa0b1ac659dddaa2534c37d338e1da3dfd3726a717fc85ca8449c83da.svg":{"logical_path":"flags/1x1/cu.svg","mtime":"2017-10-08T14:45:34+02:00","size":638,"digest":"9563bc3aa0b1ac659dddaa2534c37d338e1da3dfd3726a717fc85ca8449c83da","integrity":"sha256-lWO8OqCxrGWd3aolNMN9M44do9/Tcmpxf8hcqEScg9o="},"flags/4x3/cv-d39c3ae09026623cebad38bbe41231aea9b9afacf7eca1d0abf6666e91dd8bbc.svg":{"logical_path":"flags/4x3/cv.svg","mtime":"2017-10-08T14:45:34+02:00","size":1790,"digest":"d39c3ae09026623cebad38bbe41231aea9b9afacf7eca1d0abf6666e91dd8bbc","integrity":"sha256-05w64JAmYjzrrTi75BIxrqm5r6z37KHQq/ZmbpHdi7w="},"flags/1x1/cv-78857e96ac5b49478a49578f422abe217af9ed7d90fa2d08ae72a67de4f6999e.svg":{"logical_path":"flags/1x1/cv.svg","mtime":"2017-10-08T14:45:34+02:00","size":1734,"digest":"78857e96ac5b49478a49578f422abe217af9ed7d90fa2d08ae72a67de4f6999e","integrity":"sha256-eIV+lqxbSUeKSVePQiq+IXr57X2Q+i0IrnKmfeT2mZ4="},"flags/4x3/cw-c65dd455b3c113d9088e563033c5f1ed3945d6dd88c8f13317fe297fd2291776.svg":{"logical_path":"flags/4x3/cw.svg","mtime":"2017-10-08T14:45:34+02:00","size":705,"digest":"c65dd455b3c113d9088e563033c5f1ed3945d6dd88c8f13317fe297fd2291776","integrity":"sha256-xl3UVbPBE9kIjlYwM8Xx7TlF1t2IyPEzF/4pf9IpF3Y="},"flags/1x1/cw-61f38f9076443eb7ca682abc21e6ea5f170bd855813d7297d85602b76ca36171.svg":{"logical_path":"flags/1x1/cw.svg","mtime":"2017-10-08T14:45:34+02:00","size":711,"digest":"61f38f9076443eb7ca682abc21e6ea5f170bd855813d7297d85602b76ca36171","integrity":"sha256-YfOPkHZEPrfKaCq8IebqXxcL2FWBPXKX2FYCt2yjYXE="},"flags/4x3/cx-aecc7a8b4b84b9f00a63154b027cb8ec78bebcec33e756b5e95151efb43420f7.svg":{"logical_path":"flags/4x3/cx.svg","mtime":"2017-10-08T14:45:34+02:00","size":3488,"digest":"aecc7a8b4b84b9f00a63154b027cb8ec78bebcec33e756b5e95151efb43420f7","integrity":"sha256-rsx6i0uEufAKYxVLAny47Hi+vOwz51a16VFR77Q0IPc="},"flags/1x1/cx-c052a0033a120d56c108dc0a919c3fccb9d01a4b78f1f778e3f2973e96197868.svg":{"logical_path":"flags/1x1/cx.svg","mtime":"2017-10-08T14:45:34+02:00","size":3504,"digest":"c052a0033a120d56c108dc0a919c3fccb9d01a4b78f1f778e3f2973e96197868","integrity":"sha256-wFKgAzoSDVbBCNwKkZw/zLnQGkt48fd44/KXPpYZeGg="},"flags/4x3/cy-b8e0d56b75e0954429cb2253aaf289a83e3c72abd52b4132bdd4016f2bbd43c9.svg":{"logical_path":"flags/4x3/cy.svg","mtime":"2017-10-08T14:45:34+02:00","size":10069,"digest":"b8e0d56b75e0954429cb2253aaf289a83e3c72abd52b4132bdd4016f2bbd43c9","integrity":"sha256-uODVa3XglUQpyyJTqvKJqD48cqvVK0EyvdQBbyu9Q8k="},"flags/1x1/cy-34aa50b77e1b86f5305beec283996cabc45fef1950582b868addc40fd9a8438f.svg":{"logical_path":"flags/1x1/cy.svg","mtime":"2017-10-08T14:45:34+02:00","size":10141,"digest":"34aa50b77e1b86f5305beec283996cabc45fef1950582b868addc40fd9a8438f","integrity":"sha256-NKpQt34bhvUwW+7Cg5lsq8Rf7xlQWCuGit3ED9moQ48="},"flags/4x3/cz-c2a15f3c50b7920c7d82fd9fb21f77c44fb3883f0e34dcf197a23d92d9212290.svg":{"logical_path":"flags/4x3/cz.svg","mtime":"2017-10-08T14:45:34+02:00","size":501,"digest":"c2a15f3c50b7920c7d82fd9fb21f77c44fb3883f0e34dcf197a23d92d9212290","integrity":"sha256-wqFfPFC3kgx9gv2fsh93xE+ziD8ONNzxl6I9ktkhIpA="},"flags/1x1/cz-487367824632a5097e16d7ed1ffc7fe8e233f9e1af45522571e1d4da10de92c7.svg":{"logical_path":"flags/1x1/cz.svg","mtime":"2017-10-08T14:45:34+02:00","size":505,"digest":"487367824632a5097e16d7ed1ffc7fe8e233f9e1af45522571e1d4da10de92c7","integrity":"sha256-SHNngkYypQl+FtftH/x/6OIz+eGvRVIlceHU2hDeksc="},"flags/4x3/de-32f54fb46c7fcaf2dfcf9172273456ea57f975efb228860def92481efe51c506.svg":{"logical_path":"flags/4x3/de.svg","mtime":"2017-10-08T14:45:34+02:00","size":290,"digest":"32f54fb46c7fcaf2dfcf9172273456ea57f975efb228860def92481efe51c506","integrity":"sha256-MvVPtGx/yvLfz5FyJzRW6lf5de+yKIYN75JIHv5RxQY="},"flags/1x1/de-2c94f333afeb14810030d786620fc32e65ba79af53b1037192383823996bb77f.svg":{"logical_path":"flags/1x1/de.svg","mtime":"2017-10-08T14:45:34+02:00","size":315,"digest":"2c94f333afeb14810030d786620fc32e65ba79af53b1037192383823996bb77f","integrity":"sha256-LJTzM6/rFIEAMNeGYg/DLmW6ea9TsQNxkjg4I5lrt38="},"flags/4x3/dj-d84d938856e7b6bdf8d38413c84a6968f94dc2adb218f2a9fab3d703341efc33.svg":{"logical_path":"flags/4x3/dj.svg","mtime":"2017-10-08T14:45:34+02:00","size":641,"digest":"d84d938856e7b6bdf8d38413c84a6968f94dc2adb218f2a9fab3d703341efc33","integrity":"sha256-2E2TiFbntr3404QTyEppaPlNwq2yGPKp+rPXAzQe/DM="},"flags/1x1/dj-6960cafac7e0d593152b60988fd12f5d1bb95068bf055c638cb999459f932692.svg":{"logical_path":"flags/1x1/dj.svg","mtime":"2017-10-08T14:45:34+02:00","size":657,"digest":"6960cafac7e0d593152b60988fd12f5d1bb95068bf055c638cb999459f932692","integrity":"sha256-aWDK+sfg1ZMVK2CYj9EvXRu5UGi/BVxjjLmZRZ+TJpI="},"flags/4x3/dk-fdd09296ac803a8cf4066ff5488821458a9788985e3cc09356d4c4ef81959ecf.svg":{"logical_path":"flags/4x3/dk.svg","mtime":"2017-10-08T14:45:34+02:00","size":249,"digest":"fdd09296ac803a8cf4066ff5488821458a9788985e3cc09356d4c4ef81959ecf","integrity":"sha256-/dCSlqyAOoz0Bm/1SIghRYqXiJhePMCTVtTE74GVns8="},"flags/1x1/dk-87924239a5ff1605582e1736f5ef17c9bd9d580d796d94b05ff668e2a52a223e.svg":{"logical_path":"flags/1x1/dk.svg","mtime":"2017-10-08T14:45:34+02:00","size":243,"digest":"87924239a5ff1605582e1736f5ef17c9bd9d580d796d94b05ff668e2a52a223e","integrity":"sha256-h5JCOaX/FgVYLhc29e8Xyb2dWA15bZSwX/Zo4qUqIj4="},"flags/4x3/dm-dc3b5c9634f0751ebfec181b12a7c530673ced1001b62a9126ed5ae39ba57203.svg":{"logical_path":"flags/4x3/dm.svg","mtime":"2017-10-08T14:45:34+02:00","size":20452,"digest":"dc3b5c9634f0751ebfec181b12a7c530673ced1001b62a9126ed5ae39ba57203","integrity":"sha256-3DtcljTwdR6/7BgbEqfFMGc87RABtiqRJu1a45ulcgM="},"flags/1x1/dm-c8018ea775b0add069f676bbf4b446ed19886c192aa742bb6a61c3602ca63211.svg":{"logical_path":"flags/1x1/dm.svg","mtime":"2017-10-08T14:45:34+02:00","size":20955,"digest":"c8018ea775b0add069f676bbf4b446ed19886c192aa742bb6a61c3602ca63211","integrity":"sha256-yAGOp3WwrdBp9na79LRG7RmIbBkqp0K7amHDYCymMhE="},"flags/4x3/do-5e2d6816118f78fa4a362ee6a276dac655a4c99d57a9e53a52198f1624ed186a.svg":{"logical_path":"flags/4x3/do.svg","mtime":"2017-10-08T14:45:34+02:00","size":466771,"digest":"5e2d6816118f78fa4a362ee6a276dac655a4c99d57a9e53a52198f1624ed186a","integrity":"sha256-Xi1oFhGPePpKNi7monbaxlWkyZ1XqeU6UhmPFiTtGGo="},"flags/1x1/do-f9862ff8016b35d30d5c37ac2c585cdddf235e56ac9a7ae31a90c96963865f57.svg":{"logical_path":"flags/1x1/do.svg","mtime":"2017-10-08T14:45:34+02:00","size":453664,"digest":"f9862ff8016b35d30d5c37ac2c585cdddf235e56ac9a7ae31a90c96963865f57","integrity":"sha256-+YYv+AFrNdMNXDesLFhc3d8jXlasmnrjGpDJaWOGX1c="},"flags/4x3/dz-8a14ddcb20a69c3265924fe2af141ea78c0af47ea07a88707c392a2793092cd4.svg":{"logical_path":"flags/4x3/dz.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"8a14ddcb20a69c3265924fe2af141ea78c0af47ea07a88707c392a2793092cd4","integrity":"sha256-ihTdyyCmnDJlkk/irxQep4wK9H6geohwfDkqJ5MJLNQ="},"flags/1x1/dz-0e2ada15ba7882343f7512929d3cf981a23a91817fdda0be1ed6a093161b649e.svg":{"logical_path":"flags/1x1/dz.svg","mtime":"2017-10-08T14:45:34+02:00","size":339,"digest":"0e2ada15ba7882343f7512929d3cf981a23a91817fdda0be1ed6a093161b649e","integrity":"sha256-DiraFbp4gjQ/dRKSnTz5gaI6kYF/3aC+HtagkxYbZJ4="},"flags/4x3/ec-a4c3c62b4272f5000e1c8f563c45ce8305ec71f4e4e49ac477d81b5cb692d7e6.svg":{"logical_path":"flags/4x3/ec.svg","mtime":"2017-10-08T14:45:34+02:00","size":38481,"digest":"a4c3c62b4272f5000e1c8f563c45ce8305ec71f4e4e49ac477d81b5cb692d7e6","integrity":"sha256-pMPGK0Jy9QAOHI9WPEXOgwXscfTk5JrEd9gbXLaS1+Y="},"flags/1x1/ec-c42aa1de56f2933fc6703e7a59ebc8b424c66f190697ee66814a137b56fa6969.svg":{"logical_path":"flags/1x1/ec.svg","mtime":"2017-10-08T14:45:34+02:00","size":39118,"digest":"c42aa1de56f2933fc6703e7a59ebc8b424c66f190697ee66814a137b56fa6969","integrity":"sha256-xCqh3lbykz/GcD56WevItCTGbxkGl+5mgUoTe1b6aWk="},"flags/4x3/ee-6148aad79adb1c847fedb9da5a7e9c9d47e99ef4c8f4853bb9800e738bddb19d.svg":{"logical_path":"flags/4x3/ee.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"6148aad79adb1c847fedb9da5a7e9c9d47e99ef4c8f4853bb9800e738bddb19d","integrity":"sha256-YUiq15rbHIR/7bnaWn6cnUfpnvTI9IU7uYAOc4vdsZ0="},"flags/1x1/ee-9a87370a85922c5d103d9d21fe3e778b801a62cf40e1f0efe8d708c5fe3b3ac4.svg":{"logical_path":"flags/1x1/ee.svg","mtime":"2017-10-08T14:45:34+02:00","size":371,"digest":"9a87370a85922c5d103d9d21fe3e778b801a62cf40e1f0efe8d708c5fe3b3ac4","integrity":"sha256-moc3CoWSLF0QPZ0h/j53i4AaYs9A4fDv6NcIxf47OsQ="},"flags/4x3/eg-3b2f122e512f0fc470666b35af4f677404d4b811cd795d5cf4e44a72ffd01285.svg":{"logical_path":"flags/4x3/eg.svg","mtime":"2017-10-08T14:45:34+02:00","size":16086,"digest":"3b2f122e512f0fc470666b35af4f677404d4b811cd795d5cf4e44a72ffd01285","integrity":"sha256-Oy8SLlEvD8RwZms1r09ndATUuBHNeV1c9ORKcv/QEoU="},"flags/1x1/eg-a050fc5953113bfa5e12867313b321df472eb86ad1e3d5362ebb27ac2edbd28b.svg":{"logical_path":"flags/1x1/eg.svg","mtime":"2017-10-08T14:45:34+02:00","size":16110,"digest":"a050fc5953113bfa5e12867313b321df472eb86ad1e3d5362ebb27ac2edbd28b","integrity":"sha256-oFD8WVMRO/peEoZzE7Mh30cuuGrR49U2LrsnrC7b0os="},"flags/4x3/eh-fea043048f74c728961fe981d7e5d50e286fef39f3e68659b699c6c357c202dd.svg":{"logical_path":"flags/4x3/eh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1081,"digest":"fea043048f74c728961fe981d7e5d50e286fef39f3e68659b699c6c357c202dd","integrity":"sha256-/qBDBI90xyiWH+mB1+XVDihv7znz5oZZtpnGw1fCAt0="},"flags/1x1/eh-8ea23a1b6813465e739d6f5e2ca6727331fae96cd32c86041a1ba48926a14cfd.svg":{"logical_path":"flags/1x1/eh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1028,"digest":"8ea23a1b6813465e739d6f5e2ca6727331fae96cd32c86041a1ba48926a14cfd","integrity":"sha256-jqI6G2gTRl5znW9eLKZyczH66WzTLIYEGhukiSahTP0="},"flags/4x3/er-b24dc54f7e94d0934d05faa7944e6039a56de8a5e4779a399046f047dbd1b949.svg":{"logical_path":"flags/4x3/er.svg","mtime":"2017-10-08T14:45:34+02:00","size":4800,"digest":"b24dc54f7e94d0934d05faa7944e6039a56de8a5e4779a399046f047dbd1b949","integrity":"sha256-sk3FT36U0JNNBfqnlE5gOaVt6KXkd5o5kEbwR9vRuUk="},"flags/1x1/er-6921f9776ece4a1b1ec594ec5665076462cef2d0b41eba83a7bc840ecf88287d.svg":{"logical_path":"flags/1x1/er.svg","mtime":"2017-10-08T14:45:34+02:00","size":4848,"digest":"6921f9776ece4a1b1ec594ec5665076462cef2d0b41eba83a7bc840ecf88287d","integrity":"sha256-aSH5d27OShsexZTsVmUHZGLO8tC0HrqDp7yEDs+IKH0="},"flags/4x3/es-e36093927dc1fa109e4ddcd4baa65d53d233c23bcdd32796b96409b52c5adbc0.svg":{"logical_path":"flags/4x3/es.svg","mtime":"2017-10-08T14:45:34+02:00","size":145208,"digest":"e36093927dc1fa109e4ddcd4baa65d53d233c23bcdd32796b96409b52c5adbc0","integrity":"sha256-42CTkn3B+hCeTdzUuqZdU9IzwjvN0yeWuWQJtSxa28A="},"flags/1x1/es-16a6c048523ee57edd91e60e87aae136a96893b48828d932a24436bb219c00b9.svg":{"logical_path":"flags/1x1/es.svg","mtime":"2017-10-08T14:45:34+02:00","size":147129,"digest":"16a6c048523ee57edd91e60e87aae136a96893b48828d932a24436bb219c00b9","integrity":"sha256-FqbASFI+5X7dkeYOh6rhNqlok7SIKNkyokQ2uyGcALk="},"flags/4x3/et-a3ef36d217667b7e8ebe910469c2eeef563f03d3ea5628ec7fea0f72650db28e.svg":{"logical_path":"flags/4x3/et.svg","mtime":"2017-10-08T14:45:34+02:00","size":1574,"digest":"a3ef36d217667b7e8ebe910469c2eeef563f03d3ea5628ec7fea0f72650db28e","integrity":"sha256-o+820hdme36OvpEEacLu71Y/A9PqVijsf+oPcmUNso4="},"flags/1x1/et-f66f415e5d5b8b697ed7bb85f4ae3408f9cefaeed7ff0136c4c03da5c3601340.svg":{"logical_path":"flags/1x1/et.svg","mtime":"2017-10-08T14:45:34+02:00","size":1595,"digest":"f66f415e5d5b8b697ed7bb85f4ae3408f9cefaeed7ff0136c4c03da5c3601340","integrity":"sha256-9m9BXl1bi2l+17uF9K40CPnO+u7X/wE2xMA9pcNgE0A="},"flags/4x3/fi-a94779c54a538d2f57a421e6beb619f07cc9c2bda40817d236b686deb8eb3b4c.svg":{"logical_path":"flags/4x3/fi.svg","mtime":"2017-10-08T14:45:34+02:00","size":265,"digest":"a94779c54a538d2f57a421e6beb619f07cc9c2bda40817d236b686deb8eb3b4c","integrity":"sha256-qUd5xUpTjS9XpCHmvrYZ8HzJwr2kCBfSNraG3rjrO0w="},"flags/1x1/fi-865b1ae3ed34a0cf0928c6289411569add2065c7ea4fa6897f971c322d955b16.svg":{"logical_path":"flags/1x1/fi.svg","mtime":"2017-10-08T14:45:34+02:00","size":265,"digest":"865b1ae3ed34a0cf0928c6289411569add2065c7ea4fa6897f971c322d955b16","integrity":"sha256-hlsa4+00oM8JKMYolBFWmt0gZcfqT6aJf5ccMi2VWxY="},"flags/4x3/fj-97dd8f9b0d9df1cd965c8a85ecb6feb538acc83b470596ccd199f71dc3d2eff9.svg":{"logical_path":"flags/4x3/fj.svg","mtime":"2017-10-08T14:45:34+02:00","size":44908,"digest":"97dd8f9b0d9df1cd965c8a85ecb6feb538acc83b470596ccd199f71dc3d2eff9","integrity":"sha256-l92Pmw2d8c2WXIqF7Lb+tTisyDtHBZbM0Zn3HcPS7/k="},"flags/1x1/fj-f772a5a860faef823adad1b0dc8e848349d094f4fa3b37e48c87382bd443c861.svg":{"logical_path":"flags/1x1/fj.svg","mtime":"2017-10-08T14:45:34+02:00","size":45010,"digest":"f772a5a860faef823adad1b0dc8e848349d094f4fa3b37e48c87382bd443c861","integrity":"sha256-93KlqGD674I62tGw3I6Eg0nQlPT6OzfkjIc4K9RDyGE="},"flags/4x3/fk-788901bf125ceebc6c23fa03c801420c787bbc4ce6aa4511ccaaba301e379886.svg":{"logical_path":"flags/4x3/fk.svg","mtime":"2017-10-08T14:45:34+02:00","size":44422,"digest":"788901bf125ceebc6c23fa03c801420c787bbc4ce6aa4511ccaaba301e379886","integrity":"sha256-eIkBvxJc7rxsI/oDyAFCDHh7vEzmqkURzKq6MB43mIY="},"flags/1x1/fk-5d8df0034167cc75863d02bfdb6147da3a694102f7eea0d92e717a048437fc0f.svg":{"logical_path":"flags/1x1/fk.svg","mtime":"2017-10-08T14:45:34+02:00","size":44641,"digest":"5d8df0034167cc75863d02bfdb6147da3a694102f7eea0d92e717a048437fc0f","integrity":"sha256-XY3wA0FnzHWGPQK/22FH2jppQQL37qDZLnF6BIQ3/A8="},"flags/4x3/fm-7167ec387c426a817bccbfec86c8f815b82b36504e1d480f4f9fa04177bdcba0.svg":{"logical_path":"flags/4x3/fm.svg","mtime":"2017-10-08T14:45:34+02:00","size":936,"digest":"7167ec387c426a817bccbfec86c8f815b82b36504e1d480f4f9fa04177bdcba0","integrity":"sha256-cWfsOHxCaoF7zL/shsj4FbgrNlBOHUgPT5+gQXe9y6A="},"flags/1x1/fm-d08e5959b5e3866cdf814f8d6ab594cb3ca84f0887a3adad3bff824ea0aca70a.svg":{"logical_path":"flags/1x1/fm.svg","mtime":"2017-10-08T14:45:34+02:00","size":941,"digest":"d08e5959b5e3866cdf814f8d6ab594cb3ca84f0887a3adad3bff824ea0aca70a","integrity":"sha256-0I5ZWbXjhmzfgU+NarWUyzyoTwiHo62tO/+CTqCspwo="},"flags/4x3/fo-af6148d661d02a6580e8714a6271776b4b8bf3b656bfd5fd88acdd1aa170366a.svg":{"logical_path":"flags/4x3/fo.svg","mtime":"2017-10-08T14:45:34+02:00","size":650,"digest":"af6148d661d02a6580e8714a6271776b4b8bf3b656bfd5fd88acdd1aa170366a","integrity":"sha256-r2FI1mHQKmWA6HFKYnF3a0uL87ZWv9X9iKzdGqFwNmo="},"flags/1x1/fo-26d5af2770c46935170988cbad16ef9aad9be34b38ea92847e6646a516878598.svg":{"logical_path":"flags/1x1/fo.svg","mtime":"2017-10-08T14:45:34+02:00","size":589,"digest":"26d5af2770c46935170988cbad16ef9aad9be34b38ea92847e6646a516878598","integrity":"sha256-JtWvJ3DEaTUXCYjLrRbvmq2b40s46pKEfmZGpRaHhZg="},"flags/4x3/fr-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg":{"logical_path":"flags/4x3/fr.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702","integrity":"sha256-ToxEbgMlcqLnTR/czsmjrpPWbcJJUu0vH+W9q2/vVwI="},"flags/1x1/fr-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/fr.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/ga-80f90062ef9aa4d236c81ec6c6c6e08058750794014bb93d8dbdc8e1684ca4fa.svg":{"logical_path":"flags/4x3/ga.svg","mtime":"2017-10-08T14:45:34+02:00","size":297,"digest":"80f90062ef9aa4d236c81ec6c6c6e08058750794014bb93d8dbdc8e1684ca4fa","integrity":"sha256-gPkAYu+apNI2yB7GxsbggFh1B5QBS7k9jb3I4WhMpPo="},"flags/1x1/ga-a66094862d24f29704c190fe42ff50820923f3940ff417f3e1623e9089b57eb9.svg":{"logical_path":"flags/1x1/ga.svg","mtime":"2017-10-08T14:45:34+02:00","size":328,"digest":"a66094862d24f29704c190fe42ff50820923f3940ff417f3e1623e9089b57eb9","integrity":"sha256-pmCUhi0k8pcEwZD+Qv9Qggkj85QP9Bfz4WI+kIm1frk="},"flags/4x3/gb-d85f0f149b4390bed6624bc30ca2cbfa37d394f14474fcf81d63363ad363e284.svg":{"logical_path":"flags/4x3/gb.svg","mtime":"2017-10-08T14:45:34+02:00","size":956,"digest":"d85f0f149b4390bed6624bc30ca2cbfa37d394f14474fcf81d63363ad363e284","integrity":"sha256-2F8PFJtDkL7WYkvDDKLL+jfTlPFEdPz4HWM2OtNj4oQ="},"flags/1x1/gb-2f0cc6ed1e8e9a7e56cafd3500585d685ae0c51abacddc52f750fb4d23f60b04.svg":{"logical_path":"flags/1x1/gb.svg","mtime":"2017-10-08T14:45:34+02:00","size":911,"digest":"2f0cc6ed1e8e9a7e56cafd3500585d685ae0c51abacddc52f750fb4d23f60b04","integrity":"sha256-LwzG7R6Omn5Wyv01AFhdaFrgxRq6zdxS91D7TSP2CwQ="},"flags/4x3/gd-51a8d53466df4426bec5fb202dd8f35239324b9c8b5256d38fe411c4b79945cb.svg":{"logical_path":"flags/4x3/gd.svg","mtime":"2017-10-08T14:45:34+02:00","size":1960,"digest":"51a8d53466df4426bec5fb202dd8f35239324b9c8b5256d38fe411c4b79945cb","integrity":"sha256-UajVNGbfRCa+xfsgLdjzUjkyS5yLUlbTj+QRxLeZRcs="},"flags/1x1/gd-9156f824a83004691a7a354e925bc1680b5cffe663bbfa37aa4609ff28148218.svg":{"logical_path":"flags/1x1/gd.svg","mtime":"2017-10-08T14:45:34+02:00","size":1872,"digest":"9156f824a83004691a7a354e925bc1680b5cffe663bbfa37aa4609ff28148218","integrity":"sha256-kVb4JKgwBGkaejVOklvBaAtc/+Zju/o3qkYJ/ygUghg="},"flags/4x3/ge-4ef2c8e6f371a711c61ac54d8d201a80aab53767cacc5322fb848cd3e38b00e7.svg":{"logical_path":"flags/4x3/ge.svg","mtime":"2017-10-08T14:45:34+02:00","size":2325,"digest":"4ef2c8e6f371a711c61ac54d8d201a80aab53767cacc5322fb848cd3e38b00e7","integrity":"sha256-TvLI5vNxpxHGGsVNjSAagKq1N2fKzFMi+4SM0+OLAOc="},"flags/1x1/ge-a3af8272a5fb63372705825519543e53269282c4800b70e6a93ba69674524eee.svg":{"logical_path":"flags/1x1/ge.svg","mtime":"2017-10-08T14:45:34+02:00","size":2263,"digest":"a3af8272a5fb63372705825519543e53269282c4800b70e6a93ba69674524eee","integrity":"sha256-o6+CcqX7YzcnBYJVGVQ+UyaSgsSAC3DmqTumlnRSTu4="},"flags/4x3/gf-c7d5ee882949b708641f99ec02edcc6b3b2362d393cc3869342442225be7cd3d.svg":{"logical_path":"flags/4x3/gf.svg","mtime":"2017-10-08T14:45:34+02:00","size":288,"digest":"c7d5ee882949b708641f99ec02edcc6b3b2362d393cc3869342442225be7cd3d","integrity":"sha256-x9XuiClJtwhkH5nsAu3MazsjYtOTzDhpNCRCIlvnzT0="},"flags/1x1/gf-b297e376fc00d3d7bfafd081766dafc4590f4ac4b71f53bc2bbdf2c028547920.svg":{"logical_path":"flags/1x1/gf.svg","mtime":"2017-10-08T14:45:34+02:00","size":292,"digest":"b297e376fc00d3d7bfafd081766dafc4590f4ac4b71f53bc2bbdf2c028547920","integrity":"sha256-spfjdvwA09e/r9CBdm2vxFkPSsS3H1O8K73ywChUeSA="},"flags/4x3/gg-e99b36723ffe04d7be392d612c76ef44e82bc84823d71793eb38e338116f0ee0.svg":{"logical_path":"flags/4x3/gg.svg","mtime":"2017-10-08T14:45:34+02:00","size":621,"digest":"e99b36723ffe04d7be392d612c76ef44e82bc84823d71793eb38e338116f0ee0","integrity":"sha256-6Zs2cj/+BNe+OS1hLHbvROgryEgj1xeT6zjjOBFvDuA="},"flags/1x1/gg-3f764a4568626d43f89b2b200dcbfe68de3093be418716549ab7c5c33f433d37.svg":{"logical_path":"flags/1x1/gg.svg","mtime":"2017-10-08T14:45:34+02:00","size":664,"digest":"3f764a4568626d43f89b2b200dcbfe68de3093be418716549ab7c5c33f433d37","integrity":"sha256-P3ZKRWhibUP4mysgDcv+aN4wk75BhxZUmrfFwz9DPTc="},"flags/4x3/gh-817c2eb8b3f7190647510371b2d38ad8e28e1348cb657e34778f970af5ca3868.svg":{"logical_path":"flags/4x3/gh.svg","mtime":"2017-10-08T14:45:34+02:00","size":312,"digest":"817c2eb8b3f7190647510371b2d38ad8e28e1348cb657e34778f970af5ca3868","integrity":"sha256-gXwuuLP3GQZHUQNxstOK2OKOE0jLZX40d4+XCvXKOGg="},"flags/1x1/gh-87a6486910cb62e58439da330c4270d1e2a0fd8e1ace80987c295971d15f9af3.svg":{"logical_path":"flags/1x1/gh.svg","mtime":"2017-10-08T14:45:34+02:00","size":332,"digest":"87a6486910cb62e58439da330c4270d1e2a0fd8e1ace80987c295971d15f9af3","integrity":"sha256-h6ZIaRDLYuWEOdozDEJw0eKg/Y4azoCYfClZcdFfmvM="},"flags/4x3/gi-52bfb6cd7cbebf1da96dfc6bf708d3b7239984d36400181ca4ac020081ae41b5.svg":{"logical_path":"flags/4x3/gi.svg","mtime":"2017-10-08T14:45:34+02:00","size":4125,"digest":"52bfb6cd7cbebf1da96dfc6bf708d3b7239984d36400181ca4ac020081ae41b5","integrity":"sha256-Ur+2zXy+vx2pbfxr9wjTtyOZhNNkABgcpKwCAIGuQbU="},"flags/1x1/gi-f7ebd8d36a5cb260392a92f10d8bc8d7cf11433fdce9474e08cc52a07dcd5258.svg":{"logical_path":"flags/1x1/gi.svg","mtime":"2017-10-08T14:45:34+02:00","size":4115,"digest":"f7ebd8d36a5cb260392a92f10d8bc8d7cf11433fdce9474e08cc52a07dcd5258","integrity":"sha256-9+vY02pcsmA5KpLxDYvI188RQz/c6UdOCMxSoH3NUlg="},"flags/4x3/gl-e031a722ec76e8262439e50a0dbba62f7b7bea020361f2bf4a9a49d6b59954a5.svg":{"logical_path":"flags/4x3/gl.svg","mtime":"2017-10-08T14:45:34+02:00","size":662,"digest":"e031a722ec76e8262439e50a0dbba62f7b7bea020361f2bf4a9a49d6b59954a5","integrity":"sha256-4DGnIux26CYkOeUKDbumL3t76gIDYfK/SppJ1rWZVKU="},"flags/1x1/gl-847b3362e50c1d74aeb01a5ea55cfa2950597cbbfa2377bd7cb70e273d4c57fb.svg":{"logical_path":"flags/1x1/gl.svg","mtime":"2017-10-08T14:45:34+02:00","size":511,"digest":"847b3362e50c1d74aeb01a5ea55cfa2950597cbbfa2377bd7cb70e273d4c57fb","integrity":"sha256-hHszYuUMHXSusBpepVz6KVBZfLv6I3e9fLcOJz1MV/s="},"flags/4x3/gm-a13d89d1cd66c77706dbaa380370ce3d62c0cf3219c287008759e823fd42a27c.svg":{"logical_path":"flags/4x3/gm.svg","mtime":"2017-10-08T14:45:34+02:00","size":558,"digest":"a13d89d1cd66c77706dbaa380370ce3d62c0cf3219c287008759e823fd42a27c","integrity":"sha256-oT2J0c1mx3cG26o4A3DOPWLAzzIZwocAh1noI/1Conw="},"flags/1x1/gm-4a4490e2aea203b32862d6e58bd02efc45d07a401684795ecae68ddb97756387.svg":{"logical_path":"flags/1x1/gm.svg","mtime":"2017-10-08T14:45:34+02:00","size":421,"digest":"4a4490e2aea203b32862d6e58bd02efc45d07a401684795ecae68ddb97756387","integrity":"sha256-SkSQ4q6iA7MoYtbli9Au/EXQekAWhHleyuaN25d1Y4c="},"flags/4x3/gn-cfa24192de905cc4a07dffb54ea252304bcffd387ce2d6dedae89b654486f286.svg":{"logical_path":"flags/4x3/gn.svg","mtime":"2017-10-08T14:45:34+02:00","size":310,"digest":"cfa24192de905cc4a07dffb54ea252304bcffd387ce2d6dedae89b654486f286","integrity":"sha256-z6JBkt6QXMSgff+1TqJSMEvP/Th84tbe2uibZUSG8oY="},"flags/1x1/gn-b50eaffe8a6fd16c9cf2c2d51adea53250b089f04ea701b8d5d812877de6d084.svg":{"logical_path":"flags/1x1/gn.svg","mtime":"2017-10-08T14:45:34+02:00","size":314,"digest":"b50eaffe8a6fd16c9cf2c2d51adea53250b089f04ea701b8d5d812877de6d084","integrity":"sha256-tQ6v/opv0Wyc8sLVGt6lMlCwifBOpwG41dgSh33m0IQ="},"flags/4x3/gp-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg":{"logical_path":"flags/4x3/gp.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702","integrity":"sha256-ToxEbgMlcqLnTR/czsmjrpPWbcJJUu0vH+W9q2/vVwI="},"flags/1x1/gp-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/gp.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/gq-548afdaa6c448c6bec87c1e2148831c41f9a2f4f83922cf32e5a3904679d889d.svg":{"logical_path":"flags/4x3/gq.svg","mtime":"2017-10-08T14:45:34+02:00","size":6577,"digest":"548afdaa6c448c6bec87c1e2148831c41f9a2f4f83922cf32e5a3904679d889d","integrity":"sha256-VIr9qmxEjGvsh8HiFIgxxB+aL0+DkizzLlo5BGediJ0="},"flags/1x1/gq-28c6e2820b326370a489d4f9efaf258432fdabecb67e610ddd752ed0f0e8a8ce.svg":{"logical_path":"flags/1x1/gq.svg","mtime":"2017-10-08T14:45:34+02:00","size":8200,"digest":"28c6e2820b326370a489d4f9efaf258432fdabecb67e610ddd752ed0f0e8a8ce","integrity":"sha256-KMbiggsyY3CkidT5768lhDL9q+y2fmEN3XUu0PDoqM4="},"flags/4x3/gr-e2aa8c913feebbed26a8fa0de5ac4aeb51545a4c0dee9bfda4ec5d9673f96386.svg":{"logical_path":"flags/4x3/gr.svg","mtime":"2017-10-08T14:45:34+02:00","size":819,"digest":"e2aa8c913feebbed26a8fa0de5ac4aeb51545a4c0dee9bfda4ec5d9673f96386","integrity":"sha256-4qqMkT/uu+0mqPoN5axK61FUWkwN7pv9pOxdlnP5Y4Y="},"flags/1x1/gr-64dc4363c7c3b827adaa7cd51bb8a0f30bd0a547e86772c473d433b1a6033e2f.svg":{"logical_path":"flags/1x1/gr.svg","mtime":"2017-10-08T14:45:34+02:00","size":876,"digest":"64dc4363c7c3b827adaa7cd51bb8a0f30bd0a547e86772c473d433b1a6033e2f","integrity":"sha256-ZNxDY8fDuCetqnzVG7ig8wvQpUfoZ3LEc9QzsaYDPi8="},"flags/4x3/gs-83141fac364fa2871379c6b1cb8da9935a185bf9b0e5dafc6b6458fa13359589.svg":{"logical_path":"flags/4x3/gs.svg","mtime":"2017-10-08T14:45:34+02:00","size":46535,"digest":"83141fac364fa2871379c6b1cb8da9935a185bf9b0e5dafc6b6458fa13359589","integrity":"sha256-gxQfrDZPoocTecaxy42pk1oYW/mw5dr8a2RY+hM1lYk="},"flags/1x1/gs-31c9e0016c7bd2cfed68cc4e6c2ca73123ce9391e8a50804e5c74101b72e07cc.svg":{"logical_path":"flags/1x1/gs.svg","mtime":"2017-10-08T14:45:34+02:00","size":47063,"digest":"31c9e0016c7bd2cfed68cc4e6c2ca73123ce9391e8a50804e5c74101b72e07cc","integrity":"sha256-McngAWx70s/taMxObCynMSPOk5HopQgE5cdBAbcuB8w="},"flags/4x3/gt-b4ca8c4ed71131c43ba14f3631a0ee92dababef325bd698ee0bac0da84980c85.svg":{"logical_path":"flags/4x3/gt.svg","mtime":"2017-10-08T14:45:34+02:00","size":59566,"digest":"b4ca8c4ed71131c43ba14f3631a0ee92dababef325bd698ee0bac0da84980c85","integrity":"sha256-tMqMTtcRMcQ7oU82MaDuktq6vvMlvWmO4LrA2oSYDIU="},"flags/1x1/gt-a7ce73eaabe1b659b733691076f8455051951432a1fac682f5896f8c4af6ff69.svg":{"logical_path":"flags/1x1/gt.svg","mtime":"2017-10-08T14:45:34+02:00","size":59566,"digest":"a7ce73eaabe1b659b733691076f8455051951432a1fac682f5896f8c4af6ff69","integrity":"sha256-p85z6qvhtlm3M2kQdvhFUFGVFDKh+saC9YlvjEr2/2k="},"flags/4x3/gu-a71a2e02c06f22984e424d15a410d9261ec9ddeeb3df112d5f46b66a09f5bd9a.svg":{"logical_path":"flags/4x3/gu.svg","mtime":"2017-10-08T14:45:34+02:00","size":6350,"digest":"a71a2e02c06f22984e424d15a410d9261ec9ddeeb3df112d5f46b66a09f5bd9a","integrity":"sha256-pxouAsBvIphOQk0VpBDZJh7J3e6z3xEtX0a2agn1vZo="},"flags/1x1/gu-2156b3d721b79189d40c7f5b5de9e219f83a40b69e0a3855514a097fcdc2f2d2.svg":{"logical_path":"flags/1x1/gu.svg","mtime":"2017-10-08T14:45:34+02:00","size":6066,"digest":"2156b3d721b79189d40c7f5b5de9e219f83a40b69e0a3855514a097fcdc2f2d2","integrity":"sha256-IVaz1yG3kYnUDH9bXeniGfg6QLaeCjhVUUoJf83C8tI="},"flags/4x3/gw-9eba06bd7c024dbd764b1bc1360120ed8a280d59075f81a50994930534cc42f2.svg":{"logical_path":"flags/4x3/gw.svg","mtime":"2017-10-08T14:45:34+02:00","size":828,"digest":"9eba06bd7c024dbd764b1bc1360120ed8a280d59075f81a50994930534cc42f2","integrity":"sha256-nroGvXwCTb12SxvBNgEg7YooDVkHX4GlCZSTBTTMQvI="},"flags/1x1/gw-6c4ca99e9871a9cde81966aaf02aac0106e2210f9c64e94bdb5168c7abbbc0e6.svg":{"logical_path":"flags/1x1/gw.svg","mtime":"2017-10-08T14:45:34+02:00","size":840,"digest":"6c4ca99e9871a9cde81966aaf02aac0106e2210f9c64e94bdb5168c7abbbc0e6","integrity":"sha256-bEypnphxqc3oGWaq8CqsAQbiIQ+cZOlL21Fox6u7wOY="},"flags/4x3/gy-b6f25e30b463f760ea01c81ff88a3932bf6812e6b626fd7fbe711a4cbac246c6.svg":{"logical_path":"flags/4x3/gy.svg","mtime":"2017-10-08T14:45:34+02:00","size":573,"digest":"b6f25e30b463f760ea01c81ff88a3932bf6812e6b626fd7fbe711a4cbac246c6","integrity":"sha256-tvJeMLRj92DqAcgf+Io5Mr9oEua2Jv1/vnEaTLrCRsY="},"flags/1x1/gy-d82b2a81ce6cca3e7c5854a5bc1198224b6455eab7adf06d69822a3cf433a1d2.svg":{"logical_path":"flags/1x1/gy.svg","mtime":"2017-10-08T14:45:34+02:00","size":573,"digest":"d82b2a81ce6cca3e7c5854a5bc1198224b6455eab7adf06d69822a3cf433a1d2","integrity":"sha256-2Csqgc5syj58WFSlvBGYIktkVeq3rfBtaYIqPPQzodI="},"flags/4x3/hk-b69c165653e2d112296b963d3369a7d8f656e77432c6c1c5ac1485db077c80a0.svg":{"logical_path":"flags/4x3/hk.svg","mtime":"2017-10-08T14:45:34+02:00","size":4540,"digest":"b69c165653e2d112296b963d3369a7d8f656e77432c6c1c5ac1485db077c80a0","integrity":"sha256-tpwWVlPi0RIpa5Y9M2mn2PZW53QyxsHFrBSF2wd8gKA="},"flags/1x1/hk-09c50dc6f3b0d5bffbc85a2998c5c86da531a939cf48c07ddb644061ab0b2222.svg":{"logical_path":"flags/1x1/hk.svg","mtime":"2017-10-08T14:45:34+02:00","size":4601,"digest":"09c50dc6f3b0d5bffbc85a2998c5c86da531a939cf48c07ddb644061ab0b2222","integrity":"sha256-CcUNxvOw1b/7yFopmMXIbaUxqTnPSMB922RAYasLIiI="},"flags/4x3/hm-faf74b1cde15843a42becf5d05a373f9af8d867d68c824e80d2c41b48c23ea57.svg":{"logical_path":"flags/4x3/hm.svg","mtime":"2017-10-08T14:45:34+02:00","size":1814,"digest":"faf74b1cde15843a42becf5d05a373f9af8d867d68c824e80d2c41b48c23ea57","integrity":"sha256-+vdLHN4VhDpCvs9dBaNz+a+Nhn1oyCToDSxBtIwj6lc="},"flags/1x1/hm-6cc1243d9638246c1bac7e52287dcfc6f9b00d142105fcfc9e8b7b3405d4852f.svg":{"logical_path":"flags/1x1/hm.svg","mtime":"2017-10-08T14:45:34+02:00","size":1772,"digest":"6cc1243d9638246c1bac7e52287dcfc6f9b00d142105fcfc9e8b7b3405d4852f","integrity":"sha256-bMEkPZY4JGwbrH5SKH3PxvmwDRQhBfz8not7NAXUhS8="},"flags/4x3/hn-3ad02422915a4ac6a81c3249610cbd42638ebe27d412a2d490bc63e75e1028ea.svg":{"logical_path":"flags/4x3/hn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1141,"digest":"3ad02422915a4ac6a81c3249610cbd42638ebe27d412a2d490bc63e75e1028ea","integrity":"sha256-OtAkIpFaSsaoHDJJYQy9QmOOvifUEqLUkLxj514QKOo="},"flags/1x1/hn-f0be4d00b892418864d0e4cd3000ee2dc519dbb96d424cb42f55707f8999d44a.svg":{"logical_path":"flags/1x1/hn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1144,"digest":"f0be4d00b892418864d0e4cd3000ee2dc519dbb96d424cb42f55707f8999d44a","integrity":"sha256-8L5NALiSQYhk0OTNMADuLcUZ27ltQky0L1Vwf4mZ1Eo="},"flags/4x3/hr-6671992f1644503121dce7774bf2f7e2ab65da14124251d80b024d78fb34f6f0.svg":{"logical_path":"flags/4x3/hr.svg","mtime":"2017-10-08T14:45:34+02:00","size":79805,"digest":"6671992f1644503121dce7774bf2f7e2ab65da14124251d80b024d78fb34f6f0","integrity":"sha256-ZnGZLxZEUDEh3Od3S/L34qtl2hQSQlHYCwJNePs09vA="},"flags/1x1/hr-f086b6932d53408f2b57db5e038dc7b508af60a49670e187eed42714f1115b49.svg":{"logical_path":"flags/1x1/hr.svg","mtime":"2017-10-08T14:45:34+02:00","size":80065,"digest":"f086b6932d53408f2b57db5e038dc7b508af60a49670e187eed42714f1115b49","integrity":"sha256-8Ia2ky1TQI8rV9teA43HtQivYKSWcOGH7tQnFPERW0k="},"flags/4x3/ht-0c3452573c61366d1e9d647d61675d2e9a309312e63c649f98d73fe37d2aab4f.svg":{"logical_path":"flags/4x3/ht.svg","mtime":"2017-10-08T14:45:34+02:00","size":22536,"digest":"0c3452573c61366d1e9d647d61675d2e9a309312e63c649f98d73fe37d2aab4f","integrity":"sha256-DDRSVzxhNm0enWR9YWddLpowkxLmPGSfmNc/430qq08="},"flags/1x1/ht-80c212d49effab9e944de758c08cc296833bc2a04b3098e8ee58266657522fdc.svg":{"logical_path":"flags/1x1/ht.svg","mtime":"2017-10-08T14:45:34+02:00","size":22543,"digest":"80c212d49effab9e944de758c08cc296833bc2a04b3098e8ee58266657522fdc","integrity":"sha256-gMIS1J7/q56UTedYwIzCloM7wqBLMJjo7lgmZldSL9w="},"flags/4x3/hu-b48c8253bec6b4e08f8954a2955fdbc2311d254b51358770d3eaec5fe0875965.svg":{"logical_path":"flags/4x3/hu.svg","mtime":"2017-10-08T14:45:34+02:00","size":328,"digest":"b48c8253bec6b4e08f8954a2955fdbc2311d254b51358770d3eaec5fe0875965","integrity":"sha256-tIyCU77GtOCPiVSilV/bwjEdJUtRNYdw0+rsX+CHWWU="},"flags/1x1/hu-af59966ca652f5ba1d081af0c1c2343acb479d1a06e03d248bde266cb29aa931.svg":{"logical_path":"flags/1x1/hu.svg","mtime":"2017-10-08T14:45:34+02:00","size":327,"digest":"af59966ca652f5ba1d081af0c1c2343acb479d1a06e03d248bde266cb29aa931","integrity":"sha256-r1mWbKZS9bodCBrwwcI0OstHnRoG4D0ki94mbLKaqTE="},"flags/4x3/id-e02525ae7152d4bd10dcad2ffdf0bf5d08c6c67d3142bc78a7cdbcaf1fcd4a4a.svg":{"logical_path":"flags/4x3/id.svg","mtime":"2017-10-08T14:45:34+02:00","size":264,"digest":"e02525ae7152d4bd10dcad2ffdf0bf5d08c6c67d3142bc78a7cdbcaf1fcd4a4a","integrity":"sha256-4CUlrnFS1L0Q3K0v/fC/XQjGxn0xQrx4p828rx/NSko="},"flags/1x1/id-5b846f6ce4715ea50d4068d9941290229c1be67d619a978096eab2c612e9b297.svg":{"logical_path":"flags/1x1/id.svg","mtime":"2017-10-08T14:45:34+02:00","size":264,"digest":"5b846f6ce4715ea50d4068d9941290229c1be67d619a978096eab2c612e9b297","integrity":"sha256-W4RvbORxXqUNQGjZlBKQIpwb5n1hmpeAluqyxhLpspc="},"flags/4x3/ie-0e75a4c4027484997f14bd4c2529384ef6c621591908473ccbeda20381c05c93.svg":{"logical_path":"flags/4x3/ie.svg","mtime":"2017-10-08T14:45:34+02:00","size":333,"digest":"0e75a4c4027484997f14bd4c2529384ef6c621591908473ccbeda20381c05c93","integrity":"sha256-DnWkxAJ0hJl/FL1MJSk4TvbGIVkZCEc8y+2iA4HAXJM="},"flags/1x1/ie-6446113a9abff1feba085706937ff83d73ba310c78153e8da3ca2d6f0c529510.svg":{"logical_path":"flags/1x1/ie.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6446113a9abff1feba085706937ff83d73ba310c78153e8da3ca2d6f0c529510","integrity":"sha256-ZEYROpq/8f66CFcGk3/4PXO6MQx4FT6No8otbwxSlRA="},"flags/4x3/il-98c3c0d9628008ac3a947d8f10fcb01d8e2545dfb265e94e6a29910e1ba57a2d.svg":{"logical_path":"flags/4x3/il.svg","mtime":"2017-10-08T14:45:34+02:00","size":1046,"digest":"98c3c0d9628008ac3a947d8f10fcb01d8e2545dfb265e94e6a29910e1ba57a2d","integrity":"sha256-mMPA2WKACKw6lH2PEPywHY4lRd+yZelOaimRDhulei0="},"flags/1x1/il-0f95bc7892bcf9eb3b6af9bf930e803b5121c45fa7261874ab4d7a8542c20c45.svg":{"logical_path":"flags/1x1/il.svg","mtime":"2017-10-08T14:45:34+02:00","size":993,"digest":"0f95bc7892bcf9eb3b6af9bf930e803b5121c45fa7261874ab4d7a8542c20c45","integrity":"sha256-D5W8eJK8+es7avm/kw6AO1EhxF+nJhh0q016hULCDEU="},"flags/4x3/im-0c402e364a705500028c46ccbd78a29944e91103b490607b366ae1d4f221ffc0.svg":{"logical_path":"flags/4x3/im.svg","mtime":"2017-10-08T14:45:34+02:00","size":15257,"digest":"0c402e364a705500028c46ccbd78a29944e91103b490607b366ae1d4f221ffc0","integrity":"sha256-DEAuNkpwVQACjEbMvXiimUTpEQO0kGB7Nmrh1PIh/8A="},"flags/1x1/im-718f45e1c60fd42db2a814bfaaa3a9be828f4dd0e4a4aea49e021f066087dece.svg":{"logical_path":"flags/1x1/im.svg","mtime":"2017-10-08T14:45:34+02:00","size":15596,"digest":"718f45e1c60fd42db2a814bfaaa3a9be828f4dd0e4a4aea49e021f066087dece","integrity":"sha256-cY9F4cYP1C2yqBS/qqOpvoKPTdDkpK6kngIfBmCH3s4="},"flags/4x3/in-a6c958c4b5cb12e2392d81b11dd0fed5fd5d0a66c7decb3ad3c8d27175854d3c.svg":{"logical_path":"flags/4x3/in.svg","mtime":"2017-10-08T14:45:34+02:00","size":1092,"digest":"a6c958c4b5cb12e2392d81b11dd0fed5fd5d0a66c7decb3ad3c8d27175854d3c","integrity":"sha256-pslYxLXLEuI5LYGxHdD+1f1dCmbH3ss608jScXWFTTw="},"flags/1x1/in-b4163420567e8e04fa58b79688af8d7bacf32ddf0e2b63ae2f1c5f0aacaaa696.svg":{"logical_path":"flags/1x1/in.svg","mtime":"2017-10-08T14:45:34+02:00","size":1114,"digest":"b4163420567e8e04fa58b79688af8d7bacf32ddf0e2b63ae2f1c5f0aacaaa696","integrity":"sha256-tBY0IFZ+jgT6WLeWiK+Ne6zzLd8OK2OuLxxfCqyqppY="},"flags/4x3/io-b951cf1fa71ddae941ee31dd018d2593bb8621ff92508bb311c7362c537a474c.svg":{"logical_path":"flags/4x3/io.svg","mtime":"2017-10-08T14:45:34+02:00","size":36459,"digest":"b951cf1fa71ddae941ee31dd018d2593bb8621ff92508bb311c7362c537a474c","integrity":"sha256-uVHPH6cd2ulB7jHdAY0lk7uGIf+SUIuzEcc2LFN6R0w="},"flags/1x1/io-d9dfc871f0bca35430b17de2e55394b0145334aa2080e07856e21d6d2e007d8d.svg":{"logical_path":"flags/1x1/io.svg","mtime":"2017-10-08T14:45:34+02:00","size":36554,"digest":"d9dfc871f0bca35430b17de2e55394b0145334aa2080e07856e21d6d2e007d8d","integrity":"sha256-2d/IcfC8o1QwsX3i5VOUsBRTNKoggOB4VuIdbS4AfY0="},"flags/4x3/iq-6a74e49d2c3d0ff072086fba1a2fc8b948ca34891a3aca960f9daacec107bcc6.svg":{"logical_path":"flags/4x3/iq.svg","mtime":"2017-10-08T14:45:34+02:00","size":2305,"digest":"6a74e49d2c3d0ff072086fba1a2fc8b948ca34891a3aca960f9daacec107bcc6","integrity":"sha256-anTknSw9D/ByCG+6Gi/IuUjKNIkaOsqWD52qzsEHvMY="},"flags/1x1/iq-95f5be79b6ab86e6338abd39ef8499af1517dba8ec3b266ea8e3c954601f0bbb.svg":{"logical_path":"flags/1x1/iq.svg","mtime":"2017-10-08T14:45:34+02:00","size":2321,"digest":"95f5be79b6ab86e6338abd39ef8499af1517dba8ec3b266ea8e3c954601f0bbb","integrity":"sha256-lfW+ebarhuYzir0574SZrxUX26jsOyZuqOPJVGAfC7s="},"flags/4x3/ir-5f9fdfd2d4cad535338f6de7927cc8094d02eaf06dd5122d3cba9e859c9ec4df.svg":{"logical_path":"flags/4x3/ir.svg","mtime":"2017-10-08T14:45:34+02:00","size":21755,"digest":"5f9fdfd2d4cad535338f6de7927cc8094d02eaf06dd5122d3cba9e859c9ec4df","integrity":"sha256-X5/f0tTK1TUzj23nknzICU0C6vBt1RItPLqehZyexN8="},"flags/1x1/ir-f5367274525b1f050dfae895943620a2e711f63a5726b273b488721a4501465d.svg":{"logical_path":"flags/1x1/ir.svg","mtime":"2017-10-08T14:45:34+02:00","size":21479,"digest":"f5367274525b1f050dfae895943620a2e711f63a5726b273b488721a4501465d","integrity":"sha256-9TZydFJbHwUN+uiVlDYgoucR9jpXJrJztIhyGkUBRl0="},"flags/4x3/is-15409efb6cec16b490b4abbbc03db415ef3448cb8cb281dd7cd1b2ba496d534d.svg":{"logical_path":"flags/4x3/is.svg","mtime":"2017-10-08T14:45:34+02:00","size":562,"digest":"15409efb6cec16b490b4abbbc03db415ef3448cb8cb281dd7cd1b2ba496d534d","integrity":"sha256-FUCe+2zsFrSQtKu7wD20Fe80SMuMsoHdfNGyukltU00="},"flags/1x1/is-500c3ef83fe917ab9cad59b7e8e6d693d9e78876febc1882c4bb06c8876b7357.svg":{"logical_path":"flags/1x1/is.svg","mtime":"2017-10-08T14:45:34+02:00","size":543,"digest":"500c3ef83fe917ab9cad59b7e8e6d693d9e78876febc1882c4bb06c8876b7357","integrity":"sha256-UAw++D/pF6ucrVm36ObWk9nniHb+vBiCxLsGyIdrc1c="},"flags/4x3/it-a285a0e341ba9492a2b7478e8a7a13f7c76d3c6a581aafb965ea26e1c554f0f3.svg":{"logical_path":"flags/4x3/it.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"a285a0e341ba9492a2b7478e8a7a13f7c76d3c6a581aafb965ea26e1c554f0f3","integrity":"sha256-ooWg40G6lJKit0eOinoT98dtPGpYGq+5Zeom4cVU8PM="},"flags/1x1/it-eeb47e346a5f6124b34f8428c97fc7dab2726f8d36d62dec08df3ec7171353cd.svg":{"logical_path":"flags/1x1/it.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"eeb47e346a5f6124b34f8428c97fc7dab2726f8d36d62dec08df3ec7171353cd","integrity":"sha256-7rR+NGpfYSSzT4QoyX/H2rJyb4021i3sCN8+xxcTU80="},"flags/4x3/je-b611f3e0fb7a94f85fa7d5f6f7a7db839381d054eb92abe0856dda8218c40687.svg":{"logical_path":"flags/4x3/je.svg","mtime":"2017-10-08T14:45:34+02:00","size":7509,"digest":"b611f3e0fb7a94f85fa7d5f6f7a7db839381d054eb92abe0856dda8218c40687","integrity":"sha256-thHz4Pt6lPhfp9X296fbg5OB0FTrkqvghW3aghjEBoc="},"flags/1x1/je-39c0c1482c1c533366153edc873f5eae266fdbf591e2022a7f82c17ce2d676ef.svg":{"logical_path":"flags/1x1/je.svg","mtime":"2017-10-08T14:45:34+02:00","size":7477,"digest":"39c0c1482c1c533366153edc873f5eae266fdbf591e2022a7f82c17ce2d676ef","integrity":"sha256-OcDBSCwcUzNmFT7chz9eriZv2/WR4gIqf4LBfOLWdu8="},"flags/4x3/jm-62fcbb8ed5b923b6aafe3990a24ad571485b4ac8db1bd7ed7b200cfadeeb8d7f.svg":{"logical_path":"flags/4x3/jm.svg","mtime":"2017-10-08T14:45:34+02:00","size":417,"digest":"62fcbb8ed5b923b6aafe3990a24ad571485b4ac8db1bd7ed7b200cfadeeb8d7f","integrity":"sha256-Yvy7jtW5I7aq/jmQokrVcUhbSsjbG9fteyAM+t7rjX8="},"flags/1x1/jm-b57cb61fb8eb67f0887afb7c779d6033e1c4c10242662093df69496aa58cc464.svg":{"logical_path":"flags/1x1/jm.svg","mtime":"2017-10-08T14:45:34+02:00","size":488,"digest":"b57cb61fb8eb67f0887afb7c779d6033e1c4c10242662093df69496aa58cc464","integrity":"sha256-tXy2H7jrZ/CIevt8d51gM+HEwQJCZiCT32lJaqWMxGQ="},"flags/4x3/jo-8e1174e66beeec19016b2754e8bdae987f420fa937ba78efecd61c177d9d40dc.svg":{"logical_path":"flags/4x3/jo.svg","mtime":"2017-10-08T14:45:34+02:00","size":835,"digest":"8e1174e66beeec19016b2754e8bdae987f420fa937ba78efecd61c177d9d40dc","integrity":"sha256-jhF05mvu7BkBaydU6L2umH9CD6k3unjv7NYcF32dQNw="},"flags/1x1/jo-47d2fc18e8af9194bcb249161a10383f89c11a73148b6dc77f4ab47a90294ae1.svg":{"logical_path":"flags/1x1/jo.svg","mtime":"2017-10-08T14:45:34+02:00","size":767,"digest":"47d2fc18e8af9194bcb249161a10383f89c11a73148b6dc77f4ab47a90294ae1","integrity":"sha256-R9L8GOivkZS8skkWGhA4P4nBGnMUi23Hf0q0epApSuE="},"flags/4x3/jp-1785964f1f3a4346ab8e1cbdc211399c5ced34a566c4725f3d23e8105413d6f4.svg":{"logical_path":"flags/4x3/jp.svg","mtime":"2017-10-08T14:45:34+02:00","size":513,"digest":"1785964f1f3a4346ab8e1cbdc211399c5ced34a566c4725f3d23e8105413d6f4","integrity":"sha256-F4WWTx86Q0arjhy9whE5nFztNKVmxHJfPSPoEFQT1vQ="},"flags/1x1/jp-a71cace9d237527635ee960b4df645f202d630c46458cf7e7a7ac09659e4404f.svg":{"logical_path":"flags/1x1/jp.svg","mtime":"2017-10-08T14:45:34+02:00","size":526,"digest":"a71cace9d237527635ee960b4df645f202d630c46458cf7e7a7ac09659e4404f","integrity":"sha256-pxys6dI3UnY17pYLTfZF8gLWMMRkWM9+enrAllnkQE8="},"flags/4x3/ke-680e981e37f7f0497e148043390987748a5bc78f4c3af09cf58c61d42b2a4a24.svg":{"logical_path":"flags/4x3/ke.svg","mtime":"2017-10-08T14:45:34+02:00","size":1432,"digest":"680e981e37f7f0497e148043390987748a5bc78f4c3af09cf58c61d42b2a4a24","integrity":"sha256-aA6YHjf38El+FIBDOQmHdIpbx49MOvCc9Yxh1CsqSiQ="},"flags/1x1/ke-60ff7f8bf6b5da9182867b8200475cb0a87f80cc960643ee15c99bcdcf200654.svg":{"logical_path":"flags/1x1/ke.svg","mtime":"2017-10-08T14:45:34+02:00","size":1570,"digest":"60ff7f8bf6b5da9182867b8200475cb0a87f80cc960643ee15c99bcdcf200654","integrity":"sha256-YP9/i/a12pGChnuCAEdcsKh/gMyWBkPuFcmbzc8gBlQ="},"flags/4x3/kg-3a93d17f0ed778664ae760032710fd7235bc43090de3543ec50fb8d2dfd9b595.svg":{"logical_path":"flags/4x3/kg.svg","mtime":"2017-10-08T14:45:34+02:00","size":5088,"digest":"3a93d17f0ed778664ae760032710fd7235bc43090de3543ec50fb8d2dfd9b595","integrity":"sha256-OpPRfw7XeGZK52ADJxD9cjW8QwkN41Q+xQ+40t/ZtZU="},"flags/1x1/kg-165c50f348fe0d4d8f0bc9cbf2666acde0f3a81dfed3398b8a7db5a51e3348aa.svg":{"logical_path":"flags/1x1/kg.svg","mtime":"2017-10-08T14:45:34+02:00","size":5012,"digest":"165c50f348fe0d4d8f0bc9cbf2666acde0f3a81dfed3398b8a7db5a51e3348aa","integrity":"sha256-FlxQ80j+DU2PC8nL8mZqzeDzqB3+0zmLin21pR4zSKo="},"flags/4x3/kh-6f3eb3cb44cd8124f4b7cb0d9230ddab4f782ad10746c2e1fa73f54ca2fe4446.svg":{"logical_path":"flags/4x3/kh.svg","mtime":"2017-10-08T14:45:34+02:00","size":10798,"digest":"6f3eb3cb44cd8124f4b7cb0d9230ddab4f782ad10746c2e1fa73f54ca2fe4446","integrity":"sha256-bz6zy0TNgST0t8sNkjDdq094KtEHRsLh+nP1TKL+REY="},"flags/1x1/kh-9541bd094c9e79e8ebb77a8ba94b22ed079b0502b2d70769b89ac9d19d16781b.svg":{"logical_path":"flags/1x1/kh.svg","mtime":"2017-10-08T14:45:34+02:00","size":10800,"digest":"9541bd094c9e79e8ebb77a8ba94b22ed079b0502b2d70769b89ac9d19d16781b","integrity":"sha256-lUG9CUyeeejrt3qLqUsi7QebBQKy1wdpuJrJ0Z0WeBs="},"flags/4x3/ki-a1b39a59ce5be52e1c6ca618ccc97f47d2a7b0d652bc2e5814c30a13d03842b8.svg":{"logical_path":"flags/4x3/ki.svg","mtime":"2017-10-08T14:45:34+02:00","size":7537,"digest":"a1b39a59ce5be52e1c6ca618ccc97f47d2a7b0d652bc2e5814c30a13d03842b8","integrity":"sha256-obOaWc5b5S4cbKYYzMl/R9KnsNZSvC5YFMMKE9A4Qrg="},"flags/1x1/ki-e9e5127171d893619b247b605865507b61019dee9e6ea589c5cd0c0e7d513f22.svg":{"logical_path":"flags/1x1/ki.svg","mtime":"2017-10-08T14:45:34+02:00","size":7920,"digest":"e9e5127171d893619b247b605865507b61019dee9e6ea589c5cd0c0e7d513f22","integrity":"sha256-6eUScXHYk2GbJHtgWGVQe2EBne6ebqWJxc0MDn1RPyI="},"flags/4x3/km-2ad8132e636de92218e06cad237154128fd1e84dbed82610e138ea148a53c01a.svg":{"logical_path":"flags/4x3/km.svg","mtime":"2017-10-08T14:45:34+02:00","size":1297,"digest":"2ad8132e636de92218e06cad237154128fd1e84dbed82610e138ea148a53c01a","integrity":"sha256-KtgTLmNt6SIY4GytI3FUEo/R6E2+2CYQ4TjqFIpTwBo="},"flags/1x1/km-d9d978cca1790b3165a0d18e159a536b4a2405f12b0200b03cf721042d326089.svg":{"logical_path":"flags/1x1/km.svg","mtime":"2017-10-08T14:45:34+02:00","size":1244,"digest":"d9d978cca1790b3165a0d18e159a536b4a2405f12b0200b03cf721042d326089","integrity":"sha256-2dl4zKF5CzFloNGOFZpTa0okBfErAgCwPPchBC0yYIk="},"flags/4x3/kn-08b7f26ac06f65c797de647f61bb738a4212cfc9ceb53ef11d8db093b58386d1.svg":{"logical_path":"flags/4x3/kn.svg","mtime":"2017-10-08T14:45:34+02:00","size":968,"digest":"08b7f26ac06f65c797de647f61bb738a4212cfc9ceb53ef11d8db093b58386d1","integrity":"sha256-CLfyasBvZceX3mR/YbtzikISz8nOtT7xHY2wk7WDhtE="},"flags/1x1/kn-e632854084c163a1752b53117eb4f773e57eef231917db846fc8009541cfe4b9.svg":{"logical_path":"flags/1x1/kn.svg","mtime":"2017-10-08T14:45:34+02:00","size":957,"digest":"e632854084c163a1752b53117eb4f773e57eef231917db846fc8009541cfe4b9","integrity":"sha256-5jKFQITBY6F1K1MRfrT3c+V+7yMZF9uEb8gAlUHP5Lk="},"flags/4x3/kp-f073e224e1faff5a0bbcb51cd05288d1b13cb607dda42fc7702afe8cfb01d0b3.svg":{"logical_path":"flags/4x3/kp.svg","mtime":"2017-10-08T14:45:34+02:00","size":1002,"digest":"f073e224e1faff5a0bbcb51cd05288d1b13cb607dda42fc7702afe8cfb01d0b3","integrity":"sha256-8HPiJOH6/1oLvLUc0FKI0bE8tgfdpC/HcCr+jPsB0LM="},"flags/1x1/kp-504fc83119f2a2c34ac75051d3ce15edee6f93555d729d759ef15f5f5caab3d3.svg":{"logical_path":"flags/1x1/kp.svg","mtime":"2017-10-08T14:45:34+02:00","size":1002,"digest":"504fc83119f2a2c34ac75051d3ce15edee6f93555d729d759ef15f5f5caab3d3","integrity":"sha256-UE/IMRnyosNKx1BR084V7e5vk1Vdcp11nvFfX1yqs9M="},"flags/4x3/kr-dbe4354aefeb100e561ee6f6ea6cc46551c1722d1b75fc164b60b0592d9dc30d.svg":{"logical_path":"flags/4x3/kr.svg","mtime":"2017-10-08T14:45:34+02:00","size":2420,"digest":"dbe4354aefeb100e561ee6f6ea6cc46551c1722d1b75fc164b60b0592d9dc30d","integrity":"sha256-2+Q1Su/rEA5WHub26mzEZVHBci0bdfwWS2CwWS2dww0="},"flags/1x1/kr-3aefdef6c6b72177aea924981a673bcc58c24b8c98cb00960e23250c07766b63.svg":{"logical_path":"flags/1x1/kr.svg","mtime":"2017-10-08T14:45:34+02:00","size":2194,"digest":"3aefdef6c6b72177aea924981a673bcc58c24b8c98cb00960e23250c07766b63","integrity":"sha256-Ou/e9sa3IXeuqSSYGmc7zFjCS4yYywCWDiMlDAd2a2M="},"flags/4x3/kw-fc682de5f565e3a918a9cce44a87a0cd8a40b93a555be3dc7c381ced74853021.svg":{"logical_path":"flags/4x3/kw.svg","mtime":"2017-10-08T14:45:34+02:00","size":515,"digest":"fc682de5f565e3a918a9cce44a87a0cd8a40b93a555be3dc7c381ced74853021","integrity":"sha256-/Ggt5fVl46kYqczkSoegzYpAuTpVW+PcfDgc7XSFMCE="},"flags/1x1/kw-63c2078d09713c30c0b917fdaac63a1fdb9161ec4b8cf1e91d4a9a8730a5cb65.svg":{"logical_path":"flags/1x1/kw.svg","mtime":"2017-10-08T14:45:34+02:00","size":529,"digest":"63c2078d09713c30c0b917fdaac63a1fdb9161ec4b8cf1e91d4a9a8730a5cb65","integrity":"sha256-Y8IHjQlxPDDAuRf9qsY6H9uRYexLjPHpHUqahzCly2U="},"flags/4x3/ky-77da018be33fa8aec69147e6107ff363bfc467ba857e7d47bd383984305cebab.svg":{"logical_path":"flags/4x3/ky.svg","mtime":"2017-10-08T14:45:34+02:00","size":33338,"digest":"77da018be33fa8aec69147e6107ff363bfc467ba857e7d47bd383984305cebab","integrity":"sha256-d9oBi+M/qK7GkUfmEH/zY7/EZ7qFfn1HvTg5hDBc66s="},"flags/1x1/ky-4a6b098e38d727959969a977668aefbdf6b9adcaef4cd922aac232d64a8a9d75.svg":{"logical_path":"flags/1x1/ky.svg","mtime":"2017-10-08T14:45:34+02:00","size":33549,"digest":"4a6b098e38d727959969a977668aefbdf6b9adcaef4cd922aac232d64a8a9d75","integrity":"sha256-SmsJjjjXJ5WZaal3Zorvvfa5rcrvTNkiqsIy1kqKnXU="},"flags/4x3/kz-ce3998065f1b6242d0a1755ffb590f15b2ff477b594b26b9a497f7181304bbe3.svg":{"logical_path":"flags/4x3/kz.svg","mtime":"2017-10-08T14:45:34+02:00","size":17502,"digest":"ce3998065f1b6242d0a1755ffb590f15b2ff477b594b26b9a497f7181304bbe3","integrity":"sha256-zjmYBl8bYkLQoXVf+1kPFbL/R3tZSya5pJf3GBMEu+M="},"flags/1x1/kz-795fd9bf32b68805f9e80f120db569eacbd5727fc523d7ff89943bdf9ef5b1e9.svg":{"logical_path":"flags/1x1/kz.svg","mtime":"2017-10-08T14:45:34+02:00","size":17476,"digest":"795fd9bf32b68805f9e80f120db569eacbd5727fc523d7ff89943bdf9ef5b1e9","integrity":"sha256-eV/ZvzK2iAX56A8SDbVp6svVcn/FI9f/iZQ73571sek="},"flags/4x3/la-dd2ead7123a2c4d2fda71d8a462319d30c6ff8e83c72cfd888230f6a670fdff4.svg":{"logical_path":"flags/4x3/la.svg","mtime":"2017-10-08T14:45:34+02:00","size":477,"digest":"dd2ead7123a2c4d2fda71d8a462319d30c6ff8e83c72cfd888230f6a670fdff4","integrity":"sha256-3S6tcSOixNL9px2KRiMZ0wxv+Og8cs/YiCMPamcP3/Q="},"flags/1x1/la-7ebc9f64aad0049a8167272ce06a7c1512c7d14080ff93a88e6b28e4050f33d3.svg":{"logical_path":"flags/1x1/la.svg","mtime":"2017-10-08T14:45:34+02:00","size":604,"digest":"7ebc9f64aad0049a8167272ce06a7c1512c7d14080ff93a88e6b28e4050f33d3","integrity":"sha256-fryfZKrQBJqBZycs4Gp8FRLH0UCA/5Oojmso5AUPM9M="},"flags/4x3/lb-7afb0e27b8cec77e2c65c3467b68ab24d49879a4739ab4780154a7db4358f6fc.svg":{"logical_path":"flags/4x3/lb.svg","mtime":"2017-10-08T14:45:34+02:00","size":3981,"digest":"7afb0e27b8cec77e2c65c3467b68ab24d49879a4739ab4780154a7db4358f6fc","integrity":"sha256-evsOJ7jOx34sZcNGe2irJNSYeaRzmrR4AVSn20NY9vw="},"flags/1x1/lb-6f50829425260779f08ad80ac9430796e64901b0dd74d010bdf2336f541eb47d.svg":{"logical_path":"flags/1x1/lb.svg","mtime":"2017-10-08T14:45:34+02:00","size":3991,"digest":"6f50829425260779f08ad80ac9430796e64901b0dd74d010bdf2336f541eb47d","integrity":"sha256-b1CClCUmB3nwitgKyUMHluZJAbDddNAQvfIzb1QetH0="},"flags/4x3/lc-9efcb3c88f9ff13bedcbd0c7f48c7fab604d3842ee559be3a11c6bc64e31a53c.svg":{"logical_path":"flags/4x3/lc.svg","mtime":"2017-10-08T14:45:34+02:00","size":403,"digest":"9efcb3c88f9ff13bedcbd0c7f48c7fab604d3842ee559be3a11c6bc64e31a53c","integrity":"sha256-nvyzyI+f8Tvty9DH9Ix/q2BNOELuVZvjoRxrxk4xpTw="},"flags/1x1/lc-31d72d1034bf031934561da9615fc3db916bb08a210f434a981e053a7edfa339.svg":{"logical_path":"flags/1x1/lc.svg","mtime":"2017-10-08T14:45:34+02:00","size":409,"digest":"31d72d1034bf031934561da9615fc3db916bb08a210f434a981e053a7edfa339","integrity":"sha256-MdctEDS/Axk0Vh2pYV/D25FrsIohD0NKmB4FOn7fozk="},"flags/4x3/li-9eed98d7d4e07cba0a2aae80e31add4bbe663e959df8cafd607cef17daf4351a.svg":{"logical_path":"flags/4x3/li.svg","mtime":"2017-10-08T14:45:34+02:00","size":12453,"digest":"9eed98d7d4e07cba0a2aae80e31add4bbe663e959df8cafd607cef17daf4351a","integrity":"sha256-nu2Y19TgfLoKKq6A4xrdS75mPpWd+Mr9YHzvF9r0NRo="},"flags/1x1/li-f655bf461c1690078c846528eb6d3ebe8d594b2539e3cc37f89204a754424c81.svg":{"logical_path":"flags/1x1/li.svg","mtime":"2017-10-08T14:45:34+02:00","size":12476,"digest":"f655bf461c1690078c846528eb6d3ebe8d594b2539e3cc37f89204a754424c81","integrity":"sha256-9lW/RhwWkAeMhGUo620+vo1ZSyU548w3+JIEp1RCTIE="},"flags/4x3/lk-3471b0585fb1e0ee350d6fe87e55ef07eef01e99444263b86ff005156dea1b73.svg":{"logical_path":"flags/4x3/lk.svg","mtime":"2017-10-08T14:45:34+02:00","size":17549,"digest":"3471b0585fb1e0ee350d6fe87e55ef07eef01e99444263b86ff005156dea1b73","integrity":"sha256-NHGwWF+x4O41DW/oflXvB+7wHplEQmO4b/AFFW3qG3M="},"flags/1x1/lk-d3bb56415e6e2095a470cf4e2ed455c57cde204aa79362786aca785db35ecff8.svg":{"logical_path":"flags/1x1/lk.svg","mtime":"2017-10-08T14:45:34+02:00","size":17573,"digest":"d3bb56415e6e2095a470cf4e2ed455c57cde204aa79362786aca785db35ecff8","integrity":"sha256-07tWQV5uIJWkcM9OLtRVxXzeIEqnk2J4asp4XbNez/g="},"flags/4x3/lr-a39f30a6169c4a3f3ff8e0eb04862e7f941c5d7c8e489ff5e7e4cd8cd436f5e2.svg":{"logical_path":"flags/4x3/lr.svg","mtime":"2017-10-08T14:45:34+02:00","size":829,"digest":"a39f30a6169c4a3f3ff8e0eb04862e7f941c5d7c8e489ff5e7e4cd8cd436f5e2","integrity":"sha256-o58wphacSj8/+ODrBIYuf5QcXXyOSJ/15+TNjNQ29eI="},"flags/1x1/lr-731191ad65bf784386cabac12693722d16aeb2e97d6456cc33488f805067aca8.svg":{"logical_path":"flags/1x1/lr.svg","mtime":"2017-10-08T14:45:34+02:00","size":801,"digest":"731191ad65bf784386cabac12693722d16aeb2e97d6456cc33488f805067aca8","integrity":"sha256-cxGRrWW/eEOGyrrBJpNyLRausul9ZFbMM0iPgFBnrKg="},"flags/4x3/ls-1e4f7ec2600e30b515cd12b509c376c3014d760731d89f87ae9a962fe249b3d4.svg":{"logical_path":"flags/4x3/ls.svg","mtime":"2017-10-08T14:45:34+02:00","size":1901,"digest":"1e4f7ec2600e30b515cd12b509c376c3014d760731d89f87ae9a962fe249b3d4","integrity":"sha256-Hk9+wmAOMLUVzRK1CcN2wwFNdgcx2J+HrpqWL+JJs9Q="},"flags/1x1/ls-ba2a8327ab9b0e74f4f411ab989980cde309e86395736a1f77e17a0eefc85266.svg":{"logical_path":"flags/1x1/ls.svg","mtime":"2017-10-08T14:45:34+02:00","size":1919,"digest":"ba2a8327ab9b0e74f4f411ab989980cde309e86395736a1f77e17a0eefc85266","integrity":"sha256-uiqDJ6ubDnT09BGrmJmAzeMJ6GOVc2ofd+F6Du/IUmY="},"flags/4x3/lt-d6a367644254244a8219c2eaa525b43d261f5da4fb074b0e08cedeb343f737a1.svg":{"logical_path":"flags/4x3/lt.svg","mtime":"2017-10-08T14:45:34+02:00","size":489,"digest":"d6a367644254244a8219c2eaa525b43d261f5da4fb074b0e08cedeb343f737a1","integrity":"sha256-1qNnZEJUJEqCGcLqpSW0PSYfXaT7B0sOCM7es0P3N6E="},"flags/1x1/lt-933670ec7627a78f72b60cfe7f49cd09b4afa58fb341857f76a5b7b612c12c97.svg":{"logical_path":"flags/1x1/lt.svg","mtime":"2017-10-08T14:45:34+02:00","size":489,"digest":"933670ec7627a78f72b60cfe7f49cd09b4afa58fb341857f76a5b7b612c12c97","integrity":"sha256-kzZw7HYnp49ytgz+f0nNCbSvpY+zQYV/dqW3thLBLJc="},"flags/4x3/lu-949c9e81217b58fe622d4d4d00903499b3e2249aa3f688401b78bd3ad977c740.svg":{"logical_path":"flags/4x3/lu.svg","mtime":"2017-10-08T14:45:34+02:00","size":268,"digest":"949c9e81217b58fe622d4d4d00903499b3e2249aa3f688401b78bd3ad977c740","integrity":"sha256-lJyegSF7WP5iLU1NAJA0mbPiJJqj9ohAG3i9Otl3x0A="},"flags/1x1/lu-ab39ab3ddef396fcd816d4170f3f73ed89465ed37a180685c68b3833aa3f01a9.svg":{"logical_path":"flags/1x1/lu.svg","mtime":"2017-10-08T14:45:34+02:00","size":254,"digest":"ab39ab3ddef396fcd816d4170f3f73ed89465ed37a180685c68b3833aa3f01a9","integrity":"sha256-qzmrPd7zlvzYFtQXDz9z7YlGXtN6GAaFxos4M6o/Aak="},"flags/4x3/lv-b672e3ee7e344abaaf9128111a6543ad7897aa92084b74c42a2877aa1b8cf7a8.svg":{"logical_path":"flags/4x3/lv.svg","mtime":"2017-10-08T14:45:34+02:00","size":252,"digest":"b672e3ee7e344abaaf9128111a6543ad7897aa92084b74c42a2877aa1b8cf7a8","integrity":"sha256-tnLj7n40SrqvkSgRGmVDrXiXqpIIS3TEKih3qhuM96g="},"flags/1x1/lv-55fc46607d153eb1d40d1b478ab6448117b79cdc3d9d973ea2beb44ee4d77316.svg":{"logical_path":"flags/1x1/lv.svg","mtime":"2017-10-08T14:45:34+02:00","size":264,"digest":"55fc46607d153eb1d40d1b478ab6448117b79cdc3d9d973ea2beb44ee4d77316","integrity":"sha256-VfxGYH0VPrHUDRtHirZEgRe3nNw9nZc+or60TuTXcxY="},"flags/4x3/ly-6f996771734c3f63c65d925a3d991f7d238734cc10e56b3160841fac2939e21a.svg":{"logical_path":"flags/4x3/ly.svg","mtime":"2017-10-08T14:45:34+02:00","size":537,"digest":"6f996771734c3f63c65d925a3d991f7d238734cc10e56b3160841fac2939e21a","integrity":"sha256-b5lncXNMP2PGXZJaPZkffSOHNMwQ5WsxYIQfrCk54ho="},"flags/1x1/ly-4e0bf9ff6856dcbba708b4fb176abd44cd385274badbb6e609b596a660109191.svg":{"logical_path":"flags/1x1/ly.svg","mtime":"2017-10-08T14:45:34+02:00","size":535,"digest":"4e0bf9ff6856dcbba708b4fb176abd44cd385274badbb6e609b596a660109191","integrity":"sha256-Tgv5/2hW3LunCLT7F2q9RM04UnS627bmCbWWpmAQkZE="},"flags/4x3/ma-70b305040cec175c749a22e6d1e0c1c96bd2164768f208a34d6c8a7ed5caa0ae.svg":{"logical_path":"flags/4x3/ma.svg","mtime":"2017-10-08T14:45:34+02:00","size":284,"digest":"70b305040cec175c749a22e6d1e0c1c96bd2164768f208a34d6c8a7ed5caa0ae","integrity":"sha256-cLMFBAzsF1x0miLm0eDByWvSFkdo8gijTWyKftXKoK4="},"flags/1x1/ma-919d8fa71ed3a3cadabade682f5326334f11d659245d51b31b40880689cbe275.svg":{"logical_path":"flags/1x1/ma.svg","mtime":"2017-10-08T14:45:34+02:00","size":282,"digest":"919d8fa71ed3a3cadabade682f5326334f11d659245d51b31b40880689cbe275","integrity":"sha256-kZ2Ppx7To8raut5oL1MmM08R1lkkXVGzG0CIBonL4nU="},"flags/4x3/mc-f0bd30faa57995276026f00e97f6d4ffd3c151e6d2c3d440331ac739965f3bc9.svg":{"logical_path":"flags/4x3/mc.svg","mtime":"2017-10-08T14:45:34+02:00","size":240,"digest":"f0bd30faa57995276026f00e97f6d4ffd3c151e6d2c3d440331ac739965f3bc9","integrity":"sha256-8L0w+qV5lSdgJvAOl/bU/9PBUebSw9RAMxrHOZZfO8k="},"flags/1x1/mc-6fcd8ec0404ec1e02e8f38934202004b443c39ffa369be045872c4c89b0674b3.svg":{"logical_path":"flags/1x1/mc.svg","mtime":"2017-10-08T14:45:34+02:00","size":260,"digest":"6fcd8ec0404ec1e02e8f38934202004b443c39ffa369be045872c4c89b0674b3","integrity":"sha256-b82OwEBOweAujziTQgIAS0Q8Of+jab4EWHLEyJsGdLM="},"flags/4x3/md-4bb12bafd1cae33ea4d420dc80301e573d39247323d0eca7c343650a414931ad.svg":{"logical_path":"flags/4x3/md.svg","mtime":"2017-10-08T14:45:34+02:00","size":14670,"digest":"4bb12bafd1cae33ea4d420dc80301e573d39247323d0eca7c343650a414931ad","integrity":"sha256-S7Err9HK4z6k1CDcgDAeVz05JHMj0Oynw0NlCkFJMa0="},"flags/1x1/md-76e3c791e11574492239b07821b43d8f5308e8b7b9ed7d72a5b189f06bb0a81d.svg":{"logical_path":"flags/1x1/md.svg","mtime":"2017-10-08T14:45:34+02:00","size":14809,"digest":"76e3c791e11574492239b07821b43d8f5308e8b7b9ed7d72a5b189f06bb0a81d","integrity":"sha256-duPHkeEVdEkiObB4IbQ9j1MI6Le57X1ypbGJ8GuwqB0="},"flags/4x3/me-096ce4c309762cde78cb1fec7f1d9ab7c38e6270ddb5aaaf9d29ec63a160e276.svg":{"logical_path":"flags/4x3/me.svg","mtime":"2017-10-08T14:45:34+02:00","size":110221,"digest":"096ce4c309762cde78cb1fec7f1d9ab7c38e6270ddb5aaaf9d29ec63a160e276","integrity":"sha256-CWzkwwl2LN54yx/sfx2at8OOYnDdtaqvnSnsY6Fg4nY="},"flags/1x1/me-9f8dc8f8e7b38bfc2edd5a35d13818544d304c7834a315ffbfcccecf7a9e6ba6.svg":{"logical_path":"flags/1x1/me.svg","mtime":"2017-10-08T14:45:34+02:00","size":108220,"digest":"9f8dc8f8e7b38bfc2edd5a35d13818544d304c7834a315ffbfcccecf7a9e6ba6","integrity":"sha256-n43I+Oezi/wu3Vo10TgYVE0wTHg0oxX/v8zOz3qea6Y="},"flags/4x3/mf-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg":{"logical_path":"flags/4x3/mf.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702","integrity":"sha256-ToxEbgMlcqLnTR/czsmjrpPWbcJJUu0vH+W9q2/vVwI="},"flags/1x1/mf-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/mf.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/mg-f8afb0a551765b27b0c173a623e30af523e907e665858c401e8246b2fa5c2052.svg":{"logical_path":"flags/4x3/mg.svg","mtime":"2017-10-08T14:45:34+02:00","size":322,"digest":"f8afb0a551765b27b0c173a623e30af523e907e665858c401e8246b2fa5c2052","integrity":"sha256-+K+wpVF2WyewwXOmI+MK9SPpB+ZlhYxAHoJGsvpcIFI="},"flags/1x1/mg-d5527653deeb8cd3c7d24082dab7c9dcd8218dd9c9043c832cb1436f1d8090ae.svg":{"logical_path":"flags/1x1/mg.svg","mtime":"2017-10-08T14:45:34+02:00","size":349,"digest":"d5527653deeb8cd3c7d24082dab7c9dcd8218dd9c9043c832cb1436f1d8090ae","integrity":"sha256-1VJ2U97rjNPH0kCC2rfJ3NghjdnJBDyDLLFDbx2AkK4="},"flags/4x3/mh-4edc79226b41a72a4f0a8ca6d4f7f8f73e92972ae6b30c96a9dab4274a046165.svg":{"logical_path":"flags/4x3/mh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1008,"digest":"4edc79226b41a72a4f0a8ca6d4f7f8f73e92972ae6b30c96a9dab4274a046165","integrity":"sha256-Ttx5ImtBpypPCoym1Pf49z6SlyrmswyWqdq0J0oEYWU="},"flags/1x1/mh-1bd8a38684a5d55aea8319d106fdc1e62a91424e36a8fb5a27f215cfadb98707.svg":{"logical_path":"flags/1x1/mh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1017,"digest":"1bd8a38684a5d55aea8319d106fdc1e62a91424e36a8fb5a27f215cfadb98707","integrity":"sha256-G9ijhoSl1VrqgxnRBv3B5iqRQk42qPtaJ/IVz625hwc="},"flags/4x3/mk-2098f24dab54b22fbc7aff34c15009b4ae7012a6848cede09d6db9ed5caaffec.svg":{"logical_path":"flags/4x3/mk.svg","mtime":"2017-10-08T14:45:34+02:00","size":395,"digest":"2098f24dab54b22fbc7aff34c15009b4ae7012a6848cede09d6db9ed5caaffec","integrity":"sha256-IJjyTatUsi+8ev80wVAJtK5wEqaEjO3gnW257Vyq/+w="},"flags/1x1/mk-1b083e708a18b40383921595134b167e0fa84a6f233934668481b902b518f089.svg":{"logical_path":"flags/1x1/mk.svg","mtime":"2017-10-08T14:45:34+02:00","size":423,"digest":"1b083e708a18b40383921595134b167e0fa84a6f233934668481b902b518f089","integrity":"sha256-Gwg+cIoYtAODkhWVE0sWfg+oSm8jOTRmhIG5ArUY8Ik="},"flags/4x3/ml-5cb117165c5ebebb07725430dce0fbd0bce2ad618967354eda44d9229e16c676.svg":{"logical_path":"flags/4x3/ml.svg","mtime":"2017-10-08T14:45:34+02:00","size":342,"digest":"5cb117165c5ebebb07725430dce0fbd0bce2ad618967354eda44d9229e16c676","integrity":"sha256-XLEXFlxevrsHclQw3OD70LzirWGJZzVO2kTZIp4WxnY="},"flags/1x1/ml-cf94ba5bc9f5b9f3b15c187243a5fc60dd80a43715da7ae005dc13321f0d411b.svg":{"logical_path":"flags/1x1/ml.svg","mtime":"2017-10-08T14:45:34+02:00","size":299,"digest":"cf94ba5bc9f5b9f3b15c187243a5fc60dd80a43715da7ae005dc13321f0d411b","integrity":"sha256-z5S6W8n1ufOxXBhyQ6X8YN2ApDcV2nrgBdwTMh8NQRs="},"flags/4x3/mm-987d96563a6517ba568b2ad3e8dbcd77c01c0a6114b8497b214cf3e967ce27d1.svg":{"logical_path":"flags/4x3/mm.svg","mtime":"2017-10-08T14:45:34+02:00","size":996,"digest":"987d96563a6517ba568b2ad3e8dbcd77c01c0a6114b8497b214cf3e967ce27d1","integrity":"sha256-mH2WVjplF7pWiyrT6NvNd8AcCmEUuEl7IUzz6WfOJ9E="},"flags/1x1/mm-a78cffaf229320ef1cc28570ec3e91e9e188d8cff8cc01f14423b9c5383e87d2.svg":{"logical_path":"flags/1x1/mm.svg","mtime":"2017-10-08T14:45:34+02:00","size":1015,"digest":"a78cffaf229320ef1cc28570ec3e91e9e188d8cff8cc01f14423b9c5383e87d2","integrity":"sha256-p4z/ryKTIO8cwoVw7D6R6eGI2M/4zAHxRCO5xTg+h9I="},"flags/4x3/mn-a3dc85a21b868793f084dd954c31e13c0cf993eef59102a102406c95d99e243d.svg":{"logical_path":"flags/4x3/mn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1601,"digest":"a3dc85a21b868793f084dd954c31e13c0cf993eef59102a102406c95d99e243d","integrity":"sha256-o9yFohuGh5PwhN2VTDHhPAz5k+71kQKhAkBsldmeJD0="},"flags/1x1/mn-141a15f289b3e49d8e0c1a21b9015f14ebb9e55660ebc23deefa55a3fa6fc9b5.svg":{"logical_path":"flags/1x1/mn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1603,"digest":"141a15f289b3e49d8e0c1a21b9015f14ebb9e55660ebc23deefa55a3fa6fc9b5","integrity":"sha256-FBoV8omz5J2ODBohuQFfFOu55VZg68I97vpVo/pvybU="},"flags/4x3/mo-f58284a9e6021d88f7756d6cbe408f79789a30113084ef6bbd8541e15008d684.svg":{"logical_path":"flags/4x3/mo.svg","mtime":"2017-10-08T14:45:34+02:00","size":2047,"digest":"f58284a9e6021d88f7756d6cbe408f79789a30113084ef6bbd8541e15008d684","integrity":"sha256-9YKEqeYCHYj3dW1svkCPeXiaMBEwhO9rvYVB4VAI1oQ="},"flags/1x1/mo-b871b2e0087b09318060384476b25c28de16acac946f5ecbb4e162660e6486c1.svg":{"logical_path":"flags/1x1/mo.svg","mtime":"2017-10-08T14:45:34+02:00","size":2082,"digest":"b871b2e0087b09318060384476b25c28de16acac946f5ecbb4e162660e6486c1","integrity":"sha256-uHGy4Ah7CTGAYDhEdrJcKN4WrKyUb17LtOFiZg5khsE="},"flags/4x3/mp-d9f8b726babd7cba9e128eb81ce7e7d9adb81945f056072aaa3b5540c8299f9d.svg":{"logical_path":"flags/4x3/mp.svg","mtime":"2017-10-08T14:45:34+02:00","size":34391,"digest":"d9f8b726babd7cba9e128eb81ce7e7d9adb81945f056072aaa3b5540c8299f9d","integrity":"sha256-2fi3Jrq9fLqeEo64HOfn2a24GUXwVgcqqjtVQMgpn50="},"flags/1x1/mp-41d27c2d802f8487a3343a962c11711e9ebf682bda766cceb72ccac2b37dbda0.svg":{"logical_path":"flags/1x1/mp.svg","mtime":"2017-10-08T14:45:34+02:00","size":34062,"digest":"41d27c2d802f8487a3343a962c11711e9ebf682bda766cceb72ccac2b37dbda0","integrity":"sha256-QdJ8LYAvhIejNDqWLBFxHp6/aCvadmzOtyzKwrN9vaA="},"flags/4x3/mq-21e70a8c243dc97f486dadf01f0b3300a8310c719d5a650fe4d7512e7ee8169d.svg":{"logical_path":"flags/4x3/mq.svg","mtime":"2017-10-08T14:45:34+02:00","size":310,"digest":"21e70a8c243dc97f486dadf01f0b3300a8310c719d5a650fe4d7512e7ee8169d","integrity":"sha256-IecKjCQ9yX9Iba3wHwszAKgxDHGdWmUP5NdRLn7oFp0="},"flags/1x1/mq-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/mq.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/mr-76898913a879ac1eadb03f5950843ea63fd9a0a998d1b9113c386012cf1c80e6.svg":{"logical_path":"flags/4x3/mr.svg","mtime":"2017-10-08T14:45:34+02:00","size":935,"digest":"76898913a879ac1eadb03f5950843ea63fd9a0a998d1b9113c386012cf1c80e6","integrity":"sha256-domJE6h5rB6tsD9ZUIQ+pj/ZoKmY0bkRPDhgEs8cgOY="},"flags/1x1/mr-5288f91d4c12b6fdca7129a8564638991028f730a170bb72be9fee1ac8d8f206.svg":{"logical_path":"flags/1x1/mr.svg","mtime":"2017-10-08T14:45:34+02:00","size":969,"digest":"5288f91d4c12b6fdca7129a8564638991028f730a170bb72be9fee1ac8d8f206","integrity":"sha256-Uoj5HUwStv3KcSmoVkY4mRAo9zChcLtyvp/uGsjY8gY="},"flags/4x3/ms-add4964ba7fa5a4440d40902dabd49345476d13ddf6e20e7b06834ab30721b79.svg":{"logical_path":"flags/4x3/ms.svg","mtime":"2017-10-08T14:45:34+02:00","size":8602,"digest":"add4964ba7fa5a4440d40902dabd49345476d13ddf6e20e7b06834ab30721b79","integrity":"sha256-rdSWS6f6WkRA1AkC2r1JNFR20T3fbiDnsGg0qzByG3k="},"flags/1x1/ms-47f49520f4ba965587509e45980be0ef29792830738cdae717e52616a11bc00b.svg":{"logical_path":"flags/1x1/ms.svg","mtime":"2017-10-08T14:45:34+02:00","size":8574,"digest":"47f49520f4ba965587509e45980be0ef29792830738cdae717e52616a11bc00b","integrity":"sha256-R/SVIPS6llWHUJ5FmAvg7yl5KDBzjNrnF+UmFqEbwAs="},"flags/4x3/mt-55b5c69335d7e2691e50443b34fc5b708309c99326fea6233dd3575c3402043a.svg":{"logical_path":"flags/4x3/mt.svg","mtime":"2017-10-08T14:45:34+02:00","size":13407,"digest":"55b5c69335d7e2691e50443b34fc5b708309c99326fea6233dd3575c3402043a","integrity":"sha256-VbXGkzXX4mkeUEQ7NPxbcIMJyZMm/qYjPdNXXDQCBDo="},"flags/1x1/mt-bbdc4f8e3dc66dc066d8ad0a264d751090794c53eee6be34f8df84ab389988a0.svg":{"logical_path":"flags/1x1/mt.svg","mtime":"2017-10-08T14:45:34+02:00","size":15270,"digest":"bbdc4f8e3dc66dc066d8ad0a264d751090794c53eee6be34f8df84ab389988a0","integrity":"sha256-u9xPjj3GbcBm2K0KJk11EJB5TFPu5r40+N+EqziZiKA="},"flags/4x3/mu-d0d2fd85209d5ca5b9f90da3947f3142b96ae688536ed796f2bc912aef84c333.svg":{"logical_path":"flags/4x3/mu.svg","mtime":"2017-10-08T14:45:34+02:00","size":366,"digest":"d0d2fd85209d5ca5b9f90da3947f3142b96ae688536ed796f2bc912aef84c333","integrity":"sha256-0NL9hSCdXKW5+Q2jlH8xQrlq5ohTbteW8ryRKu+EwzM="},"flags/1x1/mu-3e18fa9a066e02636f5a119d445b4f0439c8b75bae4e2999c17a6105bb95bd5a.svg":{"logical_path":"flags/1x1/mu.svg","mtime":"2017-10-08T14:45:34+02:00","size":348,"digest":"3e18fa9a066e02636f5a119d445b4f0439c8b75bae4e2999c17a6105bb95bd5a","integrity":"sha256-Phj6mgZuAmNvWhGdRFtPBDnIt1uuTimZwXphBbuVvVo="},"flags/4x3/mv-595fccd022d985bf319bfee09ded164593e8206c364adc1fa3abbc68450c516a.svg":{"logical_path":"flags/4x3/mv.svg","mtime":"2017-10-08T14:45:34+02:00","size":304,"digest":"595fccd022d985bf319bfee09ded164593e8206c364adc1fa3abbc68450c516a","integrity":"sha256-WV/M0CLZhb8xm/7gne0WRZPoIGw2Stwfo6u8aEUMUWo="},"flags/1x1/mv-ba59c37e1fcf099ca68e7fa68fc30d5e75c4171aad18be54126fd214a0b0b6b5.svg":{"logical_path":"flags/1x1/mv.svg","mtime":"2017-10-08T14:45:34+02:00","size":330,"digest":"ba59c37e1fcf099ca68e7fa68fc30d5e75c4171aad18be54126fd214a0b0b6b5","integrity":"sha256-ulnDfh/PCZymjn+mj8MNXnXEFxqtGL5UEm/SFKCwtrU="},"flags/4x3/mw-67c2a39590afb916054063262e67293e303a264b9f9219767c13feb988f47212.svg":{"logical_path":"flags/4x3/mw.svg","mtime":"2017-10-08T14:45:34+02:00","size":5696,"digest":"67c2a39590afb916054063262e67293e303a264b9f9219767c13feb988f47212","integrity":"sha256-Z8KjlZCvuRYFQGMmLmcpPjA6Jkufkhl2fBP+uYj0chI="},"flags/1x1/mw-b82e28e3e51b467c8db86b1dd9cae837204255320928eb5e5f6b8536c7b1b28e.svg":{"logical_path":"flags/1x1/mw.svg","mtime":"2017-10-08T14:45:34+02:00","size":5922,"digest":"b82e28e3e51b467c8db86b1dd9cae837204255320928eb5e5f6b8536c7b1b28e","integrity":"sha256-uC4o4+UbRnyNuGsd2croNyBCVTIJKOteX2uFNsexso4="},"flags/4x3/mx-416fe6de02b7d9dfc0e479454d06fa7701631bf848c888365bc56978ea524bc5.svg":{"logical_path":"flags/4x3/mx.svg","mtime":"2017-10-08T14:45:34+02:00","size":48965,"digest":"416fe6de02b7d9dfc0e479454d06fa7701631bf848c888365bc56978ea524bc5","integrity":"sha256-QW/m3gK32d/A5HlFTQb6dwFjG/hIyIg2W8VpeOpSS8U="},"flags/1x1/mx-b9461685b2714abb039fbd65510729f7ab324940045465b1c74666721d721f7d.svg":{"logical_path":"flags/1x1/mx.svg","mtime":"2017-10-08T14:45:34+02:00","size":49254,"digest":"b9461685b2714abb039fbd65510729f7ab324940045465b1c74666721d721f7d","integrity":"sha256-uUYWhbJxSrsDn71lUQcp96sySUAEVGWxx0Zmch1yH30="},"flags/4x3/my-c0f21e9c6679e1ae455392ded0b9e5d8aad5f5ee79589634ac89d88f0c548060.svg":{"logical_path":"flags/4x3/my.svg","mtime":"2017-10-08T14:45:34+02:00","size":1542,"digest":"c0f21e9c6679e1ae455392ded0b9e5d8aad5f5ee79589634ac89d88f0c548060","integrity":"sha256-wPIenGZ54a5FU5Le0Lnl2KrV9e55WJY0rInYjwxUgGA="},"flags/1x1/my-868a1feec94ccf789db1040a953f25d3982056514195dcd961ff2d6b51b04431.svg":{"logical_path":"flags/1x1/my.svg","mtime":"2017-10-08T14:45:34+02:00","size":1538,"digest":"868a1feec94ccf789db1040a953f25d3982056514195dcd961ff2d6b51b04431","integrity":"sha256-hoof7slMz3idsQQKlT8l05ggVlFBldzZYf8ta1GwRDE="},"flags/4x3/mz-0c06b80f82ab675854d23444740910298f4b8e82b929112dbec4e1927342120f.svg":{"logical_path":"flags/4x3/mz.svg","mtime":"2017-10-08T14:45:34+02:00","size":3565,"digest":"0c06b80f82ab675854d23444740910298f4b8e82b929112dbec4e1927342120f","integrity":"sha256-DAa4D4KrZ1hU0jREdAkQKY9LjoK5KREtvsThknNCEg8="},"flags/1x1/mz-09a8632f1d20d400401b944af3c4b13e5d64052466bf9a59f6d2927d188150da.svg":{"logical_path":"flags/1x1/mz.svg","mtime":"2017-10-08T14:45:34+02:00","size":3592,"digest":"09a8632f1d20d400401b944af3c4b13e5d64052466bf9a59f6d2927d188150da","integrity":"sha256-CahjLx0g1ABAG5RK88SxPl1kBSRmv5pZ9tKSfRiBUNo="},"flags/4x3/na-43a5f5934fc004e64eadcfb7675114ed1eab3b7f1e9153886edb0b69e7581ce2.svg":{"logical_path":"flags/4x3/na.svg","mtime":"2017-10-08T14:45:34+02:00","size":1311,"digest":"43a5f5934fc004e64eadcfb7675114ed1eab3b7f1e9153886edb0b69e7581ce2","integrity":"sha256-Q6X1k0/ABOZOrc+3Z1EU7R6rO38ekVOIbtsLaedYHOI="},"flags/1x1/na-549c5971f5c2a771c83113a4f9b7a9b5e69546d855e92559b49d6772ff6d3e82.svg":{"logical_path":"flags/1x1/na.svg","mtime":"2017-10-08T14:45:34+02:00","size":1297,"digest":"549c5971f5c2a771c83113a4f9b7a9b5e69546d855e92559b49d6772ff6d3e82","integrity":"sha256-VJxZcfXCp3HIMROk+bepteaVRthV6SVZtJ1ncv9tPoI="},"flags/4x3/nc-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/nc.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/nc-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/nc.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/ne-3be65335a772b7ba2c8916d0d60f12ed4cc2aebc302151ea23ced9c9a3c38ed4.svg":{"logical_path":"flags/4x3/ne.svg","mtime":"2017-10-08T14:45:34+02:00","size":291,"digest":"3be65335a772b7ba2c8916d0d60f12ed4cc2aebc302151ea23ced9c9a3c38ed4","integrity":"sha256-O+ZTNadyt7osiRbQ1g8S7UzCrrwwIVHqI87ZyaPDjtQ="},"flags/1x1/ne-783c25c63f68afe3c462b326b7faec7cc1493f6a4c140bc62fd524604de09d27.svg":{"logical_path":"flags/1x1/ne.svg","mtime":"2017-10-08T14:45:34+02:00","size":303,"digest":"783c25c63f68afe3c462b326b7faec7cc1493f6a4c140bc62fd524604de09d27","integrity":"sha256-eDwlxj9or+PEYrMmt/rsfMFJP2pMFAvGL9UkYE3gnSc="},"flags/4x3/nf-6ff37be9a0581fec55eef9e9871aa0d76d61c44007445184712ec6df3a04208a.svg":{"logical_path":"flags/4x3/nf.svg","mtime":"2017-10-08T14:45:34+02:00","size":9092,"digest":"6ff37be9a0581fec55eef9e9871aa0d76d61c44007445184712ec6df3a04208a","integrity":"sha256-b/N76aBYH+xV7vnphxqg121hxEAHRFGEcS7G3zoEIIo="},"flags/1x1/nf-2f25b6485f62ce38b25bc9f6428d3e0dc0043d71221eac1f4c3d71bca91c2ea6.svg":{"logical_path":"flags/1x1/nf.svg","mtime":"2017-10-08T14:45:34+02:00","size":8982,"digest":"2f25b6485f62ce38b25bc9f6428d3e0dc0043d71221eac1f4c3d71bca91c2ea6","integrity":"sha256-LyW2SF9izjiyW8n2Qo0+DcAEPXEiHqwfTD1xvKkcLqY="},"flags/4x3/ng-22aaf5a93f277f26cbfb21f7b141476fc8853298cf423fe5c849f87c2813d4e1.svg":{"logical_path":"flags/4x3/ng.svg","mtime":"2017-10-08T14:45:34+02:00","size":299,"digest":"22aaf5a93f277f26cbfb21f7b141476fc8853298cf423fe5c849f87c2813d4e1","integrity":"sha256-Iqr1qT8nfybL+yH3sUFHb8iFMpjPQj/lyEn4fCgT1OE="},"flags/1x1/ng-8753476807ab9e0c201397dbe6a884155d97e8766667d10071650d64fe277fb0.svg":{"logical_path":"flags/1x1/ng.svg","mtime":"2017-10-08T14:45:34+02:00","size":296,"digest":"8753476807ab9e0c201397dbe6a884155d97e8766667d10071650d64fe277fb0","integrity":"sha256-h1NHaAerngwgE5fb5qiEFV2X6HZmZ9EAcWUNZP4nf7A="},"flags/4x3/ni-295d07e91f9417b2ca8c7c918481874a7da7f9ac25035edf3a8d1d79b1230e32.svg":{"logical_path":"flags/4x3/ni.svg","mtime":"2017-10-08T14:45:34+02:00","size":28935,"digest":"295d07e91f9417b2ca8c7c918481874a7da7f9ac25035edf3a8d1d79b1230e32","integrity":"sha256-KV0H6R+UF7LKjHyRhIGHSn2n+awlA17fOo0debEjDjI="},"flags/1x1/ni-6786ef719864e51745934adc319ed0ed95fca75687ee6050d580435ee3f2b236.svg":{"logical_path":"flags/1x1/ni.svg","mtime":"2017-10-08T14:45:34+02:00","size":28945,"digest":"6786ef719864e51745934adc319ed0ed95fca75687ee6050d580435ee3f2b236","integrity":"sha256-Z4bvcZhk5RdFk0rcMZ7Q7ZX8p1aH7mBQ1YBDXuPysjY="},"flags/4x3/nl-8f7bff63589346e93733c01f1f18c5a11e8c94911253bcf852f173a933cd928e.svg":{"logical_path":"flags/4x3/nl.svg","mtime":"2017-10-08T14:45:34+02:00","size":385,"digest":"8f7bff63589346e93733c01f1f18c5a11e8c94911253bcf852f173a933cd928e","integrity":"sha256-j3v/Y1iTRuk3M8AfHxjFoR6MlJESU7z4UvFzqTPNko4="},"flags/1x1/nl-f46400354e3d489228eca5944d9e181114fe1f748fa22ac0a70fd06c557bec92.svg":{"logical_path":"flags/1x1/nl.svg","mtime":"2017-10-08T14:45:34+02:00","size":400,"digest":"f46400354e3d489228eca5944d9e181114fe1f748fa22ac0a70fd06c557bec92","integrity":"sha256-9GQANU49SJIo7KWUTZ4YERT+H3SPoirApw/QbFV77JI="},"flags/4x3/no-ecdb24f870c1e6777529ec85e3ea8d989a75b5874ecde94fead0218f7c1b5605.svg":{"logical_path":"flags/4x3/no.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"ecdb24f870c1e6777529ec85e3ea8d989a75b5874ecde94fead0218f7c1b5605","integrity":"sha256-7Nsk+HDB5nd1KeyF4+qNmJp1tYdOzelP6tAhj3wbVgU="},"flags/1x1/no-47a12b11ae8b0aca7f7e3d9084e9d3a6c0ef1ad979d22ba9258e6f9ddc3ab16a.svg":{"logical_path":"flags/1x1/no.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"47a12b11ae8b0aca7f7e3d9084e9d3a6c0ef1ad979d22ba9258e6f9ddc3ab16a","integrity":"sha256-R6ErEa6LCsp/fj2QhOnTpsDvGtl50iupJY5vndw6sWo="},"flags/4x3/np-b32c3bad572c4f27b5eee9c1ca97a5f2ca1c2a5b720b67fd636c91064e5fbdd9.svg":{"logical_path":"flags/4x3/np.svg","mtime":"2017-10-08T14:45:34+02:00","size":1378,"digest":"b32c3bad572c4f27b5eee9c1ca97a5f2ca1c2a5b720b67fd636c91064e5fbdd9","integrity":"sha256-syw7rVcsTye17unBypel8socKltyC2f9Y2yRBk5fvdk="},"flags/1x1/np-1279e1d699c05de413b30172b7ed97c13bfaa2069abe788ecf8b127210778354.svg":{"logical_path":"flags/1x1/np.svg","mtime":"2017-10-08T14:45:34+02:00","size":1520,"digest":"1279e1d699c05de413b30172b7ed97c13bfaa2069abe788ecf8b127210778354","integrity":"sha256-Ennh1pnAXeQTswFyt+2XwTv6ogaavniOz4sSchB3g1Q="},"flags/4x3/nr-3818437e2251e1f7310734098d13e2eee69a6b9cc310918d3287b345618e6fef.svg":{"logical_path":"flags/4x3/nr.svg","mtime":"2017-10-08T14:45:34+02:00","size":811,"digest":"3818437e2251e1f7310734098d13e2eee69a6b9cc310918d3287b345618e6fef","integrity":"sha256-OBhDfiJR4fcxBzQJjRPi7uaaa5zDEJGNMoezRWGOb+8="},"flags/1x1/nr-9b9edbaf4e09989f53511c969520cc2c10f3a693cdb80441b2aeabff30ebb381.svg":{"logical_path":"flags/1x1/nr.svg","mtime":"2017-10-08T14:45:34+02:00","size":802,"digest":"9b9edbaf4e09989f53511c969520cc2c10f3a693cdb80441b2aeabff30ebb381","integrity":"sha256-m57br04JmJ9TURyWlSDMLBDzppPNuARBsq6r/zDrs4E="},"flags/4x3/nu-3b27eef18754c7fb8def8deadc730f074b090c8b6e9101d008d529c1d8784e5e.svg":{"logical_path":"flags/4x3/nu.svg","mtime":"2017-10-08T14:45:34+02:00","size":2311,"digest":"3b27eef18754c7fb8def8deadc730f074b090c8b6e9101d008d529c1d8784e5e","integrity":"sha256-Oyfu8YdUx/uN743q3HMPB0sJDItukQHQCNUpwdh4Tl4="},"flags/1x1/nu-9f6f9a41e36004711e3ad2e31e3d0425ca698bf242a62b9665b6f41eeb999ac7.svg":{"logical_path":"flags/1x1/nu.svg","mtime":"2017-10-08T14:45:34+02:00","size":2303,"digest":"9f6f9a41e36004711e3ad2e31e3d0425ca698bf242a62b9665b6f41eeb999ac7","integrity":"sha256-n2+aQeNgBHEeOtLjHj0EJcppi/JCpiuWZbb0HuuZmsc="},"flags/4x3/nz-9690c3a7cdea4d5d6b88546ad69244a772fd0649e75f6334695fce89f5c4f076.svg":{"logical_path":"flags/4x3/nz.svg","mtime":"2017-10-08T14:45:34+02:00","size":2149,"digest":"9690c3a7cdea4d5d6b88546ad69244a772fd0649e75f6334695fce89f5c4f076","integrity":"sha256-lpDDp83qTV1riFRq1pJEp3L9BknnX2M0aV/OifXE8HY="},"flags/1x1/nz-e848215aaf4f9d5738b886ded97ff13b69c752888a27d1ac430116f7133a1c0e.svg":{"logical_path":"flags/1x1/nz.svg","mtime":"2017-10-08T14:45:34+02:00","size":2146,"digest":"e848215aaf4f9d5738b886ded97ff13b69c752888a27d1ac430116f7133a1c0e","integrity":"sha256-6EghWq9PnVc4uIbe2X/xO2nHUoiKJ9GsQwEW9xM6HA4="},"flags/4x3/om-7b9135ecdcf42a3bb69c5bf685930d32f9be7c6daaf58d5a8d154e22b6079347.svg":{"logical_path":"flags/4x3/om.svg","mtime":"2017-10-08T14:45:34+02:00","size":29648,"digest":"7b9135ecdcf42a3bb69c5bf685930d32f9be7c6daaf58d5a8d154e22b6079347","integrity":"sha256-e5E17Nz0Kju2nFv2hZMNMvm+fG2q9Y1ajRVOIrYHk0c="},"flags/1x1/om-665da86c6b715f3d5f36bba0e01539e574d7871437b03ecbe29a92e5e703e09a.svg":{"logical_path":"flags/1x1/om.svg","mtime":"2017-10-08T14:45:34+02:00","size":29508,"digest":"665da86c6b715f3d5f36bba0e01539e574d7871437b03ecbe29a92e5e703e09a","integrity":"sha256-Zl2obGtxXz1fNrug4BU55XTXhxQ3sD7L4pqS5ecD4Jo="},"flags/4x3/pa-a5b55e50a411899195a8f2bf8f37bddd94a4436582568c9ddfbddc2c99d1ae2d.svg":{"logical_path":"flags/4x3/pa.svg","mtime":"2017-10-08T14:45:34+02:00","size":879,"digest":"a5b55e50a411899195a8f2bf8f37bddd94a4436582568c9ddfbddc2c99d1ae2d","integrity":"sha256-pbVeUKQRiZGVqPK/jze93ZSkQ2WCVoyd373cLJnRri0="},"flags/1x1/pa-6c5566a7ace4125d958ec45ade8ce61e2fc065bb7fdd99cf1d6988a01b6fa73a.svg":{"logical_path":"flags/1x1/pa.svg","mtime":"2017-10-08T14:45:34+02:00","size":785,"digest":"6c5566a7ace4125d958ec45ade8ce61e2fc065bb7fdd99cf1d6988a01b6fa73a","integrity":"sha256-bFVmp6zkEl2VjsRa3ozmHi/AZbt/3ZnPHWmIoBtvpzo="},"flags/4x3/pe-12966232fe9a3dcc296389dea282cc8aa400327298d25f2f01c4963d1b900d13.svg":{"logical_path":"flags/4x3/pe.svg","mtime":"2017-10-08T14:45:34+02:00","size":315,"digest":"12966232fe9a3dcc296389dea282cc8aa400327298d25f2f01c4963d1b900d13","integrity":"sha256-EpZiMv6aPcwpY4neooLMiqQAMnKY0l8vAcSWPRuQDRM="},"flags/1x1/pe-449b3363ff9efe701e1f662ae71c31bb4b5952710b73346e2ae090a90c79488d.svg":{"logical_path":"flags/1x1/pe.svg","mtime":"2017-10-08T14:45:34+02:00","size":271,"digest":"449b3363ff9efe701e1f662ae71c31bb4b5952710b73346e2ae090a90c79488d","integrity":"sha256-RJszY/+e/nAeH2Yq5xwxu0tZUnELczRuKuCQqQx5SI0="},"flags/4x3/pf-db568d96a25e93ea2d51edb9ccb8a0ba15bbe46e1241e1bb4376a856290de4e8.svg":{"logical_path":"flags/4x3/pf.svg","mtime":"2017-10-08T14:45:34+02:00","size":6691,"digest":"db568d96a25e93ea2d51edb9ccb8a0ba15bbe46e1241e1bb4376a856290de4e8","integrity":"sha256-21aNlqJek+otUe25zLiguhW75G4SQeG7Q3aoVikN5Og="},"flags/1x1/pf-d6aacd56a7243b922bbbd26c94696f19a3dd242df5e5ede999e0319930bf8d64.svg":{"logical_path":"flags/1x1/pf.svg","mtime":"2017-10-08T14:45:34+02:00","size":6623,"digest":"d6aacd56a7243b922bbbd26c94696f19a3dd242df5e5ede999e0319930bf8d64","integrity":"sha256-1qrNVqckO5Iru9JslGlvGaPdJC315e3pmeAxmTC/jWQ="},"flags/4x3/pg-def242bd4b12703b11ddc016962c0ab5ac2252e6afb53647281af0ddf72b08b2.svg":{"logical_path":"flags/4x3/pg.svg","mtime":"2017-10-08T14:45:34+02:00","size":2218,"digest":"def242bd4b12703b11ddc016962c0ab5ac2252e6afb53647281af0ddf72b08b2","integrity":"sha256-3vJCvUsScDsR3cAWliwKtawiUuavtTZHKBrw3fcrCLI="},"flags/1x1/pg-0f89210b4effa3e2f248e9d22710191ec8a5f8cc00e24e7a493fcf6013af6985.svg":{"logical_path":"flags/1x1/pg.svg","mtime":"2017-10-08T14:45:34+02:00","size":2966,"digest":"0f89210b4effa3e2f248e9d22710191ec8a5f8cc00e24e7a493fcf6013af6985","integrity":"sha256-D4khC07/o+LySOnSJxAZHsil+MwA4k56ST/PYBOvaYU="},"flags/4x3/ph-76da2cb2822b71a1e7f182cfe2b8744af8704640feceb476aadf1753611c124c.svg":{"logical_path":"flags/4x3/ph.svg","mtime":"2017-10-08T14:45:34+02:00","size":1377,"digest":"76da2cb2822b71a1e7f182cfe2b8744af8704640feceb476aadf1753611c124c","integrity":"sha256-dtossoIrcaHn8YLP4rh0SvhwRkD+zrR2qt8XU2EcEkw="},"flags/1x1/ph-896fe211ebf65c4aec42a1f115ad43894870bc661eb9f32fd97962f0c6a8b666.svg":{"logical_path":"flags/1x1/ph.svg","mtime":"2017-10-08T14:45:34+02:00","size":1377,"digest":"896fe211ebf65c4aec42a1f115ad43894870bc661eb9f32fd97962f0c6a8b666","integrity":"sha256-iW/iEev2XErsQqHxFa1DiUhwvGYeufMv2Xli8MaotmY="},"flags/4x3/pk-d0f9243f586c99692f7d7d18a648095badef0c11bd98645924771c71283f6a51.svg":{"logical_path":"flags/4x3/pk.svg","mtime":"2017-10-08T14:45:34+02:00","size":922,"digest":"d0f9243f586c99692f7d7d18a648095badef0c11bd98645924771c71283f6a51","integrity":"sha256-0PkkP1hsmWkvfX0YpkgJW63vDBG9mGRZJHcccSg/alE="},"flags/1x1/pk-c32541b10dabe01538a811d9e1b600b91b1724239fe99325bc1156c4183127d9.svg":{"logical_path":"flags/1x1/pk.svg","mtime":"2017-10-08T14:45:34+02:00","size":864,"digest":"c32541b10dabe01538a811d9e1b600b91b1724239fe99325bc1156c4183127d9","integrity":"sha256-wyVBsQ2r4BU4qBHZ4bYAuRsXJCOf6ZMlvBFWxBgxJ9k="},"flags/4x3/pl-0fc0d2ef9f5b48e43bd93818263cc504c825346f09a73d22c6f84dcde8d651af.svg":{"logical_path":"flags/4x3/pl.svg","mtime":"2017-10-08T14:45:34+02:00","size":237,"digest":"0fc0d2ef9f5b48e43bd93818263cc504c825346f09a73d22c6f84dcde8d651af","integrity":"sha256-D8DS759bSOQ72TgYJjzFBMglNG8Jpz0ixvhNzejWUa8="},"flags/1x1/pl-44281da3343d3308aaa29a9e7d060a24b8d5bb949d07197e3771aa30793f5ffe.svg":{"logical_path":"flags/1x1/pl.svg","mtime":"2017-10-08T14:45:34+02:00","size":237,"digest":"44281da3343d3308aaa29a9e7d060a24b8d5bb949d07197e3771aa30793f5ffe","integrity":"sha256-RCgdozQ9MwiqopqefQYKJLjVu5SdBxl+N3GqMHk/X/4="},"flags/4x3/pm-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/pm.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/pm-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/pm.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/pn-b9639507463a2e238b7d0f4cd976455ad4108594cc526882ed83807c321ca6b8.svg":{"logical_path":"flags/4x3/pn.svg","mtime":"2017-10-08T14:45:34+02:00","size":16790,"digest":"b9639507463a2e238b7d0f4cd976455ad4108594cc526882ed83807c321ca6b8","integrity":"sha256-uWOVB0Y6LiOLfQ9M2XZFWtQQhZTMUmiC7YOAfDIcprg="},"flags/1x1/pn-23189e2aa8792ba5d7bbfba6f21467ec9516f9b366ddddce193a7f26ddc18030.svg":{"logical_path":"flags/1x1/pn.svg","mtime":"2017-10-08T14:45:34+02:00","size":17272,"digest":"23189e2aa8792ba5d7bbfba6f21467ec9516f9b366ddddce193a7f26ddc18030","integrity":"sha256-IxieKqh5K6XXu/um8hRn7JUW+bNm3d3OGTp/Jt3BgDA="},"flags/4x3/pr-3194786def8e2510554b4d46d2ac49a10bfd1fb26f0d6803864b5982b36c12bb.svg":{"logical_path":"flags/4x3/pr.svg","mtime":"2017-10-08T14:45:34+02:00","size":721,"digest":"3194786def8e2510554b4d46d2ac49a10bfd1fb26f0d6803864b5982b36c12bb","integrity":"sha256-MZR4be+OJRBVS01G0qxJoQv9H7JvDWgDhktZgrNsErs="},"flags/1x1/pr-fb6e6e3064fc00cb41a3752358ba09e006375d6139ed63a13e6b81b4c8c53511.svg":{"logical_path":"flags/1x1/pr.svg","mtime":"2017-10-08T14:45:34+02:00","size":697,"digest":"fb6e6e3064fc00cb41a3752358ba09e006375d6139ed63a13e6b81b4c8c53511","integrity":"sha256-+25uMGT8AMtBo3UjWLoJ4AY3XWE57WOhPmuBtMjFNRE="},"flags/4x3/ps-e75b0d2d81c169c45624faf1f51ed1b9bf9b7945d71ceddac505c464f47c639a.svg":{"logical_path":"flags/4x3/ps.svg","mtime":"2017-10-08T14:45:34+02:00","size":609,"digest":"e75b0d2d81c169c45624faf1f51ed1b9bf9b7945d71ceddac505c464f47c639a","integrity":"sha256-51sNLYHBacRWJPrx9R7Rub+beUXXHO3axQXEZPR8Y5o="},"flags/1x1/ps-5e45e6b195fa5aa5b3c8bdff0824ef3fb354d4f1d5a1a5c4d92a9d67a568db3b.svg":{"logical_path":"flags/1x1/ps.svg","mtime":"2017-10-08T14:45:34+02:00","size":560,"digest":"5e45e6b195fa5aa5b3c8bdff0824ef3fb354d4f1d5a1a5c4d92a9d67a568db3b","integrity":"sha256-XkXmsZX6WqWzyL3/CCTvP7NU1PHVoaXE2SqdZ6Vo2zs="},"flags/4x3/pt-7056421a09bf65c1e96a0891db8b1d37b9ece7b39a7a8ecdfcbc837d0f773cfa.svg":{"logical_path":"flags/4x3/pt.svg","mtime":"2017-10-08T14:45:34+02:00","size":12226,"digest":"7056421a09bf65c1e96a0891db8b1d37b9ece7b39a7a8ecdfcbc837d0f773cfa","integrity":"sha256-cFZCGgm/ZcHpagiR24sdN7ns57Oaeo7N/LyDfQ93PPo="},"flags/1x1/pt-4f2b0e37162ed4d197eb28886933009600109e827ac83664f57f3683adc9617a.svg":{"logical_path":"flags/1x1/pt.svg","mtime":"2017-10-08T14:45:34+02:00","size":12319,"digest":"4f2b0e37162ed4d197eb28886933009600109e827ac83664f57f3683adc9617a","integrity":"sha256-TysONxYu1NGX6yiIaTMAlgAQnoJ6yDZk9X82g63JYXo="},"flags/4x3/pw-8991b8ae2bef2f0e81e79442947f1c68f843be48f652a4c3a2af5dab84d73170.svg":{"logical_path":"flags/4x3/pw.svg","mtime":"2017-10-08T14:45:34+02:00","size":489,"digest":"8991b8ae2bef2f0e81e79442947f1c68f843be48f652a4c3a2af5dab84d73170","integrity":"sha256-iZG4rivvLw6B55RClH8caPhDvkj2UqTDoq9dq4TXMXA="},"flags/1x1/pw-4c45576b7f0be5b37d463d126410bfbca0f9dcdd1539fc6866f9fc116baa3437.svg":{"logical_path":"flags/1x1/pw.svg","mtime":"2017-10-08T14:45:34+02:00","size":596,"digest":"4c45576b7f0be5b37d463d126410bfbca0f9dcdd1539fc6866f9fc116baa3437","integrity":"sha256-TEVXa38L5bN9Rj0SZBC/vKD53N0VOfxoZvn8EWuqNDc="},"flags/4x3/py-c416c19abcc7629572203f00253c9272876e59a88eafa893fa4a534ed8977776.svg":{"logical_path":"flags/4x3/py.svg","mtime":"2017-10-08T14:45:34+02:00","size":26946,"digest":"c416c19abcc7629572203f00253c9272876e59a88eafa893fa4a534ed8977776","integrity":"sha256-xBbBmrzHYpVyID8AJTyScoduWaiOr6iT+kpTTtiXd3Y="},"flags/1x1/py-adb6cfc575e9626cd8284964929c88830d0d6f7e5b0c135649eceb8bd9de1368.svg":{"logical_path":"flags/1x1/py.svg","mtime":"2017-10-08T14:45:34+02:00","size":27004,"digest":"adb6cfc575e9626cd8284964929c88830d0d6f7e5b0c135649eceb8bd9de1368","integrity":"sha256-rbbPxXXpYmzYKElkkpyIgw0Nb35bDBNWSezri9neE2g="},"flags/4x3/qa-821f667f3f99992cf08b05498cc1a0769dee9c4e36d2a2561d6cf7827255af1b.svg":{"logical_path":"flags/4x3/qa.svg","mtime":"2017-10-08T14:45:34+02:00","size":414,"digest":"821f667f3f99992cf08b05498cc1a0769dee9c4e36d2a2561d6cf7827255af1b","integrity":"sha256-gh9mfz+ZmSzwiwVJjMGgdp3unE420qJWHWz3gnJVrxs="},"flags/1x1/qa-b05242965c0835a82add68dbcfb4523bc5e53e191803eab2c0c8c8762f2fce80.svg":{"logical_path":"flags/1x1/qa.svg","mtime":"2017-10-08T14:45:34+02:00","size":430,"digest":"b05242965c0835a82add68dbcfb4523bc5e53e191803eab2c0c8c8762f2fce80","integrity":"sha256-sFJCllwINagq3Wjbz7RSO8XlPhkYA+qywMjIdi8vzoA="},"flags/4x3/re-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/re.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/re-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/re.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/ro-63c55736a245e5fa5e0484b4693d43e171941143fcbdb34d3aa8d4cfd6160c9d.svg":{"logical_path":"flags/4x3/ro.svg","mtime":"2017-10-08T14:45:34+02:00","size":320,"digest":"63c55736a245e5fa5e0484b4693d43e171941143fcbdb34d3aa8d4cfd6160c9d","integrity":"sha256-Y8VXNqJF5fpeBIS0aT1D4XGUEUP8vbNNOqjUz9YWDJ0="},"flags/1x1/ro-f5c83b26832bb94b4320340ada4351a695bff66bb1410f6007c87e8395290380.svg":{"logical_path":"flags/1x1/ro.svg","mtime":"2017-10-08T14:45:34+02:00","size":324,"digest":"f5c83b26832bb94b4320340ada4351a695bff66bb1410f6007c87e8395290380","integrity":"sha256-9cg7JoMruUtDIDQK2kNRppW/9muxQQ9gB8h+g5UpA4A="},"flags/4x3/rs-a1bff9944ac65bce131f42964a45cfce50e334c6d52eeeea65f5f6179f8acf4d.svg":{"logical_path":"flags/4x3/rs.svg","mtime":"2017-10-08T14:45:34+02:00","size":494000,"digest":"a1bff9944ac65bce131f42964a45cfce50e334c6d52eeeea65f5f6179f8acf4d","integrity":"sha256-ob/5lErGW84TH0KWSkXPzlDjNMbVLu7qZfX2F5+Kz00="},"flags/1x1/rs-6af7605aa8aee1da6e0a75c750964b21b404011cd00f2df43ae55a827952251a.svg":{"logical_path":"flags/1x1/rs.svg","mtime":"2017-10-08T14:45:34+02:00","size":493892,"digest":"6af7605aa8aee1da6e0a75c750964b21b404011cd00f2df43ae55a827952251a","integrity":"sha256-avdgWqiu4dpuCnXHUJZLIbQEARzQDy30OuVagnlSJRo="},"flags/4x3/ru-2ba8996aa53f5eca5d1b0ea1a67d6d469659ac2523d1b394e3d6e25913bbbc15.svg":{"logical_path":"flags/4x3/ru.svg","mtime":"2017-10-08T14:45:34+02:00","size":309,"digest":"2ba8996aa53f5eca5d1b0ea1a67d6d469659ac2523d1b394e3d6e25913bbbc15","integrity":"sha256-K6iZaqU/XspdGw6hpn1tRpZZrCUj0bOU49biWRO7vBU="},"flags/1x1/ru-c8ecec77af983cd6ca10baaf2fa8f3dd67a6fa84f80cabdee10858910fdcc233.svg":{"logical_path":"flags/1x1/ru.svg","mtime":"2017-10-08T14:45:34+02:00","size":321,"digest":"c8ecec77af983cd6ca10baaf2fa8f3dd67a6fa84f80cabdee10858910fdcc233","integrity":"sha256-yOzsd6+YPNbKELqvL6jz3Wem+oT4DKve4QhYkQ/cwjM="},"flags/4x3/rw-0fa2c78359e9603d1cf21e4bb9355414ac3eed3635a25ba8f653d0498d61bd16.svg":{"logical_path":"flags/4x3/rw.svg","mtime":"2017-10-08T14:45:34+02:00","size":793,"digest":"0fa2c78359e9603d1cf21e4bb9355414ac3eed3635a25ba8f653d0498d61bd16","integrity":"sha256-D6LHg1npYD0c8h5LuTVUFKw+7TY1oluo9lPQSY1hvRY="},"flags/1x1/rw-61cce3e871326334478d73a379b202fc8548581abc02e39a898bc4fd16b2e0eb.svg":{"logical_path":"flags/1x1/rw.svg","mtime":"2017-10-08T14:45:34+02:00","size":795,"digest":"61cce3e871326334478d73a379b202fc8548581abc02e39a898bc4fd16b2e0eb","integrity":"sha256-Yczj6HEyYzRHjXOjebIC/IVIWBq8AuOaiYvE/Ray4Os="},"flags/4x3/sa-5aec890788f78356a42e38fe6ea2c30c4c82c99a3f05f654faae5918aae804c4.svg":{"logical_path":"flags/4x3/sa.svg","mtime":"2017-10-08T14:45:34+02:00","size":16083,"digest":"5aec890788f78356a42e38fe6ea2c30c4c82c99a3f05f654faae5918aae804c4","integrity":"sha256-WuyJB4j3g1akLjj+bqLDDEyCyZo/BfZU+q5ZGKroBMQ="},"flags/1x1/sa-57bf549298c1c3cb533120975d49b6cdb9c839addf278497d133236e666239f4.svg":{"logical_path":"flags/1x1/sa.svg","mtime":"2017-10-08T14:45:34+02:00","size":16334,"digest":"57bf549298c1c3cb533120975d49b6cdb9c839addf278497d133236e666239f4","integrity":"sha256-V79UkpjBw8tTMSCXXUm2zbnIOa3fJ4SX0TMjbmZiOfQ="},"flags/4x3/sb-3433de16f2b3f2a8373de87f879dd3b31ec8369256e23193947318976b51a182.svg":{"logical_path":"flags/4x3/sb.svg","mtime":"2017-10-08T14:45:34+02:00","size":1196,"digest":"3433de16f2b3f2a8373de87f879dd3b31ec8369256e23193947318976b51a182","integrity":"sha256-NDPeFvKz8qg3Peh/h53Tsx7INpJW4jGTlHMYl2tRoYI="},"flags/1x1/sb-e5352ddacf8edb727ef8f68dbb0951f00ae84b96e9b3b224cdf0c3ee2d33e8db.svg":{"logical_path":"flags/1x1/sb.svg","mtime":"2017-10-08T14:45:34+02:00","size":1221,"digest":"e5352ddacf8edb727ef8f68dbb0951f00ae84b96e9b3b224cdf0c3ee2d33e8db","integrity":"sha256-5TUt2s+O23J++PaNuwlR8AroS5bps7IkzfDD7i0z6Ns="},"flags/4x3/sc-9c1764a913e0577cadb24d11b883978389a818e94b39f6ac5cf4993dd041d501.svg":{"logical_path":"flags/4x3/sc.svg","mtime":"2017-10-08T14:45:34+02:00","size":591,"digest":"9c1764a913e0577cadb24d11b883978389a818e94b39f6ac5cf4993dd041d501","integrity":"sha256-nBdkqRPgV3ytsk0RuIOXg4moGOlLOfasXPSZPdBB1QE="},"flags/1x1/sc-c1abe18095ce0b84c2b21aa2453b916e00d8c0fd72fd5161f212e6bcf9c8ccd8.svg":{"logical_path":"flags/1x1/sc.svg","mtime":"2017-10-08T14:45:34+02:00","size":644,"digest":"c1abe18095ce0b84c2b21aa2453b916e00d8c0fd72fd5161f212e6bcf9c8ccd8","integrity":"sha256-wavhgJXOC4TCshqiRTuRbgDYwP1y/VFh8hLmvPnIzNg="},"flags/4x3/sd-df15037b269e643062988e5273f3cd5a379b18d0ff496bdac97e840deb0793bc.svg":{"logical_path":"flags/4x3/sd.svg","mtime":"2017-10-08T14:45:34+02:00","size":501,"digest":"df15037b269e643062988e5273f3cd5a379b18d0ff496bdac97e840deb0793bc","integrity":"sha256-3xUDeyaeZDBimI5Sc/PNWjebGND/SWvayX6EDesHk7w="},"flags/1x1/sd-baedc80da37d70ce8fa4d5619d85b4823435180311f0c2995717116e681c20d3.svg":{"logical_path":"flags/1x1/sd.svg","mtime":"2017-10-08T14:45:34+02:00","size":515,"digest":"baedc80da37d70ce8fa4d5619d85b4823435180311f0c2995717116e681c20d3","integrity":"sha256-uu3IDaN9cM6PpNVhnYW0gjQ1GAMR8MKZVxcRbmgcINM="},"flags/4x3/se-73964261d5ec45c856c9f7b57f1be90f60c5e748596e494aafa5facd817c7118.svg":{"logical_path":"flags/4x3/se.svg","mtime":"2017-10-08T14:45:34+02:00","size":765,"digest":"73964261d5ec45c856c9f7b57f1be90f60c5e748596e494aafa5facd817c7118","integrity":"sha256-c5ZCYdXsRchWyfe1fxvpD2DF50hZbklKr6X6zYF8cRg="},"flags/1x1/se-ea6d6caac7db4cfc8d68548f70afbf6ddbf072993e655bdb0b0860f724202e2b.svg":{"logical_path":"flags/1x1/se.svg","mtime":"2017-10-08T14:45:34+02:00","size":799,"digest":"ea6d6caac7db4cfc8d68548f70afbf6ddbf072993e655bdb0b0860f724202e2b","integrity":"sha256-6m1sqsfbTPyNaFSPcK+/bdvwcpk+ZVvbCwhg9yQgLis="},"flags/4x3/sg-2c8851a3c456051d7510b78da650054ee411ecdb01508ab3aa8ddac220de984a.svg":{"logical_path":"flags/4x3/sg.svg","mtime":"2017-10-08T14:45:34+02:00","size":1278,"digest":"2c8851a3c456051d7510b78da650054ee411ecdb01508ab3aa8ddac220de984a","integrity":"sha256-LIhRo8RWBR11ELeNplAFTuQR7NsBUIqzqo3awiDemEo="},"flags/1x1/sg-81517add5de364935b2173fd1ed3db2fefc22e07a072d03fd4f91e8543ffcb22.svg":{"logical_path":"flags/1x1/sg.svg","mtime":"2017-10-08T14:45:34+02:00","size":1373,"digest":"81517add5de364935b2173fd1ed3db2fefc22e07a072d03fd4f91e8543ffcb22","integrity":"sha256-gVF63V3jZJNbIXP9HtPbL+/CLgegctA/1PkehUP/yyI="},"flags/4x3/sh-cdfa61ab262caf8d6b13cc66f1d0e1e935dadb144d93ad28fcd850e9164c33d9.svg":{"logical_path":"flags/4x3/sh.svg","mtime":"2017-10-08T14:45:34+02:00","size":48963,"digest":"cdfa61ab262caf8d6b13cc66f1d0e1e935dadb144d93ad28fcd850e9164c33d9","integrity":"sha256-zfphqyYsr41rE8xm8dDh6TXa2xRNk60o/NhQ6RZMM9k="},"flags/1x1/sh-763ae01f8c0189641321a0de1085f0d1ceeb962d94bb989c6255dae4616fd14f.svg":{"logical_path":"flags/1x1/sh.svg","mtime":"2017-10-08T14:45:34+02:00","size":49731,"digest":"763ae01f8c0189641321a0de1085f0d1ceeb962d94bb989c6255dae4616fd14f","integrity":"sha256-djrgH4wBiWQTIaDeEIXw0c7rli2Uu5icYlXa5GFv0U8="},"flags/4x3/si-81f600f18fae95b3e2a6813cc012e94bdfd67965eb7ce1676780bc7d04f4f203.svg":{"logical_path":"flags/4x3/si.svg","mtime":"2017-10-08T14:45:34+02:00","size":2910,"digest":"81f600f18fae95b3e2a6813cc012e94bdfd67965eb7ce1676780bc7d04f4f203","integrity":"sha256-gfYA8Y+ulbPipoE8wBLpS9/WeWXrfOFnZ4C8fQT08gM="},"flags/1x1/si-6481bc748939a46efccac3df22ccc34341cc006d871a7ff521769c562a5325df.svg":{"logical_path":"flags/1x1/si.svg","mtime":"2017-10-08T14:45:34+02:00","size":2924,"digest":"6481bc748939a46efccac3df22ccc34341cc006d871a7ff521769c562a5325df","integrity":"sha256-ZIG8dIk5pG78ysPfIszDQ0HMAG2HGn/1IXacVipTJd8="},"flags/4x3/sj-8c78bb614796386f416c677e7ee2984c9997d0789306a9861e0d3f85edf62608.svg":{"logical_path":"flags/4x3/sj.svg","mtime":"2017-10-08T14:45:34+02:00","size":809,"digest":"8c78bb614796386f416c677e7ee2984c9997d0789306a9861e0d3f85edf62608","integrity":"sha256-jHi7YUeWOG9BbGd+fuKYTJmX0HiTBqmGHg0/he32Jgg="},"flags/1x1/sj-15448521086e54b5dc1b51bce3e8424a3282aaa539514a8d63fae537d400bc08.svg":{"logical_path":"flags/1x1/sj.svg","mtime":"2017-10-08T14:45:34+02:00","size":751,"digest":"15448521086e54b5dc1b51bce3e8424a3282aaa539514a8d63fae537d400bc08","integrity":"sha256-FUSFIQhuVLXcG1G84+hCSjKCqqU5UUqNY/rlN9QAvAg="},"flags/4x3/sk-271dd9219a226c5e9768072c3d0512b9ab07d1af59a3a5642eba620e3f53ea2c.svg":{"logical_path":"flags/4x3/sk.svg","mtime":"2017-10-08T14:45:34+02:00","size":1633,"digest":"271dd9219a226c5e9768072c3d0512b9ab07d1af59a3a5642eba620e3f53ea2c","integrity":"sha256-Jx3ZIZoibF6XaAcsPQUSuasH0a9Zo6VkLrpiDj9T6iw="},"flags/1x1/sk-4ee51ed995ad80a8f9a335b5f36b00a830da6e7065ecda1e84e427cf19dda736.svg":{"logical_path":"flags/1x1/sk.svg","mtime":"2017-10-08T14:45:34+02:00","size":1644,"digest":"4ee51ed995ad80a8f9a335b5f36b00a830da6e7065ecda1e84e427cf19dda736","integrity":"sha256-TuUe2ZWtgKj5ozW182sAqDDabnBl7NoehOQnzxndpzY="},"flags/4x3/sl-3fd8765025c44c215906c9d33be69326118f5025b35a93636df059926053c84c.svg":{"logical_path":"flags/4x3/sl.svg","mtime":"2017-10-08T14:45:34+02:00","size":340,"digest":"3fd8765025c44c215906c9d33be69326118f5025b35a93636df059926053c84c","integrity":"sha256-P9h2UCXETCFZBsnTO+aTJhGPUCWzWpNjbfBZkmBTyEw="},"flags/1x1/sl-ffbed472a2b3677e9339adfd150ffc76bbae85071cbf1b14f75c67b03fff29d8.svg":{"logical_path":"flags/1x1/sl.svg","mtime":"2017-10-08T14:45:34+02:00","size":454,"digest":"ffbed472a2b3677e9339adfd150ffc76bbae85071cbf1b14f75c67b03fff29d8","integrity":"sha256-/77UcqKzZ36TOa39FQ/8druuhQccvxsU91xnsD//Kdg="},"flags/4x3/sm-72df25d7ba785caa3201dc9ea30349a5bd3891de99e6d818bff2f34914264654.svg":{"logical_path":"flags/4x3/sm.svg","mtime":"2017-10-08T14:45:34+02:00","size":22920,"digest":"72df25d7ba785caa3201dc9ea30349a5bd3891de99e6d818bff2f34914264654","integrity":"sha256-ct8l17p4XKoyAdyeowNJpb04kd6Z5tgYv/LzSRQmRlQ="},"flags/1x1/sm-afa36059e43d3014dfc9088d30e86449b8463d282611b99f8d496aca155075c2.svg":{"logical_path":"flags/1x1/sm.svg","mtime":"2017-10-08T14:45:34+02:00","size":23051,"digest":"afa36059e43d3014dfc9088d30e86449b8463d282611b99f8d496aca155075c2","integrity":"sha256-r6NgWeQ9MBTfyQiNMOhkSbhGPSgmEbmfjUlqyhVQdcI="},"flags/4x3/sn-3465e8417cd4bd6d948ab2311442757688af8516c6aa7c4f73c48a9447087b8c.svg":{"logical_path":"flags/4x3/sn.svg","mtime":"2017-10-08T14:45:34+02:00","size":485,"digest":"3465e8417cd4bd6d948ab2311442757688af8516c6aa7c4f73c48a9447087b8c","integrity":"sha256-NGXoQXzUvW2UirIxFEJ1doivhRbGqnxPc8SKlEcIe4w="},"flags/1x1/sn-dfbe30abf15b2937f1b2de375b832ef3fe11e78f3536df35232b2f7265c00d9e.svg":{"logical_path":"flags/1x1/sn.svg","mtime":"2017-10-08T14:45:34+02:00","size":480,"digest":"dfbe30abf15b2937f1b2de375b832ef3fe11e78f3536df35232b2f7265c00d9e","integrity":"sha256-374wq/FbKTfxst43W4Mu8/4R5481Nt81IysvcmXADZ4="},"flags/4x3/so-16f7af15587913f17fd988f914c55de175ed1d4b2282ba2fa52b414c7359b440.svg":{"logical_path":"flags/4x3/so.svg","mtime":"2017-10-08T14:45:34+02:00","size":558,"digest":"16f7af15587913f17fd988f914c55de175ed1d4b2282ba2fa52b414c7359b440","integrity":"sha256-FvevFVh5E/F/2Yj5FMVd4XXtHUsigrovpStBTHNZtEA="},"flags/1x1/so-bbf08e60fbda4e45791d985450f6dbcd9ea779f93c818973271845dd01fc8df6.svg":{"logical_path":"flags/1x1/so.svg","mtime":"2017-10-08T14:45:34+02:00","size":571,"digest":"bbf08e60fbda4e45791d985450f6dbcd9ea779f93c818973271845dd01fc8df6","integrity":"sha256-u/COYPvaTkV5HZhUUPbbzZ6nefk8gYlzJxhF3QH8jfY="},"flags/4x3/sr-7718ec6fbe85ea55c72189bf0dc94b10f20a7948ab913903e5b8050af20e4f6f.svg":{"logical_path":"flags/4x3/sr.svg","mtime":"2017-10-08T14:45:34+02:00","size":331,"digest":"7718ec6fbe85ea55c72189bf0dc94b10f20a7948ab913903e5b8050af20e4f6f","integrity":"sha256-dxjsb76F6lXHIYm/DclLEPIKeUirkTkD5bgFCvIOT28="},"flags/1x1/sr-692dfcca46c35b618f0358ef0cc9b2ee7c27c839f98b12134318804f6498ceee.svg":{"logical_path":"flags/1x1/sr.svg","mtime":"2017-10-08T14:45:34+02:00","size":341,"digest":"692dfcca46c35b618f0358ef0cc9b2ee7c27c839f98b12134318804f6498ceee","integrity":"sha256-aS38ykbDW2GPA1jvDMmy7nwnyDn5ixITQxiAT2SYzu4="},"flags/4x3/ss-aebe3fc1b10d93add9906690e262b1baf5338529a832ff954e329c897e014e9c.svg":{"logical_path":"flags/4x3/ss.svg","mtime":"2017-10-08T14:45:34+02:00","size":406,"digest":"aebe3fc1b10d93add9906690e262b1baf5338529a832ff954e329c897e014e9c","integrity":"sha256-rr4/wbENk63ZkGaQ4mKxuvUzhSmoMv+VTjKciX4BTpw="},"flags/1x1/ss-1d0ebcb31f2c0fe874bd046253de4eec410239c2e0f41eb1cea1f312b51bc8a8.svg":{"logical_path":"flags/1x1/ss.svg","mtime":"2017-10-08T14:45:34+02:00","size":424,"digest":"1d0ebcb31f2c0fe874bd046253de4eec410239c2e0f41eb1cea1f312b51bc8a8","integrity":"sha256-HQ68sx8sD+h0vQRiU95O7EECOcLg9B6xzqHzErUbyKg="},"flags/4x3/st-b24fa19cb51844a3187239e3cbacf828f02e7b8ddf4b01e9ec3366e75966c5d6.svg":{"logical_path":"flags/4x3/st.svg","mtime":"2017-10-08T14:45:34+02:00","size":822,"digest":"b24fa19cb51844a3187239e3cbacf828f02e7b8ddf4b01e9ec3366e75966c5d6","integrity":"sha256-sk+hnLUYRKMYcjnjy6z4KPAue43fSwHp7DNm51lmxdY="},"flags/1x1/st-d4d96bc9009e10cec6a00ce0d6fae3746ddefce867f63503595110b2fd539d17.svg":{"logical_path":"flags/1x1/st.svg","mtime":"2017-10-08T14:45:34+02:00","size":790,"digest":"d4d96bc9009e10cec6a00ce0d6fae3746ddefce867f63503595110b2fd539d17","integrity":"sha256-1NlryQCeEM7GoAzg1vrjdG3e/Ohn9jUDWVEQsv1TnRc="},"flags/4x3/sv-cd0c1acd571abd1756fc4e7eea2369c0466265b1d170a7a3618a66800ddbb4c2.svg":{"logical_path":"flags/4x3/sv.svg","mtime":"2017-10-08T14:45:34+02:00","size":129725,"digest":"cd0c1acd571abd1756fc4e7eea2369c0466265b1d170a7a3618a66800ddbb4c2","integrity":"sha256-zQwazVcavRdW/E5+6iNpwEZiZbHRcKejYYpmgA3btMI="},"flags/1x1/sv-e86857616aaa7fc022b68dafd4a58d4be7ddfcc6d5b2c3d5dad67b457d1e75c9.svg":{"logical_path":"flags/1x1/sv.svg","mtime":"2017-10-08T14:45:34+02:00","size":129880,"digest":"e86857616aaa7fc022b68dafd4a58d4be7ddfcc6d5b2c3d5dad67b457d1e75c9","integrity":"sha256-6GhXYWqqf8Aito2v1KWNS+fd/MbVssPV2tZ7RX0edck="},"flags/4x3/sx-7ed9e6d8c02b265181248986ccd927f6540a7d55b4ec82b60baef06face66ee1.svg":{"logical_path":"flags/4x3/sx.svg","mtime":"2017-10-08T14:45:34+02:00","size":19945,"digest":"7ed9e6d8c02b265181248986ccd927f6540a7d55b4ec82b60baef06face66ee1","integrity":"sha256-ftnm2MArJlGBJImGzNkn9lQKfVW07IK2C67wb6zmbuE="},"flags/1x1/sx-09ab7415791d37231c9fb79b51fc52583407d7721e6f401cc98fc1ab12d2b62d.svg":{"logical_path":"flags/1x1/sx.svg","mtime":"2017-10-08T14:45:34+02:00","size":19770,"digest":"09ab7415791d37231c9fb79b51fc52583407d7721e6f401cc98fc1ab12d2b62d","integrity":"sha256-Cat0FXkdNyMcn7ebUfxSWDQH13Ieb0AcyY/BqxLSti0="},"flags/4x3/sy-49bb1803affb9e4ee070fb6e333a445f6df15ac11db6abe0a62f1aa922fe3c16.svg":{"logical_path":"flags/4x3/sy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1029,"digest":"49bb1803affb9e4ee070fb6e333a445f6df15ac11db6abe0a62f1aa922fe3c16","integrity":"sha256-SbsYA6/7nk7gcPtuMzpEX23xWsEdtqvgpi8aqSL+PBY="},"flags/1x1/sy-b52b5ed6037c8e0e0a3ecd13006b79027d5fac2059fdd54109b591e5c5ada752.svg":{"logical_path":"flags/1x1/sy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1193,"digest":"b52b5ed6037c8e0e0a3ecd13006b79027d5fac2059fdd54109b591e5c5ada752","integrity":"sha256-tSte1gN8jg4KPs0TAGt5An1frCBZ/dVBCbWR5cWtp1I="},"flags/4x3/sz-a545e703e03ec7f9e108fa348d9e222aba1d7514bad2786f9ca8c6c3063a0e68.svg":{"logical_path":"flags/4x3/sz.svg","mtime":"2017-10-08T14:45:34+02:00","size":9230,"digest":"a545e703e03ec7f9e108fa348d9e222aba1d7514bad2786f9ca8c6c3063a0e68","integrity":"sha256-pUXnA+A+x/nhCPo0jZ4iKroddRS60nhvnKjGwwY6Dmg="},"flags/1x1/sz-784ee11c6629bc411d3e274eea68a3739ddfaa4c3bd18e46e62262518ae0b93e.svg":{"logical_path":"flags/1x1/sz.svg","mtime":"2017-10-08T14:45:34+02:00","size":9135,"digest":"784ee11c6629bc411d3e274eea68a3739ddfaa4c3bd18e46e62262518ae0b93e","integrity":"sha256-eE7hHGYpvEEdPidO6mijc53fqkw70Y5G5iJiUYrguT4="},"flags/4x3/tc-a20d2d87632b3c19e16a599dd45f3918a5f2db3025867c5f1b279050af68f637.svg":{"logical_path":"flags/4x3/tc.svg","mtime":"2017-10-08T14:45:34+02:00","size":19596,"digest":"a20d2d87632b3c19e16a599dd45f3918a5f2db3025867c5f1b279050af68f637","integrity":"sha256-og0th2MrPBnhalmd1F85GKXy2zAlhnxfGyeQUK9o9jc="},"flags/1x1/tc-4c7c0e4227d06fb697b8c5ec5f95382b1549342013ea80211f2942f81d472d5a.svg":{"logical_path":"flags/1x1/tc.svg","mtime":"2017-10-08T14:45:34+02:00","size":19881,"digest":"4c7c0e4227d06fb697b8c5ec5f95382b1549342013ea80211f2942f81d472d5a","integrity":"sha256-THwOQifQb7aXuMXsX5U4KxVJNCAT6oAhHylC+B1HLVo="},"flags/4x3/td-1b92327abb7d3ba9b54361f6a38018979e57d5083990af57adac25102146b939.svg":{"logical_path":"flags/4x3/td.svg","mtime":"2017-10-08T14:45:34+02:00","size":342,"digest":"1b92327abb7d3ba9b54361f6a38018979e57d5083990af57adac25102146b939","integrity":"sha256-G5Iyert9O6m1Q2H2o4AYl55X1Qg5kK9XrawlECFGuTk="},"flags/1x1/td-977813c5dfc3b6b640d1390c04c469cf92e84827ca06ed7f4984a58782a059c5.svg":{"logical_path":"flags/1x1/td.svg","mtime":"2017-10-08T14:45:34+02:00","size":294,"digest":"977813c5dfc3b6b640d1390c04c469cf92e84827ca06ed7f4984a58782a059c5","integrity":"sha256-l3gTxd/DtrZA0TkMBMRpz5LoSCfKBu1/SYSlh4KgWcU="},"flags/4x3/tf-f45e133cfa8a01239d65e1693492ca1de1949f3660de77d802b41c9a9fc662e8.svg":{"logical_path":"flags/4x3/tf.svg","mtime":"2017-10-08T14:45:34+02:00","size":1130,"digest":"f45e133cfa8a01239d65e1693492ca1de1949f3660de77d802b41c9a9fc662e8","integrity":"sha256-9F4TPPqKASOdZeFpNJLKHeGUnzZg3nfYArQcmp/GYug="},"flags/1x1/tf-53581d6af7751cf4c126459a2226fd19cd10040d25e33d1653ece9e57a1a0e2b.svg":{"logical_path":"flags/1x1/tf.svg","mtime":"2017-10-08T14:45:34+02:00","size":1303,"digest":"53581d6af7751cf4c126459a2226fd19cd10040d25e33d1653ece9e57a1a0e2b","integrity":"sha256-U1gdavd1HPTBJkWaIib9Gc0QBA0l4z0WU+zp5XoaDis="},"flags/4x3/tg-de9fe13020d702ce964ff7d712c6b6a3a57c3933f56fbd0c783fe0309f0dbae3.svg":{"logical_path":"flags/4x3/tg.svg","mtime":"2017-10-08T14:45:34+02:00","size":831,"digest":"de9fe13020d702ce964ff7d712c6b6a3a57c3933f56fbd0c783fe0309f0dbae3","integrity":"sha256-3p/hMCDXAs6WT/fXEsa2o6V8OTP1b70MeD/gMJ8NuuM="},"flags/1x1/tg-92f575529494b0ba885e47302167a14343c1fd78fef5008ec3aacde7f840fd23.svg":{"logical_path":"flags/1x1/tg.svg","mtime":"2017-10-08T14:45:34+02:00","size":839,"digest":"92f575529494b0ba885e47302167a14343c1fd78fef5008ec3aacde7f840fd23","integrity":"sha256-kvV1UpSUsLqIXkcwIWehQ0PB/Xj+9QCOw6rN5/hA/SM="},"flags/4x3/th-6211c6caabbc4fdd4ff054cb689406bc9cc7816c01d482a6222e873b0e8fc9b0.svg":{"logical_path":"flags/4x3/th.svg","mtime":"2017-10-08T14:45:34+02:00","size":312,"digest":"6211c6caabbc4fdd4ff054cb689406bc9cc7816c01d482a6222e873b0e8fc9b0","integrity":"sha256-YhHGyqu8T91P8FTLaJQGvJzHgWwB1IKmIi6HOw6PybA="},"flags/1x1/th-b8a0cf7c820f9010ce12333bfa7f8713358dee291bc955fa7e5333fcf5fc8a07.svg":{"logical_path":"flags/1x1/th.svg","mtime":"2017-10-08T14:45:34+02:00","size":311,"digest":"b8a0cf7c820f9010ce12333bfa7f8713358dee291bc955fa7e5333fcf5fc8a07","integrity":"sha256-uKDPfIIPkBDOEjM7+n+HEzWN7ikbyVX6flMz/PX8igc="},"flags/4x3/tj-4bf387aa434be996fc00be6dbb457282e311ff6c7538a484f5cb4d99e45b0747.svg":{"logical_path":"flags/4x3/tj.svg","mtime":"2017-10-08T14:45:34+02:00","size":2023,"digest":"4bf387aa434be996fc00be6dbb457282e311ff6c7538a484f5cb4d99e45b0747","integrity":"sha256-S/OHqkNL6Zb8AL5tu0VyguMR/2x1OKSE9ctNmeRbB0c="},"flags/1x1/tj-b371ab0647e7dfba73251169fe1e3180058d6556aa7293b7b573eaf43add617d.svg":{"logical_path":"flags/1x1/tj.svg","mtime":"2017-10-08T14:45:34+02:00","size":1908,"digest":"b371ab0647e7dfba73251169fe1e3180058d6556aa7293b7b573eaf43add617d","integrity":"sha256-s3GrBkfn37pzJRFp/h4xgAWNZVaqcpO3tXPq9DrdYX0="},"flags/4x3/tk-cef6e368398b0cbaa4ee0b943d02155c51f9e8ab5ba27b9562ccd629f9a72183.svg":{"logical_path":"flags/4x3/tk.svg","mtime":"2017-10-08T14:45:34+02:00","size":841,"digest":"cef6e368398b0cbaa4ee0b943d02155c51f9e8ab5ba27b9562ccd629f9a72183","integrity":"sha256-zvbjaDmLDLqk7guUPQIVXFH56KtbonuVYszWKfmnIYM="},"flags/1x1/tk-1544aef42090102ba2e154b48f8c059dfddd5789fc5f12aa859939c41673a661.svg":{"logical_path":"flags/1x1/tk.svg","mtime":"2017-10-08T14:45:34+02:00","size":840,"digest":"1544aef42090102ba2e154b48f8c059dfddd5789fc5f12aa859939c41673a661","integrity":"sha256-FUSu9CCQECui4VS0j4wFnf3dV4n8XxKqhZk5xBZzpmE="},"flags/4x3/tl-cd74f59871cf5453b4e9454a4820e683c06dc8c9c84dae4c47af9264bed7ab22.svg":{"logical_path":"flags/4x3/tl.svg","mtime":"2017-10-08T14:45:34+02:00","size":658,"digest":"cd74f59871cf5453b4e9454a4820e683c06dc8c9c84dae4c47af9264bed7ab22","integrity":"sha256-zXT1mHHPVFO06UVKSCDmg8BtyMnITa5MR6+SZL7XqyI="},"flags/1x1/tl-a7cd9977244579380914f288bf358ec8b1b0abec6b8dc99e65cc35afe41bc405.svg":{"logical_path":"flags/1x1/tl.svg","mtime":"2017-10-08T14:45:34+02:00","size":675,"digest":"a7cd9977244579380914f288bf358ec8b1b0abec6b8dc99e65cc35afe41bc405","integrity":"sha256-p82ZdyRFeTgJFPKIvzWOyLGwq+xrjcmeZcw1r+QbxAU="},"flags/4x3/tm-3db83810be6239a1c7e594a0b11a4847a7d300cc54e12e4cf4c8a9558520dd67.svg":{"logical_path":"flags/4x3/tm.svg","mtime":"2017-10-08T14:45:34+02:00","size":45153,"digest":"3db83810be6239a1c7e594a0b11a4847a7d300cc54e12e4cf4c8a9558520dd67","integrity":"sha256-Pbg4EL5iOaHH5ZSgsRpIR6fTAMxU4S5M9MipVYUg3Wc="},"flags/1x1/tm-ade1696d2299d73cc6fa06304144055f9a02c1800846516c4e21baba2a05d4cf.svg":{"logical_path":"flags/1x1/tm.svg","mtime":"2017-10-08T14:45:34+02:00","size":45051,"digest":"ade1696d2299d73cc6fa06304144055f9a02c1800846516c4e21baba2a05d4cf","integrity":"sha256-reFpbSKZ1zzG+gYwQUQFX5oCwYAIRlFsTiG6uioF1M8="},"flags/4x3/tn-17e7bc4e9dad2da8f12c95c56de46b21890b9d1c725ba400fa7d8df17d59fd4d.svg":{"logical_path":"flags/4x3/tn.svg","mtime":"2017-10-08T14:45:34+02:00","size":984,"digest":"17e7bc4e9dad2da8f12c95c56de46b21890b9d1c725ba400fa7d8df17d59fd4d","integrity":"sha256-F+e8Tp2tLajxLJXFbeRrIYkLnRxyW6QA+n2N8X1Z/U0="},"flags/1x1/tn-55604ef719cd538ba0e2541667d4c52b08f18efe91bb52ad0954802d38ea12f7.svg":{"logical_path":"flags/1x1/tn.svg","mtime":"2017-10-08T14:45:34+02:00","size":957,"digest":"55604ef719cd538ba0e2541667d4c52b08f18efe91bb52ad0954802d38ea12f7","integrity":"sha256-VWBO9xnNU4ug4lQWZ9TFKwjxjv6Ru1KtCVSALTjqEvc="},"flags/4x3/to-db07012009b9d6ac0c8eca209a68c310d9371771cca8c6c4c2022b3db1ba39d9.svg":{"logical_path":"flags/4x3/to.svg","mtime":"2017-10-08T14:45:34+02:00","size":385,"digest":"db07012009b9d6ac0c8eca209a68c310d9371771cca8c6c4c2022b3db1ba39d9","integrity":"sha256-2wcBIAm51qwMjsogmmjDENk3F3HMqMbEwgIrPbG6Odk="},"flags/1x1/to-1ed20c5d05424776b5d3cc17487ed8311998cb69db89109a380d59722d4bc2bc.svg":{"logical_path":"flags/1x1/to.svg","mtime":"2017-10-08T14:45:34+02:00","size":387,"digest":"1ed20c5d05424776b5d3cc17487ed8311998cb69db89109a380d59722d4bc2bc","integrity":"sha256-HtIMXQVCR3a108wXSH7YMRmYy2nbiRCaOA1Zci1Lwrw="},"flags/4x3/tr-b8b3b6850c4c0ffa840db30c814dce6cb86e00e78138bafe8c2c58d263fb4503.svg":{"logical_path":"flags/4x3/tr.svg","mtime":"2017-10-08T14:45:34+02:00","size":688,"digest":"b8b3b6850c4c0ffa840db30c814dce6cb86e00e78138bafe8c2c58d263fb4503","integrity":"sha256-uLO2hQxMD/qEDbMMgU3ObLhuAOeBOLr+jCxY0mP7RQM="},"flags/1x1/tr-be0c612d78c2662c4e9c0dc836b63c8a7a5cfff48afc533f81c2ba2423542f5e.svg":{"logical_path":"flags/1x1/tr.svg","mtime":"2017-10-08T14:45:34+02:00","size":690,"digest":"be0c612d78c2662c4e9c0dc836b63c8a7a5cfff48afc533f81c2ba2423542f5e","integrity":"sha256-vgxhLXjCZixOnA3INrY8inpc//SK/FM/gcK6JCNUL14="},"flags/4x3/tt-05d9799b6519267990dccbc997c620c6478e00a96a79841494707cc3d036a381.svg":{"logical_path":"flags/4x3/tt.svg","mtime":"2017-10-08T14:45:34+02:00","size":365,"digest":"05d9799b6519267990dccbc997c620c6478e00a96a79841494707cc3d036a381","integrity":"sha256-Bdl5m2UZJnmQ3MvJl8YgxkeOAKlqeYQUlHB8w9A2o4E="},"flags/1x1/tt-4ab2fff1efee93f41060975098c5c11e043dc0853456c8c0c70cacd4ba92e8ed.svg":{"logical_path":"flags/1x1/tt.svg","mtime":"2017-10-08T14:45:34+02:00","size":393,"digest":"4ab2fff1efee93f41060975098c5c11e043dc0853456c8c0c70cacd4ba92e8ed","integrity":"sha256-SrL/8e/uk/QQYJdQmMXBHgQ9wIU0VsjAxwys1LqS6O0="},"flags/4x3/tv-14be4bb5a1fe44a8d3d58bde3dca6c63ed2974554c2008b4a2441a096c9f1fea.svg":{"logical_path":"flags/4x3/tv.svg","mtime":"2017-10-08T14:45:34+02:00","size":2957,"digest":"14be4bb5a1fe44a8d3d58bde3dca6c63ed2974554c2008b4a2441a096c9f1fea","integrity":"sha256-FL5LtaH+RKjT1YvePcpsY+0pdFVMIAi0okQaCWyfH+o="},"flags/1x1/tv-71e98b9502d12d655a169e8c89de6d5b2fcc957d67d0b7e93dd2be8ff9e6f2a8.svg":{"logical_path":"flags/1x1/tv.svg","mtime":"2017-10-08T14:45:34+02:00","size":2956,"digest":"71e98b9502d12d655a169e8c89de6d5b2fcc957d67d0b7e93dd2be8ff9e6f2a8","integrity":"sha256-cemLlQLRLWVaFp6Mid5tWy/MlX1n0LfpPdK+j/nm8qg="},"flags/4x3/tw-3b699e4e60f9765601c0f84bbf3f16f953f5a454a0cf62487a0eef358f456e66.svg":{"logical_path":"flags/4x3/tw.svg","mtime":"2017-10-08T14:45:34+02:00","size":1252,"digest":"3b699e4e60f9765601c0f84bbf3f16f953f5a454a0cf62487a0eef358f456e66","integrity":"sha256-O2meTmD5dlYBwPhLvz8W+VP1pFSgz2JIeg7vNY9FbmY="},"flags/1x1/tw-62cd36c5fc2aff70bbd11312601821ca09729e9e246e32d895e0f4a2017ac0b6.svg":{"logical_path":"flags/1x1/tw.svg","mtime":"2017-10-08T14:45:34+02:00","size":1228,"digest":"62cd36c5fc2aff70bbd11312601821ca09729e9e246e32d895e0f4a2017ac0b6","integrity":"sha256-Ys02xfwq/3C70RMSYBghyglynp4kbjLYleD0ogF6wLY="},"flags/4x3/tz-f219bcd0e3536ea3653178e0281620ebfe4c5b3b461c2c79fdf2b2a852de372e.svg":{"logical_path":"flags/4x3/tz.svg","mtime":"2017-10-08T14:45:34+02:00","size":582,"digest":"f219bcd0e3536ea3653178e0281620ebfe4c5b3b461c2c79fdf2b2a852de372e","integrity":"sha256-8hm80ONTbqNlMXjgKBYg6/5MWztGHCx5/fKyqFLeNy4="},"flags/1x1/tz-2829d5fc4fcdf2e6a149f63ea6b5a5f1af7b6b08fec523ec217ab5a6d9fb7e77.svg":{"logical_path":"flags/1x1/tz.svg","mtime":"2017-10-08T14:45:34+02:00","size":692,"digest":"2829d5fc4fcdf2e6a149f63ea6b5a5f1af7b6b08fec523ec217ab5a6d9fb7e77","integrity":"sha256-KCnV/E/N8uahSfY+prWl8a97awj+xSPsIXq1ptn7fnc="},"flags/4x3/ua-07199c03990a6b4f285e421d928ab4dba2dfdfdb3e40dd9bfa207c86bc0f3c9d.svg":{"logical_path":"flags/4x3/ua.svg","mtime":"2017-10-08T14:45:34+02:00","size":253,"digest":"07199c03990a6b4f285e421d928ab4dba2dfdfdb3e40dd9bfa207c86bc0f3c9d","integrity":"sha256-BxmcA5kKa08oXkIdkoq026Lf39s+QN2b+iB8hrwPPJ0="},"flags/1x1/ua-7c939efc452c13b0f8f489f3dfd37d3eba97c0f577c97f0b6673968af62a3207.svg":{"logical_path":"flags/1x1/ua.svg","mtime":"2017-10-08T14:45:34+02:00","size":261,"digest":"7c939efc452c13b0f8f489f3dfd37d3eba97c0f577c97f0b6673968af62a3207","integrity":"sha256-fJOe/EUsE7D49Inz39N9PrqXwPV3yX8LZnOWivYqMgc="},"flags/4x3/ug-48c6cbeae1a865915dd5a06f56bdd576e9ed9ce5085b627ef31f3757c0937a5d.svg":{"logical_path":"flags/4x3/ug.svg","mtime":"2017-10-08T14:45:34+02:00","size":5381,"digest":"48c6cbeae1a865915dd5a06f56bdd576e9ed9ce5085b627ef31f3757c0937a5d","integrity":"sha256-SMbL6uGoZZFd1aBvVr3VduntnOUIW2J+8x83V8CTel0="},"flags/1x1/ug-da6257aa7e40121a6e8e574bf201701910bbd838cbc8d76030397c0f34ae906b.svg":{"logical_path":"flags/1x1/ug.svg","mtime":"2017-10-08T14:45:34+02:00","size":5316,"digest":"da6257aa7e40121a6e8e574bf201701910bbd838cbc8d76030397c0f34ae906b","integrity":"sha256-2mJXqn5AEhpujldL8gFwGRC72DjLyNdgMDl8DzSukGs="},"flags/4x3/um-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg":{"logical_path":"flags/4x3/um.svg","mtime":"2017-10-08T14:45:34+02:00","size":6989,"digest":"6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7","integrity":"sha256-bQU/TW4UEnRXSfyNmBgz1tf48ZtyBC0aZeM1bKKafvc="},"flags/1x1/um-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg":{"logical_path":"flags/1x1/um.svg","mtime":"2017-10-08T14:45:34+02:00","size":6201,"digest":"5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435","integrity":"sha256-W89dQaptX9v8kgoBT8d9bNvfN7205n2/5o7RYbrkpDU="},"flags/4x3/us-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg":{"logical_path":"flags/4x3/us.svg","mtime":"2017-10-08T14:45:34+02:00","size":6989,"digest":"6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7","integrity":"sha256-bQU/TW4UEnRXSfyNmBgz1tf48ZtyBC0aZeM1bKKafvc="},"flags/1x1/us-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg":{"logical_path":"flags/1x1/us.svg","mtime":"2017-10-08T14:45:34+02:00","size":6201,"digest":"5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435","integrity":"sha256-W89dQaptX9v8kgoBT8d9bNvfN7205n2/5o7RYbrkpDU="},"flags/4x3/uy-3fc569672f687b4f08581179bea609b616d4b5c7d9524df918134fbcdfce6f9f.svg":{"logical_path":"flags/4x3/uy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1753,"digest":"3fc569672f687b4f08581179bea609b616d4b5c7d9524df918134fbcdfce6f9f","integrity":"sha256-P8VpZy9oe08IWBF5vqYJthbUtcfZUk35GBNPvN/Ob58="},"flags/1x1/uy-90def9dd4890c96d1b6355d0bbcebe2a6f25e2bb3bbdc29c4fbba8a5fc601254.svg":{"logical_path":"flags/1x1/uy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1758,"digest":"90def9dd4890c96d1b6355d0bbcebe2a6f25e2bb3bbdc29c4fbba8a5fc601254","integrity":"sha256-kN753UiQyW0bY1XQu86+Km8l4rs7vcKcT7uopfxgElQ="},"flags/4x3/uz-e3f628aff038df64725d75a863bc636ae9da4a16f58850ad86470cc012e3a40f.svg":{"logical_path":"flags/4x3/uz.svg","mtime":"2017-10-08T14:45:34+02:00","size":1465,"digest":"e3f628aff038df64725d75a863bc636ae9da4a16f58850ad86470cc012e3a40f","integrity":"sha256-4/Yor/A432RyXXWoY7xjaunaShb1iFCthkcMwBLjpA8="},"flags/1x1/uz-db8cba32635e9c36565f28fbd6b17e1e5afe26ce0af8560eeda3f9d815ecc749.svg":{"logical_path":"flags/1x1/uz.svg","mtime":"2017-10-08T14:45:34+02:00","size":1487,"digest":"db8cba32635e9c36565f28fbd6b17e1e5afe26ce0af8560eeda3f9d815ecc749","integrity":"sha256-24y6MmNenDZWXyj71rF+Hlr+Js4K+FYO7aP52BXsx0k="},"flags/4x3/va-c8b81b061cbe7a9b0b5f376e10f1a863b4609c742dbb5663ef923b80d43984a2.svg":{"logical_path":"flags/4x3/va.svg","mtime":"2017-10-08T14:45:34+02:00","size":114058,"digest":"c8b81b061cbe7a9b0b5f376e10f1a863b4609c742dbb5663ef923b80d43984a2","integrity":"sha256-yLgbBhy+epsLXzduEPGoY7RgnHQtu1Zj75I7gNQ5hKI="},"flags/1x1/va-d267dbb1213d75780a8d41a34f9eba098a66973c1c2e7d974257f24b4be9df1c.svg":{"logical_path":"flags/1x1/va.svg","mtime":"2017-10-08T14:45:34+02:00","size":113397,"digest":"d267dbb1213d75780a8d41a34f9eba098a66973c1c2e7d974257f24b4be9df1c","integrity":"sha256-0mfbsSE9dXgKjUGjT566CYpmlzwcLn2XQlfyS0vp3xw="},"flags/4x3/vc-a578edb2904169d050107b4c02051531e4164120c4ac0ad19faabd41fccdd821.svg":{"logical_path":"flags/4x3/vc.svg","mtime":"2017-10-08T14:45:34+02:00","size":518,"digest":"a578edb2904169d050107b4c02051531e4164120c4ac0ad19faabd41fccdd821","integrity":"sha256-pXjtspBBadBQEHtMAgUVMeQWQSDErArRn6q9QfzN2CE="},"flags/1x1/vc-85bbaa2c82ed6a9e077e73501bbf071956c761a897d1c4e1bbe061ad5ca9c0ed.svg":{"logical_path":"flags/1x1/vc.svg","mtime":"2017-10-08T14:45:34+02:00","size":597,"digest":"85bbaa2c82ed6a9e077e73501bbf071956c761a897d1c4e1bbe061ad5ca9c0ed","integrity":"sha256-hbuqLILtap4HfnNQG78HGVbHYaiX0cThu+BhrVypwO0="},"flags/4x3/ve-77718854ace7f0a8d8a087e331112e4b20f76e9ca7eeb9af41bacccef09bc9b4.svg":{"logical_path":"flags/4x3/ve.svg","mtime":"2017-10-08T14:45:34+02:00","size":1199,"digest":"77718854ace7f0a8d8a087e331112e4b20f76e9ca7eeb9af41bacccef09bc9b4","integrity":"sha256-d3GIVKzn8KjYoIfjMREuSyD3bpyn7rmvQbrMzvCbybQ="},"flags/1x1/ve-27cf5f75e9b842c417f62e3c3c502acafb67db674d5a1eba8709371c186f0fe9.svg":{"logical_path":"flags/1x1/ve.svg","mtime":"2017-10-08T14:45:34+02:00","size":1229,"digest":"27cf5f75e9b842c417f62e3c3c502acafb67db674d5a1eba8709371c186f0fe9","integrity":"sha256-J89fdem4QsQX9i48PFAqyvtn22dNWh66hwk3HBhvD+k="},"flags/4x3/vg-cefdd08a49ab6cf0ce32bf42cb7a72513dfd0a1619bac86ebedee3a86fa35c80.svg":{"logical_path":"flags/4x3/vg.svg","mtime":"2017-10-08T14:45:34+02:00","size":34914,"digest":"cefdd08a49ab6cf0ce32bf42cb7a72513dfd0a1619bac86ebedee3a86fa35c80","integrity":"sha256-zv3QikmrbPDOMr9Cy3pyUT39ChYZushuvt7jqG+jXIA="},"flags/1x1/vg-45357a28f1dc16c13df5cfc44454ff28f082b90a4747898d27575650bc93cb1e.svg":{"logical_path":"flags/1x1/vg.svg","mtime":"2017-10-08T14:45:34+02:00","size":34418,"digest":"45357a28f1dc16c13df5cfc44454ff28f082b90a4747898d27575650bc93cb1e","integrity":"sha256-RTV6KPHcFsE99c/ERFT/KPCCuQpHR4mNJ1dWULyTyx4="},"flags/4x3/vi-a83bcb200832191afa4091bf2c275289aa37f664027dfce6db6b0f7109fe3b6a.svg":{"logical_path":"flags/4x3/vi.svg","mtime":"2017-10-08T14:45:34+02:00","size":12347,"digest":"a83bcb200832191afa4091bf2c275289aa37f664027dfce6db6b0f7109fe3b6a","integrity":"sha256-qDvLIAgyGRr6QJG/LCdSiao39mQCffzm22sPcQn+O2o="},"flags/1x1/vi-cf017aea4123b31f1cf60087c4742b6d57a4213bece5b3f760e16a84a811a74c.svg":{"logical_path":"flags/1x1/vi.svg","mtime":"2017-10-08T14:45:34+02:00","size":12314,"digest":"cf017aea4123b31f1cf60087c4742b6d57a4213bece5b3f760e16a84a811a74c","integrity":"sha256-zwF66kEjsx8c9gCHxHQrbVekITvs5bP3YOFqhKgRp0w="},"flags/4x3/vn-16730ca8238b081b7376fc3829eaac4ddd61a5b423c24c9f07c9a02848c4827f.svg":{"logical_path":"flags/4x3/vn.svg","mtime":"2017-10-08T14:45:34+02:00","size":560,"digest":"16730ca8238b081b7376fc3829eaac4ddd61a5b423c24c9f07c9a02848c4827f","integrity":"sha256-FnMMqCOLCBtzdvw4KeqsTd1hpbQjwkyfB8mgKEjEgn8="},"flags/1x1/vn-fa15ba0b7d997046ffb7f2469f1254f7119503f2e95b35467151a947ff9b45d6.svg":{"logical_path":"flags/1x1/vn.svg","mtime":"2017-10-08T14:45:34+02:00","size":571,"digest":"fa15ba0b7d997046ffb7f2469f1254f7119503f2e95b35467151a947ff9b45d6","integrity":"sha256-+hW6C32ZcEb/t/JGnxJU9xGVA/LpWzVGcVGpR/+bRdY="},"flags/4x3/vu-4e084d69e403d0af11dfc47f622fb2ba88649b17b2038f6ebf533ce3c9907404.svg":{"logical_path":"flags/4x3/vu.svg","mtime":"2017-10-08T14:45:34+02:00","size":5820,"digest":"4e084d69e403d0af11dfc47f622fb2ba88649b17b2038f6ebf533ce3c9907404","integrity":"sha256-TghNaeQD0K8R38R/Yi+yuohkmxeyA49uv1M848mQdAQ="},"flags/1x1/vu-3c93d045c0ec3c08c0e9af785016995cbd7a28ddf08ec9abfce0e39c4e842058.svg":{"logical_path":"flags/1x1/vu.svg","mtime":"2017-10-08T14:45:34+02:00","size":5783,"digest":"3c93d045c0ec3c08c0e9af785016995cbd7a28ddf08ec9abfce0e39c4e842058","integrity":"sha256-PJPQRcDsPAjA6a94UBaZXL16KN3wjsmr/ODjnE6EIFg="},"flags/4x3/wf-039b39c2ab1d92470427e12e2310b2ad9d8a97a36a064b197858a083f5d7fd23.svg":{"logical_path":"flags/4x3/wf.svg","mtime":"2017-10-08T14:45:34+02:00","size":322,"digest":"039b39c2ab1d92470427e12e2310b2ad9d8a97a36a064b197858a083f5d7fd23","integrity":"sha256-A5s5wqsdkkcEJ+EuIxCyrZ2Kl6NqBksZeFigg/XX/SM="},"flags/1x1/wf-94672c2e6f10547f0023b9f0fff3adfda4d60f91340f287767f1ce68e5a57a12.svg":{"logical_path":"flags/1x1/wf.svg","mtime":"2017-10-08T14:45:34+02:00","size":310,"digest":"94672c2e6f10547f0023b9f0fff3adfda4d60f91340f287767f1ce68e5a57a12","integrity":"sha256-lGcsLm8QVH8AI7nw//Ot/aTWD5E0Dyh3Z/HOaOWlehI="},"flags/4x3/ws-f91aa288555a505b3e965c781de8207e2cb6e1d165603c80c54cfb111d277874.svg":{"logical_path":"flags/4x3/ws.svg","mtime":"2017-10-08T14:45:34+02:00","size":901,"digest":"f91aa288555a505b3e965c781de8207e2cb6e1d165603c80c54cfb111d277874","integrity":"sha256-+RqiiFVaUFs+llx4Heggfiy24dFlYDyAxUz7ER0neHQ="},"flags/1x1/ws-e6b2a35c9702941a1fe9d84ab2bf8b28b4931b6fce24efb4ce63d3a8fb8c3b90.svg":{"logical_path":"flags/1x1/ws.svg","mtime":"2017-10-08T14:45:34+02:00","size":879,"digest":"e6b2a35c9702941a1fe9d84ab2bf8b28b4931b6fce24efb4ce63d3a8fb8c3b90","integrity":"sha256-5rKjXJcClBof6dhKsr+LKLSTG2/OJO+0zmPTqPuMO5A="},"flags/4x3/ye-f3c80f7f99e1f12a079fe0d96830005657aff1687da92391c0acb882b014ff8c.svg":{"logical_path":"flags/4x3/ye.svg","mtime":"2017-10-08T14:45:34+02:00","size":287,"digest":"f3c80f7f99e1f12a079fe0d96830005657aff1687da92391c0acb882b014ff8c","integrity":"sha256-88gPf5nh8SoHn+DZaDAAVlev8Wh9qSORwKy4grAU/4w="},"flags/1x1/ye-a9b9b54ec295aed99c5439093242110193626524d336cc3115864e5ec0b787da.svg":{"logical_path":"flags/1x1/ye.svg","mtime":"2017-10-08T14:45:34+02:00","size":298,"digest":"a9b9b54ec295aed99c5439093242110193626524d336cc3115864e5ec0b787da","integrity":"sha256-qbm1TsKVrtmcVDkJMkIRAZNiZSTTNswxFYZOXsC3h9o="},"flags/4x3/yt-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/yt.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/yt-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/yt.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/za-57f1167ce07b3f345798c69ca8f159cb159f5dccb3c101616cc007ef1f2663d6.svg":{"logical_path":"flags/4x3/za.svg","mtime":"2017-10-08T14:45:34+02:00","size":1085,"digest":"57f1167ce07b3f345798c69ca8f159cb159f5dccb3c101616cc007ef1f2663d6","integrity":"sha256-V/EWfOB7PzRXmMacqPFZyxWfXcyzwQFhbMAH7x8mY9Y="},"flags/1x1/za-79fe7bd792f8b520caaa2c3db12ab5138cf24867d344a38167580ab6243322b1.svg":{"logical_path":"flags/1x1/za.svg","mtime":"2017-10-08T14:45:34+02:00","size":1033,"digest":"79fe7bd792f8b520caaa2c3db12ab5138cf24867d344a38167580ab6243322b1","integrity":"sha256-ef5715L4tSDKqiw9sSq1E4zySGfTRKOBZ1gKtiQzIrE="},"flags/4x3/zm-9a1622c4151a7379ecc32434948be48ba5af564e136232d1eb6e2a4dfec3baa9.svg":{"logical_path":"flags/4x3/zm.svg","mtime":"2017-10-08T14:45:34+02:00","size":8223,"digest":"9a1622c4151a7379ecc32434948be48ba5af564e136232d1eb6e2a4dfec3baa9","integrity":"sha256-mhYixBUac3nswyQ0lIvki6WvVk4TYjLR624qTf7Duqk="},"flags/1x1/zm-7bc0c09a0b3fd9f0dd01481080be99465d71218ac0679fbb077086f24835433e.svg":{"logical_path":"flags/1x1/zm.svg","mtime":"2017-10-08T14:45:34+02:00","size":8281,"digest":"7bc0c09a0b3fd9f0dd01481080be99465d71218ac0679fbb077086f24835433e","integrity":"sha256-e8DAmgs/2fDdAUgQgL6ZRl1xIYrAZ5+7B3CG8kg1Qz4="},"flags/4x3/zw-2576570465c39038f092c242d89e300a0943c50c090c922bc3bd9c8af9161478.svg":{"logical_path":"flags/4x3/zw.svg","mtime":"2017-10-08T14:45:34+02:00","size":3083,"digest":"2576570465c39038f092c242d89e300a0943c50c090c922bc3bd9c8af9161478","integrity":"sha256-JXZXBGXDkDjwksJC2J4wCglDxQwJDJIrw72civkWFHg="},"flags/1x1/zw-4ee873fa4e174f8d150c672917c8f506b530edcca86288e4b7942c7c74a63caf.svg":{"logical_path":"flags/1x1/zw.svg","mtime":"2017-10-08T14:45:34+02:00","size":2985,"digest":"4ee873fa4e174f8d150c672917c8f506b530edcca86288e4b7942c7c74a63caf","integrity":"sha256-Tuhz+k4XT40VDGcpF8j1BrUw7cyoYojkt5QsfHSmPK8="},"flags/4x3/eu-ca89dc2597154e6887930fd8bdf47636f82dc13c02d9610a3da2d156f09265d0.svg":{"logical_path":"flags/4x3/eu.svg","mtime":"2017-10-08T14:45:34+02:00","size":1289,"digest":"ca89dc2597154e6887930fd8bdf47636f82dc13c02d9610a3da2d156f09265d0","integrity":"sha256-yoncJZcVTmiHkw/YvfR2NvgtwTwC2WEKPaLRVvCSZdA="},"flags/1x1/eu-73d6f1f646500e1dc04ca798c0d192f9174268e3480a8b1d742004919b7463f9.svg":{"logical_path":"flags/1x1/eu.svg","mtime":"2017-10-08T14:45:34+02:00","size":1290,"digest":"73d6f1f646500e1dc04ca798c0d192f9174268e3480a8b1d742004919b7463f9","integrity":"sha256-c9bx9kZQDh3ATKeYwNGS+RdCaONICosddCAEkZt0Y/k="},"flags/4x3/gb-eng-ec744a15618e0a99abee9e53b70985e4cbf2fc2b7051cf239d6dd19b302e4ae9.svg":{"logical_path":"flags/4x3/gb-eng.svg","mtime":"2017-10-08T14:45:34+02:00","size":253,"digest":"ec744a15618e0a99abee9e53b70985e4cbf2fc2b7051cf239d6dd19b302e4ae9","integrity":"sha256-7HRKFWGOCpmr7p5TtwmF5Mvy/CtwUc8jnW3RmzAuSuk="},"flags/1x1/gb-eng-b1650bba14f5fa14df73f964c3b3dfeca8e1d48c19f1f9b3fded729cc96cf39d.svg":{"logical_path":"flags/1x1/gb-eng.svg","mtime":"2017-10-08T14:45:34+02:00","size":258,"digest":"b1650bba14f5fa14df73f964c3b3dfeca8e1d48c19f1f9b3fded729cc96cf39d","integrity":"sha256-sWULuhT1+hTfc/lkw7Pf7Kjh1IwZ8fmz/e1ynMls850="},"flags/4x3/gb-nir-0a09e794313d063a01d817f3ae931054dc9baddd38cfb9a0e4b3c9fa5852bc41.svg":{"logical_path":"flags/4x3/gb-nir.svg","mtime":"2017-10-08T14:45:34+02:00","size":34786,"digest":"0a09e794313d063a01d817f3ae931054dc9baddd38cfb9a0e4b3c9fa5852bc41","integrity":"sha256-CgnnlDE9BjoB2BfzrpMQVNybrd04z7mg5LPJ+lhSvEE="},"flags/1x1/gb-nir-c54214991841f1e32a4aaee502c6a7bde3ec3b43c0e74886d9bc7112f652035a.svg":{"logical_path":"flags/1x1/gb-nir.svg","mtime":"2017-10-08T14:45:34+02:00","size":35668,"digest":"c54214991841f1e32a4aaee502c6a7bde3ec3b43c0e74886d9bc7112f652035a","integrity":"sha256-xUIUmRhB8eMqSq7lAsanvePsO0PA50iG2bxxEvZSA1o="},"flags/4x3/gb-sct-c78f4e58aa162732c0a401eebe714a632ed03c5171a13bb98eb67365b338a0ab.svg":{"logical_path":"flags/4x3/gb-sct.svg","mtime":"2017-10-08T14:45:34+02:00","size":242,"digest":"c78f4e58aa162732c0a401eebe714a632ed03c5171a13bb98eb67365b338a0ab","integrity":"sha256-x49OWKoWJzLApAHuvnFKYy7QPFFxoTu5jrZzZbM4oKs="},"flags/1x1/gb-sct-4983d57dfd37f55b40b22dddfeefef38d2113818914755ee830c61b97549aaf3.svg":{"logical_path":"flags/1x1/gb-sct.svg","mtime":"2017-10-08T14:45:34+02:00","size":250,"digest":"4983d57dfd37f55b40b22dddfeefef38d2113818914755ee830c61b97549aaf3","integrity":"sha256-SYPVff039VtAsi3d/u/vONIROBiRR1XugwxhuXVJqvM="},"flags/4x3/gb-wls-963f0b8dfe114a50032ae1db25542a12d2032a30d88bbfd4698e30f50e752e31.svg":{"logical_path":"flags/4x3/gb-wls.svg","mtime":"2017-10-08T14:45:34+02:00","size":14488,"digest":"963f0b8dfe114a50032ae1db25542a12d2032a30d88bbfd4698e30f50e752e31","integrity":"sha256-lj8Ljf4RSlADKuHbJVQqEtIDKjDYi7/UaY4w9Q51LjE="},"flags/1x1/gb-wls-7d5a4120e3e0f7618bde0d4270b0c097f18472e6b1a285918d11538fb001cb60.svg":{"logical_path":"flags/1x1/gb-wls.svg","mtime":"2017-10-08T14:45:34+02:00","size":14312,"digest":"7d5a4120e3e0f7618bde0d4270b0c097f18472e6b1a285918d11538fb001cb60","integrity":"sha256-fVpBIOPg92GL3g1CcLDAl/GEcuaxooWRjRFTj7ABy2A="},"flags/4x3/un-c75bef804cdbe6617032bfb0332f009c144b1317cb073e71deb5619fbedefcdb.svg":{"logical_path":"flags/4x3/un.svg","mtime":"2017-10-08T14:45:34+02:00","size":31012,"digest":"c75bef804cdbe6617032bfb0332f009c144b1317cb073e71deb5619fbedefcdb","integrity":"sha256-x1vvgEzb5mFwMr+wMy8AnBRLExfLBz5x3rVhn77e/Ns="},"flags/1x1/un-ccaaa4bfae7e430b8bd72ddfa6fb07f167c1001490fd247a37898f4632803b1e.svg":{"logical_path":"flags/1x1/un.svg","mtime":"2017-10-08T14:45:34+02:00","size":32142,"digest":"ccaaa4bfae7e430b8bd72ddfa6fb07f167c1001490fd247a37898f4632803b1e","integrity":"sha256-zKqkv65+QwuL1y3fpvsH8WfBABSQ/SR6N4mPRjKAOx4="},"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"font-awesome/fontawesome-webfont.eot","mtime":"2017-10-08T14:45:34+02:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"font-awesome/fontawesome-webfont.woff2","mtime":"2017-10-08T14:45:34+02:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"font-awesome/fontawesome-webfont.woff","mtime":"2017-10-08T14:45:34+02:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"font-awesome/fontawesome-webfont.ttf","mtime":"2017-10-08T14:45:34+02:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"font-awesome/fontawesome-webfont.svg","mtime":"2017-10-08T14:45:34+02:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png":{"logical_path":"markers-soft.png","mtime":"2016-05-21T23:41:15+02:00","size":41226,"digest":"e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739","integrity":"sha256-54eE5O1wqv/d1zwxX6tZAjPMTntyOI191HoUeW/Hxzk="},"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png":{"logical_path":"markers-shadow.png","mtime":"2016-05-21T23:41:15+02:00","size":535,"digest":"8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20","integrity":"sha256-hwOiJicQ9ePSnmXSrN+Q1lEuFZ4RnSe4I0cx2KYgiiA="},"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png":{"logical_path":"markers-soft@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":66408,"digest":"c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf","integrity":"sha256-wedyU6i/vjDOwkiF1wRvRDt267ZvTJYfdwg7A/Sly68="},"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png":{"logical_path":"markers-shadow@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":1469,"digest":"b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a","integrity":"sha256-shpTa+JzE/tQT2n1iZ/wsSRbJ2VxdprAjWwyw1Z25Ho="},"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png":{"logical_path":"leaflet/dist/images/layers.png","mtime":"2018-01-18T21:11:10+01:00","size":696,"digest":"1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6","integrity":"sha256-Hbvp0CjikvNvy6j4s6KNXokydU/CIVuaxp5M3s9RB8Y="},"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png":{"logical_path":"leaflet/dist/images/layers-2x.png","mtime":"2018-01-18T21:11:10+01:00","size":1259,"digest":"066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf","integrity":"sha256-Bm2sqFDY/77wB68AsG6sABVyje4nnFHzy2xxbffELt8="},"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png":{"logical_path":"leaflet/dist/images/marker-icon.png","mtime":"2018-01-18T21:11:10+01:00","size":1466,"digest":"574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437","integrity":"sha256-V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy/owHesdxDc="},"regions/CA-QC-776d563b6a4ac4312cae9f0bfe630c20711346e8dbddd41040998eba79f4b588.png":{"logical_path":"regions/CA-QC.png","mtime":"2015-10-22T22:54:30+02:00","size":567,"digest":"776d563b6a4ac4312cae9f0bfe630c20711346e8dbddd41040998eba79f4b588","integrity":"sha256-d21WO2pKxDEsrp8L/mMMIHETRujb3dQQQJmOunn0tYg="},"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js":{"logical_path":"modernizr.js","mtime":"2017-10-08T14:44:59+02:00","size":51365,"digest":"654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97","integrity":"sha256-ZUIi3r6AGLEvGZPO3f8w3BY6fVAI15hpw5nW0WcyH5c="},"agendadescommuns-cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6.png":{"logical_path":"agendadescommuns.png","mtime":"2015-10-22T22:54:30+02:00","size":2760,"digest":"cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6","integrity":"sha256-zUDjQgJL4Fh/jnoOOQLTLPZwCdNJtnwA9ofgSZ/en/Y="},"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png":{"logical_path":"alert.png","mtime":"2014-07-04T14:08:56+02:00","size":47876,"digest":"762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906","integrity":"sha256-dirOlHkygkOkQGE0a2TE1rmX6WPGjfxr3dnk0kEZKQY="},"baby_gnu_adl-232caf355c30740d5d9b30491887cd546b8849b33ca9bdb6cc71f8a47ea61815.png":{"logical_path":"baby_gnu_adl.png","mtime":"2016-09-11T17:42:49+02:00","size":10155,"digest":"232caf355c30740d5d9b30491887cd546b8849b33ca9bdb6cc71f8a47ea61815","integrity":"sha256-IyyvNVwwdA1dmzBJGIfNVGuISbM8qb22zHH4pH6mGBU="},"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg":{"logical_path":"baby_gnu_adl.svg","mtime":"2016-09-11T17:42:49+02:00","size":109635,"digest":"97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e","integrity":"sha256-lyUQBdMiXPHVi4xJfWt5BdvJVgzIrNUBGPzOYNCiZ54="},"communs-cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6.png":{"logical_path":"communs.png","mtime":"2015-10-22T22:54:30+02:00","size":2760,"digest":"cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6","integrity":"sha256-zUDjQgJL4Fh/jnoOOQLTLPZwCdNJtnwA9ofgSZ/en/Y="},"lef-small-160cf5b883add60c9c0f4361bd8425c75f6fb23b0e551a0b941fa0491c70e0c9.png":{"logical_path":"lef-small.png","mtime":"2015-03-29T11:07:15+02:00","size":1089,"digest":"160cf5b883add60c9c0f4361bd8425c75f6fb23b0e551a0b941fa0491c70e0c9","integrity":"sha256-Fgz1uIOt1gycD0NhvYQlx19vsjsOVRoLlB+gSRxw4Mk="},"lef-9fcdd7ddd4d40de29c3809b59688c668b85f5628e219d4cd8a8810b72a64533b.png":{"logical_path":"lef.png","mtime":"2017-01-07T19:07:36+01:00","size":8332,"digest":"9fcdd7ddd4d40de29c3809b59688c668b85f5628e219d4cd8a8810b72a64533b","integrity":"sha256-n83X3dTUDeKcOAm1lojGaLhfVijiGdTNiogQtypkUzs="},"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png":{"logical_path":"priorite-logiciel-libre-je-soutiens-april_2_m.png","mtime":"2015-10-22T22:54:30+02:00","size":16952,"digest":"6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc","integrity":"sha256-ZELkVOlu1FzB68QGc6bFC9KGucKOpqi1hXLpT31kWfw="},"team-cb04c7a311f7160c4eb6a281eae68be84f26991dde5d415bb4e205e6726ae275.png":{"logical_path":"team.png","mtime":"2014-07-04T14:08:56+02:00","size":3586,"digest":"cb04c7a311f7160c4eb6a281eae68be84f26991dde5d415bb4e205e6726ae275","integrity":"sha256-ywTHoxH3FgxOtqKB6uaL6E8mmR3eXUFbtOIF5nJq4nU="},"application-7a3f00de5ab63c63aeb8d9d4911869e3ee0ac0e05c869adbfdb78ba2a79dd517.js":{"logical_path":"application.js","mtime":"2017-10-08T00:43:01+02:00","size":2822533,"digest":"7a3f00de5ab63c63aeb8d9d4911869e3ee0ac0e05c869adbfdb78ba2a79dd517","integrity":"sha256-ej8A3lq2PGOuuNnUkRhp4+4KwOBchprb/beLoqed1Rc="},"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png":{"logical_path":"markers-matte.png","mtime":"2016-05-21T23:41:15+02:00","size":14323,"digest":"497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9","integrity":"sha256-SXgmVFqQ4JokBQTRRTDrpFgjsZ/UQXXgnifEfNgi3bk="},"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png":{"logical_path":"markers-matte@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":31113,"digest":"948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823","integrity":"sha256-lI/IxEJvBPYJZO0gOUJH9FsLYOV10COYubaBDnopqCM="},"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png":{"logical_path":"markers-plain.png","mtime":"2016-05-21T23:41:15+02:00","size":7946,"digest":"cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff","integrity":"sha256-zyM0I6pE51rAAx53uLpXHNMzEBBRfhGX5j+3sGhWwf8="},"leaflet/dist/images/marker-icon-2x-2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d.png":{"logical_path":"leaflet/dist/images/marker-icon-2x.png","mtime":"2017-10-08T14:45:01+02:00","size":2586,"digest":"2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d","integrity":"sha256-LXei5MLwi7rEGAgyTvlGuaL+YbYVBIDQEbcrN5w7I40="},"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png":{"logical_path":"leaflet/dist/images/marker-shadow.png","mtime":"2018-01-18T21:11:10+01:00","size":618,"digest":"264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da","integrity":"sha256-Jk9cZAM58ELdcpBiz8BMF/jqDymIK1OOOEjtjxDttNo="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2017-10-08T14:45:44+02:00","size":86,"digest":"ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410","integrity":"sha256-rmWnriLEwjEVlI/etcBckTfb0Tyi1CazxMPEGDRR5BA="},"tinymce/langs/ar-e47a394dbc461d20aa547fa0c2027a9dad45fe55e18adb0da309045be6ed4109.js":{"logical_path":"tinymce/langs/ar.js","mtime":"2017-10-08T14:45:46+02:00","size":17776,"digest":"e47a394dbc461d20aa547fa0c2027a9dad45fe55e18adb0da309045be6ed4109","integrity":"sha256-5Ho5TbxGHSCqVH+gwgJ6na1F/lXhitsNowkEW+btQQk="},"tinymce/langs/ar_SA-24b62c76e99e114ae44480a67edbacf74f9fed0ff7afbeacce4966f1bc80333b.js":{"logical_path":"tinymce/langs/ar_SA.js","mtime":"2018-01-05T22:13:22+01:00","size":10003,"digest":"24b62c76e99e114ae44480a67edbacf74f9fed0ff7afbeacce4966f1bc80333b","integrity":"sha256-JLYsdumeEUrkRICmftus90+f7Q/3r76szklm8byAMzs="},"tinymce/langs/az-d40cecd6eb423f910f528ae98dcdaba4c2449802621759437174cf8c8c0d5b25.js":{"logical_path":"tinymce/langs/az.js","mtime":"2018-01-05T22:13:22+01:00","size":9680,"digest":"d40cecd6eb423f910f528ae98dcdaba4c2449802621759437174cf8c8c0d5b25","integrity":"sha256-1Azs1utCP5EPUorpjc2rpMJEmAJiF1lDcXTPjIwNWyU="},"tinymce/langs/be-42e2884c0f2394afa1a17e31e702660eeea0d84618bbd18155cb0313c6eb5f69.js":{"logical_path":"tinymce/langs/be.js","mtime":"2017-10-08T14:45:46+02:00","size":21064,"digest":"42e2884c0f2394afa1a17e31e702660eeea0d84618bbd18155cb0313c6eb5f69","integrity":"sha256-QuKITA8jlK+hoX4x5wJmDu6g2EYYu9GBVcsDE8brX2k="},"tinymce/langs/bg_BG-2fac9d785519d2791d42881fcc08c6a82e841575785690259d7f64e1b88d7db3.js":{"logical_path":"tinymce/langs/bg_BG.js","mtime":"2017-10-08T14:45:46+02:00","size":23945,"digest":"2fac9d785519d2791d42881fcc08c6a82e841575785690259d7f64e1b88d7db3","integrity":"sha256-L6ydeFUZ0nkdQogfzAjGqC6EFXV4VpAlnX9k4biNfbM="},"tinymce/langs/bn_BD-ef48a9094445dfa624af0c35902f60b7949b30585b5e9bc760a225fe2c07cbd3.js":{"logical_path":"tinymce/langs/bn_BD.js","mtime":"2018-01-05T22:13:22+01:00","size":6846,"digest":"ef48a9094445dfa624af0c35902f60b7949b30585b5e9bc760a225fe2c07cbd3","integrity":"sha256-70ipCURF36Ykrww1kC9gt5SbMFhbXpvHYKIl/iwHy9M="},"tinymce/langs/bs-eb66c6d6910a30b950d7a0e784027ed288e6e5a2c6db7741da3359f2067e2e0e.js":{"logical_path":"tinymce/langs/bs.js","mtime":"2018-01-05T22:13:22+01:00","size":6970,"digest":"eb66c6d6910a30b950d7a0e784027ed288e6e5a2c6db7741da3359f2067e2e0e","integrity":"sha256-62bG1pEKMLlQ16DnhAJ+0ojm5aLG23dB2jNZ8gZ+Lg4="},"tinymce/langs/ca-77ab49d6420318ed7f5fd51b6856bc396c393095bd78ea91dad83e38e5859637.js":{"logical_path":"tinymce/langs/ca.js","mtime":"2017-10-08T14:45:46+02:00","size":7787,"digest":"77ab49d6420318ed7f5fd51b6856bc396c393095bd78ea91dad83e38e5859637","integrity":"sha256-d6tJ1kIDGO1/X9UbaFa8OWw5MJW9eOqR2tg+OOWFljc="},"tinymce/langs/cs-3d7ecd619895e3e4c7e1db06f6526682ef88f22f6e8b50d7b45ed0ae7c206714.js":{"logical_path":"tinymce/langs/cs.js","mtime":"2017-10-08T14:45:46+02:00","size":8751,"digest":"3d7ecd619895e3e4c7e1db06f6526682ef88f22f6e8b50d7b45ed0ae7c206714","integrity":"sha256-PX7NYZiV4+TH4dsG9lJmgu+I8i9ui1DXtF7QrnwgZxQ="},"tinymce/langs/cs_CZ-4b0778d233e200dea350f8361129da2844e23d1c0f2d524aeffa6d34e581368d.js":{"logical_path":"tinymce/langs/cs_CZ.js","mtime":"2018-01-05T22:13:22+01:00","size":8399,"digest":"4b0778d233e200dea350f8361129da2844e23d1c0f2d524aeffa6d34e581368d","integrity":"sha256-Swd40jPiAN6jUPg2ESnaKETiPRwPLVJK7/ptNOWBNo0="},"tinymce/langs/cy-a847ff54657ccf76eec362cc14fbc63adb4c67f9b1de023b29d817aba4fec062.js":{"logical_path":"tinymce/langs/cy.js","mtime":"2017-10-08T14:45:46+02:00","size":6142,"digest":"a847ff54657ccf76eec362cc14fbc63adb4c67f9b1de023b29d817aba4fec062","integrity":"sha256-qEf/VGV8z3buw2LMFPvGOttMZ/mx3gI7KdgXq6T+wGI="},"tinymce/langs/da-a87f3ae1c442c3bb26b81569687e98072d038269360361ec9728f00d6b17c282.js":{"logical_path":"tinymce/langs/da.js","mtime":"2017-10-08T14:45:46+02:00","size":7513,"digest":"a87f3ae1c442c3bb26b81569687e98072d038269360361ec9728f00d6b17c282","integrity":"sha256-qH864cRCw7smuBVpaH6YBy0Dgmk2A2HslyjwDWsXwoI="},"tinymce/langs/de-a10c8f6f1e53da776e7026dffd54ea8ba527492b767e5b54ae5c3974f6953311.js":{"logical_path":"tinymce/langs/de.js","mtime":"2017-10-08T14:45:46+02:00","size":8280,"digest":"a10c8f6f1e53da776e7026dffd54ea8ba527492b767e5b54ae5c3974f6953311","integrity":"sha256-oQyPbx5T2nducCbf/VTqi6UnSSt2fltUrlw5dPaVMxE="},"tinymce/langs/de_AT-a32eec12ce12b06fc2c8919d2372242e9596712c96dc9bcfff1fc8b7dc458627.js":{"logical_path":"tinymce/langs/de_AT.js","mtime":"2017-10-08T14:45:46+02:00","size":8308,"digest":"a32eec12ce12b06fc2c8919d2372242e9596712c96dc9bcfff1fc8b7dc458627","integrity":"sha256-oy7sEs4SsG/CyJGdI3IkLpWWcSyW3JvP/x/It9xFhic="},"tinymce/langs/dv-182756bf33409a8b76bc684d0a2ab86881718c360d1f1fb3fbc609ce3f5e3f49.js":{"logical_path":"tinymce/langs/dv.js","mtime":"2017-10-08T14:45:46+02:00","size":18100,"digest":"182756bf33409a8b76bc684d0a2ab86881718c360d1f1fb3fbc609ce3f5e3f49","integrity":"sha256-GCdWvzNAmot2vGhNCiq4aIFxjDYNHx+z+8YJzj9eP0k="},"tinymce/langs/el-6bbdbf3ccb2b2f22f961eb6749b43fe401c84fd6d89cd3f76a538dc2d06bb071.js":{"logical_path":"tinymce/langs/el.js","mtime":"2017-10-08T14:45:46+02:00","size":22973,"digest":"6bbdbf3ccb2b2f22f961eb6749b43fe401c84fd6d89cd3f76a538dc2d06bb071","integrity":"sha256-a72/PMsrLyL5YetnSbQ/5AHIT9bYnNP3alONwtBrsHE="},"tinymce/langs/en_CA-1a9457da814b0a1f15687a00f3ae4b38da0301445b52c29a423a38c943d9a431.js":{"logical_path":"tinymce/langs/en_CA.js","mtime":"2017-10-08T14:45:46+02:00","size":6916,"digest":"1a9457da814b0a1f15687a00f3ae4b38da0301445b52c29a423a38c943d9a431","integrity":"sha256-GpRX2oFLCh8VaHoA865LONoDAURbUsKaQjo4yUPZpDE="},"tinymce/langs/en_GB-a0f7752ff9ddf3ed3d2cd24fee04fe585bca0babc4ce655560c923ad386c0c07.js":{"logical_path":"tinymce/langs/en_GB.js","mtime":"2017-10-08T14:45:46+02:00","size":5907,"digest":"a0f7752ff9ddf3ed3d2cd24fee04fe585bca0babc4ce655560c923ad386c0c07","integrity":"sha256-oPd1L/nd8+09LNJP7gT+WFvKC6vEzmVVYMkjrThsDAc="},"tinymce/langs/eo-cbac4d7ebcb0679845b852d9354e74586e78cf13eef82de1400cf6b465e203cd.js":{"logical_path":"tinymce/langs/eo.js","mtime":"2018-01-05T22:13:22+01:00","size":7466,"digest":"cbac4d7ebcb0679845b852d9354e74586e78cf13eef82de1400cf6b465e203cd","integrity":"sha256-y6xNfrywZ5hFuFLZNU50WG54zxPu+C3hQAz2tGXiA80="},"tinymce/langs/es-133cb5bd627c2a299544586bf365859b5a1c96c57d18c90e7853048434a809b6.js":{"logical_path":"tinymce/langs/es.js","mtime":"2017-10-08T14:45:46+02:00","size":7809,"digest":"133cb5bd627c2a299544586bf365859b5a1c96c57d18c90e7853048434a809b6","integrity":"sha256-Ezy1vWJ8KimVRFhr82WFm1oclsV9GMkOeFMEhDSoCbY="},"tinymce/langs/es_MX-352fcdff567919ff09a2e19c56d8059d339bffdbd999bcc82aa6d8340c19bbb9.js":{"logical_path":"tinymce/langs/es_MX.js","mtime":"2017-10-08T14:45:46+02:00","size":7894,"digest":"352fcdff567919ff09a2e19c56d8059d339bffdbd999bcc82aa6d8340c19bbb9","integrity":"sha256-NS/N/1Z5Gf8JouGcVtgFnTOb/9vZmbzIKqbYNAwZu7k="},"tinymce/langs/et-2cfc3da0ff39a37f0bd3c896d49604028f231ff0e7d8ebbc30dbfd4b87125f06.js":{"logical_path":"tinymce/langs/et.js","mtime":"2017-10-08T14:45:46+02:00","size":7784,"digest":"2cfc3da0ff39a37f0bd3c896d49604028f231ff0e7d8ebbc30dbfd4b87125f06","integrity":"sha256-LPw9oP85o38L08iW1JYEAo8jH/Dn2Ou8MNv9S4cSXwY="},"tinymce/langs/eu-8698ae4de236fcd490d0f45d485dbd33d8e9de6eb3db51191e1b4f8ea96a4d06.js":{"logical_path":"tinymce/langs/eu.js","mtime":"2018-01-05T22:13:22+01:00","size":7011,"digest":"8698ae4de236fcd490d0f45d485dbd33d8e9de6eb3db51191e1b4f8ea96a4d06","integrity":"sha256-hpiuTeI2/NSQ0PRdSF29M9jp3m6z21EZHhtPjqlqTQY="},"tinymce/langs/fa-7eff96595e93d4b0df484dd90c14b7b412966157ed8293f54429e9418882bdb2.js":{"logical_path":"tinymce/langs/fa.js","mtime":"2018-01-05T22:13:22+01:00","size":16462,"digest":"7eff96595e93d4b0df484dd90c14b7b412966157ed8293f54429e9418882bdb2","integrity":"sha256-fv+WWV6T1LDfSE3ZDBS3tBKWYVftgpP1RCnpQYiCvbI="},"tinymce/langs/fa_IR-2f9d33f16718ae9c1f3642905b58434ed2662fb66448c4d115b8491aa68e7904.js":{"logical_path":"tinymce/langs/fa_IR.js","mtime":"2017-10-08T14:45:46+02:00","size":17725,"digest":"2f9d33f16718ae9c1f3642905b58434ed2662fb66448c4d115b8491aa68e7904","integrity":"sha256-L50z8WcYrpwfNkKQW1hDTtJmL7ZkSMTRFbhJGqaOeQQ="},"tinymce/langs/fi-6ca2a93d045067a86e8ea973d0b89368054b15eb9b9625bf1ca871608a5cb77c.js":{"logical_path":"tinymce/langs/fi.js","mtime":"2018-01-05T22:13:22+01:00","size":8143,"digest":"6ca2a93d045067a86e8ea973d0b89368054b15eb9b9625bf1ca871608a5cb77c","integrity":"sha256-bKKpPQRQZ6hujqlz0LiTaAVLFeubliW/HKhxYIpct3w="},"tinymce/langs/fo-340609cecd5571e4eacb8fe7bd1343c8553d96d12610fb77d9a812dc6d3635fd.js":{"logical_path":"tinymce/langs/fo.js","mtime":"2018-01-05T22:13:22+01:00","size":8044,"digest":"340609cecd5571e4eacb8fe7bd1343c8553d96d12610fb77d9a812dc6d3635fd","integrity":"sha256-NAYJzs1VceTqy4/nvRNDyFU9ltEmEPt32agS3G02Nf0="},"tinymce/langs/fr_CH-e0f43c0f20727368ff0767f3bf099bc23eed9fe3e81f8bbe514381e786526928.js":{"logical_path":"tinymce/langs/fr_CH.js","mtime":"2018-01-05T22:13:22+01:00","size":8074,"digest":"e0f43c0f20727368ff0767f3bf099bc23eed9fe3e81f8bbe514381e786526928","integrity":"sha256-4PQ8DyByc2j/B2fzvwmbwj7tn+PoH4u+UUOB54ZSaSg="},"tinymce/langs/fr_FR-2702de7be93bd1e0d7120ae3c9e637061565186c66886f155ffca0663df25b4c.js":{"logical_path":"tinymce/langs/fr_FR.js","mtime":"2017-10-08T14:45:46+02:00","size":8009,"digest":"2702de7be93bd1e0d7120ae3c9e637061565186c66886f155ffca0663df25b4c","integrity":"sha256-JwLee+k70eDXEgrjyeY3BhVlGGxmiG8VX/ygZj3yW0w="},"tinymce/langs/ga-d2a3de6f28723d75b03f7f42fd3aedfd045d473425ee38f02350b56035383af1.js":{"logical_path":"tinymce/langs/ga.js","mtime":"2017-10-08T14:45:46+02:00","size":8591,"digest":"d2a3de6f28723d75b03f7f42fd3aedfd045d473425ee38f02350b56035383af1","integrity":"sha256-0qPebyhyPXWwP39C/Trt/QRdRzQl7jjwI1C1YDU4OvE="},"tinymce/langs/gd-0453e8b97bf3b6cca4065712ec59f20343ad6131735b38547e865177a1c1c490.js":{"logical_path":"tinymce/langs/gd.js","mtime":"2018-01-05T22:13:22+01:00","size":8808,"digest":"0453e8b97bf3b6cca4065712ec59f20343ad6131735b38547e865177a1c1c490","integrity":"sha256-BFPouXvztsykBlcS7FnyA0OtYTFzWzhUfoZRd6HBxJA="},"tinymce/langs/gl-1ff612222934f558870111f10934110c5656df3bb293c917e4eeceeb6605fcc5.js":{"logical_path":"tinymce/langs/gl.js","mtime":"2017-10-08T14:45:46+02:00","size":7066,"digest":"1ff612222934f558870111f10934110c5656df3bb293c917e4eeceeb6605fcc5","integrity":"sha256-H/YSIik09ViHARHxCTQRDFZW3zuyk8kX5O7O62YF/MU="},"tinymce/langs/he_IL-981f5250a4b8d404b37040ca5a35c30498cbeeb36e298d81bf1592b43fff7656.js":{"logical_path":"tinymce/langs/he_IL.js","mtime":"2017-10-08T14:45:46+02:00","size":16081,"digest":"981f5250a4b8d404b37040ca5a35c30498cbeeb36e298d81bf1592b43fff7656","integrity":"sha256-mB9SUKS41ASzcEDKWjXDBJjL7rNuKY2BvxWStD//dlY="},"tinymce/langs/hi_IN-695e0cdc22974fe45e0f35289f0249ddab87245165c9df765ec1b885ec55f0be.js":{"logical_path":"tinymce/langs/hi_IN.js","mtime":"2018-01-05T22:13:22+01:00","size":18458,"digest":"695e0cdc22974fe45e0f35289f0249ddab87245165c9df765ec1b885ec55f0be","integrity":"sha256-aV4M3CKXT+ReDzUonwJJ3auHJFFlyd92XsG4hexV8L4="},"tinymce/langs/hr-f77f1da2736d13f9a9a86ebf596f592fcc748f2975a0b9904b512d630f2c1a17.js":{"logical_path":"tinymce/langs/hr.js","mtime":"2017-10-08T14:45:46+02:00","size":7577,"digest":"f77f1da2736d13f9a9a86ebf596f592fcc748f2975a0b9904b512d630f2c1a17","integrity":"sha256-938donNtE/mpqG6/WW9ZL8x0jyl1oLmQS1EtYw8sGhc="},"tinymce/langs/hu_HU-1e22021a4f9c61919aa024041af555eac277bfc08ccb8c07fd329b87090a15e5.js":{"logical_path":"tinymce/langs/hu_HU.js","mtime":"2017-10-08T14:45:46+02:00","size":9410,"digest":"1e22021a4f9c61919aa024041af555eac277bfc08ccb8c07fd329b87090a15e5","integrity":"sha256-HiICGk+cYZGaoCQEGvVV6sJ3v8CMy4wH/TKbhwkKFeU="},"tinymce/langs/hy-0d384f3f82cd76793d3e7428a2140ea97f40a943f25ef99a2e3709a3e02b0930.js":{"logical_path":"tinymce/langs/hy.js","mtime":"2018-01-05T22:13:22+01:00","size":20375,"digest":"0d384f3f82cd76793d3e7428a2140ea97f40a943f25ef99a2e3709a3e02b0930","integrity":"sha256-DThPP4LNdnk9PnQoohQOqX9AqUPyXvmaLjcJo+ArCTA="},"tinymce/langs/id-e9fd018be745b5f14f4af47887420f98c590c607e01d57aca77ef5affe188523.js":{"logical_path":"tinymce/langs/id.js","mtime":"2018-01-05T22:13:22+01:00","size":7141,"digest":"e9fd018be745b5f14f4af47887420f98c590c607e01d57aca77ef5affe188523","integrity":"sha256-6f0Bi+dFtfFPSvR4h0IPmMWQxgfgHVesp371r/4YhSM="},"tinymce/langs/is_IS-c6e8c3e7b0e6b447faec3d8d258928f97c84558b29882c056513fb71cf237bfa.js":{"logical_path":"tinymce/langs/is_IS.js","mtime":"2018-01-05T22:13:22+01:00","size":7928,"digest":"c6e8c3e7b0e6b447faec3d8d258928f97c84558b29882c056513fb71cf237bfa","integrity":"sha256-xujD57DmtEf67D2NJYko+XyEVYspiCwFZRP7cc8je/o="},"tinymce/langs/it-25b5546d48c80ad666b600e5be3a05718b80645721b191785c1fafe1853f4a46.js":{"logical_path":"tinymce/langs/it.js","mtime":"2017-10-08T14:45:46+02:00","size":7598,"digest":"25b5546d48c80ad666b600e5be3a05718b80645721b191785c1fafe1853f4a46","integrity":"sha256-JbVUbUjICtZmtgDlvjoFcYuAZFchsZF4XB+v4YU/SkY="},"tinymce/langs/ja-80f0e7414030c32617ff651da1affa0bc85ee514fc9bc81f46edfd8ce0053ac0.js":{"logical_path":"tinymce/langs/ja.js","mtime":"2017-10-08T14:45:46+02:00","size":12290,"digest":"80f0e7414030c32617ff651da1affa0bc85ee514fc9bc81f46edfd8ce0053ac0","integrity":"sha256-gPDnQUAwwyYX/2Udoa/6C8he5RT8m8gfRu39jOAFOsA="},"tinymce/langs/ka_GE-3c6b82346a7070a8b6a15ae6e8faeecc5bfe63ad7e616b7de2e8ab8a75ec39c2.js":{"logical_path":"tinymce/langs/ka_GE.js","mtime":"2017-10-08T14:45:46+02:00","size":21284,"digest":"3c6b82346a7070a8b6a15ae6e8faeecc5bfe63ad7e616b7de2e8ab8a75ec39c2","integrity":"sha256-PGuCNGpwcKi2oVrm6PruzFv+Y61+YWt94uirinXsOcI="},"tinymce/langs/kab-3651d08aacd5bda15a04698f202bf616efbf13d3789aadd9ce4f93e430818c13.js":{"logical_path":"tinymce/langs/kab.js","mtime":"2017-10-08T14:45:46+02:00","size":7391,"digest":"3651d08aacd5bda15a04698f202bf616efbf13d3789aadd9ce4f93e430818c13","integrity":"sha256-NlHQiqzVvaFaBGmPICv2Fu+/E9N4mq3Zzk+T5DCBjBM="},"tinymce/langs/kk-0c1ba792ed9445c6512f310228f64d1cde7b5a98e0b212cca749dcb2d728fe86.js":{"logical_path":"tinymce/langs/kk.js","mtime":"2017-10-08T14:45:46+02:00","size":16681,"digest":"0c1ba792ed9445c6512f310228f64d1cde7b5a98e0b212cca749dcb2d728fe86","integrity":"sha256-DBunku2URcZRLzECKPZNHN57WpjgshLMp0ncstco/oY="},"tinymce/langs/km_KH-8bec84e4078db8c2a680260c073dfb486c85b61df62e14ca330d66d2ca2a85b5.js":{"logical_path":"tinymce/langs/km_KH.js","mtime":"2017-10-08T14:45:46+02:00","size":21396,"digest":"8bec84e4078db8c2a680260c073dfb486c85b61df62e14ca330d66d2ca2a85b5","integrity":"sha256-i+yE5AeNuMKmgCYMBz37SGyFth32LhTKMw1m0soqhbU="},"tinymce/langs/ko-ca535bfa388701fb020d24bdfb3f1e3aab127005b54e943cb1bd60b723c8194d.js":{"logical_path":"tinymce/langs/ko.js","mtime":"2018-01-05T22:13:22+01:00","size":10105,"digest":"ca535bfa388701fb020d24bdfb3f1e3aab127005b54e943cb1bd60b723c8194d","integrity":"sha256-ylNb+jiHAfsCDSS9+z8eOqsScAW1TpQ8sb1gtyPIGU0="},"tinymce/langs/ko_KR-daa3ae950d70260bb0901a5349034952247905523bbc2bcbe527701b6aad8e28.js":{"logical_path":"tinymce/langs/ko_KR.js","mtime":"2017-10-08T14:45:46+02:00","size":10005,"digest":"daa3ae950d70260bb0901a5349034952247905523bbc2bcbe527701b6aad8e28","integrity":"sha256-2qOulQ1wJguwkBpTSQNJUiR5BVI7vCvL5SdwG2qtjig="},"tinymce/langs/ku-95e2ffe4f0112df658f10327c26f2cdddedc2e2ed769767366ae22a465c14725.js":{"logical_path":"tinymce/langs/ku.js","mtime":"2018-01-05T22:13:22+01:00","size":18274,"digest":"95e2ffe4f0112df658f10327c26f2cdddedc2e2ed769767366ae22a465c14725","integrity":"sha256-leL/5PARLfZY8QMnwm8s3d7cLi7XaXZzZq4ipGXBRyU="},"tinymce/langs/ku_IQ-a212e8d41695989e56834facf72474e1934ef166c3fcaf7e255ef573a3c6e76c.js":{"logical_path":"tinymce/langs/ku_IQ.js","mtime":"2018-01-05T22:13:22+01:00","size":18364,"digest":"a212e8d41695989e56834facf72474e1934ef166c3fcaf7e255ef573a3c6e76c","integrity":"sha256-ohLo1BaVmJ5Wg0+s9yR04ZNO8WbD/K9+JV71c6PG52w="},"tinymce/langs/lb-94992279091f1a0be927d5d858d3724037d8d81ee6b63cc9ddde84af6124cc04.js":{"logical_path":"tinymce/langs/lb.js","mtime":"2018-01-05T22:13:22+01:00","size":7467,"digest":"94992279091f1a0be927d5d858d3724037d8d81ee6b63cc9ddde84af6124cc04","integrity":"sha256-lJkieQkfGgvpJ9XYWNNyQDfY2B7mtjzJ3d6Er2EkzAQ="},"tinymce/langs/lt-ae7cefbe2cb5420770b31eabf92605728135ab5d6a2d2cfca2d19809be67e6a8.js":{"logical_path":"tinymce/langs/lt.js","mtime":"2018-01-05T22:13:22+01:00","size":8899,"digest":"ae7cefbe2cb5420770b31eabf92605728135ab5d6a2d2cfca2d19809be67e6a8","integrity":"sha256-rnzvviy1Qgdwsx6r+SYFcoE1q11qLSz8otGYCb5n5qg="},"tinymce/langs/lv-e468ed0c78466d1fff9f4957645606d8aa683cb5dc35931e047df97b8e4f5433.js":{"logical_path":"tinymce/langs/lv.js","mtime":"2017-10-08T14:45:46+02:00","size":8282,"digest":"e468ed0c78466d1fff9f4957645606d8aa683cb5dc35931e047df97b8e4f5433","integrity":"sha256-5GjtDHhGbR//n0lXZFYG2KpoPLXcNZMeBH35e45PVDM="},"tinymce/langs/mk_MK-55aadb5d7c82c940cfcf42f24423ef0471294c9b02994a6b22e1b4173baa7ec6.js":{"logical_path":"tinymce/langs/mk_MK.js","mtime":"2018-01-05T22:13:22+01:00","size":18733,"digest":"55aadb5d7c82c940cfcf42f24423ef0471294c9b02994a6b22e1b4173baa7ec6","integrity":"sha256-VarbXXyCyUDPz0LyRCPvBHEpTJsCmUprIuG0FzuqfsY="},"tinymce/langs/ml-685de0808683c02274dcbe9f8de023a4d72a49b040e7526a99e3d5c786ff71ae.js":{"logical_path":"tinymce/langs/ml.js","mtime":"2018-01-05T22:13:22+01:00","size":7339,"digest":"685de0808683c02274dcbe9f8de023a4d72a49b040e7526a99e3d5c786ff71ae","integrity":"sha256-aF3ggIaDwCJ03L6fjeAjpNcqSbBA51JqmePVx4b/ca4="},"tinymce/langs/ml_IN-1ab433621d6257c7632718048bacc5ed98a302d33cf0438bbbb4200914e01aac.js":{"logical_path":"tinymce/langs/ml_IN.js","mtime":"2018-01-05T22:13:22+01:00","size":20019,"digest":"1ab433621d6257c7632718048bacc5ed98a302d33cf0438bbbb4200914e01aac","integrity":"sha256-GrQzYh1iV8djJxgEi6zF7ZijAtM88EOLu7QgCRTgGqw="},"tinymce/langs/mn_MN-b89f88cb9b0dd7c879e27532b2979c421c1e69648f65a4108a56060f1e1cb009.js":{"logical_path":"tinymce/langs/mn_MN.js","mtime":"2018-01-05T22:13:22+01:00","size":6877,"digest":"b89f88cb9b0dd7c879e27532b2979c421c1e69648f65a4108a56060f1e1cb009","integrity":"sha256-uJ+Iy5sN18h54nUyspecQhweaWSPZaQQilYGDx4csAk="},"tinymce/langs/nb_NO-602ee249e98a26ae24c1ee1311090c68a782050086a835f1e7bd46ebfe7879ef.js":{"logical_path":"tinymce/langs/nb_NO.js","mtime":"2017-10-08T14:45:46+02:00","size":7528,"digest":"602ee249e98a26ae24c1ee1311090c68a782050086a835f1e7bd46ebfe7879ef","integrity":"sha256-YC7iSemKJq4kwe4TEQkMaKeCBQCGqDXx571G6/54ee8="},"tinymce/langs/nl-9c77e9404a27fd7e4bd162ad44538b72d2725b7fee7be7ca3ff801cf217c4968.js":{"logical_path":"tinymce/langs/nl.js","mtime":"2017-10-08T14:45:46+02:00","size":7235,"digest":"9c77e9404a27fd7e4bd162ad44538b72d2725b7fee7be7ca3ff801cf217c4968","integrity":"sha256-nHfpQEon/X5L0WKtRFOLctJyW3/ue+fKP/gBzyF8SWg="},"tinymce/langs/pl-5cdd1586ec8fa67293f2175cd92edbd0392c4c77b24ed64cfdceccba8d99f152.js":{"logical_path":"tinymce/langs/pl.js","mtime":"2017-10-08T14:45:46+02:00","size":8129,"digest":"5cdd1586ec8fa67293f2175cd92edbd0392c4c77b24ed64cfdceccba8d99f152","integrity":"sha256-XN0VhuyPpnKT8hdc2S7b0DksTHeyTtZM/c7Muo2Z8VI="},"tinymce/langs/pt_BR-e3955318582d58bd241a62c3a81afe74e0ae7f31bdc92a562b75243701f114df.js":{"logical_path":"tinymce/langs/pt_BR.js","mtime":"2017-10-08T14:45:46+02:00","size":8002,"digest":"e3955318582d58bd241a62c3a81afe74e0ae7f31bdc92a562b75243701f114df","integrity":"sha256-45VTGFgtWL0kGmLDqBr+dOCufzG9ySpWK3UkNwHxFN8="},"tinymce/langs/pt_PT-1101d080ecd5da091c7ef70b23200adbd5136c5c32f0c79dae665a443d76c35d.js":{"logical_path":"tinymce/langs/pt_PT.js","mtime":"2017-10-08T14:45:46+02:00","size":8145,"digest":"1101d080ecd5da091c7ef70b23200adbd5136c5c32f0c79dae665a443d76c35d","integrity":"sha256-EQHQgOzV2gkcfvcLIyAK29UTbFwy8MedrmZaRD12w10="},"tinymce/langs/ro-484799d182031efab087d749b024014fd06ed06c1e7712b8bf87f3a4a965c2e4.js":{"logical_path":"tinymce/langs/ro.js","mtime":"2017-10-08T14:45:46+02:00","size":8275,"digest":"484799d182031efab087d749b024014fd06ed06c1e7712b8bf87f3a4a965c2e4","integrity":"sha256-SEeZ0YIDHvqwh9dJsCQBT9Bu0GwedxK4v4fzpKllwuQ="},"tinymce/langs/ru-bdd59cb662a7b4d61e770b07014d1791051312c87513ecc1891e80beba617171.js":{"logical_path":"tinymce/langs/ru.js","mtime":"2017-10-08T14:45:46+02:00","size":22290,"digest":"bdd59cb662a7b4d61e770b07014d1791051312c87513ecc1891e80beba617171","integrity":"sha256-vdWctmKntNYedwsHAU0XkQUTEsh1E+zBiR6AvrphcXE="},"tinymce/langs/ru_RU-9f18ef14f3493cc586cc0b4827fd9e1c2ed3d5790ce536d94f87e2d6aac2a688.js":{"logical_path":"tinymce/langs/ru_RU.js","mtime":"2018-01-05T22:13:22+01:00","size":4955,"digest":"9f18ef14f3493cc586cc0b4827fd9e1c2ed3d5790ce536d94f87e2d6aac2a688","integrity":"sha256-nxjvFPNJPMWGzAtIJ/2eHC7T1XkM5TbZT4fi1qrCpog="},"tinymce/langs/si_LK-5bfefe9b2fe82574d8ed839df18fd8ff65f1e1cd458b0a843cf1aadd1be704ea.js":{"logical_path":"tinymce/langs/si_LK.js","mtime":"2018-01-05T22:13:22+01:00","size":15856,"digest":"5bfefe9b2fe82574d8ed839df18fd8ff65f1e1cd458b0a843cf1aadd1be704ea","integrity":"sha256-W/7+my/oJXTY7YOd8Y/Y/2Xx4c1FiwqEPPGq3RvnBOo="},"tinymce/langs/sk-412fa7f982ad2733341203daa035c8ba10035262ca8f5f65e0a41507512209bd.js":{"logical_path":"tinymce/langs/sk.js","mtime":"2017-10-08T14:45:46+02:00","size":8958,"digest":"412fa7f982ad2733341203daa035c8ba10035262ca8f5f65e0a41507512209bd","integrity":"sha256-QS+n+YKtJzM0EgPaoDXIuhADUmLKj19l4KQVB1EiCb0="},"tinymce/langs/sl_SI-2bea4f3854a992ea840808019dc99467dc173b12454ea6016135234a741671d8.js":{"logical_path":"tinymce/langs/sl_SI.js","mtime":"2017-10-08T14:45:46+02:00","size":7039,"digest":"2bea4f3854a992ea840808019dc99467dc173b12454ea6016135234a741671d8","integrity":"sha256-K+pPOFSpkuqECAgBncmUZ9wXOxJFTqYBYTUjSnQWcdg="},"tinymce/langs/sr-e0b97453a0c1000b19f7ce37fcf86bcacbf9125d81076f60a77686820c7925c6.js":{"logical_path":"tinymce/langs/sr.js","mtime":"2018-01-05T22:13:22+01:00","size":6336,"digest":"e0b97453a0c1000b19f7ce37fcf86bcacbf9125d81076f60a77686820c7925c6","integrity":"sha256-4Ll0U6DBAAsZ9843/Phrysv5El2BB29gp3aGggx5JcY="},"tinymce/langs/sv_SE-fa561a7e49fdb42d5913337176fed6bc8a9997eb3ca8f20ecd9520d5391e17be.js":{"logical_path":"tinymce/langs/sv_SE.js","mtime":"2017-10-08T14:45:46+02:00","size":7496,"digest":"fa561a7e49fdb42d5913337176fed6bc8a9997eb3ca8f20ecd9520d5391e17be","integrity":"sha256-+lYafkn9tC1ZEzNxdv7WvIqZl+s8qPIOzZUg1TkeF74="},"tinymce/langs/ta-0fd0e62250fc1a3626ac2111c5adb4194a6a898888bb224414f6dc8adf53d385.js":{"logical_path":"tinymce/langs/ta.js","mtime":"2017-10-08T14:45:46+02:00","size":22617,"digest":"0fd0e62250fc1a3626ac2111c5adb4194a6a898888bb224414f6dc8adf53d385","integrity":"sha256-D9DmIlD8GjYmrCERxa20GUpqiYiIuyJEFPbcit9T04U="},"tinymce/langs/ta_IN-32303f65d2378e8202b17b0920b79277a2580872e3a6bd9409aeceef90867dd0.js":{"logical_path":"tinymce/langs/ta_IN.js","mtime":"2017-10-08T14:45:46+02:00","size":22620,"digest":"32303f65d2378e8202b17b0920b79277a2580872e3a6bd9409aeceef90867dd0","integrity":"sha256-MjA/ZdI3joICsXsJILeSd6JYCHLjpr2UCa7O75CGfdA="},"tinymce/langs/tg-1618248bf0aeda614a37ced9fd28b6623ae24f8453368bfb8c483ce820a3cb34.js":{"logical_path":"tinymce/langs/tg.js","mtime":"2018-01-05T22:13:22+01:00","size":18183,"digest":"1618248bf0aeda614a37ced9fd28b6623ae24f8453368bfb8c483ce820a3cb34","integrity":"sha256-Fhgki/Cu2mFKN87Z/Si2YjriT4RTNov7jEg86CCjyzQ="},"tinymce/langs/th_TH-5279a379afc886c2a31e22aba9d7ee7a8e3edf4c0785f39aaa20ccd03d46b19a.js":{"logical_path":"tinymce/langs/th_TH.js","mtime":"2017-10-08T14:45:46+02:00","size":17297,"digest":"5279a379afc886c2a31e22aba9d7ee7a8e3edf4c0785f39aaa20ccd03d46b19a","integrity":"sha256-Unmjea/IhsKjHiKrqdfueo4+30wHhfOaqiDM0D1GsZo="},"tinymce/langs/tr-3765d4a8923ef22864747d9c825c3e0af401e1356e75a5458bed837d486b7673.js":{"logical_path":"tinymce/langs/tr.js","mtime":"2017-10-08T14:45:46+02:00","size":8705,"digest":"3765d4a8923ef22864747d9c825c3e0af401e1356e75a5458bed837d486b7673","integrity":"sha256-N2XUqJI+8ihkdH2cglw+CvQB4TVudaVFi+2DfUhrdnM="},"tinymce/langs/tr_TR-5c93f80b89e5dd2eb6972f37bf50b76d7705c61f28120b836704a91fa5c14399.js":{"logical_path":"tinymce/langs/tr_TR.js","mtime":"2017-10-08T14:45:46+02:00","size":8141,"digest":"5c93f80b89e5dd2eb6972f37bf50b76d7705c61f28120b836704a91fa5c14399","integrity":"sha256-XJP4C4nl3S62ly83v1C3bXcFxh8oEguDZwSpH6XBQ5k="},"tinymce/langs/tt-22e302672df0a77de14688f58dbedf82de7a26e9089c9535a2a3cd1c0ccd7903.js":{"logical_path":"tinymce/langs/tt.js","mtime":"2018-01-05T22:13:22+01:00","size":19035,"digest":"22e302672df0a77de14688f58dbedf82de7a26e9089c9535a2a3cd1c0ccd7903","integrity":"sha256-IuMCZy3wp33hRoj1jb7fgt56JukInJU1oqPNHAzNeQM="},"tinymce/langs/ug-50232038bf7262c90be4f2919c74ff93792cdb82e6064d0f5c86f885b93271c5.js":{"logical_path":"tinymce/langs/ug.js","mtime":"2018-01-05T22:13:22+01:00","size":16888,"digest":"50232038bf7262c90be4f2919c74ff93792cdb82e6064d0f5c86f885b93271c5","integrity":"sha256-UCMgOL9yYskL5PKRnHT/k3ks24LmBk0PXIb4hbkyccU="},"tinymce/langs/uk-f6d7911714c422b178c0249df323cf7ec415a83195d751c7e4024590b1738c42.js":{"logical_path":"tinymce/langs/uk.js","mtime":"2017-10-08T14:45:46+02:00","size":22264,"digest":"f6d7911714c422b178c0249df323cf7ec415a83195d751c7e4024590b1738c42","integrity":"sha256-9teRFxTEIrF4wCSd8yPPfsQVqDGV11HH5AJFkLFzjEI="},"tinymce/langs/uk_UA-bd8cd7ca66228d85f8a4cadb651c49981f26e007fa2a952856c8c3d3c1baa66a.js":{"logical_path":"tinymce/langs/uk_UA.js","mtime":"2017-10-08T14:45:46+02:00","size":21691,"digest":"bd8cd7ca66228d85f8a4cadb651c49981f26e007fa2a952856c8c3d3c1baa66a","integrity":"sha256-vYzXymYijYX4pMrbZRxJmB8m4Af6KpUoVsjD08G6pmo="},"tinymce/langs/vi-6aa451047e4df911c92e10178e6a70147534e438c64df7a88eee37b4a440726e.js":{"logical_path":"tinymce/langs/vi.js","mtime":"2018-01-05T22:13:22+01:00","size":9901,"digest":"6aa451047e4df911c92e10178e6a70147534e438c64df7a88eee37b4a440726e","integrity":"sha256-aqRRBH5N+RHJLhAXjmpwFHU05DjGTfeoju43tKRAcm4="},"tinymce/langs/vi_VN-aea52c2e9397f8a657d54d50a42b3c5be0ca79480555a4fa1e0f5d785c5f6561.js":{"logical_path":"tinymce/langs/vi_VN.js","mtime":"2017-10-08T14:45:46+02:00","size":9899,"digest":"aea52c2e9397f8a657d54d50a42b3c5be0ca79480555a4fa1e0f5d785c5f6561","integrity":"sha256-rqUsLpOX+KZX1U1QpCs8W+DKeUgFVaT6Hg9deFxfZWE="},"tinymce/langs/zh_CN-8622ec46e2980b6f5baf3b745c6b0187dd2a54ddecbbf69a21f0b3e72f84f6dc.js":{"logical_path":"tinymce/langs/zh_CN.js","mtime":"2017-10-08T14:45:46+02:00","size":8483,"digest":"8622ec46e2980b6f5baf3b745c6b0187dd2a54ddecbbf69a21f0b3e72f84f6dc","integrity":"sha256-hiLsRuKYC29brzt0XGsBh90qVN3su/aaIfCz5y+E9tw="},"tinymce/langs/zh_TW-90723da3b889f2a4477d4aaf00ca3e75439998269b36b359ea4caa37e1defb4a.js":{"logical_path":"tinymce/langs/zh_TW.js","mtime":"2017-10-08T14:45:46+02:00","size":9379,"digest":"90723da3b889f2a4477d4aaf00ca3e75439998269b36b359ea4caa37e1defb4a","integrity":"sha256-kHI9o7iJ8qRHfUqvAMo+dUOZmCabNrNZ6kyqN+He+0o="},"tinymce/preinit-4eb7f4ac58f2f450d20185cf83ca1d8550d2a1419141bfe70eb5a2c4afe67349.js":{"logical_path":"tinymce/preinit.js","mtime":"2017-10-07T16:14:30+02:00","size":248,"digest":"4eb7f4ac58f2f450d20185cf83ca1d8550d2a1419141bfe70eb5a2c4afe67349","integrity":"sha256-Trf0rFjy9FDSAYXPg8odhVDSoUGRQb/nDrWixK/mc0k="},"tinymce/tinymce-ea002509455c2d4e12e195ec050ff03ce90bbe0bdf22bb0d4180bba730c2bcc6.js":{"logical_path":"tinymce/tinymce.js","mtime":"2017-10-07T16:14:30+02:00","size":1733332,"digest":"ea002509455c2d4e12e195ec050ff03ce90bbe0bdf22bb0d4180bba730c2bcc6","integrity":"sha256-6gAlCUVcLU4S4ZXsBQ/wPOkLvgvfIrsNQYC7pzDCvMY="},"tinymce/jquery.tinymce-c4e34b289f498e7a8e4ff16c48b895310113eae7c296ac5f17680704bc3a0032.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2017-10-07T16:14:30+02:00","size":4275,"digest":"c4e34b289f498e7a8e4ff16c48b895310113eae7c296ac5f17680704bc3a0032","integrity":"sha256-xONLKJ9JjnqOT/FsSLiVMQET6ufClqxfF2gHBLw6ADI="},"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md":{"logical_path":"tinymce/langs/readme.md","mtime":"2018-02-10T17:19:41+01:00","size":151,"digest":"5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de","integrity":"sha256-WotqBNV7XIjj+38qhwuOLTpI7APOZHQgbEHfeMFVst4="},"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt":{"logical_path":"tinymce/license.txt","mtime":"2018-02-10T17:19:41+01:00","size":26441,"digest":"47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66","integrity":"sha256-R6nc0ldIkaWkZREv2d/OvMfmGETt7Cf6k2pkZCAI/mY="},"tinymce/plugins/advlist/plugin-8298c4226e435f9350b2bfedab63fec1a9a153277a48930406bd9446ca3d9206.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2683,"digest":"8298c4226e435f9350b2bfedab63fec1a9a153277a48930406bd9446ca3d9206","integrity":"sha256-gpjEIm5DX5NQsr/tq2P+wamhUyd6SJMEBr2URso9kgY="},"tinymce/plugins/anchor/plugin-910353b28da9ffa1075fd37b1c95f1f05f0d6809e41a5e4250b33e1a3a7a86c8.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2110,"digest":"910353b28da9ffa1075fd37b1c95f1f05f0d6809e41a5e4250b33e1a3a7a86c8","integrity":"sha256-kQNTso2p/6EHX9N7HJXx8F8NaAnkGl5CULM+Gjp6hsg="},"tinymce/plugins/autolink/plugin-ee2bb5e9c684882fb0db4d350f0c7feab2643841f2b8729db0f9111043c70d39.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3017,"digest":"ee2bb5e9c684882fb0db4d350f0c7feab2643841f2b8729db0f9111043c70d39","integrity":"sha256-7iu16caEiC+w2001Dwx/6rJkOEHyuHKdsPkREEPHDTk="},"tinymce/plugins/autoresize/plugin-2e0a2856650e8fa09fba9a00fd18a9078e5ee436c6c47ead6ba6689fee74cafa.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2916,"digest":"2e0a2856650e8fa09fba9a00fd18a9078e5ee436c6c47ead6ba6689fee74cafa","integrity":"sha256-LgooVmUOj6CfupoA/RipB45e5DbGxH6ta6Zon+50yvo="},"tinymce/plugins/autosave/plugin-54b4451f49d642d08cbec840341ac6edb501b69d2383115c62bc7070eb0a57f4.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3217,"digest":"54b4451f49d642d08cbec840341ac6edb501b69d2383115c62bc7070eb0a57f4","integrity":"sha256-VLRFH0nWQtCMvshANBrG7bUBtp0jgxFcYrxwcOsKV/Q="},"tinymce/plugins/bbcode/plugin-3e2fdc6fa5b587ce568ca570974d0e910b6684e392a9ecaba02b5c6c15269080.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3990,"digest":"3e2fdc6fa5b587ce568ca570974d0e910b6684e392a9ecaba02b5c6c15269080","integrity":"sha256-Pi/cb6W1h85WjKVwl00OkQtmhOOSqeyroCtcbBUmkIA="},"tinymce/plugins/charmap/plugin-49d7ef5688ed83d2a102b0c9702dc3aac70a33c22a7ef4885d6528a61b8210e2.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":9164,"digest":"49d7ef5688ed83d2a102b0c9702dc3aac70a33c22a7ef4885d6528a61b8210e2","integrity":"sha256-SdfvVojtg9KhArDJcC3DqscKM8IqfvSIXWUophuCEOI="},"tinymce/plugins/code/plugin-2c12bcd21813fa52b23a65c3080cc6f4ecb33be04ee058b6c460719724511372.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1656,"digest":"2c12bcd21813fa52b23a65c3080cc6f4ecb33be04ee058b6c460719724511372","integrity":"sha256-LBK80hgT+lKyOmXDCAzG9OyzO+BO4Fi2xGBxlyRRE3I="},"tinymce/plugins/codesample/css/prism-1988b66704b4d23e78c6c20c38a6856cbc1f0be96d6d60a3a0b12f4408f1057e.css":{"logical_path":"tinymce/plugins/codesample/css/prism.css","mtime":"2018-02-10T17:19:41+01:00","size":1776,"digest":"1988b66704b4d23e78c6c20c38a6856cbc1f0be96d6d60a3a0b12f4408f1057e","integrity":"sha256-GYi2ZwS00j54xsIMOKaFbLwfC+ltbWCjoLEvRAjxBX4="},"tinymce/plugins/codesample/plugin-a3591d2c33d0499eed106bbdc9d0aa698115456632cb806e8f44bdf270d8d6b8.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":19950,"digest":"a3591d2c33d0499eed106bbdc9d0aa698115456632cb806e8f44bdf270d8d6b8","integrity":"sha256-o1kdLDPQSZ7tEGu9ydCqaYEVRWYyy4Buj0S98nDY1rg="},"tinymce/plugins/colorpicker/plugin-f4ea1ac5bfaaef5adef0789427a1ef1e3c07814ff9a7623953bfb1a79f9f502d.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2144,"digest":"f4ea1ac5bfaaef5adef0789427a1ef1e3c07814ff9a7623953bfb1a79f9f502d","integrity":"sha256-9Ooaxb+q71re8HiUJ6HvHjwHgU/5p2I5U7+xp5+fUC0="},"tinymce/plugins/contextmenu/plugin-36bf2806ad2d3ead1a04e45b840bd6cea455f38ca02d88f973302219e05734ab.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":7098,"digest":"36bf2806ad2d3ead1a04e45b840bd6cea455f38ca02d88f973302219e05734ab","integrity":"sha256-Nr8oBq0tPq0aBORbhAvWzqRV84ygLYj5czAiGeBXNKs="},"tinymce/plugins/directionality/plugin-8b9d9e0d97d8cf5c20b4f74509a94cbd84c59b330d7badaad66ff2d0553479fd.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1653,"digest":"8b9d9e0d97d8cf5c20b4f74509a94cbd84c59b330d7badaad66ff2d0553479fd","integrity":"sha256-i52eDZfYz1wgtPdFCalMvYTFmzMNe62q1m/y0FU0ef0="},"tinymce/plugins/emoticons/img/smiley-cool-bb0e93a050a32df7913e4026b3c88a176998e0e3e073ba06e9b73f6c24227c9c.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-cool.gif","mtime":"2018-02-10T17:19:41+01:00","size":354,"digest":"bb0e93a050a32df7913e4026b3c88a176998e0e3e073ba06e9b73f6c24227c9c","integrity":"sha256-uw6ToFCjLfeRPkAms8iKF2mY4OPgc7oG6bc/bCQifJw="},"tinymce/plugins/emoticons/img/smiley-cry-a0c5f3e7a682449c973c9d9f7c46342081c46920686d2353f57aff91ab907f68.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-cry.gif","mtime":"2018-02-10T17:19:41+01:00","size":329,"digest":"a0c5f3e7a682449c973c9d9f7c46342081c46920686d2353f57aff91ab907f68","integrity":"sha256-oMXz56aCRJyXPJ2ffEY0IIHEaSBobSNT9Xr/kauQf2g="},"tinymce/plugins/emoticons/img/smiley-embarassed-d3cafcb50b335672cb5e9f4600ea9ea261dac7828dd28844d4927c393a25618f.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-embarassed.gif","mtime":"2018-02-10T17:19:41+01:00","size":331,"digest":"d3cafcb50b335672cb5e9f4600ea9ea261dac7828dd28844d4927c393a25618f","integrity":"sha256-08r8tQszVnLLXp9GAOqeomHax4KN0ohE1JJ8OTolYY8="},"tinymce/plugins/emoticons/img/smiley-foot-in-mouth-03fe04d3ed533423ac81f05146584b0c451be3d4a30e76687ceef283ed07071f.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif","mtime":"2018-02-10T17:19:41+01:00","size":342,"digest":"03fe04d3ed533423ac81f05146584b0c451be3d4a30e76687ceef283ed07071f","integrity":"sha256-A/4E0+1TNCOsgfBRRlhLDEUb49SjDnZofO7yg+0HBx8="},"tinymce/plugins/emoticons/img/smiley-frown-1b984bf98931dd1debb54461eb9d83e985f2b2999fe14bcb556d6c0921bc83b0.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-frown.gif","mtime":"2018-02-10T17:19:41+01:00","size":340,"digest":"1b984bf98931dd1debb54461eb9d83e985f2b2999fe14bcb556d6c0921bc83b0","integrity":"sha256-G5hL+Ykx3R3rtURh652D6YXyspmf4UvLVW1sCSG8g7A="},"tinymce/plugins/emoticons/img/smiley-innocent-8db353ef102196f2c6ddf5c4666446de955d7b14fc0957c806c9dbfb48fb0c29.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-innocent.gif","mtime":"2018-02-10T17:19:41+01:00","size":336,"digest":"8db353ef102196f2c6ddf5c4666446de955d7b14fc0957c806c9dbfb48fb0c29","integrity":"sha256-jbNT7xAhlvLG3fXEZmRG3pVdexT8CVfIBsnb+0j7DCk="},"tinymce/plugins/emoticons/img/smiley-kiss-3154c3665356c13ab10fefdbac1fe187fff978a0052037c99cdc4a97103413f2.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-kiss.gif","mtime":"2018-02-10T17:19:41+01:00","size":338,"digest":"3154c3665356c13ab10fefdbac1fe187fff978a0052037c99cdc4a97103413f2","integrity":"sha256-MVTDZlNWwTqxD+/brB/hh//5eKAFIDfJnNxKlxA0E/I="},"tinymce/plugins/emoticons/img/smiley-laughing-8f6adedcd091975ffead171867a6304d908bb6541a6ccb4919286ec6b7d4551e.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-laughing.gif","mtime":"2018-02-10T17:19:41+01:00","size":343,"digest":"8f6adedcd091975ffead171867a6304d908bb6541a6ccb4919286ec6b7d4551e","integrity":"sha256-j2re3NCRl1/+rRcYZ6YwTZCLtlQabMtJGShuxrfUVR4="},"tinymce/plugins/emoticons/img/smiley-money-mouth-f0b9f4f22e237f5dbc851f900fed8d7eca4c954ae6fbc606c0cd8be431d0ac80.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-money-mouth.gif","mtime":"2018-02-10T17:19:41+01:00","size":321,"digest":"f0b9f4f22e237f5dbc851f900fed8d7eca4c954ae6fbc606c0cd8be431d0ac80","integrity":"sha256-8Ln08i4jf128hR+QD+2NfspMlUrm+8YGwM2L5DHQrIA="},"tinymce/plugins/emoticons/img/smiley-sealed-9933b442636b6e537df7b564e2c3f7a2873526eea6b022a98eb1e468e5204c32.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-sealed.gif","mtime":"2018-02-10T17:19:41+01:00","size":323,"digest":"9933b442636b6e537df7b564e2c3f7a2873526eea6b022a98eb1e468e5204c32","integrity":"sha256-mTO0QmNrblN997Vk4sP3ooc1Ju6msCKpjrHkaOUgTDI="},"tinymce/plugins/emoticons/img/smiley-smile-fd89cd460ffcacb7e725e00c0275ef5b3924ce468248e5ff4fb43545571cfa65.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-smile.gif","mtime":"2018-02-10T17:19:41+01:00","size":344,"digest":"fd89cd460ffcacb7e725e00c0275ef5b3924ce468248e5ff4fb43545571cfa65","integrity":"sha256-/YnNRg/8rLfnJeAMAnXvWzkkzkaCSOX/T7Q1RVcc+mU="},"tinymce/plugins/emoticons/img/smiley-surprised-3871f356cb41976d7ae8a5f005e8739e4d014352a8adef9b33f773d81b6e6c01.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-surprised.gif","mtime":"2018-02-10T17:19:41+01:00","size":338,"digest":"3871f356cb41976d7ae8a5f005e8739e4d014352a8adef9b33f773d81b6e6c01","integrity":"sha256-OHHzVstBl2166KXwBehznk0BQ1Kore+bM/dz2BtubAE="},"tinymce/plugins/emoticons/img/smiley-tongue-out-5843c85667a8226dc43be83749fd9fbbc5d20b1577de2b763915d99815d37d47.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-tongue-out.gif","mtime":"2018-02-10T17:19:41+01:00","size":328,"digest":"5843c85667a8226dc43be83749fd9fbbc5d20b1577de2b763915d99815d37d47","integrity":"sha256-WEPIVmeoIm3EO+g3Sf2fu8XSCxV33it2ORXZmBXTfUc="},"tinymce/plugins/emoticons/img/smiley-undecided-d8b9bcbb433951ff3c4ca8dd959ac3844239b98e6d52218833e1485a91f67347.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-undecided.gif","mtime":"2018-02-10T17:19:41+01:00","size":337,"digest":"d8b9bcbb433951ff3c4ca8dd959ac3844239b98e6d52218833e1485a91f67347","integrity":"sha256-2Lm8u0M5Uf88TKjdlZrDhEI5uY5tUiGIM+FIWpH2c0c="},"tinymce/plugins/emoticons/img/smiley-wink-2af75ad7b1c08488505513503e34b15f40005e04a2a9568f698f0945d2d8ba1f.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-wink.gif","mtime":"2018-02-10T17:19:41+01:00","size":350,"digest":"2af75ad7b1c08488505513503e34b15f40005e04a2a9568f698f0945d2d8ba1f","integrity":"sha256-Kvda17HAhIhQVRNQPjSxX0AAXgSiqVaPaY8JRdLYuh8="},"tinymce/plugins/emoticons/img/smiley-yell-bba903fbcb46fce8c68b9e01863fd095b3b1d0e6aa72161f3a88d762a5f90a79.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-yell.gif","mtime":"2018-02-10T17:19:41+01:00","size":336,"digest":"bba903fbcb46fce8c68b9e01863fd095b3b1d0e6aa72161f3a88d762a5f90a79","integrity":"sha256-u6kD+8tG/OjGi54Bhj/QlbOx0OaqchYfOojXYqX5Cnk="},"tinymce/plugins/emoticons/plugin-4e4ed709e1a04969c1d82745d84b01eb7fdd36a19a3529452c81cc2ed4e6b58d.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1838,"digest":"4e4ed709e1a04969c1d82745d84b01eb7fdd36a19a3529452c81cc2ed4e6b58d","integrity":"sha256-Tk7XCeGgSWnB2CdF2EsB63/dNqGaNSlFLIHMLtTmtY0="},"tinymce/plugins/fullpage/plugin-2184bd5db93788e2ead614801f7f96ed7aea38a25dd6f5f94a836807da12f4b7.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":7649,"digest":"2184bd5db93788e2ead614801f7f96ed7aea38a25dd6f5f94a836807da12f4b7","integrity":"sha256-IYS9Xbk3iOLq1hSAH3+W7XrqOKJd1vX5SoNoB9oS9Lc="},"tinymce/plugins/fullscreen/plugin-58355e469e27d887f7c5cedc4ab9c33268605171d0a6ef7539d7889bd6c22e95.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2611,"digest":"58355e469e27d887f7c5cedc4ab9c33268605171d0a6ef7539d7889bd6c22e95","integrity":"sha256-WDVeRp4n2If3xc7cSrnDMmhgUXHQpu91OdeIm9bCLpU="},"tinymce/plugins/help/img/logo-8b03dc4f83c4fea0b62c4f9866898c98e81057c55b3e3b8c1da3f5fdbf0086e9.png":{"logical_path":"tinymce/plugins/help/img/logo.png","mtime":"2017-10-07T16:14:30+02:00","size":23101,"digest":"8b03dc4f83c4fea0b62c4f9866898c98e81057c55b3e3b8c1da3f5fdbf0086e9","integrity":"sha256-iwPcT4PE/qC2LE+YZomMmOgQV8VbPjuMHaP1/b8Ahuk="},"tinymce/plugins/help/plugin-fe41ec41705f0ab8974189c7a262bd6abfca631da91bec80cca08557d933400e.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":13955,"digest":"fe41ec41705f0ab8974189c7a262bd6abfca631da91bec80cca08557d933400e","integrity":"sha256-/kHsQXBfCriXQYnHomK9ar/KYx2pG+yAzKCFV9kzQA4="},"tinymce/plugins/hr/plugin-7e54a59e7cc42e5dbcb208c5e1e171bfa1e07a12a4f2bc29eb924e3b56b2137e.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1198,"digest":"7e54a59e7cc42e5dbcb208c5e1e171bfa1e07a12a4f2bc29eb924e3b56b2137e","integrity":"sha256-flSlnnzELl28sgjF4eFxv6HgehKk8rwp65JOO1ayE34="},"tinymce/plugins/image/plugin-9c58ff73baa30b22932a2940f6499720916ff0667664c0fd1879facb30c7e15e.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":12180,"digest":"9c58ff73baa30b22932a2940f6499720916ff0667664c0fd1879facb30c7e15e","integrity":"sha256-nFj/c7qjCyKTKilA9kmXIJFv8GZ2ZMD9GHn6yzDH4V4="},"tinymce/plugins/imagetools/plugin-cde4e862daaa1072a4a548d462ecd155e4c5798ea673bdab3ba4bf6193123257.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":38257,"digest":"cde4e862daaa1072a4a548d462ecd155e4c5798ea673bdab3ba4bf6193123257","integrity":"sha256-zeToYtqqEHKkpUjUYuzRVeTFeY6mc72rO6S/YZMSMlc="},"tinymce/plugins/importcss/plugin-c9f390348b03c3c6311b5babcb935a60ba6fb23cf30013749dd3cda157b784b9.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3760,"digest":"c9f390348b03c3c6311b5babcb935a60ba6fb23cf30013749dd3cda157b784b9","integrity":"sha256-yfOQNIsDw8YxG1ury5NaYLpvsjzzABN0ndPNoVe3hLk="},"tinymce/plugins/insertdatetime/plugin-918c81e56c28ac5ecf1a7cf1441532a94637da84ae8119d69f5628a42dc1a70a.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2904,"digest":"918c81e56c28ac5ecf1a7cf1441532a94637da84ae8119d69f5628a42dc1a70a","integrity":"sha256-kYyB5WworF7PGnzxRBUyqUY32oSugRnWn1YopC3Bpwo="},"tinymce/plugins/legacyoutput/plugin-367fc211a27027020d9cab6dec42bf1a86f428a507bb47530386439a9d581bd7.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":4184,"digest":"367fc211a27027020d9cab6dec42bf1a86f428a507bb47530386439a9d581bd7","integrity":"sha256-Nn/CEaJwJwINnKtt7EK/Gob0KKUHu0dTA4ZDmp1YG9c="},"tinymce/plugins/link/plugin-188203a47fcc2b8092733c0999105e52aa76af1fc7fa86d82791feee615105e5.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":11309,"digest":"188203a47fcc2b8092733c0999105e52aa76af1fc7fa86d82791feee615105e5","integrity":"sha256-GIIDpH/MK4CSczwJmRBeUqp2rx/H+obYJ5H+7mFRBeU="},"tinymce/plugins/lists/plugin-570f4ed934292f815ba8a8ab0309e44abd776120f629c35a9e6d19d8fb2f7890.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":16394,"digest":"570f4ed934292f815ba8a8ab0309e44abd776120f629c35a9e6d19d8fb2f7890","integrity":"sha256-Vw9O2TQpL4FbqKirAwnkSr13YSD2KcNanm0Z2PsveJA="},"tinymce/plugins/media/plugin-5b4758de69f15a33a07cc4cddd1a896c9de832cdd120b901a7188e57f31cb570.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":16814,"digest":"5b4758de69f15a33a07cc4cddd1a896c9de832cdd120b901a7188e57f31cb570","integrity":"sha256-W0dY3mnxWjOgfMTN3RqJbJ3oMs3RILkBpxiOV/MctXA="},"tinymce/plugins/nonbreaking/plugin-911e6f2517df4ca758f67e28dadebaf921d1b7bb120b23ee2779dce0cf7bb842.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1573,"digest":"911e6f2517df4ca758f67e28dadebaf921d1b7bb120b23ee2779dce0cf7bb842","integrity":"sha256-kR5vJRffTKdY9n4o2t66+SHRt7sSCyPuJ3nc4M97uEI="},"tinymce/plugins/noneditable/plugin-99b4ff9b08ba148764914357b4c626cf07ce5dae739ec678d43fd6f6c6461bc0.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2191,"digest":"99b4ff9b08ba148764914357b4c626cf07ce5dae739ec678d43fd6f6c6461bc0","integrity":"sha256-mbT/mwi6FIdkkUNXtMYmzwfOXa5znsZ41D/W9sZGG8A="},"tinymce/plugins/pagebreak/plugin-ba3703ad8ce5ff341f209e6fa1ab0afdb66d66365dde2f322338d9382f8cabcb.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2152,"digest":"ba3703ad8ce5ff341f209e6fa1ab0afdb66d66365dde2f322338d9382f8cabcb","integrity":"sha256-ujcDrYzl/zQfIJ5voasK/bZtZjZd3i8yIzjZOC+Mq8s="},"tinymce/plugins/paste/plugin-e32879a5ac81dedf097e5a06653c4740fc4fab4766589bab761312d0b2d560c9.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":21374,"digest":"e32879a5ac81dedf097e5a06653c4740fc4fab4766589bab761312d0b2d560c9","integrity":"sha256-4yh5payB3t8JfloGZTxHQPxPq0dmWJurdhMS0LLVYMk="},"tinymce/plugins/preview/plugin-326a8321cd75624f9b746e4efcd8e6f1d5e4d0b2d96155e3b8c8345ec70a95aa.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2611,"digest":"326a8321cd75624f9b746e4efcd8e6f1d5e4d0b2d96155e3b8c8345ec70a95aa","integrity":"sha256-MmqDIc11Yk+bdG5O/Njm8dXk0LLZYVXjuMg0XscKlao="},"tinymce/plugins/print/plugin-360588108f9b3c4d49e62b084a288f7b789d4555ff53eaedd793b7880d5b0799.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1169,"digest":"360588108f9b3c4d49e62b084a288f7b789d4555ff53eaedd793b7880d5b0799","integrity":"sha256-NgWIEI+bPE1J5isISiiPe3idRVX/U+rt15O3iA1bB5k="},"tinymce/plugins/save/plugin-18a4bdbbb2894ce2f3badb7a901ce2b21f18c9cbe54c1c346245ea3092f1d230.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2202,"digest":"18a4bdbbb2894ce2f3badb7a901ce2b21f18c9cbe54c1c346245ea3092f1d230","integrity":"sha256-GKS9u7KJTOLzutt6kBzish8YycvlTBw0YkXqMJLx0jA="},"tinymce/plugins/searchreplace/plugin-cf1237ef21f140faadb3977c326cca488796cae1bafc26f201ab78dd6a498752.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":7494,"digest":"cf1237ef21f140faadb3977c326cca488796cae1bafc26f201ab78dd6a498752","integrity":"sha256-zxI37yHxQPqts5d8MmzKSIeWyuG6/CbyAat43WpJh1I="},"tinymce/plugins/spellchecker/plugin-c4b0e6c01647313b0beda3037aff99d35fd3c10e74afd56329210239cee26a53.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":10081,"digest":"c4b0e6c01647313b0beda3037aff99d35fd3c10e74afd56329210239cee26a53","integrity":"sha256-xLDmwBZHMTsL7aMDev+Z01/TwQ50r9VjKSECOc7ialM="},"tinymce/plugins/tabfocus/plugin-c004f18acdee65bc533bf582e05017cb72a1c78e235e6a6301d7f8cb218f059e.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2368,"digest":"c004f18acdee65bc533bf582e05017cb72a1c78e235e6a6301d7f8cb218f059e","integrity":"sha256-wATxis3uZbxTO/WC4FAXy3Khx44jXmpjAdf4yyGPBZ4="},"tinymce/plugins/table/plugin-dbea734fa37f0c2143ea225ff48c358261941b6cf347292de89f6d503a16cd27.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":48127,"digest":"dbea734fa37f0c2143ea225ff48c358261941b6cf347292de89f6d503a16cd27","integrity":"sha256-2+pzT6N/DCFD6iJf9Iw1gmGUG2zzRykt6J9tUDoWzSc="},"tinymce/plugins/template/plugin-9d2e073f0fa6d0e2c9433260db997138945ea2c73402420a8b12dbba432c5726.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":6762,"digest":"9d2e073f0fa6d0e2c9433260db997138945ea2c73402420a8b12dbba432c5726","integrity":"sha256-nS4HPw+m0OLJQzJg25lxOJReosc0AkIKixLbukMsVyY="},"tinymce/plugins/textcolor/plugin-7f993a50c7d5ca5af4a2117aecbafa820fc5c669bae6916509bc392b21ec10d7.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":5169,"digest":"7f993a50c7d5ca5af4a2117aecbafa820fc5c669bae6916509bc392b21ec10d7","integrity":"sha256-f5k6UMfVylr0ohF67Lr6gg/Fxmm65pFlCbw5KyHsENc="},"tinymce/plugins/textpattern/plugin-3abf3b59885a2b30139e25377c6ebf369e77178752ded63a8ae3a04bba7dabeb.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":4951,"digest":"3abf3b59885a2b30139e25377c6ebf369e77178752ded63a8ae3a04bba7dabeb","integrity":"sha256-Or87WYhaKzATniU3fG6/Np53F4dS3tY6iuOgS7p9q+s="},"tinymce/plugins/toc/plugin-24e4d24233ae96b5d80a1add45fed792c0be45c2ffb266957112465cd45ed0b7.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3764,"digest":"24e4d24233ae96b5d80a1add45fed792c0be45c2ffb266957112465cd45ed0b7","integrity":"sha256-JOTSQjOulrXYChrdRf7XksC+RcL/smaVcRJGXNRe0Lc="},"tinymce/plugins/visualblocks/css/visualblocks-859e261c1d940c90994673ce593b60946710cc4f71371164db4ea695035ea593.css":{"logical_path":"tinymce/plugins/visualblocks/css/visualblocks.css","mtime":"2018-02-10T17:19:41+01:00","size":4995,"digest":"859e261c1d940c90994673ce593b60946710cc4f71371164db4ea695035ea593","integrity":"sha256-hZ4mHB2UDJCZRnPOWTtglGcQzE9xNxFk206mlQNepZM="},"tinymce/plugins/visualblocks/plugin-d65e950bb619d5c52a4fb236da31bb0ecc492e7477e7b0841a2ac06b6faeea26.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2029,"digest":"d65e950bb619d5c52a4fb236da31bb0ecc492e7477e7b0841a2ac06b6faeea26","integrity":"sha256-1l6VC7YZ1cUqT7I22jG7DsxJLnR357CEGirAa2+u6iY="},"tinymce/plugins/visualchars/plugin-d56ff99b2792abbb690ebafe6d70e6c4487a7f5cf2788cb1f3fa4ea62d8b70a2.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":8944,"digest":"d56ff99b2792abbb690ebafe6d70e6c4487a7f5cf2788cb1f3fa4ea62d8b70a2","integrity":"sha256-1W/5myeSq7tpDrr+bXDmxEh6f1zyeIyx8/pOpi2LcKI="},"tinymce/plugins/wordcount/plugin-15f7440d901e81ffa69553b6cb42b1c9ed94c8d9a2417bbe47802539d152bdbc.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":12201,"digest":"15f7440d901e81ffa69553b6cb42b1c9ed94c8d9a2417bbe47802539d152bdbc","integrity":"sha256-FfdEDZAegf+mlVO2y0Kxye2UyNmiQXu+R4AlOdFSvbw="},"tinymce/skins/lightgray/content.inline.min-244f66927d819115fc6403d3562ac16d18884dcd2ca4766e464a03ec6f223adf.css":{"logical_path":"tinymce/skins/lightgray/content.inline.min.css","mtime":"2017-10-07T16:14:30+02:00","size":3335,"digest":"244f66927d819115fc6403d3562ac16d18884dcd2ca4766e464a03ec6f223adf","integrity":"sha256-JE9mkn2BkRX8ZAPTVirBbRiITc0spHZuRkoD7G8iOt8="},"tinymce/skins/lightgray/content.min-c59b96ac316de5e14c27896f4ffdfb27da41502112b8a9c5ea0851a25a742e4e.css":{"logical_path":"tinymce/skins/lightgray/content.min.css","mtime":"2017-10-07T16:14:30+02:00","size":3741,"digest":"c59b96ac316de5e14c27896f4ffdfb27da41502112b8a9c5ea0851a25a742e4e","integrity":"sha256-xZuWrDFt5eFMJ4lvT/37J9pBUCESuKnF6ghRolp0Lk4="},"tinymce/skins/lightgray/fonts/tinymce-small-a10fc4343d95b716c16d77463d475be5c079599ea67e1cd2bd3a94d5e7f508f9.eot":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.eot","mtime":"2018-02-10T17:19:41+01:00","size":9492,"digest":"a10fc4343d95b716c16d77463d475be5c079599ea67e1cd2bd3a94d5e7f508f9","integrity":"sha256-oQ/END2VtxbBbXdGPUdb5cB5WZ6mfhzSvTqU1ef1CPk="},"tinymce/skins/lightgray/fonts/tinymce-small-e7773001446ab937e1d8d4bd5e8dbd9b31d112037353a14b319e36dd010ed8ee.svg":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.svg","mtime":"2018-02-10T17:19:41+01:00","size":24727,"digest":"e7773001446ab937e1d8d4bd5e8dbd9b31d112037353a14b319e36dd010ed8ee","integrity":"sha256-53cwAURquTfh2NS9Xo29mzHREgNzU6FLMZ423QEO2O4="},"tinymce/skins/lightgray/fonts/tinymce-small-2f657502906d6f5c3fc8df3a82969114ebe030addfdc061c60c974b0f515fd09.ttf":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.ttf","mtime":"2018-02-10T17:19:41+01:00","size":9304,"digest":"2f657502906d6f5c3fc8df3a82969114ebe030addfdc061c60c974b0f515fd09","integrity":"sha256-L2V1ApBtb1w/yN86gpaRFOvgMK3f3AYcYMl0sPUV/Qk="},"tinymce/skins/lightgray/fonts/tinymce-small-d3efbb678ca6de5632902bd93772746ba2f8e4e2322b953936e12694a183aa31.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.woff","mtime":"2018-02-10T17:19:41+01:00","size":9380,"digest":"d3efbb678ca6de5632902bd93772746ba2f8e4e2322b953936e12694a183aa31","integrity":"sha256-0++7Z4ym3lYykCvZN3J0a6L45OIyK5U5NuEmlKGDqjE="},"tinymce/skins/lightgray/fonts/tinymce-2e9c4a68fde992476e0db9e44128cb1f2e898f0de0b80f552a8acb52bb7ca0db.eot":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.eot","mtime":"2017-12-25T19:51:42+01:00","size":17572,"digest":"2e9c4a68fde992476e0db9e44128cb1f2e898f0de0b80f552a8acb52bb7ca0db","integrity":"sha256-LpxKaP3pkkduDbnkQSjLHy6Jjw3guA9VKorLUrt8oNs="},"tinymce/skins/lightgray/fonts/tinymce-2094ddadc265c7f33570475fc78ef7adcdcb814e49060d17f5b4c4f8d1cb7ec6.svg":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.svg","mtime":"2017-12-25T19:51:42+01:00","size":45991,"digest":"2094ddadc265c7f33570475fc78ef7adcdcb814e49060d17f5b4c4f8d1cb7ec6","integrity":"sha256-IJTdrcJlx/M1cEdfx473rc3LgU5JBg0X9bTE+NHLfsY="},"tinymce/skins/lightgray/fonts/tinymce-477ea2d46c1a975dd492af4c10235fabfd09069595779cce00ea0381ca9b4a20.ttf":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.ttf","mtime":"2017-12-25T19:51:42+01:00","size":17408,"digest":"477ea2d46c1a975dd492af4c10235fabfd09069595779cce00ea0381ca9b4a20","integrity":"sha256-R36i1Gwal13Ukq9MECNfq/0JBpWVd5zOAOoDgcqbSiA="},"tinymce/skins/lightgray/fonts/tinymce-1ebc636bb24cbea637946ba8c22cbf4f35d8343ba9763045d2aee59e3714ae78.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.woff","mtime":"2017-12-25T19:51:42+01:00","size":17484,"digest":"1ebc636bb24cbea637946ba8c22cbf4f35d8343ba9763045d2aee59e3714ae78","integrity":"sha256-Hrxja7JMvqY3lGuowiy/TzXYNDupdjBF0q7lnjcUrng="},"tinymce/skins/lightgray/img/anchor-2861666fd107d278d4449970615136d06d7f746be9bb19072cf9c8f30e565e1e.gif":{"logical_path":"tinymce/skins/lightgray/img/anchor.gif","mtime":"2018-02-10T17:19:41+01:00","size":53,"digest":"2861666fd107d278d4449970615136d06d7f746be9bb19072cf9c8f30e565e1e","integrity":"sha256-KGFmb9EH0njURJlwYVE20G1/dGvpuxkHLPnI8w5WXh4="},"tinymce/skins/lightgray/img/loader-eb7cfd3d959b2e09c170f532e29f8b825f9bc770b2279fde58e595617753e244.gif":{"logical_path":"tinymce/skins/lightgray/img/loader.gif","mtime":"2018-02-10T17:19:41+01:00","size":2608,"digest":"eb7cfd3d959b2e09c170f532e29f8b825f9bc770b2279fde58e595617753e244","integrity":"sha256-63z9PZWbLgnBcPUy4p+Lgl+bx3CyJ5/eWOWVYXdT4kQ="},"tinymce/skins/lightgray/img/object-e6a15e52bc4a17b085073ba8debd4708ead6ae3d4cbeb3880c65cb7afc489777.gif":{"logical_path":"tinymce/skins/lightgray/img/object.gif","mtime":"2018-02-10T17:19:41+01:00","size":152,"digest":"e6a15e52bc4a17b085073ba8debd4708ead6ae3d4cbeb3880c65cb7afc489777","integrity":"sha256-5qFeUrxKF7CFBzuo3r1HCOrWrj1MvrOIDGXLevxIl3c="},"tinymce/skins/lightgray/img/trans-9cf020d7c3bba7f5ab10cda54aabef934f906d4f9a3acf99e9e7dc6c98579635.gif":{"logical_path":"tinymce/skins/lightgray/img/trans.gif","mtime":"2018-02-10T17:19:41+01:00","size":43,"digest":"9cf020d7c3bba7f5ab10cda54aabef934f906d4f9a3acf99e9e7dc6c98579635","integrity":"sha256-nPAg18O7p/WrEM2lSqvvk0+QbU+aOs+Z6efcbJhXljU="},"tinymce/skins/lightgray/skin.min-b12163641969e8e7775e00e73f8691e2892c35bf53d399deb4399832950c8acf.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2017-10-07T16:14:30+02:00","size":40376,"digest":"b12163641969e8e7775e00e73f8691e2892c35bf53d399deb4399832950c8acf","integrity":"sha256-sSFjZBlp6Od3XgDnP4aR4oksNb9T05netDmYMpUMis8="},"tinymce/themes/inlite/theme-705c8874883e10384f2f0f31576331734af05e4871ea70c8b54c09acf68b562a.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2017-10-07T16:14:30+02:00","size":17114,"digest":"705c8874883e10384f2f0f31576331734af05e4871ea70c8b54c09acf68b562a","integrity":"sha256-cFyIdIg+EDhPLw8xV2Mxc0rwXkhx6nDItUwJrPaLVio="},"tinymce/themes/modern/theme-acb8d1f30de151cc3b7f6b5131ed0e7e45abfd745256260b2d57b3594c97c685.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2017-10-07T16:14:30+02:00","size":14361,"digest":"acb8d1f30de151cc3b7f6b5131ed0e7e45abfd745256260b2d57b3594c97c685","integrity":"sha256-rLjR8w3hUcw7f2tRMe0OfkWr/XRSViYLLVezWUyXxoU="},"application-a3e14c617593fb4bc194d8021b38514c9b130e782e45cf92a07e546d36602c13.js":{"logical_path":"application.js","mtime":"2017-10-14T19:50:25+02:00","size":2822537,"digest":"a3e14c617593fb4bc194d8021b38514c9b130e782e45cf92a07e546d36602c13","integrity":"sha256-o+FMYXWT+0vBlNgCGzhRTJsTDnguRc+SoH5UbTZgLBM="},"tinymce-e0a997125d47cb527bd10d048179b98997bbac47ebaca5bd3e7a7439ae29d0f0.js":{"logical_path":"tinymce.js","mtime":"2018-01-05T22:13:22+01:00","size":1370217,"digest":"e0a997125d47cb527bd10d048179b98997bbac47ebaca5bd3e7a7439ae29d0f0","integrity":"sha256-4KmXEl1Hy1J70Q0EgXm5iZe7rEfrrKW9Pnp0Oa4p0PA="},"application-9b741d81e960c215cca53ea2b4e0bda53cfedf35d173e3075fa3aa0b1ed8ef0a.js":{"logical_path":"application.js","mtime":"2018-01-05T22:13:22+01:00","size":2459274,"digest":"9b741d81e960c215cca53ea2b4e0bda53cfedf35d173e3075fa3aa0b1ed8ef0a","integrity":"sha256-m3QdgelgwhXMpT6itOC9pTz+3zXRc+MHX6OqCx7Y7wo="},"application-661f8a3a1589512fce34b1382f6b7a631001f9cf430896fc658c95562edff4b7.css":{"logical_path":"application.css","mtime":"2018-01-05T22:13:22+01:00","size":230014,"digest":"661f8a3a1589512fce34b1382f6b7a631001f9cf430896fc658c95562edff4b7","integrity":"sha256-Zh+KOhWJUS/ONLE4L2t6YxAB+c9DCJb8ZYyVVi7f9Lc="},"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js":{"logical_path":"tinymce/preinit.js","mtime":"2018-02-10T17:19:41+01:00","size":82,"digest":"84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89","integrity":"sha256-hDKKU+eY3xL4ketJhxdz/Z+SVDnIYw6eIkI6gu+eb4k="},"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js":{"logical_path":"tinymce/rails.js","mtime":"2018-02-10T17:19:41+01:00","size":1345,"digest":"bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca","integrity":"sha256-v3/VyVLyVIEBB1jd5qJoFJgHT5UJIw9gGzFzVqalT8o="},"tinymce/tinymce-cccbb9fb34a9d8d8634a3a9ae0080ca394081f2b98cd81c4c378c5a1d73fba21.js":{"logical_path":"tinymce/tinymce.js","mtime":"2017-12-25T19:51:42+01:00","size":1368787,"digest":"cccbb9fb34a9d8d8634a3a9ae0080ca394081f2b98cd81c4c378c5a1d73fba21","integrity":"sha256-zMu5+zSp2NhjSjqa4AgMo5QIHyuYzYHEw3jFodc/uiE="},"tinymce/jquery.tinymce-c9ec5ed0b9118216bc9aa1ad4a251afff33d2c60e62057737b026003ab34efb3.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2017-12-25T19:51:42+01:00","size":4353,"digest":"c9ec5ed0b9118216bc9aa1ad4a251afff33d2c60e62057737b026003ab34efb3","integrity":"sha256-yexe0LkRgha8mqGtSiUa//M9LGDmIFdzewJgA6s077M="},"tinymce/plugins/advlist/plugin-1470ecd481c44e215caf021f095382fb9960da96dc0986228f269dbba0067d4a.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3704,"digest":"1470ecd481c44e215caf021f095382fb9960da96dc0986228f269dbba0067d4a","integrity":"sha256-FHDs1IHETiFcrwIfCVOC+5lg2pbcCYYijyadu6AGfUo="},"tinymce/plugins/anchor/plugin-c0c08d516edff61b4216b240af7f77487a035272794d0aef1c924a67129ac067.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2595,"digest":"c0c08d516edff61b4216b240af7f77487a035272794d0aef1c924a67129ac067","integrity":"sha256-wMCNUW7f9htCFrJAr393SHoDUnJ5TQrvHJJKZxKawGc="},"tinymce/plugins/autolink/plugin-a13df878211dfb03dda14031db66bbc8021b6b55e1da4447a96ee50ea0ba86e0.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3283,"digest":"a13df878211dfb03dda14031db66bbc8021b6b55e1da4447a96ee50ea0ba86e0","integrity":"sha256-oT34eCEd+wPdoUAx22a7yAIba1Xh2kRHqW7lDqC6huA="},"tinymce/plugins/autoresize/plugin-4cb04cc171a4e3f3b3b69770c74c53ec2ac0a743c303c2f5072b7f7c0d71c187.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3400,"digest":"4cb04cc171a4e3f3b3b69770c74c53ec2ac0a743c303c2f5072b7f7c0d71c187","integrity":"sha256-TLBMwXGk4/Oztpdwx0xT7CrAp0PDA8L1Byt/fA1xwYc="},"tinymce/plugins/autosave/plugin-b471db0ebd9f584c62a614a85fa16ae06cadce14af85ee5b2e39b84d0c9ec05c.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4787,"digest":"b471db0ebd9f584c62a614a85fa16ae06cadce14af85ee5b2e39b84d0c9ec05c","integrity":"sha256-tHHbDr2fWExiphSoX6Fq4GytzhSvhe5bLjm4TQyewFw="},"tinymce/plugins/bbcode/plugin-b624047c40c5435b935c2591fbf0eb851ae7794d9350b611b10bb6b23aa4bd9c.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3771,"digest":"b624047c40c5435b935c2591fbf0eb851ae7794d9350b611b10bb6b23aa4bd9c","integrity":"sha256-tiQEfEDFQ1uTXCWR+/DrhRrneU2TULYRsQu2sjqkvZw="},"tinymce/plugins/charmap/plugin-8f5abea75aec0a80dd6328f29da433574c8a9b025fea0a3b2cb8127605dda330.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":10091,"digest":"8f5abea75aec0a80dd6328f29da433574c8a9b025fea0a3b2cb8127605dda330","integrity":"sha256-j1q+p1rsCoDdYyjynaQzV0yKmwJf6go7LLgSdgXdozA="},"tinymce/plugins/code/plugin-41ed678cf1339c20afc948e499212d06bd502c3d4a94da1d37ad427ec525f123.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2209,"digest":"41ed678cf1339c20afc948e499212d06bd502c3d4a94da1d37ad427ec525f123","integrity":"sha256-Qe1njPEznCCvyUjkmSEtBr1QLD1KlNodN61CfsUl8SM="},"tinymce/plugins/codesample/plugin-a59fe13189ec82797e929ebf320e294669e73fc040d5a4505e3ab01f6b96daaa.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":21159,"digest":"a59fe13189ec82797e929ebf320e294669e73fc040d5a4505e3ab01f6b96daaa","integrity":"sha256-pZ/hMYnsgnl+kp6/Mg4pRmnnP8BA1aRQXjqwH2uW2qo="},"tinymce/plugins/colorpicker/plugin-e48f5ad978732e6129285d3aa00dfaf5d7b670dc189629835ad888438963bc3d.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2230,"digest":"e48f5ad978732e6129285d3aa00dfaf5d7b670dc189629835ad888438963bc3d","integrity":"sha256-5I9a2XhzLmEpKF06oA369de2cNwYlimDWtiIQ4ljvD0="},"tinymce/plugins/contextmenu/plugin-d9e7ddcde9ffdbdb2eec811e817b822662234b90d6046fba0ed5a77c5cc0c3d7.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3139,"digest":"d9e7ddcde9ffdbdb2eec811e817b822662234b90d6046fba0ed5a77c5cc0c3d7","integrity":"sha256-2efdzen/29su7IEegXuCJmIjS5DWBG+6DtWnfFzAw9c="},"tinymce/plugins/directionality/plugin-d2e6f8a1c65b0c9e6484d356263e8afc3dc7d3c4c9bbf2bb2155599063f427e5.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":1859,"digest":"d2e6f8a1c65b0c9e6484d356263e8afc3dc7d3c4c9bbf2bb2155599063f427e5","integrity":"sha256-0ub4ocZbDJ5khNNWJj6K/D3H08TJu/K7IVVZkGP0J+U="},"tinymce/plugins/emoticons/plugin-d57266d91f221127649a29316e2a6b33a89281d5e546b0688cf177d56144b62d.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2014,"digest":"d57266d91f221127649a29316e2a6b33a89281d5e546b0688cf177d56144b62d","integrity":"sha256-1XJm2R8iESdkmikxbiprM6iSgdXlRrBojPF31WFEti0="},"tinymce/plugins/fullpage/plugin-04d845d28977b02b9669d861dc21188ca666de825803eef4e57c040d40249562.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":8990,"digest":"04d845d28977b02b9669d861dc21188ca666de825803eef4e57c040d40249562","integrity":"sha256-BNhF0ol3sCuWadhh3CEYjKZm3oJYA+705XwEDUAklWI="},"tinymce/plugins/fullscreen/plugin-f8bbdd50ed0196693f9d98d1e478cc4d18a65270cc1517eca5a03d6eeefd369a.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3430,"digest":"f8bbdd50ed0196693f9d98d1e478cc4d18a65270cc1517eca5a03d6eeefd369a","integrity":"sha256-+LvdUO0Blmk/nZjR5HjMTRimUnDMFRfspaA9bu79Npo="},"tinymce/plugins/help/img/logo-95b06f8538b11c4c30170075a09f93cf5871f74dd2541e95ad3d9da31976fcac.png":{"logical_path":"tinymce/plugins/help/img/logo.png","mtime":"2018-02-10T17:19:41+01:00","size":13208,"digest":"95b06f8538b11c4c30170075a09f93cf5871f74dd2541e95ad3d9da31976fcac","integrity":"sha256-lbBvhTixHEwwFwB1oJ+Tz1hx903SVB6VrT2doxl2/Kw="},"tinymce/plugins/help/plugin-18f46f77691cc2f94b36c711b01da5f867cfe14faf2fb84c9e8886782ce3de52.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":14457,"digest":"18f46f77691cc2f94b36c711b01da5f867cfe14faf2fb84c9e8886782ce3de52","integrity":"sha256-GPRvd2kcwvlLNscRsB2l+GfP4U+vL7hMnoiGeCzj3lI="},"tinymce/plugins/hr/plugin-9664dcccc57ea070459d3ba1aba0916f22c941d7a601f9d4cc91b9d29365b15a.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":1355,"digest":"9664dcccc57ea070459d3ba1aba0916f22c941d7a601f9d4cc91b9d29365b15a","integrity":"sha256-lmTczMV+oHBFnTuhq6CRbyLJQdemAfnUzJG50pNlsVo="},"tinymce/plugins/image/plugin-1f27e4ea86eb5aa38162dd5ba9dc2c4dd1ee8bd5d11f5583420979cf05d16f86.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":15667,"digest":"1f27e4ea86eb5aa38162dd5ba9dc2c4dd1ee8bd5d11f5583420979cf05d16f86","integrity":"sha256-Hyfk6obrWqOBYt1bqdwsTdHui9XRH1WDQgl5zwXRb4Y="},"tinymce/plugins/imagetools/plugin-c4dab69e83c305806965c9b31f0ea987b2e2a82a7cb893376775e06cf233a59c.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":41850,"digest":"c4dab69e83c305806965c9b31f0ea987b2e2a82a7cb893376775e06cf233a59c","integrity":"sha256-xNq2noPDBYBpZcmzHw6ph7LiqCp8uJM3Z3XgbPIzpZw="},"tinymce/plugins/importcss/plugin-cbf47759816f889168075dc99299a2c0913572f8edcc2e1ef4b994b9b61cae30.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4619,"digest":"cbf47759816f889168075dc99299a2c0913572f8edcc2e1ef4b994b9b61cae30","integrity":"sha256-y/R3WYFviJFoB13JkpmiwJE1cvjtzC4e9LmUubYcrjA="},"tinymce/plugins/insertdatetime/plugin-75e743483171dc0dc5b35e040cd1ff5d6ef7d4e2d609dc1ce68589420ccc07c2.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4725,"digest":"75e743483171dc0dc5b35e040cd1ff5d6ef7d4e2d609dc1ce68589420ccc07c2","integrity":"sha256-dedDSDFx3A3Fs14EDNH/XW731OLWCdwc5oWJQgzMB8I="},"tinymce/plugins/legacyoutput/plugin-46d0010c4bcbf3c9f0a737f16a659768461a617884441096dae0102a2654a089.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4352,"digest":"46d0010c4bcbf3c9f0a737f16a659768461a617884441096dae0102a2654a089","integrity":"sha256-RtABDEvL88nwpzfxamWXaEYaYXiERBCW2uAQKiZUoIk="},"tinymce/plugins/link/plugin-bc112313d4019d56fc62bf3d7feac911b1eb5e8b1272256e8e926380f098599e.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":11480,"digest":"bc112313d4019d56fc62bf3d7feac911b1eb5e8b1272256e8e926380f098599e","integrity":"sha256-vBEjE9QBnVb8Yr89f+rJEbHrXosSciVujpJjgPCYWZ4="},"tinymce/plugins/lists/plugin-52d9f2d934ac50304bdd9159bd3982ca5b39afdc23aaae86d1ac47ccf559c025.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":17665,"digest":"52d9f2d934ac50304bdd9159bd3982ca5b39afdc23aaae86d1ac47ccf559c025","integrity":"sha256-Utny2TSsUDBL3ZFZvTmCyls5r9wjqq6G0axHzPVZwCU="},"tinymce/plugins/media/plugin-49171347d2bc7f405eacee0b753912075a966708924af29ca75007f0c0b532a2.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":18047,"digest":"49171347d2bc7f405eacee0b753912075a966708924af29ca75007f0c0b532a2","integrity":"sha256-SRcTR9K8f0BerO4LdTkSB1qWZwiSSvKcp1AH8MC1MqI="},"tinymce/plugins/nonbreaking/plugin-a63cb86503260a85efe7db0b1521c0d0a80cd27f46706713230938e0c44bd670.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2049,"digest":"a63cb86503260a85efe7db0b1521c0d0a80cd27f46706713230938e0c44bd670","integrity":"sha256-pjy4ZQMmCoXv59sLFSHA0KgM0n9GcGcTIwk44MRL1nA="},"tinymce/plugins/noneditable/plugin-e74020a6f58e8c258309f4536aeea2a896a795cb13d69696c388e4246c54578b.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2610,"digest":"e74020a6f58e8c258309f4536aeea2a896a795cb13d69696c388e4246c54578b","integrity":"sha256-50AgpvWOjCWDCfRTau6iqJanlcsT1paWw4jkJGxUV4s="},"tinymce/plugins/pagebreak/plugin-839ecfcf70f7d0365c2d1e3ef3a55595069b938c19aeede714bc31b61a67026b.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2684,"digest":"839ecfcf70f7d0365c2d1e3ef3a55595069b938c19aeede714bc31b61a67026b","integrity":"sha256-g57Pz3D30DZcLR4+86VVlQabk4wZru3nFLwxthpnAms="},"tinymce/plugins/paste/plugin-931ce6f77c1daecc9e5c613b90cad50d5789099add967b7b13774defbd192b0f.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":24617,"digest":"931ce6f77c1daecc9e5c613b90cad50d5789099add967b7b13774defbd192b0f","integrity":"sha256-kxzm93wdrsyeXGE7kMrVDVeJCZrdlnt7E3dN770ZKw8="},"tinymce/plugins/preview/plugin-41472eb0321860529e83e84e54a86f32c5c0858a16c8e7738b838e31266447bc.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3346,"digest":"41472eb0321860529e83e84e54a86f32c5c0858a16c8e7738b838e31266447bc","integrity":"sha256-QUcusDIYYFKeg+hOVKhvMsXAhYoWyOdzi4OOMSZkR7w="},"tinymce/plugins/print/plugin-a7cd4beef6dde992d25d4d6720a5a2d9d15afca45e037d123a41a82ef431c78f.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":1293,"digest":"a7cd4beef6dde992d25d4d6720a5a2d9d15afca45e037d123a41a82ef431c78f","integrity":"sha256-p81L7vbd6ZLSXU1nIKWi2dFa/KReA30SOkGoLvQxx48="},"tinymce/plugins/save/plugin-e48e177a9505d7a21fb22a62d400fb95c30aa3f9de119f5531eb360f7c52fe7b.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2635,"digest":"e48e177a9505d7a21fb22a62d400fb95c30aa3f9de119f5531eb360f7c52fe7b","integrity":"sha256-5I4XepUF16Ifsipi1AD7lcMKo/neEZ9VMes2D3xS/ns="},"tinymce/plugins/searchreplace/plugin-43e62c6dc566523c4e4bf782d73819568072db159cefa29adddf5f8aa9c2d06b.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":8571,"digest":"43e62c6dc566523c4e4bf782d73819568072db159cefa29adddf5f8aa9c2d06b","integrity":"sha256-Q+YsbcVmUjxOS/eC1zgZVoBy2xWc76Ka3d9fiqnC0Gs="},"tinymce/plugins/spellchecker/plugin-611b439b3cce8c78a716a66500a38fc7be57b09d9cd4bf3f3d72de0fe3a9a4dd.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":12144,"digest":"611b439b3cce8c78a716a66500a38fc7be57b09d9cd4bf3f3d72de0fe3a9a4dd","integrity":"sha256-YRtDmzzOjHinFqZlAKOPx75XsJ2c1L8/PXLeD+OppN0="},"tinymce/plugins/tabfocus/plugin-419ef25b5f1aab6043e496e4f6132d3b0505ffa5398e3b66f7e8a8280268077d.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2645,"digest":"419ef25b5f1aab6043e496e4f6132d3b0505ffa5398e3b66f7e8a8280268077d","integrity":"sha256-QZ7yW18aq2BD5Jbk9hMtOwUF/6U5jjtm9+ioKAJoB30="},"tinymce/plugins/table/plugin-0d4057859445665d58e85d861f2bbf5f983dfa6014b99b6cca0a6561309deb94.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":159001,"digest":"0d4057859445665d58e85d861f2bbf5f983dfa6014b99b6cca0a6561309deb94","integrity":"sha256-DUBXhZRFZl1Y6F2GHyu/X5g9+mAUuZtsygplYTCd65Q="},"tinymce/plugins/template/plugin-0ea66983b1cfb34cd2ea8e73ec305c1156174ef0e932132bee2dfa4b99cbb4f5.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":7786,"digest":"0ea66983b1cfb34cd2ea8e73ec305c1156174ef0e932132bee2dfa4b99cbb4f5","integrity":"sha256-DqZpg7HPs0zS6o5z7DBcEVYXTvDpMhMr7i36S5nLtPU="},"tinymce/plugins/textcolor/plugin-c8cecbcd75555cc03593b9dedaf2b6ffb78dffc92974d2d1bf7f65b94ab61d30.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":6210,"digest":"c8cecbcd75555cc03593b9dedaf2b6ffb78dffc92974d2d1bf7f65b94ab61d30","integrity":"sha256-yM7LzXVVXMA1k7ne2vK2/7eN/8kpdNLRv39luUq2HTA="},"tinymce/plugins/textpattern/plugin-411ee2dc5fa1d8386fc59eae170f80369ed6d2d2990d609dbcfc656262c6620b.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":5819,"digest":"411ee2dc5fa1d8386fc59eae170f80369ed6d2d2990d609dbcfc656262c6620b","integrity":"sha256-QR7i3F+h2DhvxZ6uFw+ANp7W0tKZDWCdvPxlYmLGYgs="},"tinymce/plugins/toc/plugin-b7f229f800cabbbaea4e36a56981011cbddff446bd383ecbb28ddbd4b9cc55bd.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4374,"digest":"b7f229f800cabbbaea4e36a56981011cbddff446bd383ecbb28ddbd4b9cc55bd","integrity":"sha256-t/Ip+ADKu7rqTjalaYEBHL3f9Ea9OD7Lso3b1LnMVb0="},"tinymce/plugins/visualblocks/plugin-58fa11272d279775e4b12858c1d2acc2e1b5feebe84b3db3ee7df855665d12e4.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3095,"digest":"58fa11272d279775e4b12858c1d2acc2e1b5feebe84b3db3ee7df855665d12e4","integrity":"sha256-WPoRJy0nl3XksShYwdKswuG1/uvoSz2z7n34VWZdEuQ="},"tinymce/plugins/visualchars/plugin-9963828126c769478acfc74773441472c043518d458c4777c0e766d3298dbcaf.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":10007,"digest":"9963828126c769478acfc74773441472c043518d458c4777c0e766d3298dbcaf","integrity":"sha256-mWOCgSbHaUeKz8dHc0QUcsBDUY1FjEd3wOdm0ymNvK8="},"tinymce/plugins/wordcount/plugin-049da43cf52b32d85ec1ea85bb6ea65ef08e31ff3a26ceac93885974094db7f1.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":12538,"digest":"049da43cf52b32d85ec1ea85bb6ea65ef08e31ff3a26ceac93885974094db7f1","integrity":"sha256-BJ2kPPUrMtheweqFu26mXvCOMf86Js6sk4hZdAlNt/E="},"tinymce/skins/lightgray/content.inline.min-58c28f0e832b8f0622b03e4d5faaada2cb2c481a1ec171de02de97fe84555b19.css":{"logical_path":"tinymce/skins/lightgray/content.inline.min.css","mtime":"2018-02-10T17:19:41+01:00","size":3327,"digest":"58c28f0e832b8f0622b03e4d5faaada2cb2c481a1ec171de02de97fe84555b19","integrity":"sha256-WMKPDoMrjwYisD5NX6qtosssSBoewXHeAt6X/oRVWxk="},"tinymce/skins/lightgray/content.min-9aaa337dc1206c756b48c9ea0444faac9402206186069dc7423e912a71460055.css":{"logical_path":"tinymce/skins/lightgray/content.min.css","mtime":"2018-02-10T17:19:41+01:00","size":3733,"digest":"9aaa337dc1206c756b48c9ea0444faac9402206186069dc7423e912a71460055","integrity":"sha256-mqozfcEgbHVrSMnqBET6rJQCIGGGBp3HQj6RKnFGAFU="},"tinymce/skins/lightgray/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css":{"logical_path":"tinymce/skins/lightgray/content.mobile.min.css","mtime":"2018-02-10T17:19:41+01:00","size":235,"digest":"230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346","integrity":"sha256-Iwwx9lNWx8sXmSRKNPenIskqbWFOBuWdSNsOvM1/I0Y="},"tinymce/skins/lightgray/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-mobile.woff","mtime":"2018-02-10T17:19:41+01:00","size":4624,"digest":"e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213","integrity":"sha256-5kvxVqQy1j9bNLRWe1E9wNNRtJFhx/YI+4JXS/3Z0hM="},"tinymce/skins/lightgray/skin.min-0ba2274577ef3fe1e07c73ada6e6e6fb6e6db9dc0e2aeba6053e7395c66215e8.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2017-12-25T19:51:42+01:00","size":43094,"digest":"0ba2274577ef3fe1e07c73ada6e6e6fb6e6db9dc0e2aeba6053e7395c66215e8","integrity":"sha256-C6InRXfvP+HgfHOtpubm+25tudwOKuumBT5zlcZiFeg="},"tinymce/skins/lightgray/skin.mobile.min-fe907c53c1657dd3f3c3cc22926b2f6a342a345d2b2f1a7953e3fdceb2841d4c.css":{"logical_path":"tinymce/skins/lightgray/skin.mobile.min.css","mtime":"2018-02-10T17:19:41+01:00","size":27962,"digest":"fe907c53c1657dd3f3c3cc22926b2f6a342a345d2b2f1a7953e3fdceb2841d4c","integrity":"sha256-/pB8U8FlfdPzw8wikmsvajQqNF0rLxp5U+P9zrKEHUw="},"tinymce/themes/inlite/theme-16e3ffb72e6e35097ba84668d5abd271f62120ba315d95d852f9210621952e54.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2017-12-25T19:51:42+01:00","size":154354,"digest":"16e3ffb72e6e35097ba84668d5abd271f62120ba315d95d852f9210621952e54","integrity":"sha256-FuP/ty5uNQl7qEZo1avScfYhILoxXZXYUvkhBiGVLlQ="},"tinymce/themes/mobile/theme-c3d08a70821c5f901e5b53dbf05548b0c7dc5424c8c42a260b3e5b496fbdb65c.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2017-12-25T19:51:42+01:00","size":231954,"digest":"c3d08a70821c5f901e5b53dbf05548b0c7dc5424c8c42a260b3e5b496fbdb65c","integrity":"sha256-w9CKcIIcX5AeW1Pb8FVIsMfcVCTIxComCz5bSW+9tlw="},"tinymce/themes/modern/theme-c648c4f32163d55e6b2311339a3a1d29e039b7f79ed5271854663cc013e9052c.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2017-12-25T19:51:42+01:00","size":152847,"digest":"c648c4f32163d55e6b2311339a3a1d29e039b7f79ed5271854663cc013e9052c","integrity":"sha256-xkjE8yFj1V5rIxEzmjodKeA5t/ee1ScYVGY8wBPpBSw="},"tinymce/langs/af_ZA-6d5614830d9cc3d504d9922bf5373665246936adc337530a7a672e9bf5fc21ea.js":{"logical_path":"tinymce/langs/af_ZA.js","mtime":"2018-01-05T22:13:22+01:00","size":7669,"digest":"6d5614830d9cc3d504d9922bf5373665246936adc337530a7a672e9bf5fc21ea","integrity":"sha256-bVYUgw2cw9UE2ZIr9Tc2ZSRpNq3DN1MKemcum/X8Ieo="},"tinymce/langs/ar-5a0ab86d268d50c7c9462e0645b96e6c09d928976c0b27007f85f7c5638cbbf8.js":{"logical_path":"tinymce/langs/ar.js","mtime":"2018-01-05T22:13:22+01:00","size":21817,"digest":"5a0ab86d268d50c7c9462e0645b96e6c09d928976c0b27007f85f7c5638cbbf8","integrity":"sha256-Wgq4bSaNUMfJRi4GRblubAnZKJdsCycAf4X3xWOMu/g="},"tinymce/langs/be-2d601b695076754977002cf73d6809919ca8c0758850a45e34a692af7b08fb1d.js":{"logical_path":"tinymce/langs/be.js","mtime":"2018-01-05T22:13:22+01:00","size":22653,"digest":"2d601b695076754977002cf73d6809919ca8c0758850a45e34a692af7b08fb1d","integrity":"sha256-LWAbaVB2dUl3ACz3PWgJkZyowHWIUKReNKaSr3sI+x0="},"tinymce/langs/bg_BG-0272f963807ba8672db0d5f6b8919d2f3aa2f8bb172a17c5f8c2934760ba0dce.js":{"logical_path":"tinymce/langs/bg_BG.js","mtime":"2018-01-05T22:13:22+01:00","size":28023,"digest":"0272f963807ba8672db0d5f6b8919d2f3aa2f8bb172a17c5f8c2934760ba0dce","integrity":"sha256-AnL5Y4B7qGctsNX2uJGdLzqi+LsXKhfF+MKTR2C6Dc4="},"tinymce/langs/ca-e4765b96adf2232248998c6b703730652cd4302035ee39733cd6e5df8d79ee22.js":{"logical_path":"tinymce/langs/ca.js","mtime":"2018-01-05T22:13:22+01:00","size":9647,"digest":"e4765b96adf2232248998c6b703730652cd4302035ee39733cd6e5df8d79ee22","integrity":"sha256-5HZblq3yIyJImYxrcDcwZSzUMCA17jlzPNbl34157iI="},"tinymce/langs/cs-77418e2f6150bfb0391227eeff79499f8654a9fcc5314f30ec88e4684e8e5fa6.js":{"logical_path":"tinymce/langs/cs.js","mtime":"2018-01-05T22:13:22+01:00","size":10817,"digest":"77418e2f6150bfb0391227eeff79499f8654a9fcc5314f30ec88e4684e8e5fa6","integrity":"sha256-d0GOL2FQv7A5Eifu/3lJn4ZUqfzFMU8w7IjkaE6OX6Y="},"tinymce/langs/cy-d337e01ca993cd9fb80ce3fccc39dff7f1dc47021264bf9ec14ac9af2b3d74b5.js":{"logical_path":"tinymce/langs/cy.js","mtime":"2018-01-05T22:13:22+01:00","size":7751,"digest":"d337e01ca993cd9fb80ce3fccc39dff7f1dc47021264bf9ec14ac9af2b3d74b5","integrity":"sha256-0zfgHKmTzZ+4DOP8zDnf9/HcRwISZL+ewUrJrys9dLU="},"tinymce/langs/da-4a040df5d2a225dcd10aa1c7d05ff7f36a854d4834919497812c3ba5aa5b06f4.js":{"logical_path":"tinymce/langs/da.js","mtime":"2018-01-05T22:13:22+01:00","size":9262,"digest":"4a040df5d2a225dcd10aa1c7d05ff7f36a854d4834919497812c3ba5aa5b06f4","integrity":"sha256-SgQN9dKiJdzRCqHH0F/382qFTUg0kZSXgSw7papbBvQ="},"tinymce/langs/de-f9a88202d526e76875d22053cc659e4aabb43fa88411296ba122b8cf4d468eef.js":{"logical_path":"tinymce/langs/de.js","mtime":"2018-01-05T22:13:22+01:00","size":10076,"digest":"f9a88202d526e76875d22053cc659e4aabb43fa88411296ba122b8cf4d468eef","integrity":"sha256-+aiCAtUm52h10iBTzGWeSqu0P6iEESlroSK4z01Gju8="},"tinymce/langs/de_AT-2c6a1926c1cddd2079d27e844db153d797505e21bab6bdab018c2e5d1f0532fb.js":{"logical_path":"tinymce/langs/de_AT.js","mtime":"2018-01-05T22:13:22+01:00","size":10065,"digest":"2c6a1926c1cddd2079d27e844db153d797505e21bab6bdab018c2e5d1f0532fb","integrity":"sha256-LGoZJsHN3SB50n6ETbFT15dQXiG6tr2rAYwuXR8FMvs="},"tinymce/langs/dv-3b3e040a7e24fd18903d4833a8da09f2e2b65fbd1c3ac325a3cd373775f9bd23.js":{"logical_path":"tinymce/langs/dv.js","mtime":"2018-01-05T22:13:22+01:00","size":22234,"digest":"3b3e040a7e24fd18903d4833a8da09f2e2b65fbd1c3ac325a3cd373775f9bd23","integrity":"sha256-Oz4ECn4k/RiQPUgzqNoJ8uK2X70cOsMlo803N3X5vSM="},"tinymce/langs/el-0d51a187db018442cb94826f66155adb3fd805ac792c1110a04a548bc7d5d6c2.js":{"logical_path":"tinymce/langs/el.js","mtime":"2018-01-05T22:13:22+01:00","size":24860,"digest":"0d51a187db018442cb94826f66155adb3fd805ac792c1110a04a548bc7d5d6c2","integrity":"sha256-DVGhh9sBhELLlIJvZhVa2z/YBax5LBEQoEpUi8fV1sI="},"tinymce/langs/en_CA-2c64a16614c895022cc2b6aa4f134f4917ec8dd045c2184672653f3fae158db4.js":{"logical_path":"tinymce/langs/en_CA.js","mtime":"2018-01-05T22:13:22+01:00","size":8530,"digest":"2c64a16614c895022cc2b6aa4f134f4917ec8dd045c2184672653f3fae158db4","integrity":"sha256-LGShZhTIlQIswraqTxNPSRfsjdBFwhhGcmU/P64VjbQ="},"tinymce/langs/en_GB-4eb69d31cb70a3d3c53185883d58027a70524b0f5db82200bfa45b6a8ea22224.js":{"logical_path":"tinymce/langs/en_GB.js","mtime":"2018-01-05T22:13:22+01:00","size":7438,"digest":"4eb69d31cb70a3d3c53185883d58027a70524b0f5db82200bfa45b6a8ea22224","integrity":"sha256-TradMctwo9PFMYWIPVgCenBSSw9duCIAv6Rbao6iIiQ="},"tinymce/langs/es-4fd5fd5b991c2c1e3032a297ae4605088bcd6835a467e64f9568de1b554e559c.js":{"logical_path":"tinymce/langs/es.js","mtime":"2018-01-05T22:13:22+01:00","size":9447,"digest":"4fd5fd5b991c2c1e3032a297ae4605088bcd6835a467e64f9568de1b554e559c","integrity":"sha256-T9X9W5kcLB4wMqKXrkYFCIvNaDWkZ+ZPlWjeG1VOVZw="},"tinymce/langs/es_MX-bc4f779c4782ed7bc7e7c4b7cd9293d7803256660cc529307dca05a40c49b94d.js":{"logical_path":"tinymce/langs/es_MX.js","mtime":"2018-01-05T22:13:22+01:00","size":9555,"digest":"bc4f779c4782ed7bc7e7c4b7cd9293d7803256660cc529307dca05a40c49b94d","integrity":"sha256-vE93nEeC7XvH58S3zZKT14AyVmYMxSkwfcoFpAxJuU0="},"tinymce/langs/et-26b7ced79b21dc8a21fda1dd95247e93c35096461238c8579dea16e48d12b4ef.js":{"logical_path":"tinymce/langs/et.js","mtime":"2018-01-05T22:13:22+01:00","size":8364,"digest":"26b7ced79b21dc8a21fda1dd95247e93c35096461238c8579dea16e48d12b4ef","integrity":"sha256-JrfO15sh3Ioh/aHdlSR+k8NQlkYSOMhXneoW5I0StO8="},"tinymce/langs/fa_IR-4103bdacd3e4b53f30b27019dc9cdbc6402e3345331a93a5768900d591633201.js":{"logical_path":"tinymce/langs/fa_IR.js","mtime":"2018-01-05T22:13:22+01:00","size":22191,"digest":"4103bdacd3e4b53f30b27019dc9cdbc6402e3345331a93a5768900d591633201","integrity":"sha256-QQO9rNPktT8wsnAZ3JzbxkAuM0UzGpOldokA1ZFjMgE="},"tinymce/langs/fr_FR-c7b4bea9c3f186767ffee3f06d12830574620a5f58c4f76dede76d311be2a9c6.js":{"logical_path":"tinymce/langs/fr_FR.js","mtime":"2018-01-05T22:13:22+01:00","size":9839,"digest":"c7b4bea9c3f186767ffee3f06d12830574620a5f58c4f76dede76d311be2a9c6","integrity":"sha256-x7S+qcPxhnZ//uPwbRKDBXRiCl9YxPdt7edtMRviqcY="},"tinymce/langs/ga-7c1e918737301e611973d91e10c27930873e97dd690f7d10862d0cd40e639055.js":{"logical_path":"tinymce/langs/ga.js","mtime":"2018-01-05T22:13:22+01:00","size":10477,"digest":"7c1e918737301e611973d91e10c27930873e97dd690f7d10862d0cd40e639055","integrity":"sha256-fB6RhzcwHmEZc9keEMJ5MIc+l91pD30Qhi0M1A5jkFU="},"tinymce/langs/gl-f6ec1cbe13f00683a8fceb6e73a353dfced77ab3f63d99fa2ae7c40bd6b3a64c.js":{"logical_path":"tinymce/langs/gl.js","mtime":"2018-01-05T22:13:22+01:00","size":9315,"digest":"f6ec1cbe13f00683a8fceb6e73a353dfced77ab3f63d99fa2ae7c40bd6b3a64c","integrity":"sha256-9uwcvhPwBoOo/Otuc6NT387XerP2PZn6KufEC9azpkw="},"tinymce/langs/he_IL-74b957588e5998649fde6c6f3686bb74790d7173d0f31c90a4272a4596b16b32.js":{"logical_path":"tinymce/langs/he_IL.js","mtime":"2018-01-05T22:13:22+01:00","size":17345,"digest":"74b957588e5998649fde6c6f3686bb74790d7173d0f31c90a4272a4596b16b32","integrity":"sha256-dLlXWI5ZmGSf3mxvNoa7dHkNcXPQ8xyQpCcqRZaxazI="},"tinymce/langs/hr-1dda1c40a40645a936a214478697c44137c805bf8b9c9e4485a0fb142e4ffe18.js":{"logical_path":"tinymce/langs/hr.js","mtime":"2018-01-05T22:13:22+01:00","size":9037,"digest":"1dda1c40a40645a936a214478697c44137c805bf8b9c9e4485a0fb142e4ffe18","integrity":"sha256-HdocQKQGRak2ohRHhpfEQTfIBb+LnJ5EhaD7FC5P/hg="},"tinymce/langs/hu_HU-9e74f5ada14970f167ee2ec1f46c8fd41d8bb98f9f5f5df9b4ad041cdaa81fd7.js":{"logical_path":"tinymce/langs/hu_HU.js","mtime":"2018-01-05T22:13:22+01:00","size":11691,"digest":"9e74f5ada14970f167ee2ec1f46c8fd41d8bb98f9f5f5df9b4ad041cdaa81fd7","integrity":"sha256-nnT1raFJcPFn7i7B9GyP1B2LuY+fX135tK0EHNqoH9c="},"tinymce/langs/it-c4549598b4e13df2201efb7f5b971e5bc55a731b25dd9ac7adb5f75780fe5f34.js":{"logical_path":"tinymce/langs/it.js","mtime":"2018-01-05T22:13:22+01:00","size":9264,"digest":"c4549598b4e13df2201efb7f5b971e5bc55a731b25dd9ac7adb5f75780fe5f34","integrity":"sha256-xFSVmLThPfIgHvt/W5ceW8Vacxsl3ZrHrbX3V4D+XzQ="},"tinymce/langs/ja-da6414959d66a9b0cb46078592bd018bc8dc6707588d5ab911ebd09e589f92f6.js":{"logical_path":"tinymce/langs/ja.js","mtime":"2018-01-05T22:13:22+01:00","size":15243,"digest":"da6414959d66a9b0cb46078592bd018bc8dc6707588d5ab911ebd09e589f92f6","integrity":"sha256-2mQUlZ1mqbDLRgeFkr0Bi8jcZwdYjVq5EevQnlifkvY="},"tinymce/langs/ka_GE-480559d4cffe96c5cae5e41f9ffd06f979785b3ce93e547462fbabc5cc1a88fb.js":{"logical_path":"tinymce/langs/ka_GE.js","mtime":"2018-01-05T22:13:22+01:00","size":22807,"digest":"480559d4cffe96c5cae5e41f9ffd06f979785b3ce93e547462fbabc5cc1a88fb","integrity":"sha256-SAVZ1M/+lsXK5eQfn/0G+Xl4WzzpPlR0YvurxcwaiPs="},"tinymce/langs/kab-dc638a064c01cae2218d445beec60da010ee8dee8524f245ae3b99c8c5b3567c.js":{"logical_path":"tinymce/langs/kab.js","mtime":"2018-01-05T22:13:22+01:00","size":7904,"digest":"dc638a064c01cae2218d445beec60da010ee8dee8524f245ae3b99c8c5b3567c","integrity":"sha256-3GOKBkwByuIhjURb7sYNoBDuje6FJPJFrjuZyMWzVnw="},"tinymce/langs/kk-282b790d721dcaf6b44d930f70825e06969602572e477b7ef73766360eefdbaf.js":{"logical_path":"tinymce/langs/kk.js","mtime":"2018-01-05T22:13:22+01:00","size":21706,"digest":"282b790d721dcaf6b44d930f70825e06969602572e477b7ef73766360eefdbaf","integrity":"sha256-KCt5DXIdyva0TZMPcIJeBpaWAlcuR3t+9zdmNg7v268="},"tinymce/langs/km_KH-dddeacc3c7112c6f230c4746d0fc9e9de1a3f53e419524ce03f483a35a49aaad.js":{"logical_path":"tinymce/langs/km_KH.js","mtime":"2018-01-05T22:13:22+01:00","size":25877,"digest":"dddeacc3c7112c6f230c4746d0fc9e9de1a3f53e419524ce03f483a35a49aaad","integrity":"sha256-3d6sw8cRLG8jDEdG0PyeneGj9T5BlSTOA/SDo1pJqq0="},"tinymce/langs/ko_KR-90aae14954461fa073104c36c0f2d7d2c95bbbf0e41be4ef4f04ac402ab8d0a8.js":{"logical_path":"tinymce/langs/ko_KR.js","mtime":"2018-01-05T22:13:22+01:00","size":12447,"digest":"90aae14954461fa073104c36c0f2d7d2c95bbbf0e41be4ef4f04ac402ab8d0a8","integrity":"sha256-kKrhSVRGH6BzEEw2wPLX0slbu/DkG+TvTwSsQCq40Kg="},"tinymce/langs/lv-6c706e8dbf25774d07fea54cc1cbfaaf60c205c95392eee90ae55ac9cae74768.js":{"logical_path":"tinymce/langs/lv.js","mtime":"2018-01-05T22:13:22+01:00","size":11056,"digest":"6c706e8dbf25774d07fea54cc1cbfaaf60c205c95392eee90ae55ac9cae74768","integrity":"sha256-bHBujb8ld00H/qVMwcv6r2DCBclTku7pCuVaycrnR2g="},"tinymce/langs/nb_NO-8bd2c254b03046ae60710293e7485d4c5cf9fdc3cbce52f97f0bf682ee44e1f8.js":{"logical_path":"tinymce/langs/nb_NO.js","mtime":"2018-01-05T22:13:22+01:00","size":9248,"digest":"8bd2c254b03046ae60710293e7485d4c5cf9fdc3cbce52f97f0bf682ee44e1f8","integrity":"sha256-i9LCVLAwRq5gcQKT50hdTFz5/cPLzlL5fwv2gu5E4fg="},"tinymce/langs/nl-0436131db0f369f1d07ce9a27f61cd351d8b2a441d352f8261cde3990f7b59d8.js":{"logical_path":"tinymce/langs/nl.js","mtime":"2018-01-05T22:13:22+01:00","size":8979,"digest":"0436131db0f369f1d07ce9a27f61cd351d8b2a441d352f8261cde3990f7b59d8","integrity":"sha256-BDYTHbDzafHQfOmif2HNNR2LKkQdNS+CYc3jmQ97Wdg="},"tinymce/langs/pl-eaf96c2c80d9268c2477628c1d23f947391de01553ef43bb488ee88d7bb3b8e6.js":{"logical_path":"tinymce/langs/pl.js","mtime":"2018-01-05T22:13:22+01:00","size":10178,"digest":"eaf96c2c80d9268c2477628c1d23f947391de01553ef43bb488ee88d7bb3b8e6","integrity":"sha256-6vlsLIDZJowkd2KMHSP5Rzkd4BVT70O7SI7ojXuzuOY="},"tinymce/langs/pt_BR-32ccbdf38597b6d0239e8ba70d73ab75de0661bb06c86fc9a90d1c0a890bc31e.js":{"logical_path":"tinymce/langs/pt_BR.js","mtime":"2018-01-05T22:13:22+01:00","size":9820,"digest":"32ccbdf38597b6d0239e8ba70d73ab75de0661bb06c86fc9a90d1c0a890bc31e","integrity":"sha256-Msy984WXttAjnounDXOrdd4GYbsGyG/JqQ0cCokLwx4="},"tinymce/langs/pt_PT-a364a3ca02a98259f33046338ab1bdd32dd4ebf24fa56e88d2578066bc7f0597.js":{"logical_path":"tinymce/langs/pt_PT.js","mtime":"2018-01-05T22:13:22+01:00","size":10011,"digest":"a364a3ca02a98259f33046338ab1bdd32dd4ebf24fa56e88d2578066bc7f0597","integrity":"sha256-o2SjygKpglnzMEYzirG90y3U6/JPpW6I0leAZrx/BZc="},"tinymce/langs/ro-83fd95a929d491cbfbfac83f132bdc41c956a7f4b0459c243fd92613c9c841ef.js":{"logical_path":"tinymce/langs/ro.js","mtime":"2018-01-05T22:13:22+01:00","size":8848,"digest":"83fd95a929d491cbfbfac83f132bdc41c956a7f4b0459c243fd92613c9c841ef","integrity":"sha256-g/2VqSnUkcv7+sg/EyvcQclWp/SwRZwkP9kmE8nIQe8="},"tinymce/langs/ru-2566ddc510b999f19c499a9838d7b987d5a8332b5802f2211beb4274ae2cd563.js":{"logical_path":"tinymce/langs/ru.js","mtime":"2018-01-05T22:13:22+01:00","size":27189,"digest":"2566ddc510b999f19c499a9838d7b987d5a8332b5802f2211beb4274ae2cd563","integrity":"sha256-JWbdxRC5mfGcSZqYONe5h9WoMytYAvIhG+tCdK4s1WM="},"tinymce/langs/sk-01d012310139d40e606a633db845a03fe285c32cb47043d6d9d761afa0cc3530.js":{"logical_path":"tinymce/langs/sk.js","mtime":"2018-01-05T22:13:22+01:00","size":10588,"digest":"01d012310139d40e606a633db845a03fe285c32cb47043d6d9d761afa0cc3530","integrity":"sha256-AdASMQE51A5gamM9uEWgP+KFwyy0cEPW2ddhr6DMNTA="},"tinymce/langs/sl_SI-ea499e07b7f4c9430bb15f34f6278f7248334c2553a544e240a21a84195d9582.js":{"logical_path":"tinymce/langs/sl_SI.js","mtime":"2018-01-05T22:13:22+01:00","size":8219,"digest":"ea499e07b7f4c9430bb15f34f6278f7248334c2553a544e240a21a84195d9582","integrity":"sha256-6kmeB7f0yUMLsV809iePckgzTCVTpUTiQKIahBldlYI="},"tinymce/langs/sv_SE-7af54d4c82419671562478bf4a66d185be79406f3287628df0d2ad8ac044a485.js":{"logical_path":"tinymce/langs/sv_SE.js","mtime":"2018-01-05T22:13:22+01:00","size":9334,"digest":"7af54d4c82419671562478bf4a66d185be79406f3287628df0d2ad8ac044a485","integrity":"sha256-evVNTIJBlnFWJHi/SmbRhb55QG8yh2KN8NKtisBEpIU="},"tinymce/langs/ta-3b428d97786e6eded1c4973fef3fb487786a79f1eee59f15483bd02b96c76239.js":{"logical_path":"tinymce/langs/ta.js","mtime":"2018-01-05T22:13:22+01:00","size":28524,"digest":"3b428d97786e6eded1c4973fef3fb487786a79f1eee59f15483bd02b96c76239","integrity":"sha256-O0KNl3hubt7RxJc/7z+0h3hqefHu5Z8VSDvQK5bHYjk="},"tinymce/langs/ta_IN-44bf4b6c5e4de01a2c7f2ccc69b6dd561b8afce86397229a9ff27efaf0600812.js":{"logical_path":"tinymce/langs/ta_IN.js","mtime":"2018-01-05T22:13:22+01:00","size":28527,"digest":"44bf4b6c5e4de01a2c7f2ccc69b6dd561b8afce86397229a9ff27efaf0600812","integrity":"sha256-RL9LbF5N4BosfyzMabbdVhuK/OhjlyKan/J++vBgCBI="},"tinymce/langs/th_TH-5869e7cc393913371f3314057c1691e6e0fa296b496cf2d5c465276c31645479.js":{"logical_path":"tinymce/langs/th_TH.js","mtime":"2018-01-05T22:13:22+01:00","size":20172,"digest":"5869e7cc393913371f3314057c1691e6e0fa296b496cf2d5c465276c31645479","integrity":"sha256-WGnnzDk5EzcfMxQFfBaR5uD6KWtJbPLVxGUnbDFkVHk="},"tinymce/langs/tr-6a58fb650e940025d957945ae4850f6fbb8446c5f092a661063af9606afc1db8.js":{"logical_path":"tinymce/langs/tr.js","mtime":"2018-01-05T22:13:22+01:00","size":10454,"digest":"6a58fb650e940025d957945ae4850f6fbb8446c5f092a661063af9606afc1db8","integrity":"sha256-alj7ZQ6UACXZV5Ra5IUPb7uERsXwkqZhBjr5YGr8Hbg="},"tinymce/langs/tr_TR-d97de581e91c05fc4f3d9fe1419ad201e227bcd0ff3f036f7b59519395f4dcc2.js":{"logical_path":"tinymce/langs/tr_TR.js","mtime":"2018-01-05T22:13:22+01:00","size":10598,"digest":"d97de581e91c05fc4f3d9fe1419ad201e227bcd0ff3f036f7b59519395f4dcc2","integrity":"sha256-2X3lgekcBfxPPZ/hQZrSAeInvND/PwNve1lRk5X03MI="},"tinymce/langs/uk-00866ab0fe7746d258b215475089740306b790d572d081b7f53ce65ec313f413.js":{"logical_path":"tinymce/langs/uk.js","mtime":"2018-01-05T22:13:22+01:00","size":26089,"digest":"00866ab0fe7746d258b215475089740306b790d572d081b7f53ce65ec313f413","integrity":"sha256-AIZqsP53RtJYshVHUIl0Awa3kNVy0IG39TzmXsMT9BM="},"tinymce/langs/uk_UA-52b101eeb7079c629edbe4615e64018757791541930fd2733957810a37197356.js":{"logical_path":"tinymce/langs/uk_UA.js","mtime":"2018-01-05T22:13:22+01:00","size":26018,"digest":"52b101eeb7079c629edbe4615e64018757791541930fd2733957810a37197356","integrity":"sha256-UrEB7rcHnGKe2+RhXmQBh1d5FUGTD9JzOVeBCjcZc1Y="},"tinymce/langs/uz-d6923a3190a76dc149ccb2893574e981250344a6c4f6dcaf458df1cce2ea3b30.js":{"logical_path":"tinymce/langs/uz.js","mtime":"2018-01-05T22:13:22+01:00","size":9696,"digest":"d6923a3190a76dc149ccb2893574e981250344a6c4f6dcaf458df1cce2ea3b30","integrity":"sha256-1pI6MZCnbcFJzLKJNXTpgSUDRKbE9tyvRY3xzOLqOzA="},"tinymce/langs/vi_VN-54d1da8a0ca8d0242457ddab5e0230c2cca140d3e480bfd55b9dfbaec7868baa.js":{"logical_path":"tinymce/langs/vi_VN.js","mtime":"2018-01-05T22:13:22+01:00","size":10769,"digest":"54d1da8a0ca8d0242457ddab5e0230c2cca140d3e480bfd55b9dfbaec7868baa","integrity":"sha256-VNHaigyo0CQkV92rXgIwwsyhQNPkgL/VW537rseGi6o="},"tinymce/langs/zh_CN-07499e6b0821cb49c5e16efbe4a68a4d843b4d6939a45866aabe6f9ad7fc805d.js":{"logical_path":"tinymce/langs/zh_CN.js","mtime":"2018-01-05T22:13:22+01:00","size":11103,"digest":"07499e6b0821cb49c5e16efbe4a68a4d843b4d6939a45866aabe6f9ad7fc805d","integrity":"sha256-B0meawghy0nF4W775KaKTYQ7TWk5pFhmqr5vmtf8gF0="},"tinymce/langs/zh_TW-c00c3a6539c0e1696436182c935a0a5929ab09ae7bdc43ca9c4ad21098079d53.js":{"logical_path":"tinymce/langs/zh_TW.js","mtime":"2018-01-05T22:13:22+01:00","size":11059,"digest":"c00c3a6539c0e1696436182c935a0a5929ab09ae7bdc43ca9c4ad21098079d53","integrity":"sha256-wAw6ZTnA4WlkNhgsk1oKWSmrCa573EPKnErSEJgHnVM="},"active_admin-a549f8566590a3123aa09ad8f48b7dd17381809637e5449e19a6fc2080ce3df2.js":{"logical_path":"active_admin.js","mtime":"2018-02-11T15:39:34+01:00","size":963601,"digest":"a549f8566590a3123aa09ad8f48b7dd17381809637e5449e19a6fc2080ce3df2","integrity":"sha256-pUn4VmWQoxI6oJrY9It90XOBgJY35USeGab8IIDOPfI="},"application-8f40af718b20db7831056787bcba5ae1d42bd2264bf324e572fa5011f2aca28c.js":{"logical_path":"application.js","mtime":"2018-01-18T21:11:12+01:00","size":2468449,"digest":"8f40af718b20db7831056787bcba5ae1d42bd2264bf324e572fa5011f2aca28c","integrity":"sha256-j0CvcYsg23gxBWeHvLpa4dQr0iZL8yTlcvpQEfKsoow="},"application-032a199f608e3991aa236ac1783bbc89359d0768f2a24a048f9dfc989b6654bd.css":{"logical_path":"application.css","mtime":"2018-01-18T21:11:10+01:00","size":230083,"digest":"032a199f608e3991aa236ac1783bbc89359d0768f2a24a048f9dfc989b6654bd","integrity":"sha256-AyoZn2COOZGqI2rBeDu8iTWdB2jyokoEj538mJtmVL0="},"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png":{"logical_path":"leaflet/dist/images/marker-icon-2x.png","mtime":"2018-01-18T21:11:10+01:00","size":2464,"digest":"00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528","integrity":"sha256-ABecTB7oMNOhCEEq4NKU9Vd2z+sIXGASmjmqb8SuJSg="},"application-ef040b61ba411c860ed1293a206809e55bc8b8fcee8e1baec5fa5ab463c14751.js":{"logical_path":"application.js","mtime":"2018-01-21T22:44:12+01:00","size":2469363,"digest":"ef040b61ba411c860ed1293a206809e55bc8b8fcee8e1baec5fa5ab463c14751","integrity":"sha256-7wQLYbpBHIYO0Sk6IGgJ5VvIuPzujhuuxfpatGPBR1E="},"application-29647b725b38d1cf416b2f90617f3dca7c1e430031114339a3d48192fd144aeb.css":{"logical_path":"application.css","mtime":"2018-01-21T22:44:12+01:00","size":230804,"digest":"29647b725b38d1cf416b2f90617f3dca7c1e430031114339a3d48192fd144aeb","integrity":"sha256-KWR7cls40c9Bay+QYX89ynweQwAxEUM5o9SBkv0USus="},"application-ae068d71021183c80c2f16b13ee9b17d82feba3e3271c288ea70ee0a7952a7c3.js":{"logical_path":"application.js","mtime":"2018-01-21T23:02:13+01:00","size":2469363,"digest":"ae068d71021183c80c2f16b13ee9b17d82feba3e3271c288ea70ee0a7952a7c3","integrity":"sha256-rgaNcQIRg8gMLxaxPumxfYL+uj4yccKI6nDuCnlSp8M="},"application-87229b76277b030b739df163bc3519082f03f59eb4e813071fd62dcb2e80f5ff.css":{"logical_path":"application.css","mtime":"2018-01-21T23:02:13+01:00","size":230805,"digest":"87229b76277b030b739df163bc3519082f03f59eb4e813071fd62dcb2e80f5ff","integrity":"sha256-hyKbdid7AwtznfFjvDUZCC8D9Z606BMHH9Ytyy6A9f8="},"active_admin-239ee5ef976e38d5766b52051668ca0b0a9479f925267e881ab2d9f8ccefc0c8.css":{"logical_path":"active_admin.css","mtime":"2018-02-11T13:11:31+01:00","size":85443,"digest":"239ee5ef976e38d5766b52051668ca0b0a9479f925267e881ab2d9f8ccefc0c8","integrity":"sha256-I57l75duONV2a1IFFmjKCwqUefklJn6IGrLZ+MzvwMg="},"tinymce-52b30e4ce8f5860a0bb16ef4f9b794dd301229f550a0ab70f442becdbeed0906.js":{"logical_path":"tinymce.js","mtime":"2018-02-10T17:19:41+01:00","size":880846,"digest":"52b30e4ce8f5860a0bb16ef4f9b794dd301229f550a0ab70f442becdbeed0906","integrity":"sha256-UrMOTOj1hgoLsW70+beU3TASKfVQoKtw9EK+zb7tCQY="},"font-awesome/fa-brands-400-75a8d21d405fc02922bf4e5910c02da8c69e1422c54eace016902f8d13f24cc3.eot":{"logical_path":"font-awesome/fa-brands-400.eot","mtime":"2018-02-11T13:11:31+01:00","size":98620,"digest":"75a8d21d405fc02922bf4e5910c02da8c69e1422c54eace016902f8d13f24cc3","integrity":"sha256-dajSHUBfwCkiv05ZEMAtqMaeFCLFTqzgFpAvjRPyTMM="},"font-awesome/fa-regular-400-e73d73f67b277568ab01d56322d1a01d66409a8f947735dd738fe2dcb6bb0c58.eot":{"logical_path":"font-awesome/fa-regular-400.eot","mtime":"2018-02-11T13:11:31+01:00","size":31156,"digest":"e73d73f67b277568ab01d56322d1a01d66409a8f947735dd738fe2dcb6bb0c58","integrity":"sha256-5z1z9nsndWirAdVjItGgHWZAmo+UdzXdc4/i3La7DFg="},"font-awesome/fa-solid-900-f5d00bfd4457c03601f28e200ed5db6e5bf58b332164a1e630fa6aafcfab6bcb.eot":{"logical_path":"font-awesome/fa-solid-900.eot","mtime":"2018-02-11T13:11:31+01:00","size":102152,"digest":"f5d00bfd4457c03601f28e200ed5db6e5bf58b332164a1e630fa6aafcfab6bcb","integrity":"sha256-9dAL/URXwDYB8o4gDtXbblv1izMhZKHmMPpqr8+ra8s="},"font-awesome/fa-brands-400-981c7b389bbd9de156f6b92bb4f65f4e66d329b9d3503277d4fe6eef1008f3f4.svg":{"logical_path":"font-awesome/fa-brands-400.svg","mtime":"2018-02-11T13:11:31+01:00","size":507478,"digest":"981c7b389bbd9de156f6b92bb4f65f4e66d329b9d3503277d4fe6eef1008f3f4","integrity":"sha256-mBx7OJu9neFW9rkrtPZfTmbTKbnTUDJ31P5u7xAI8/Q="},"font-awesome/fa-regular-400-42e44be1cfd7bfab3031546e1f656418e9c835230a2f69b7a34594815d0e0a80.svg":{"logical_path":"font-awesome/fa-regular-400.svg","mtime":"2018-02-11T13:11:31+01:00","size":107199,"digest":"42e44be1cfd7bfab3031546e1f656418e9c835230a2f69b7a34594815d0e0a80","integrity":"sha256-QuRL4c/Xv6swMVRuH2VkGOnINSMKL2m3o0WUgV0OCoA="},"font-awesome/fa-solid-900-b0f3ece320e40f6c55b19378e123f198a3ef5f2e8fbd9ab7906ce04198770fdf.svg":{"logical_path":"font-awesome/fa-solid-900.svg","mtime":"2018-02-11T13:11:31+01:00","size":378215,"digest":"b0f3ece320e40f6c55b19378e123f198a3ef5f2e8fbd9ab7906ce04198770fdf","integrity":"sha256-sPPs4yDkD2xVsZN44SPxmKPvXy6PvZq3kGzgQZh3D98="},"font-awesome/fa-brands-400-345def96ebbc01d79e677848420a94ca0653961c03b30977714fa62395553569.ttf":{"logical_path":"font-awesome/fa-brands-400.ttf","mtime":"2018-02-11T13:11:31+01:00","size":98384,"digest":"345def96ebbc01d79e677848420a94ca0653961c03b30977714fa62395553569","integrity":"sha256-NF3vluu8AdeeZ3hIQgqUygZTlhwDswl3cU+mI5VVNWk="},"font-awesome/fa-regular-400-8721a523848f5d583c554552d6daeaaacefc8eb9239ba0c998a09492667f5c75.ttf":{"logical_path":"font-awesome/fa-regular-400.ttf","mtime":"2018-02-11T13:11:31+01:00","size":30928,"digest":"8721a523848f5d583c554552d6daeaaacefc8eb9239ba0c998a09492667f5c75","integrity":"sha256-hyGlI4SPXVg8VUVS1trqqs78jrkjm6DJmKCUkmZ/XHU="},"font-awesome/fa-solid-900-9ae2e3bc1545ee5fd1f72e0f4d0656f8054d1ead2e51c28f8f0730f85f688bed.ttf":{"logical_path":"font-awesome/fa-solid-900.ttf","mtime":"2018-02-11T13:11:31+01:00","size":101932,"digest":"9ae2e3bc1545ee5fd1f72e0f4d0656f8054d1ead2e51c28f8f0730f85f688bed","integrity":"sha256-muLjvBVF7l/R9y4PTQZW+AVNHq0uUcKPjwcw+F9oi+0="},"font-awesome/fa-brands-400-0d9317d5559d4091516c1e240689589122ad9b101f030ef7aee8c01a9fc5a78c.woff":{"logical_path":"font-awesome/fa-brands-400.woff","mtime":"2018-02-11T13:11:31+01:00","size":63712,"digest":"0d9317d5559d4091516c1e240689589122ad9b101f030ef7aee8c01a9fc5a78c","integrity":"sha256-DZMX1VWdQJFRbB4kBolYkSKtmxAfAw73rujAGp/Fp4w="},"font-awesome/fa-regular-400-4773adbb080c5189d52e31d83658b6d9743bdf7337e53bb8a4706de8dc116ffd.woff":{"logical_path":"font-awesome/fa-regular-400.woff","mtime":"2018-02-11T13:11:31+01:00","size":14712,"digest":"4773adbb080c5189d52e31d83658b6d9743bdf7337e53bb8a4706de8dc116ffd","integrity":"sha256-R3OtuwgMUYnVLjHYNli22XQ733M35Tu4pHBt6NwRb/0="},"font-awesome/fa-solid-900-6f43ff9f2fb98cc65e18f73ee16951bacfb055f76e68e06f7d91989fd770fa71.woff":{"logical_path":"font-awesome/fa-solid-900.woff","mtime":"2018-02-11T13:11:31+01:00","size":48704,"digest":"6f43ff9f2fb98cc65e18f73ee16951bacfb055f76e68e06f7d91989fd770fa71","integrity":"sha256-b0P/ny+5jMZeGPc+4WlRus+wVfduaOBvfZGYn9dw+nE="},"font-awesome/fa-brands-400-155963e3fb06f13011705c65bc52ed31f9989b87309c945948a76b35f8e7da67.woff2":{"logical_path":"font-awesome/fa-brands-400.woff2","mtime":"2018-02-11T13:11:31+01:00","size":54420,"digest":"155963e3fb06f13011705c65bc52ed31f9989b87309c945948a76b35f8e7da67","integrity":"sha256-FVlj4/sG8TARcFxlvFLtMfmYm4cwnJRZSKdrNfjn2mc="},"font-awesome/fa-regular-400-a36d4f83add2176a3c6243bd57a32a387a1906227e286689530ff878de1994eb.woff2":{"logical_path":"font-awesome/fa-regular-400.woff2","mtime":"2018-02-11T13:11:31+01:00","size":12220,"digest":"a36d4f83add2176a3c6243bd57a32a387a1906227e286689530ff878de1994eb","integrity":"sha256-o21Pg63SF2o8YkO9V6MqOHoZBiJ+KGaJUw/4eN4ZlOs="},"font-awesome/fa-solid-900-62554277d07b20c6bfae7c6267b3198b4846f604a37d4085bf9f54c392210b56.woff2":{"logical_path":"font-awesome/fa-solid-900.woff2","mtime":"2018-02-11T13:11:31+01:00","size":38784,"digest":"62554277d07b20c6bfae7c6267b3198b4846f604a37d4085bf9f54c392210b56","integrity":"sha256-YlVCd9B7IMa/rnxiZ7MZi0hG9gSjfUCFv59Uw5IhC1Y="},"application-86f61941a505bfd27dfa53a248ee83b55ab49c5964d5e662f6eba77d1a483d33.js":{"logical_path":"application.js","mtime":"2018-02-11T15:39:34+01:00","size":1979201,"digest":"86f61941a505bfd27dfa53a248ee83b55ab49c5964d5e662f6eba77d1a483d33","integrity":"sha256-hvYZQaUFv9J9+lOiSO6DtVq0nFlk1eZi9uunfRpIPTM="},"application-7cd0f0eae223ed9993d260ffb9cc57f9b91262b0dc28620d3e7d0ff37a4f4ecf.css":{"logical_path":"application.css","mtime":"2018-02-11T15:39:34+01:00","size":247942,"digest":"7cd0f0eae223ed9993d260ffb9cc57f9b91262b0dc28620d3e7d0ff37a4f4ecf","integrity":"sha256-fNDw6uIj7ZmT0mD/ucxX+bkSYrDcKGINPn0P83pPTs8="},"tinymce/tinymce-6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de.js":{"logical_path":"tinymce/tinymce.js","mtime":"2018-02-10T17:19:41+01:00","size":879416,"digest":"6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de","integrity":"sha256-bVHUCItJ0WV3s4lQCM2ORAzWDKSfetScTR8cwhalht4="},"tinymce/jquery.tinymce-694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2018-02-10T17:19:41+01:00","size":3562,"digest":"694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53","integrity":"sha256-aUJjyuaBtYNfVPLa92mjaH/tWPr8g5sLRuG8oeJTzFM="},"tinymce/plugins/advlist/plugin-60a942b0fac99b527d6f729af8f6f8a5a618b7c40eb2770fb08a6ca81c4ec392.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2227,"digest":"60a942b0fac99b527d6f729af8f6f8a5a618b7c40eb2770fb08a6ca81c4ec392","integrity":"sha256-YKlCsPrJm1J9b3Ka+Pb4paYYt8QOsncPsIpsqBxOw5I="},"tinymce/plugins/anchor/plugin-152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1423,"digest":"152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec","integrity":"sha256-FSrsnQAOISw61v7u4iVdaGodsIzoTcvmBggZa/Ipg+w="},"tinymce/plugins/autolink/plugin-39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2143,"digest":"39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a","integrity":"sha256-Of1fBqEQWXL1F+ZI/n2JQULyBJZ8DhlBvE08Trb0yBo="},"tinymce/plugins/autoresize/plugin-57c70eb3721f88c5cae4d08038a85724d9285db0caec92dd8c223440fea6a11a.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2075,"digest":"57c70eb3721f88c5cae4d08038a85724d9285db0caec92dd8c223440fea6a11a","integrity":"sha256-V8cOs3IfiMXK5NCAOKhXJNkoXbDK7JLdjCI0QP6moRo="},"tinymce/plugins/autosave/plugin-c161b003d4e2500c076f4824c9abe2922848d86b1acf31e949d21bf42da04d98.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":3084,"digest":"c161b003d4e2500c076f4824c9abe2922848d86b1acf31e949d21bf42da04d98","integrity":"sha256-wWGwA9TiUAwHb0gkyavikihI2GsazzHpSdIb9C2gTZg="},"tinymce/plugins/bbcode/plugin-2a039df18058fc9956c15762e63a65e837c7f6ec185e768bcb7560c69d5a5945.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2851,"digest":"2a039df18058fc9956c15762e63a65e837c7f6ec185e768bcb7560c69d5a5945","integrity":"sha256-KgOd8YBY/JlWwVdi5jpl6DfH9uwYXnaLy3Vgxp1aWUU="},"tinymce/plugins/charmap/plugin-5a75321ddb2d6e17b8c9f5950179406d7ff56f73c5423564209432d84490dd9b.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":8602,"digest":"5a75321ddb2d6e17b8c9f5950179406d7ff56f73c5423564209432d84490dd9b","integrity":"sha256-WnUyHdstbhe4yfWVAXlAbX/1b3PFQjVkIJQy2ESQ3Zs="},"tinymce/plugins/code/plugin-c6f671d9656f81a0f87a80eb3178519971665855f1764cacc22c97a0c7c93c2a.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1025,"digest":"c6f671d9656f81a0f87a80eb3178519971665855f1764cacc22c97a0c7c93c2a","integrity":"sha256-xvZx2WVvgaD4eoDrMXhRmXFmWFXxdkyswiyXoMfJPCo="},"tinymce/plugins/codesample/plugin-e2213dfdea0b7c2137c835bdc1b49c5867640389d8acdc7edfd32c296eb6b378.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":19436,"digest":"e2213dfdea0b7c2137c835bdc1b49c5867640389d8acdc7edfd32c296eb6b378","integrity":"sha256-4iE9/eoLfCE3yDW9wbScWGdkA4nYrNx+39MsKW62s3g="},"tinymce/plugins/colorpicker/plugin-af8dd454fc58e491381ef90794ca49d7a477aa009b3845f2b9256ef1923a9744.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1350,"digest":"af8dd454fc58e491381ef90794ca49d7a477aa009b3845f2b9256ef1923a9744","integrity":"sha256-r43UVPxY5JE4HvkHlMpJ16R3qgCbOEXyuSVu8ZI6l0Q="},"tinymce/plugins/contextmenu/plugin-e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1813,"digest":"e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027","integrity":"sha256-5ahJFDVQgb1i3tMq2itkOhFwITs1VmuwIKgbXXqRACc="},"tinymce/plugins/directionality/plugin-432c5483de964fff4110fca8bb9da15562a108aef57f0f9f29bc64125d1ed25f.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":858,"digest":"432c5483de964fff4110fca8bb9da15562a108aef57f0f9f29bc64125d1ed25f","integrity":"sha256-QyxUg96WT/9BEPyou52hVWKhCK71fw+fKbxkEl0e0l8="},"tinymce/plugins/emoticons/plugin-05910f1a564221738a73275cf2c3a16aab7164f6977eb7506780d0689155c32f.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1072,"digest":"05910f1a564221738a73275cf2c3a16aab7164f6977eb7506780d0689155c32f","integrity":"sha256-BZEPGlZCIXOKcydc8sOhaqtxZPaXfrdQZ4DQaJFVwy8="},"tinymce/plugins/fullpage/plugin-7ec780fd59484ab244de2ff81a9ff0402733d7e1a27e6d0899f3fbb03bdddd5c.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":7169,"digest":"7ec780fd59484ab244de2ff81a9ff0402733d7e1a27e6d0899f3fbb03bdddd5c","integrity":"sha256-fseA/VlISrJE3i/4Gp/wQCcz1+Gifm0ImfP7sDvd3Vw="},"tinymce/plugins/fullscreen/plugin-cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2137,"digest":"cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d","integrity":"sha256-y0jTAMNuP6hG9bdrvIp1MgOJmhKrDLksPaBfCj1LOT0="},"tinymce/plugins/help/plugin-3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":9208,"digest":"3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c","integrity":"sha256-Os3giYy57VSruVVUb18970zRk9V4O3F54BgpiYasS5w="},"tinymce/plugins/hr/plugin-25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":425,"digest":"25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23","integrity":"sha256-Jf3k4uf6Gh04yBrADHTZCTzIN1Xl8Fd9UiLy0DHE7CM="},"tinymce/plugins/image/plugin-f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":13416,"digest":"f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd","integrity":"sha256-94TyIpm423wzJgCuGuLq8Ek3HXQLSqvROqCGs7DKc/0="},"tinymce/plugins/imagetools/plugin-07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":35560,"digest":"07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a","integrity":"sha256-ByAOxoO+uoP3A/s4XlRRpOn0rrGYwwsM8QGDw2nJdmo="},"tinymce/plugins/importcss/plugin-f708109b89ae545b36f60d0f2685647587380549b58f5de55f9f6f1957240704.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":3168,"digest":"f708109b89ae545b36f60d0f2685647587380549b58f5de55f9f6f1957240704","integrity":"sha256-9wgQm4muVFs29g0PJoVkdYc4BUm1j13lX59vGVckBwQ="},"tinymce/plugins/insertdatetime/plugin-fffab6ada7fc05ebf0a2a321fff64266ad1e5a73699b03ce48c26811116d657c.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2634,"digest":"fffab6ada7fc05ebf0a2a321fff64266ad1e5a73699b03ce48c26811116d657c","integrity":"sha256-//q2raf8BevwoqMh//ZCZq0eWnNpmwPOSMJoERFtZXw="},"tinymce/plugins/legacyoutput/plugin-ac93d67c9c8683752126c590a2abbe1a0f08ad23e2d931f57fd104f8d99e6a86.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":3403,"digest":"ac93d67c9c8683752126c590a2abbe1a0f08ad23e2d931f57fd104f8d99e6a86","integrity":"sha256-rJPWfJyGg3UhJsWQoqu+Gg8IrSPi2TH1f9EE+NmeaoY="},"tinymce/plugins/link/plugin-f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":8820,"digest":"f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524","integrity":"sha256-+I1W6hmwZBBhiLzcXXfs3Int69Gfbz2Ghl/SQ8l19SQ="},"tinymce/plugins/lists/plugin-6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":14038,"digest":"6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd","integrity":"sha256-bChjAgliANSBPgrqacb23sLIqyREVedkkejYwc6yKP0="},"tinymce/plugins/media/plugin-f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":14834,"digest":"f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934","integrity":"sha256-9q9x0DuCshpcxrk4iyovqG3bWj3Sh980+koxcRVEuTQ="},"tinymce/plugins/nonbreaking/plugin-f818f5747c3bd123dbdc6b0e24a20c5e332e572b3ef6047a44e83da8a86471dc.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":994,"digest":"f818f5747c3bd123dbdc6b0e24a20c5e332e572b3ef6047a44e83da8a86471dc","integrity":"sha256-+Bj1dHw70SPb3GsOJKIMXjMuVys+9gR6ROg9qKhkcdw="},"tinymce/plugins/noneditable/plugin-abb398069609339149f11fdb3f2d77ba34c1dfaf7c4bd4406abd2389cdbfaf58.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1541,"digest":"abb398069609339149f11fdb3f2d77ba34c1dfaf7c4bd4406abd2389cdbfaf58","integrity":"sha256-q7OYBpYJM5FJ8R/bPy13ujTB3698S9RAar0jic2/r1g="},"tinymce/plugins/pagebreak/plugin-498022b2b73a3c1c3e332a913306eafb6fd2c3a75793319d49865ab7420dbce7.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1437,"digest":"498022b2b73a3c1c3e332a913306eafb6fd2c3a75793319d49865ab7420dbce7","integrity":"sha256-SYAisrc6PBw+MyqRMwbq+2/Sw6dXkzGdSYZat0INvOc="},"tinymce/plugins/paste/plugin-fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":21334,"digest":"fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6","integrity":"sha256-/QWkJpzoeRW6L5YMGfWp6LbyOsTr1DZYrrLzCLIxjdY="},"tinymce/plugins/preview/plugin-12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2060,"digest":"12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e","integrity":"sha256-EkI9X3kVY+pIGYenK1mYbmpAfmjFVWwSp9OomJHGrD4="},"tinymce/plugins/print/plugin-984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":363,"digest":"984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab","integrity":"sha256-mEp6O0tSwku0tOqPxGcij/E8F54EHAmptP8w2XHWRqs="},"tinymce/plugins/save/plugin-c925a1d1c20280b230018ead32c271d98e36fa21f91701f28653b44def6b2bf4.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1427,"digest":"c925a1d1c20280b230018ead32c271d98e36fa21f91701f28653b44def6b2bf4","integrity":"sha256-ySWh0cICgLIwAY6tMsJx2Y42+iH5FwHyhlO0Te9rK/Q="},"tinymce/plugins/searchreplace/plugin-d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":7367,"digest":"d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2","integrity":"sha256-1KTBDfkAyZQH18Zg2mcBesjYVx+Ze9SmbvK+vZtoA+I="},"tinymce/plugins/spellchecker/plugin-c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":10146,"digest":"c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e","integrity":"sha256-yIF1JkiaUEbrwjVerwqd0nF12f7q+dLiBSkcgeq27B4="},"tinymce/plugins/tabfocus/plugin-1f6e19bc145d6dbc89b62278eebbe6fae6f61f6225eaa8fefc59fe5cdcc7716b.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1632,"digest":"1f6e19bc145d6dbc89b62278eebbe6fae6f61f6225eaa8fefc59fe5cdcc7716b","integrity":"sha256-H24ZvBRdbbyJtiJ47rvm+ub2H2Il6qj+/Fn+XNzHcWs="},"tinymce/plugins/table/plugin-26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":134942,"digest":"26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5","integrity":"sha256-JtRLo8t7GbzchcyxwZJWIVC0qhS9xX6QgCqjhDd+H6U="},"tinymce/plugins/template/plugin-1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":5297,"digest":"1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313","integrity":"sha256-HtiQ7/SrL6mtrM/HoGrAxL26QtEmR6q5gMgcH9FGkxM="},"tinymce/plugins/textcolor/plugin-1afa99da003eb9003f9071d086eb025b8a50a00386bd76e73428807d49c6c94f.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":4920,"digest":"1afa99da003eb9003f9071d086eb025b8a50a00386bd76e73428807d49c6c94f","integrity":"sha256-GvqZ2gA+uQA/kHHQhusCW4pQoAOGvXbnNCiAfUnGyU8="},"tinymce/plugins/textpattern/plugin-46aa72bd72de63931af55b83037436672ee1ec8221959cd4f866b40a743cc7e8.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":4413,"digest":"46aa72bd72de63931af55b83037436672ee1ec8221959cd4f866b40a743cc7e8","integrity":"sha256-RqpyvXLeY5Ma9VuDA3Q2Zy7h7IIhlZzU+Ga0CnQ8x+g="},"tinymce/plugins/toc/plugin-e29ac010fcea309e07d328d306acd4213966a8923e3d1241dc633d66e9510af1.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2942,"digest":"e29ac010fcea309e07d328d306acd4213966a8923e3d1241dc633d66e9510af1","integrity":"sha256-4prAEPzqMJ4H0yjTBqzUITlmqJI+PRJB3GM9ZulRCvE="},"tinymce/plugins/visualblocks/plugin-4ded681bb50f7f23fd3543501704fbcdcc267e47f4acae1d69ee75354c722612.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1692,"digest":"4ded681bb50f7f23fd3543501704fbcdcc267e47f4acae1d69ee75354c722612","integrity":"sha256-Te1oG7UPfyP9NUNQFwT7zcwmfkf0rK4dae51NUxyJhI="},"tinymce/plugins/visualchars/plugin-0582c576749e7736722a3c8034b00c08446345533144e652da3ad44b3f06cdc9.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":5509,"digest":"0582c576749e7736722a3c8034b00c08446345533144e652da3ad44b3f06cdc9","integrity":"sha256-BYLFdnSedzZyKjyANLAMCERjRVMxROZS2jrUSz8Gzck="},"tinymce/plugins/wordcount/plugin-004fce15072e9ae2f16d4abb5ba9fb94e6d50d95e5e593727ab690c58a0eefca.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":10940,"digest":"004fce15072e9ae2f16d4abb5ba9fb94e6d50d95e5e593727ab690c58a0eefca","integrity":"sha256-AE/OFQcumuLxbUq7W6n7lObVDZXl5ZNyeraQxYoO78o="},"tinymce/skins/lightgray/fonts/tinymce-9f5f4d62ce9ad4bf25c73cb80920c490cc361bf35dd47dcb3ce2ed767be7404d.eot":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.eot","mtime":"2018-02-10T17:19:41+01:00","size":18808,"digest":"9f5f4d62ce9ad4bf25c73cb80920c490cc361bf35dd47dcb3ce2ed767be7404d","integrity":"sha256-n19NYs6a1L8lxzy4CSDEkMw2G/Nd1H3LPOLtdnvnQE0="},"tinymce/skins/lightgray/fonts/tinymce-9b9369e35660db34db422aafd93cd8a68e638c486c107130e75e36c98d2e9a1f.svg":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.svg","mtime":"2018-02-10T17:19:41+01:00","size":45989,"digest":"9b9369e35660db34db422aafd93cd8a68e638c486c107130e75e36c98d2e9a1f","integrity":"sha256-m5Np41Zg2zTbQiqv2TzYpo5jjEhsEHEw5142yY0umh8="},"tinymce/skins/lightgray/fonts/tinymce-aad8f3f45064995545e9efd9c4bf10cb4967469aec14a475f648db771d25b6f9.ttf":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.ttf","mtime":"2018-02-10T17:19:41+01:00","size":18644,"digest":"aad8f3f45064995545e9efd9c4bf10cb4967469aec14a475f648db771d25b6f9","integrity":"sha256-qtjz9FBkmVVF6e/ZxL8Qy0lnRprsFKR19kjbdx0ltvk="},"tinymce/skins/lightgray/fonts/tinymce-e378406db7a120c29069a998f7fdd2d4d1867185b360c36767137dbbab5cf83e.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.woff","mtime":"2018-02-10T17:19:41+01:00","size":18720,"digest":"e378406db7a120c29069a998f7fdd2d4d1867185b360c36767137dbbab5cf83e","integrity":"sha256-43hAbbehIMKQaamY9/3S1NGGcYWzYMNnZxN9u6tc+D4="},"tinymce/skins/lightgray/skin.min-9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2018-02-10T17:19:41+01:00","size":43244,"digest":"9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e","integrity":"sha256-nfGsRz9Pw3+VGnPpeIOn/VPK5uEsUNsmxD9AcLzeZo4="},"tinymce/themes/inlite/theme-b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2018-02-10T17:19:41+01:00","size":136470,"digest":"b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c","integrity":"sha256-simn0TPprGANa7q6LtkAQ2bUT/STaREAqf+R5YTl+pw="},"tinymce/themes/mobile/theme-d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2018-02-10T17:19:41+01:00","size":185625,"digest":"d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514","integrity":"sha256-2OpxKP3yFVk61uH9UR/BrBljJAhPsxx0600AeLmTVRQ="},"tinymce/themes/modern/theme-1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2018-02-10T17:19:41+01:00","size":134683,"digest":"1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e","integrity":"sha256-EmSk9/piwRThhs7+jPBNYakiqYNhXiwZGXpg9KWewk4="},"active_admin-e5a87292d40df3f628baf260ba62d1fe0a98b3a7380569b20323670a16b70db6.css":{"logical_path":"active_admin.css","mtime":"2018-03-01T21:32:00+01:00","size":85439,"digest":"e5a87292d40df3f628baf260ba62d1fe0a98b3a7380569b20323670a16b70db6","integrity":"sha256-5ahyktQN8/YouvJgumLR/gqYs6c4BWmyAyNnCha3DbY="},"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png":{"logical_path":"baby_gnu_adl.png","mtime":"2018-03-01T20:52:43+01:00","size":7411,"digest":"463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc","integrity":"sha256-RjqBggqi1P/Y5yENvOGhn/ysZ+82KqewkigMb5XJA/w="},"lef-small-4b9a75b5a328a7a3a78fd8b8e1b4545e1df777ad3a003ad29b875e7b486b2650.png":{"logical_path":"lef-small.png","mtime":"2018-03-01T20:52:43+01:00","size":1059,"digest":"4b9a75b5a328a7a3a78fd8b8e1b4545e1df777ad3a003ad29b875e7b486b2650","integrity":"sha256-S5p1taMop6Onj9i44bRUXh33d606ADrSm4dee0hrJlA="},"lef-3d58e14b026b795b3e71c551d85e63e6e45fc4e6960acc7dec27cdb79abffe75.png":{"logical_path":"lef.png","mtime":"2018-03-01T20:51:49+01:00","size":7377,"digest":"3d58e14b026b795b3e71c551d85e63e6e45fc4e6960acc7dec27cdb79abffe75","integrity":"sha256-PVjhSwJreVs+ccVR2F5j5uRfxOaWCsx97CfNt5q//nU="},"application-7c7206927ff58ad77ed458c5e2fba9abeaeb1f690fa9c68d44f964780cc5ffa2.js":{"logical_path":"application.js","mtime":"2018-03-01T21:32:00+01:00","size":1979201,"digest":"7c7206927ff58ad77ed458c5e2fba9abeaeb1f690fa9c68d44f964780cc5ffa2","integrity":"sha256-fHIGkn/1itd+1FjF4vupq+rrH2kPqcaNRPlkeAzF/6I="},"application-ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf.css":{"logical_path":"application.css","mtime":"2018-03-01T21:32:00+01:00","size":247938,"digest":"ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf","integrity":"sha256-3dUcdZteMkbJ9PEWqGoUcc7dfkswaGyQotCl8CJPpc8="}},"assets":{"active_admin.css":"active_admin-e5a87292d40df3f628baf260ba62d1fe0a98b3a7380569b20323670a16b70db6.css","active_admin/nested_menu_arrow.gif":"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif","active_admin/nested_menu_arrow_dark.gif":"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif","active_admin/orderable.png":"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png","active_admin/print.css":"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css","active_admin.js":"active_admin-a549f8566590a3123aa09ad8f48b7dd17381809637e5449e19a6fc2080ce3df2.js","tinymce.js":"tinymce-52b30e4ce8f5860a0bb16ef4f9b794dd301229f550a0ab70f442becdbeed0906.js","application.css":"application-ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf.css","jquery-ui/ui-icons_444444_256x240.png":"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png","jquery-ui/ui-icons_555555_256x240.png":"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png","jquery-ui/ui-icons_ffffff_256x240.png":"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png","jquery-ui/ui-icons_777620_256x240.png":"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png","jquery-ui/ui-icons_cc0000_256x240.png":"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png","jquery-ui/ui-icons_777777_256x240.png":"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png","flags/4x3/ad.svg":"flags/4x3/ad-3fc30cc000942b4f3369bdf6ccb85b16f59f4e78f9c53d73252ab529da35ba0a.svg","flags/1x1/ad.svg":"flags/1x1/ad-db2c38d603b8eecc9085d6ac1261bbefd3bcd852d44bec476e5e115914bcb2fd.svg","flags/4x3/ae.svg":"flags/4x3/ae-7f41692ef179841ca6e9cae42c704113274707228ff3d2b1ee5169916db15b1e.svg","flags/1x1/ae.svg":"flags/1x1/ae-8c9b9b1f108511722e1f1b0f9a029edf808ff285406545f24e327052e0efa780.svg","flags/4x3/af.svg":"flags/4x3/af-e271fd8f2fcdd0adda22a0e699173ff4e4cc65adfe7f05652cb77375eea99a93.svg","flags/1x1/af.svg":"flags/1x1/af-2629bc2e10edd54c384650f9aab1c6dfaf7101fda43ba3af627f0ec226db5892.svg","flags/4x3/ag.svg":"flags/4x3/ag-91fee45d7e1bab658f840a721364dd6eff0b67f9135dc8445a1b3554c347c2e9.svg","flags/1x1/ag.svg":"flags/1x1/ag-476bf833d4e0789f71d7b0d24164734ed97627f36edd09cc75991bcfbb2aa7af.svg","flags/4x3/ai.svg":"flags/4x3/ai-0106851bba5120a0f2bca5e6187ea65c9846e696f5ca57631aa89371cdf98871.svg","flags/1x1/ai.svg":"flags/1x1/ai-50a3279d492c2932919c02880b69da7bb7948ce96988d8ccc9b16357f006165c.svg","flags/4x3/al.svg":"flags/4x3/al-f8bc9837446a4880d29088f18bfc014b4cde95d8edda1241be22b5724a74ea8d.svg","flags/1x1/al.svg":"flags/1x1/al-fb2c4d723ddbfb2c659ee2b3052d33347c130fb1024e2cb0ddd17f25b082542c.svg","flags/4x3/am.svg":"flags/4x3/am-aeabb81fbe6ac768ba7b95bb22e5a1791eb35ff83d0b5d6785c88ddc6835444e.svg","flags/1x1/am.svg":"flags/1x1/am-6fc2c9fb24a6a079960d619cc1fdaeee31cdb52d27c75bb9b065d9664d853c11.svg","flags/4x3/ao.svg":"flags/4x3/ao-34ea70b51c9069ef1a859935f07a64cfffab4e08438a9c746898da56b495d127.svg","flags/1x1/ao.svg":"flags/1x1/ao-1240d65f5dd9d8945701ed46611bd97f53f2cecf15b435cc54604eb79f4b97a8.svg","flags/4x3/aq.svg":"flags/4x3/aq-6e2cee0eae620cd3f1fe6be665fd216f9a54a2afe215441005904dfeca24c169.svg","flags/1x1/aq.svg":"flags/1x1/aq-73c87173b09f476af2367895c76cf65d159c0a0b2ec292c1f1f5b08b2e78f829.svg","flags/4x3/ar.svg":"flags/4x3/ar-71eca3c44a303392f2c8db443add184c4c79d9fa8a3e729be2528c8db53790b6.svg","flags/1x1/ar.svg":"flags/1x1/ar-0f75960e9ea2b2533e9112d4fc02154182f72460720c5a7d4dc21ef47758c369.svg","flags/4x3/as.svg":"flags/4x3/as-29ac7248b1c428a68d0e2b1cfca4fade7b0fcb38151bf980d35c3b0be63d3d91.svg","flags/1x1/as.svg":"flags/1x1/as-f516550a6b6cf7e277a1877cad9afe10f694ac32c92df7709690913fd59ecf20.svg","flags/4x3/at.svg":"flags/4x3/at-e6517cfc6605c0ffa13da8db795d6e4cd353f72434f8fe38a2ebab7ba685081b.svg","flags/1x1/at.svg":"flags/1x1/at-b9f9e8349460db6d35662b445a8a5fff96fccd904fff3411b711d31b2d7b7f16.svg","flags/4x3/au.svg":"flags/4x3/au-c929c02559051c3f51c0d93dd9df0d886b6c1efa083c0f101d2b3fd39706726e.svg","flags/1x1/au.svg":"flags/1x1/au-96828c63a52eff55282096c045a3822cde99a00bf20528810d31f27b27208593.svg","flags/4x3/aw.svg":"flags/4x3/aw-44597b0ede9ff7df0e659c464a51fdbc1a7f5cc5cd621d281302843c23a905bf.svg","flags/1x1/aw.svg":"flags/1x1/aw-2bd4b1890e233baeae0bcaaf1841803de35dd9c422f486588e48bf3506d69ae0.svg","flags/4x3/ax.svg":"flags/4x3/ax-95093e740b0b492f7cd96fe370fa2478f0d0148b89b424cd8436807234ade9dd.svg","flags/1x1/ax.svg":"flags/1x1/ax-99af962543005067e7239903eb6bc23226d30ce14a7c6408693dc9641193ddc3.svg","flags/4x3/az.svg":"flags/4x3/az-c0959e214bf9a3e94993cfc03f4884b15f6d8c4dd20842a5052a29a8495fd431.svg","flags/1x1/az.svg":"flags/1x1/az-3db731c28289795dc3bda91b3bab129d994a09b8ee0959d34f21a1f840f894de.svg","flags/4x3/ba.svg":"flags/4x3/ba-388ea99507a04cc5d4768bd708d984714aeebbe4177a1cf8ffe0b8331dd856d9.svg","flags/1x1/ba.svg":"flags/1x1/ba-b7d7ab49229704dff0192935c9fb7fb4ea6ba989ce4fee832a738a5d78b39d71.svg","flags/4x3/bb.svg":"flags/4x3/bb-6df74e1044b7f42c2c3b1082d46eb0198aa65a180459fdd950838cd2e6c00ee1.svg","flags/1x1/bb.svg":"flags/1x1/bb-eb10f33cbde25ab6ccaa49cbe3976b4f5ece2fa1d3d485394caa158f10b8b8c9.svg","flags/4x3/bd.svg":"flags/4x3/bd-6cc222c4343f0027697ddd9e8d48f2cf93d3f677b6460b530eabefd2410cfef3.svg","flags/1x1/bd.svg":"flags/1x1/bd-2dc72311aca457668c8bce4f3a22c1b76320e00be50a58fb4001ea39caf6725c.svg","flags/4x3/be.svg":"flags/4x3/be-2b7e73068f4f120ed0ccc3a9fbb8566c9574b206afd8373ed9050e2a971c4f99.svg","flags/1x1/be.svg":"flags/1x1/be-c4c9351d83a4db1f8c7c73dd6476569f0dfd82290ffd20275b7372908c2f2a7e.svg","flags/4x3/bf.svg":"flags/4x3/bf-56669967fef6bb607ea2fd26d32d922cf78f176115287e37e9cf0b8bbec677f0.svg","flags/1x1/bf.svg":"flags/1x1/bf-ffc3651e87b9ccc9374d5bc95617aad474bcaa35871c83ae91fa71eb8b46bab3.svg","flags/4x3/bg.svg":"flags/4x3/bg-ad796782d048f6ddc6715f7ea915a2c86716753579735ec071a106a7f3fc13b6.svg","flags/1x1/bg.svg":"flags/1x1/bg-962bd196cc8e4b702757e17a9002e867843c16415a47a52ecd97459278e5fa1f.svg","flags/4x3/bh.svg":"flags/4x3/bh-aeff05c6dfa41e89db539312faedc41198ba2f2d9bf5ad9f22992a0a5a4151e8.svg","flags/1x1/bh.svg":"flags/1x1/bh-12da0d548841b860a7aedbbc858df1278a4f56105ae643f9379f5c2a3caa294a.svg","flags/4x3/bi.svg":"flags/4x3/bi-7f43c6407a6f007fd70e7b43f9b34e870cc757736a9e2399c46381c8434d238f.svg","flags/1x1/bi.svg":"flags/1x1/bi-454adb690bfce8243896377b9c314ef8f447ec4d85dc677860f521a6c30c896e.svg","flags/4x3/bj.svg":"flags/4x3/bj-85ecb891b5ebbe5802bd23d41fa44f1c1dbf047aceba991e6006e377c53fa263.svg","flags/1x1/bj.svg":"flags/1x1/bj-861b63ba692ecf3e1705296e51ef4f80da47a2eff5cfa29a787bcbc4fc989a53.svg","flags/4x3/bl.svg":"flags/4x3/bl-2c832da5dfab278f90dcfd6265c08211802e94d9b6a5634df6dacdb750723312.svg","flags/1x1/bl.svg":"flags/1x1/bl-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/bm.svg":"flags/4x3/bm-05e6a9d863d77266cc3e2a74fddea640757e09b54d3032711f0d1890b5b61d3d.svg","flags/1x1/bm.svg":"flags/1x1/bm-0a16d9ab856676f9511627004ba4ee08ebe041533a33046c3f732ffb2793cf8a.svg","flags/4x3/bn.svg":"flags/4x3/bn-1560949666220d88ee037b03ce1ac0b95c1b91667f05cf2b8b06a043efb01253.svg","flags/1x1/bn.svg":"flags/1x1/bn-387ebb4b9e1b3796c94edd61402851eafb8b185d7061671b832c1879db69d6eb.svg","flags/4x3/bo.svg":"flags/4x3/bo-96c7f8e64029f530108baee22d8a07cad2787f41eeed0b647f800bb533c39c63.svg","flags/1x1/bo.svg":"flags/1x1/bo-ef679f07e201a91bc3e2152310eb597f731f7133d58be7fc0b1bbb3d8538c666.svg","flags/4x3/bq.svg":"flags/4x3/bq-687781ca2bff027ee1c2bf587d45147cbe81af412d8a4c52e89673535bfa6a6c.svg","flags/1x1/bq.svg":"flags/1x1/bq-4c8a202ed7a99c1515fad01c0b79234163b42cfdc813aee71c0d277b49aadaa5.svg","flags/4x3/br.svg":"flags/4x3/br-8370504ef87598decf706a50bc8b5deecfa80f965b4c3642d2207c9e0804be3a.svg","flags/1x1/br.svg":"flags/1x1/br-cce00e29adbdf110d4155153c8f21e36c46c34847baffafc33b806e121e320d7.svg","flags/4x3/bs.svg":"flags/4x3/bs-80764fdde4884571c2ce5c348231dfe2c57c9e81d4d0d8722ae649ef37a9888c.svg","flags/1x1/bs.svg":"flags/1x1/bs-0a06f669be5ce81e27f5d9ace25e2254113cad9c2964208b5cd136e8b173b6e8.svg","flags/4x3/bt.svg":"flags/4x3/bt-9d00de93c399a0ed1118946c0d662d997847480445bfbbba259e42f80b170be6.svg","flags/1x1/bt.svg":"flags/1x1/bt-32fb8022976e00163073b1f3ff2f62dda6915dd4270d2e09ae51babe67d2ce32.svg","flags/4x3/bv.svg":"flags/4x3/bv-e0fd8f945e245badbcc8deedd6c139e2e19d26b3aea7bf1b9714595a2b08def1.svg","flags/1x1/bv.svg":"flags/1x1/bv-dceefec7161747877af75d9c4b5bd8c53bfeb5cbbe94b41de9a2201321673653.svg","flags/4x3/bw.svg":"flags/4x3/bw-b5231bca6e8f2dd2371e3b4f776cb33af3889d2ad41c3791feb7cba3afe12992.svg","flags/1x1/bw.svg":"flags/1x1/bw-35bd0c7c542ab29aa65df0322f37befe54917cde0ec29a6358a8cbfcd3eb78a2.svg","flags/4x3/by.svg":"flags/4x3/by-0111fe7946228bd49fa5ffc1d04e1dbea12bb0483cee4bf146e23fcb5d7bd829.svg","flags/1x1/by.svg":"flags/1x1/by-3a64902f39b8bac7c042cadcd2ace69975498cc6254f60f31829ebbfe31c2ef5.svg","flags/4x3/bz.svg":"flags/4x3/bz-f6761e8e1132b192c6c2dddcb1d0239ed14e801b8902a7ee8fb0cb869a517eab.svg","flags/1x1/bz.svg":"flags/1x1/bz-2d1e5ec107a277b8e97fede80f512c23ebbf9c225a2c5450dc51c5fb03c9571b.svg","flags/4x3/ca.svg":"flags/4x3/ca-cf63f34a0cef8ed56b4cf1ba24fecc20cea252a9eb9e2c16acccf4eb80b32f49.svg","flags/1x1/ca.svg":"flags/1x1/ca-5c78fbcd8924e8f76111f1cc50317decd6b7c1761e57f19ad33f0b295d002138.svg","flags/4x3/cc.svg":"flags/4x3/cc-f5d8e042b0f7ee2be5ed555b4ea6a0586e69eeb9230701967903364c19e49006.svg","flags/1x1/cc.svg":"flags/1x1/cc-7dc42986b5859331d9f6c96ae7a97b378ff38e4480072cbecceae78e338891a0.svg","flags/4x3/cd.svg":"flags/4x3/cd-9d7d8b11e63073792e3d5e0327cc673101c65ae7545d721b8b1504c31a0c0078.svg","flags/1x1/cd.svg":"flags/1x1/cd-f42723b2e3b7815b2a4b970c5d8a8abea987cf16ff26dbab0c1a78f3ffa3d1fd.svg","flags/4x3/cf.svg":"flags/4x3/cf-902b209a0eaeb8f41f529b5c98240d4fa94dffd58ac3bdc2b6c574125897bb8c.svg","flags/1x1/cf.svg":"flags/1x1/cf-f9b65e234b309ba4f3b2261dcb605b257bd941a308d208b1eaa89af874c779ec.svg","flags/4x3/cg.svg":"flags/4x3/cg-f62e43d08581b8665ab9a7e61ab62cc6b3dd8e6fd0722c7d45c6ddc3f46ec5ab.svg","flags/1x1/cg.svg":"flags/1x1/cg-f2fbf08b1f5fd7e097600a9399d467cb9af8d24fd103a3eeb99f5cf58e6fc0b6.svg","flags/4x3/ch.svg":"flags/4x3/ch-830fe6654b170d461a76a7932b39d352ec30895d512c009a5c193c5a28289158.svg","flags/1x1/ch.svg":"flags/1x1/ch-9f95a95e181489d64144d4502991c00823cf19fefc029cb639199cb100863a0a.svg","flags/4x3/ci.svg":"flags/4x3/ci-3e6b86d6fc1a24b5635c258bbde180f8638e114be354d7379406d5718e46b70b.svg","flags/1x1/ci.svg":"flags/1x1/ci-816edfc3bfc44353f99572310ba67643f979b1681c2643ecc34255df1dbee05e.svg","flags/4x3/ck.svg":"flags/4x3/ck-cadf8156d64ddcff3d60079d017b12bb4e25867e58fa2618f42defa4f7bc8587.svg","flags/1x1/ck.svg":"flags/1x1/ck-450d3b83c32f220510bdbab3ec0fca14edf895e53db9e26e4cd00a3edfb3e224.svg","flags/4x3/cl.svg":"flags/4x3/cl-28ce953691b1c4b0c6d562370913b3ad645e29e56296c16762992e3c30f2a4a8.svg","flags/1x1/cl.svg":"flags/1x1/cl-ed5421f0ff3ba05785268eed2abd3abf76125ec832e519bc10a30db278c23662.svg","flags/4x3/cm.svg":"flags/4x3/cm-d22cb6519bfbf9fbae46b283f6d882f8d46713f18ba59969ae45c542ba2bc621.svg","flags/1x1/cm.svg":"flags/1x1/cm-4619b0400d175f6c0f686526cfdbfcc6f7c2fc7587449e05ab0385cc7d4e8bd4.svg","flags/4x3/cn.svg":"flags/4x3/cn-7af9da3dd810174340b79e6fe636bec183c71d7ce314ac4a5a815bfd388dea54.svg","flags/1x1/cn.svg":"flags/1x1/cn-22e04d44d7f85e6f5800bddc6a497e5722de8db2ad74c6c525c392bd7b8c6e09.svg","flags/4x3/co.svg":"flags/4x3/co-ef2a3c7e495d85d7df1b9bda27023cd558abe89402cad0ff42428c2c5b877551.svg","flags/1x1/co.svg":"flags/1x1/co-42915db89e2fa2f9f97c09ecafc188eb2ec4e51efa87685a01c25d2f0afddf45.svg","flags/4x3/cr.svg":"flags/4x3/cr-7853ef9dbb5832a6d2738b44afdecfcdaa80c56cb66c448b8a8657e236854c8d.svg","flags/1x1/cr.svg":"flags/1x1/cr-b86f916cc80cc14db90b66c652a2919a26baf2864451685af9c34d6310c3f8c6.svg","flags/4x3/cu.svg":"flags/4x3/cu-e3a3afa4a5c661ad431dc45eb501d7e1280b4a397bafa3956a9fc5bab8735f45.svg","flags/1x1/cu.svg":"flags/1x1/cu-9563bc3aa0b1ac659dddaa2534c37d338e1da3dfd3726a717fc85ca8449c83da.svg","flags/4x3/cv.svg":"flags/4x3/cv-d39c3ae09026623cebad38bbe41231aea9b9afacf7eca1d0abf6666e91dd8bbc.svg","flags/1x1/cv.svg":"flags/1x1/cv-78857e96ac5b49478a49578f422abe217af9ed7d90fa2d08ae72a67de4f6999e.svg","flags/4x3/cw.svg":"flags/4x3/cw-c65dd455b3c113d9088e563033c5f1ed3945d6dd88c8f13317fe297fd2291776.svg","flags/1x1/cw.svg":"flags/1x1/cw-61f38f9076443eb7ca682abc21e6ea5f170bd855813d7297d85602b76ca36171.svg","flags/4x3/cx.svg":"flags/4x3/cx-aecc7a8b4b84b9f00a63154b027cb8ec78bebcec33e756b5e95151efb43420f7.svg","flags/1x1/cx.svg":"flags/1x1/cx-c052a0033a120d56c108dc0a919c3fccb9d01a4b78f1f778e3f2973e96197868.svg","flags/4x3/cy.svg":"flags/4x3/cy-b8e0d56b75e0954429cb2253aaf289a83e3c72abd52b4132bdd4016f2bbd43c9.svg","flags/1x1/cy.svg":"flags/1x1/cy-34aa50b77e1b86f5305beec283996cabc45fef1950582b868addc40fd9a8438f.svg","flags/4x3/cz.svg":"flags/4x3/cz-c2a15f3c50b7920c7d82fd9fb21f77c44fb3883f0e34dcf197a23d92d9212290.svg","flags/1x1/cz.svg":"flags/1x1/cz-487367824632a5097e16d7ed1ffc7fe8e233f9e1af45522571e1d4da10de92c7.svg","flags/4x3/de.svg":"flags/4x3/de-32f54fb46c7fcaf2dfcf9172273456ea57f975efb228860def92481efe51c506.svg","flags/1x1/de.svg":"flags/1x1/de-2c94f333afeb14810030d786620fc32e65ba79af53b1037192383823996bb77f.svg","flags/4x3/dj.svg":"flags/4x3/dj-d84d938856e7b6bdf8d38413c84a6968f94dc2adb218f2a9fab3d703341efc33.svg","flags/1x1/dj.svg":"flags/1x1/dj-6960cafac7e0d593152b60988fd12f5d1bb95068bf055c638cb999459f932692.svg","flags/4x3/dk.svg":"flags/4x3/dk-fdd09296ac803a8cf4066ff5488821458a9788985e3cc09356d4c4ef81959ecf.svg","flags/1x1/dk.svg":"flags/1x1/dk-87924239a5ff1605582e1736f5ef17c9bd9d580d796d94b05ff668e2a52a223e.svg","flags/4x3/dm.svg":"flags/4x3/dm-dc3b5c9634f0751ebfec181b12a7c530673ced1001b62a9126ed5ae39ba57203.svg","flags/1x1/dm.svg":"flags/1x1/dm-c8018ea775b0add069f676bbf4b446ed19886c192aa742bb6a61c3602ca63211.svg","flags/4x3/do.svg":"flags/4x3/do-5e2d6816118f78fa4a362ee6a276dac655a4c99d57a9e53a52198f1624ed186a.svg","flags/1x1/do.svg":"flags/1x1/do-f9862ff8016b35d30d5c37ac2c585cdddf235e56ac9a7ae31a90c96963865f57.svg","flags/4x3/dz.svg":"flags/4x3/dz-8a14ddcb20a69c3265924fe2af141ea78c0af47ea07a88707c392a2793092cd4.svg","flags/1x1/dz.svg":"flags/1x1/dz-0e2ada15ba7882343f7512929d3cf981a23a91817fdda0be1ed6a093161b649e.svg","flags/4x3/ec.svg":"flags/4x3/ec-a4c3c62b4272f5000e1c8f563c45ce8305ec71f4e4e49ac477d81b5cb692d7e6.svg","flags/1x1/ec.svg":"flags/1x1/ec-c42aa1de56f2933fc6703e7a59ebc8b424c66f190697ee66814a137b56fa6969.svg","flags/4x3/ee.svg":"flags/4x3/ee-6148aad79adb1c847fedb9da5a7e9c9d47e99ef4c8f4853bb9800e738bddb19d.svg","flags/1x1/ee.svg":"flags/1x1/ee-9a87370a85922c5d103d9d21fe3e778b801a62cf40e1f0efe8d708c5fe3b3ac4.svg","flags/4x3/eg.svg":"flags/4x3/eg-3b2f122e512f0fc470666b35af4f677404d4b811cd795d5cf4e44a72ffd01285.svg","flags/1x1/eg.svg":"flags/1x1/eg-a050fc5953113bfa5e12867313b321df472eb86ad1e3d5362ebb27ac2edbd28b.svg","flags/4x3/eh.svg":"flags/4x3/eh-fea043048f74c728961fe981d7e5d50e286fef39f3e68659b699c6c357c202dd.svg","flags/1x1/eh.svg":"flags/1x1/eh-8ea23a1b6813465e739d6f5e2ca6727331fae96cd32c86041a1ba48926a14cfd.svg","flags/4x3/er.svg":"flags/4x3/er-b24dc54f7e94d0934d05faa7944e6039a56de8a5e4779a399046f047dbd1b949.svg","flags/1x1/er.svg":"flags/1x1/er-6921f9776ece4a1b1ec594ec5665076462cef2d0b41eba83a7bc840ecf88287d.svg","flags/4x3/es.svg":"flags/4x3/es-e36093927dc1fa109e4ddcd4baa65d53d233c23bcdd32796b96409b52c5adbc0.svg","flags/1x1/es.svg":"flags/1x1/es-16a6c048523ee57edd91e60e87aae136a96893b48828d932a24436bb219c00b9.svg","flags/4x3/et.svg":"flags/4x3/et-a3ef36d217667b7e8ebe910469c2eeef563f03d3ea5628ec7fea0f72650db28e.svg","flags/1x1/et.svg":"flags/1x1/et-f66f415e5d5b8b697ed7bb85f4ae3408f9cefaeed7ff0136c4c03da5c3601340.svg","flags/4x3/fi.svg":"flags/4x3/fi-a94779c54a538d2f57a421e6beb619f07cc9c2bda40817d236b686deb8eb3b4c.svg","flags/1x1/fi.svg":"flags/1x1/fi-865b1ae3ed34a0cf0928c6289411569add2065c7ea4fa6897f971c322d955b16.svg","flags/4x3/fj.svg":"flags/4x3/fj-97dd8f9b0d9df1cd965c8a85ecb6feb538acc83b470596ccd199f71dc3d2eff9.svg","flags/1x1/fj.svg":"flags/1x1/fj-f772a5a860faef823adad1b0dc8e848349d094f4fa3b37e48c87382bd443c861.svg","flags/4x3/fk.svg":"flags/4x3/fk-788901bf125ceebc6c23fa03c801420c787bbc4ce6aa4511ccaaba301e379886.svg","flags/1x1/fk.svg":"flags/1x1/fk-5d8df0034167cc75863d02bfdb6147da3a694102f7eea0d92e717a048437fc0f.svg","flags/4x3/fm.svg":"flags/4x3/fm-7167ec387c426a817bccbfec86c8f815b82b36504e1d480f4f9fa04177bdcba0.svg","flags/1x1/fm.svg":"flags/1x1/fm-d08e5959b5e3866cdf814f8d6ab594cb3ca84f0887a3adad3bff824ea0aca70a.svg","flags/4x3/fo.svg":"flags/4x3/fo-af6148d661d02a6580e8714a6271776b4b8bf3b656bfd5fd88acdd1aa170366a.svg","flags/1x1/fo.svg":"flags/1x1/fo-26d5af2770c46935170988cbad16ef9aad9be34b38ea92847e6646a516878598.svg","flags/4x3/fr.svg":"flags/4x3/fr-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg","flags/1x1/fr.svg":"flags/1x1/fr-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/ga.svg":"flags/4x3/ga-80f90062ef9aa4d236c81ec6c6c6e08058750794014bb93d8dbdc8e1684ca4fa.svg","flags/1x1/ga.svg":"flags/1x1/ga-a66094862d24f29704c190fe42ff50820923f3940ff417f3e1623e9089b57eb9.svg","flags/4x3/gb.svg":"flags/4x3/gb-d85f0f149b4390bed6624bc30ca2cbfa37d394f14474fcf81d63363ad363e284.svg","flags/1x1/gb.svg":"flags/1x1/gb-2f0cc6ed1e8e9a7e56cafd3500585d685ae0c51abacddc52f750fb4d23f60b04.svg","flags/4x3/gd.svg":"flags/4x3/gd-51a8d53466df4426bec5fb202dd8f35239324b9c8b5256d38fe411c4b79945cb.svg","flags/1x1/gd.svg":"flags/1x1/gd-9156f824a83004691a7a354e925bc1680b5cffe663bbfa37aa4609ff28148218.svg","flags/4x3/ge.svg":"flags/4x3/ge-4ef2c8e6f371a711c61ac54d8d201a80aab53767cacc5322fb848cd3e38b00e7.svg","flags/1x1/ge.svg":"flags/1x1/ge-a3af8272a5fb63372705825519543e53269282c4800b70e6a93ba69674524eee.svg","flags/4x3/gf.svg":"flags/4x3/gf-c7d5ee882949b708641f99ec02edcc6b3b2362d393cc3869342442225be7cd3d.svg","flags/1x1/gf.svg":"flags/1x1/gf-b297e376fc00d3d7bfafd081766dafc4590f4ac4b71f53bc2bbdf2c028547920.svg","flags/4x3/gg.svg":"flags/4x3/gg-e99b36723ffe04d7be392d612c76ef44e82bc84823d71793eb38e338116f0ee0.svg","flags/1x1/gg.svg":"flags/1x1/gg-3f764a4568626d43f89b2b200dcbfe68de3093be418716549ab7c5c33f433d37.svg","flags/4x3/gh.svg":"flags/4x3/gh-817c2eb8b3f7190647510371b2d38ad8e28e1348cb657e34778f970af5ca3868.svg","flags/1x1/gh.svg":"flags/1x1/gh-87a6486910cb62e58439da330c4270d1e2a0fd8e1ace80987c295971d15f9af3.svg","flags/4x3/gi.svg":"flags/4x3/gi-52bfb6cd7cbebf1da96dfc6bf708d3b7239984d36400181ca4ac020081ae41b5.svg","flags/1x1/gi.svg":"flags/1x1/gi-f7ebd8d36a5cb260392a92f10d8bc8d7cf11433fdce9474e08cc52a07dcd5258.svg","flags/4x3/gl.svg":"flags/4x3/gl-e031a722ec76e8262439e50a0dbba62f7b7bea020361f2bf4a9a49d6b59954a5.svg","flags/1x1/gl.svg":"flags/1x1/gl-847b3362e50c1d74aeb01a5ea55cfa2950597cbbfa2377bd7cb70e273d4c57fb.svg","flags/4x3/gm.svg":"flags/4x3/gm-a13d89d1cd66c77706dbaa380370ce3d62c0cf3219c287008759e823fd42a27c.svg","flags/1x1/gm.svg":"flags/1x1/gm-4a4490e2aea203b32862d6e58bd02efc45d07a401684795ecae68ddb97756387.svg","flags/4x3/gn.svg":"flags/4x3/gn-cfa24192de905cc4a07dffb54ea252304bcffd387ce2d6dedae89b654486f286.svg","flags/1x1/gn.svg":"flags/1x1/gn-b50eaffe8a6fd16c9cf2c2d51adea53250b089f04ea701b8d5d812877de6d084.svg","flags/4x3/gp.svg":"flags/4x3/gp-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg","flags/1x1/gp.svg":"flags/1x1/gp-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/gq.svg":"flags/4x3/gq-548afdaa6c448c6bec87c1e2148831c41f9a2f4f83922cf32e5a3904679d889d.svg","flags/1x1/gq.svg":"flags/1x1/gq-28c6e2820b326370a489d4f9efaf258432fdabecb67e610ddd752ed0f0e8a8ce.svg","flags/4x3/gr.svg":"flags/4x3/gr-e2aa8c913feebbed26a8fa0de5ac4aeb51545a4c0dee9bfda4ec5d9673f96386.svg","flags/1x1/gr.svg":"flags/1x1/gr-64dc4363c7c3b827adaa7cd51bb8a0f30bd0a547e86772c473d433b1a6033e2f.svg","flags/4x3/gs.svg":"flags/4x3/gs-83141fac364fa2871379c6b1cb8da9935a185bf9b0e5dafc6b6458fa13359589.svg","flags/1x1/gs.svg":"flags/1x1/gs-31c9e0016c7bd2cfed68cc4e6c2ca73123ce9391e8a50804e5c74101b72e07cc.svg","flags/4x3/gt.svg":"flags/4x3/gt-b4ca8c4ed71131c43ba14f3631a0ee92dababef325bd698ee0bac0da84980c85.svg","flags/1x1/gt.svg":"flags/1x1/gt-a7ce73eaabe1b659b733691076f8455051951432a1fac682f5896f8c4af6ff69.svg","flags/4x3/gu.svg":"flags/4x3/gu-a71a2e02c06f22984e424d15a410d9261ec9ddeeb3df112d5f46b66a09f5bd9a.svg","flags/1x1/gu.svg":"flags/1x1/gu-2156b3d721b79189d40c7f5b5de9e219f83a40b69e0a3855514a097fcdc2f2d2.svg","flags/4x3/gw.svg":"flags/4x3/gw-9eba06bd7c024dbd764b1bc1360120ed8a280d59075f81a50994930534cc42f2.svg","flags/1x1/gw.svg":"flags/1x1/gw-6c4ca99e9871a9cde81966aaf02aac0106e2210f9c64e94bdb5168c7abbbc0e6.svg","flags/4x3/gy.svg":"flags/4x3/gy-b6f25e30b463f760ea01c81ff88a3932bf6812e6b626fd7fbe711a4cbac246c6.svg","flags/1x1/gy.svg":"flags/1x1/gy-d82b2a81ce6cca3e7c5854a5bc1198224b6455eab7adf06d69822a3cf433a1d2.svg","flags/4x3/hk.svg":"flags/4x3/hk-b69c165653e2d112296b963d3369a7d8f656e77432c6c1c5ac1485db077c80a0.svg","flags/1x1/hk.svg":"flags/1x1/hk-09c50dc6f3b0d5bffbc85a2998c5c86da531a939cf48c07ddb644061ab0b2222.svg","flags/4x3/hm.svg":"flags/4x3/hm-faf74b1cde15843a42becf5d05a373f9af8d867d68c824e80d2c41b48c23ea57.svg","flags/1x1/hm.svg":"flags/1x1/hm-6cc1243d9638246c1bac7e52287dcfc6f9b00d142105fcfc9e8b7b3405d4852f.svg","flags/4x3/hn.svg":"flags/4x3/hn-3ad02422915a4ac6a81c3249610cbd42638ebe27d412a2d490bc63e75e1028ea.svg","flags/1x1/hn.svg":"flags/1x1/hn-f0be4d00b892418864d0e4cd3000ee2dc519dbb96d424cb42f55707f8999d44a.svg","flags/4x3/hr.svg":"flags/4x3/hr-6671992f1644503121dce7774bf2f7e2ab65da14124251d80b024d78fb34f6f0.svg","flags/1x1/hr.svg":"flags/1x1/hr-f086b6932d53408f2b57db5e038dc7b508af60a49670e187eed42714f1115b49.svg","flags/4x3/ht.svg":"flags/4x3/ht-0c3452573c61366d1e9d647d61675d2e9a309312e63c649f98d73fe37d2aab4f.svg","flags/1x1/ht.svg":"flags/1x1/ht-80c212d49effab9e944de758c08cc296833bc2a04b3098e8ee58266657522fdc.svg","flags/4x3/hu.svg":"flags/4x3/hu-b48c8253bec6b4e08f8954a2955fdbc2311d254b51358770d3eaec5fe0875965.svg","flags/1x1/hu.svg":"flags/1x1/hu-af59966ca652f5ba1d081af0c1c2343acb479d1a06e03d248bde266cb29aa931.svg","flags/4x3/id.svg":"flags/4x3/id-e02525ae7152d4bd10dcad2ffdf0bf5d08c6c67d3142bc78a7cdbcaf1fcd4a4a.svg","flags/1x1/id.svg":"flags/1x1/id-5b846f6ce4715ea50d4068d9941290229c1be67d619a978096eab2c612e9b297.svg","flags/4x3/ie.svg":"flags/4x3/ie-0e75a4c4027484997f14bd4c2529384ef6c621591908473ccbeda20381c05c93.svg","flags/1x1/ie.svg":"flags/1x1/ie-6446113a9abff1feba085706937ff83d73ba310c78153e8da3ca2d6f0c529510.svg","flags/4x3/il.svg":"flags/4x3/il-98c3c0d9628008ac3a947d8f10fcb01d8e2545dfb265e94e6a29910e1ba57a2d.svg","flags/1x1/il.svg":"flags/1x1/il-0f95bc7892bcf9eb3b6af9bf930e803b5121c45fa7261874ab4d7a8542c20c45.svg","flags/4x3/im.svg":"flags/4x3/im-0c402e364a705500028c46ccbd78a29944e91103b490607b366ae1d4f221ffc0.svg","flags/1x1/im.svg":"flags/1x1/im-718f45e1c60fd42db2a814bfaaa3a9be828f4dd0e4a4aea49e021f066087dece.svg","flags/4x3/in.svg":"flags/4x3/in-a6c958c4b5cb12e2392d81b11dd0fed5fd5d0a66c7decb3ad3c8d27175854d3c.svg","flags/1x1/in.svg":"flags/1x1/in-b4163420567e8e04fa58b79688af8d7bacf32ddf0e2b63ae2f1c5f0aacaaa696.svg","flags/4x3/io.svg":"flags/4x3/io-b951cf1fa71ddae941ee31dd018d2593bb8621ff92508bb311c7362c537a474c.svg","flags/1x1/io.svg":"flags/1x1/io-d9dfc871f0bca35430b17de2e55394b0145334aa2080e07856e21d6d2e007d8d.svg","flags/4x3/iq.svg":"flags/4x3/iq-6a74e49d2c3d0ff072086fba1a2fc8b948ca34891a3aca960f9daacec107bcc6.svg","flags/1x1/iq.svg":"flags/1x1/iq-95f5be79b6ab86e6338abd39ef8499af1517dba8ec3b266ea8e3c954601f0bbb.svg","flags/4x3/ir.svg":"flags/4x3/ir-5f9fdfd2d4cad535338f6de7927cc8094d02eaf06dd5122d3cba9e859c9ec4df.svg","flags/1x1/ir.svg":"flags/1x1/ir-f5367274525b1f050dfae895943620a2e711f63a5726b273b488721a4501465d.svg","flags/4x3/is.svg":"flags/4x3/is-15409efb6cec16b490b4abbbc03db415ef3448cb8cb281dd7cd1b2ba496d534d.svg","flags/1x1/is.svg":"flags/1x1/is-500c3ef83fe917ab9cad59b7e8e6d693d9e78876febc1882c4bb06c8876b7357.svg","flags/4x3/it.svg":"flags/4x3/it-a285a0e341ba9492a2b7478e8a7a13f7c76d3c6a581aafb965ea26e1c554f0f3.svg","flags/1x1/it.svg":"flags/1x1/it-eeb47e346a5f6124b34f8428c97fc7dab2726f8d36d62dec08df3ec7171353cd.svg","flags/4x3/je.svg":"flags/4x3/je-b611f3e0fb7a94f85fa7d5f6f7a7db839381d054eb92abe0856dda8218c40687.svg","flags/1x1/je.svg":"flags/1x1/je-39c0c1482c1c533366153edc873f5eae266fdbf591e2022a7f82c17ce2d676ef.svg","flags/4x3/jm.svg":"flags/4x3/jm-62fcbb8ed5b923b6aafe3990a24ad571485b4ac8db1bd7ed7b200cfadeeb8d7f.svg","flags/1x1/jm.svg":"flags/1x1/jm-b57cb61fb8eb67f0887afb7c779d6033e1c4c10242662093df69496aa58cc464.svg","flags/4x3/jo.svg":"flags/4x3/jo-8e1174e66beeec19016b2754e8bdae987f420fa937ba78efecd61c177d9d40dc.svg","flags/1x1/jo.svg":"flags/1x1/jo-47d2fc18e8af9194bcb249161a10383f89c11a73148b6dc77f4ab47a90294ae1.svg","flags/4x3/jp.svg":"flags/4x3/jp-1785964f1f3a4346ab8e1cbdc211399c5ced34a566c4725f3d23e8105413d6f4.svg","flags/1x1/jp.svg":"flags/1x1/jp-a71cace9d237527635ee960b4df645f202d630c46458cf7e7a7ac09659e4404f.svg","flags/4x3/ke.svg":"flags/4x3/ke-680e981e37f7f0497e148043390987748a5bc78f4c3af09cf58c61d42b2a4a24.svg","flags/1x1/ke.svg":"flags/1x1/ke-60ff7f8bf6b5da9182867b8200475cb0a87f80cc960643ee15c99bcdcf200654.svg","flags/4x3/kg.svg":"flags/4x3/kg-3a93d17f0ed778664ae760032710fd7235bc43090de3543ec50fb8d2dfd9b595.svg","flags/1x1/kg.svg":"flags/1x1/kg-165c50f348fe0d4d8f0bc9cbf2666acde0f3a81dfed3398b8a7db5a51e3348aa.svg","flags/4x3/kh.svg":"flags/4x3/kh-6f3eb3cb44cd8124f4b7cb0d9230ddab4f782ad10746c2e1fa73f54ca2fe4446.svg","flags/1x1/kh.svg":"flags/1x1/kh-9541bd094c9e79e8ebb77a8ba94b22ed079b0502b2d70769b89ac9d19d16781b.svg","flags/4x3/ki.svg":"flags/4x3/ki-a1b39a59ce5be52e1c6ca618ccc97f47d2a7b0d652bc2e5814c30a13d03842b8.svg","flags/1x1/ki.svg":"flags/1x1/ki-e9e5127171d893619b247b605865507b61019dee9e6ea589c5cd0c0e7d513f22.svg","flags/4x3/km.svg":"flags/4x3/km-2ad8132e636de92218e06cad237154128fd1e84dbed82610e138ea148a53c01a.svg","flags/1x1/km.svg":"flags/1x1/km-d9d978cca1790b3165a0d18e159a536b4a2405f12b0200b03cf721042d326089.svg","flags/4x3/kn.svg":"flags/4x3/kn-08b7f26ac06f65c797de647f61bb738a4212cfc9ceb53ef11d8db093b58386d1.svg","flags/1x1/kn.svg":"flags/1x1/kn-e632854084c163a1752b53117eb4f773e57eef231917db846fc8009541cfe4b9.svg","flags/4x3/kp.svg":"flags/4x3/kp-f073e224e1faff5a0bbcb51cd05288d1b13cb607dda42fc7702afe8cfb01d0b3.svg","flags/1x1/kp.svg":"flags/1x1/kp-504fc83119f2a2c34ac75051d3ce15edee6f93555d729d759ef15f5f5caab3d3.svg","flags/4x3/kr.svg":"flags/4x3/kr-dbe4354aefeb100e561ee6f6ea6cc46551c1722d1b75fc164b60b0592d9dc30d.svg","flags/1x1/kr.svg":"flags/1x1/kr-3aefdef6c6b72177aea924981a673bcc58c24b8c98cb00960e23250c07766b63.svg","flags/4x3/kw.svg":"flags/4x3/kw-fc682de5f565e3a918a9cce44a87a0cd8a40b93a555be3dc7c381ced74853021.svg","flags/1x1/kw.svg":"flags/1x1/kw-63c2078d09713c30c0b917fdaac63a1fdb9161ec4b8cf1e91d4a9a8730a5cb65.svg","flags/4x3/ky.svg":"flags/4x3/ky-77da018be33fa8aec69147e6107ff363bfc467ba857e7d47bd383984305cebab.svg","flags/1x1/ky.svg":"flags/1x1/ky-4a6b098e38d727959969a977668aefbdf6b9adcaef4cd922aac232d64a8a9d75.svg","flags/4x3/kz.svg":"flags/4x3/kz-ce3998065f1b6242d0a1755ffb590f15b2ff477b594b26b9a497f7181304bbe3.svg","flags/1x1/kz.svg":"flags/1x1/kz-795fd9bf32b68805f9e80f120db569eacbd5727fc523d7ff89943bdf9ef5b1e9.svg","flags/4x3/la.svg":"flags/4x3/la-dd2ead7123a2c4d2fda71d8a462319d30c6ff8e83c72cfd888230f6a670fdff4.svg","flags/1x1/la.svg":"flags/1x1/la-7ebc9f64aad0049a8167272ce06a7c1512c7d14080ff93a88e6b28e4050f33d3.svg","flags/4x3/lb.svg":"flags/4x3/lb-7afb0e27b8cec77e2c65c3467b68ab24d49879a4739ab4780154a7db4358f6fc.svg","flags/1x1/lb.svg":"flags/1x1/lb-6f50829425260779f08ad80ac9430796e64901b0dd74d010bdf2336f541eb47d.svg","flags/4x3/lc.svg":"flags/4x3/lc-9efcb3c88f9ff13bedcbd0c7f48c7fab604d3842ee559be3a11c6bc64e31a53c.svg","flags/1x1/lc.svg":"flags/1x1/lc-31d72d1034bf031934561da9615fc3db916bb08a210f434a981e053a7edfa339.svg","flags/4x3/li.svg":"flags/4x3/li-9eed98d7d4e07cba0a2aae80e31add4bbe663e959df8cafd607cef17daf4351a.svg","flags/1x1/li.svg":"flags/1x1/li-f655bf461c1690078c846528eb6d3ebe8d594b2539e3cc37f89204a754424c81.svg","flags/4x3/lk.svg":"flags/4x3/lk-3471b0585fb1e0ee350d6fe87e55ef07eef01e99444263b86ff005156dea1b73.svg","flags/1x1/lk.svg":"flags/1x1/lk-d3bb56415e6e2095a470cf4e2ed455c57cde204aa79362786aca785db35ecff8.svg","flags/4x3/lr.svg":"flags/4x3/lr-a39f30a6169c4a3f3ff8e0eb04862e7f941c5d7c8e489ff5e7e4cd8cd436f5e2.svg","flags/1x1/lr.svg":"flags/1x1/lr-731191ad65bf784386cabac12693722d16aeb2e97d6456cc33488f805067aca8.svg","flags/4x3/ls.svg":"flags/4x3/ls-1e4f7ec2600e30b515cd12b509c376c3014d760731d89f87ae9a962fe249b3d4.svg","flags/1x1/ls.svg":"flags/1x1/ls-ba2a8327ab9b0e74f4f411ab989980cde309e86395736a1f77e17a0eefc85266.svg","flags/4x3/lt.svg":"flags/4x3/lt-d6a367644254244a8219c2eaa525b43d261f5da4fb074b0e08cedeb343f737a1.svg","flags/1x1/lt.svg":"flags/1x1/lt-933670ec7627a78f72b60cfe7f49cd09b4afa58fb341857f76a5b7b612c12c97.svg","flags/4x3/lu.svg":"flags/4x3/lu-949c9e81217b58fe622d4d4d00903499b3e2249aa3f688401b78bd3ad977c740.svg","flags/1x1/lu.svg":"flags/1x1/lu-ab39ab3ddef396fcd816d4170f3f73ed89465ed37a180685c68b3833aa3f01a9.svg","flags/4x3/lv.svg":"flags/4x3/lv-b672e3ee7e344abaaf9128111a6543ad7897aa92084b74c42a2877aa1b8cf7a8.svg","flags/1x1/lv.svg":"flags/1x1/lv-55fc46607d153eb1d40d1b478ab6448117b79cdc3d9d973ea2beb44ee4d77316.svg","flags/4x3/ly.svg":"flags/4x3/ly-6f996771734c3f63c65d925a3d991f7d238734cc10e56b3160841fac2939e21a.svg","flags/1x1/ly.svg":"flags/1x1/ly-4e0bf9ff6856dcbba708b4fb176abd44cd385274badbb6e609b596a660109191.svg","flags/4x3/ma.svg":"flags/4x3/ma-70b305040cec175c749a22e6d1e0c1c96bd2164768f208a34d6c8a7ed5caa0ae.svg","flags/1x1/ma.svg":"flags/1x1/ma-919d8fa71ed3a3cadabade682f5326334f11d659245d51b31b40880689cbe275.svg","flags/4x3/mc.svg":"flags/4x3/mc-f0bd30faa57995276026f00e97f6d4ffd3c151e6d2c3d440331ac739965f3bc9.svg","flags/1x1/mc.svg":"flags/1x1/mc-6fcd8ec0404ec1e02e8f38934202004b443c39ffa369be045872c4c89b0674b3.svg","flags/4x3/md.svg":"flags/4x3/md-4bb12bafd1cae33ea4d420dc80301e573d39247323d0eca7c343650a414931ad.svg","flags/1x1/md.svg":"flags/1x1/md-76e3c791e11574492239b07821b43d8f5308e8b7b9ed7d72a5b189f06bb0a81d.svg","flags/4x3/me.svg":"flags/4x3/me-096ce4c309762cde78cb1fec7f1d9ab7c38e6270ddb5aaaf9d29ec63a160e276.svg","flags/1x1/me.svg":"flags/1x1/me-9f8dc8f8e7b38bfc2edd5a35d13818544d304c7834a315ffbfcccecf7a9e6ba6.svg","flags/4x3/mf.svg":"flags/4x3/mf-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg","flags/1x1/mf.svg":"flags/1x1/mf-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/mg.svg":"flags/4x3/mg-f8afb0a551765b27b0c173a623e30af523e907e665858c401e8246b2fa5c2052.svg","flags/1x1/mg.svg":"flags/1x1/mg-d5527653deeb8cd3c7d24082dab7c9dcd8218dd9c9043c832cb1436f1d8090ae.svg","flags/4x3/mh.svg":"flags/4x3/mh-4edc79226b41a72a4f0a8ca6d4f7f8f73e92972ae6b30c96a9dab4274a046165.svg","flags/1x1/mh.svg":"flags/1x1/mh-1bd8a38684a5d55aea8319d106fdc1e62a91424e36a8fb5a27f215cfadb98707.svg","flags/4x3/mk.svg":"flags/4x3/mk-2098f24dab54b22fbc7aff34c15009b4ae7012a6848cede09d6db9ed5caaffec.svg","flags/1x1/mk.svg":"flags/1x1/mk-1b083e708a18b40383921595134b167e0fa84a6f233934668481b902b518f089.svg","flags/4x3/ml.svg":"flags/4x3/ml-5cb117165c5ebebb07725430dce0fbd0bce2ad618967354eda44d9229e16c676.svg","flags/1x1/ml.svg":"flags/1x1/ml-cf94ba5bc9f5b9f3b15c187243a5fc60dd80a43715da7ae005dc13321f0d411b.svg","flags/4x3/mm.svg":"flags/4x3/mm-987d96563a6517ba568b2ad3e8dbcd77c01c0a6114b8497b214cf3e967ce27d1.svg","flags/1x1/mm.svg":"flags/1x1/mm-a78cffaf229320ef1cc28570ec3e91e9e188d8cff8cc01f14423b9c5383e87d2.svg","flags/4x3/mn.svg":"flags/4x3/mn-a3dc85a21b868793f084dd954c31e13c0cf993eef59102a102406c95d99e243d.svg","flags/1x1/mn.svg":"flags/1x1/mn-141a15f289b3e49d8e0c1a21b9015f14ebb9e55660ebc23deefa55a3fa6fc9b5.svg","flags/4x3/mo.svg":"flags/4x3/mo-f58284a9e6021d88f7756d6cbe408f79789a30113084ef6bbd8541e15008d684.svg","flags/1x1/mo.svg":"flags/1x1/mo-b871b2e0087b09318060384476b25c28de16acac946f5ecbb4e162660e6486c1.svg","flags/4x3/mp.svg":"flags/4x3/mp-d9f8b726babd7cba9e128eb81ce7e7d9adb81945f056072aaa3b5540c8299f9d.svg","flags/1x1/mp.svg":"flags/1x1/mp-41d27c2d802f8487a3343a962c11711e9ebf682bda766cceb72ccac2b37dbda0.svg","flags/4x3/mq.svg":"flags/4x3/mq-21e70a8c243dc97f486dadf01f0b3300a8310c719d5a650fe4d7512e7ee8169d.svg","flags/1x1/mq.svg":"flags/1x1/mq-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/mr.svg":"flags/4x3/mr-76898913a879ac1eadb03f5950843ea63fd9a0a998d1b9113c386012cf1c80e6.svg","flags/1x1/mr.svg":"flags/1x1/mr-5288f91d4c12b6fdca7129a8564638991028f730a170bb72be9fee1ac8d8f206.svg","flags/4x3/ms.svg":"flags/4x3/ms-add4964ba7fa5a4440d40902dabd49345476d13ddf6e20e7b06834ab30721b79.svg","flags/1x1/ms.svg":"flags/1x1/ms-47f49520f4ba965587509e45980be0ef29792830738cdae717e52616a11bc00b.svg","flags/4x3/mt.svg":"flags/4x3/mt-55b5c69335d7e2691e50443b34fc5b708309c99326fea6233dd3575c3402043a.svg","flags/1x1/mt.svg":"flags/1x1/mt-bbdc4f8e3dc66dc066d8ad0a264d751090794c53eee6be34f8df84ab389988a0.svg","flags/4x3/mu.svg":"flags/4x3/mu-d0d2fd85209d5ca5b9f90da3947f3142b96ae688536ed796f2bc912aef84c333.svg","flags/1x1/mu.svg":"flags/1x1/mu-3e18fa9a066e02636f5a119d445b4f0439c8b75bae4e2999c17a6105bb95bd5a.svg","flags/4x3/mv.svg":"flags/4x3/mv-595fccd022d985bf319bfee09ded164593e8206c364adc1fa3abbc68450c516a.svg","flags/1x1/mv.svg":"flags/1x1/mv-ba59c37e1fcf099ca68e7fa68fc30d5e75c4171aad18be54126fd214a0b0b6b5.svg","flags/4x3/mw.svg":"flags/4x3/mw-67c2a39590afb916054063262e67293e303a264b9f9219767c13feb988f47212.svg","flags/1x1/mw.svg":"flags/1x1/mw-b82e28e3e51b467c8db86b1dd9cae837204255320928eb5e5f6b8536c7b1b28e.svg","flags/4x3/mx.svg":"flags/4x3/mx-416fe6de02b7d9dfc0e479454d06fa7701631bf848c888365bc56978ea524bc5.svg","flags/1x1/mx.svg":"flags/1x1/mx-b9461685b2714abb039fbd65510729f7ab324940045465b1c74666721d721f7d.svg","flags/4x3/my.svg":"flags/4x3/my-c0f21e9c6679e1ae455392ded0b9e5d8aad5f5ee79589634ac89d88f0c548060.svg","flags/1x1/my.svg":"flags/1x1/my-868a1feec94ccf789db1040a953f25d3982056514195dcd961ff2d6b51b04431.svg","flags/4x3/mz.svg":"flags/4x3/mz-0c06b80f82ab675854d23444740910298f4b8e82b929112dbec4e1927342120f.svg","flags/1x1/mz.svg":"flags/1x1/mz-09a8632f1d20d400401b944af3c4b13e5d64052466bf9a59f6d2927d188150da.svg","flags/4x3/na.svg":"flags/4x3/na-43a5f5934fc004e64eadcfb7675114ed1eab3b7f1e9153886edb0b69e7581ce2.svg","flags/1x1/na.svg":"flags/1x1/na-549c5971f5c2a771c83113a4f9b7a9b5e69546d855e92559b49d6772ff6d3e82.svg","flags/4x3/nc.svg":"flags/4x3/nc-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/nc.svg":"flags/1x1/nc-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/ne.svg":"flags/4x3/ne-3be65335a772b7ba2c8916d0d60f12ed4cc2aebc302151ea23ced9c9a3c38ed4.svg","flags/1x1/ne.svg":"flags/1x1/ne-783c25c63f68afe3c462b326b7faec7cc1493f6a4c140bc62fd524604de09d27.svg","flags/4x3/nf.svg":"flags/4x3/nf-6ff37be9a0581fec55eef9e9871aa0d76d61c44007445184712ec6df3a04208a.svg","flags/1x1/nf.svg":"flags/1x1/nf-2f25b6485f62ce38b25bc9f6428d3e0dc0043d71221eac1f4c3d71bca91c2ea6.svg","flags/4x3/ng.svg":"flags/4x3/ng-22aaf5a93f277f26cbfb21f7b141476fc8853298cf423fe5c849f87c2813d4e1.svg","flags/1x1/ng.svg":"flags/1x1/ng-8753476807ab9e0c201397dbe6a884155d97e8766667d10071650d64fe277fb0.svg","flags/4x3/ni.svg":"flags/4x3/ni-295d07e91f9417b2ca8c7c918481874a7da7f9ac25035edf3a8d1d79b1230e32.svg","flags/1x1/ni.svg":"flags/1x1/ni-6786ef719864e51745934adc319ed0ed95fca75687ee6050d580435ee3f2b236.svg","flags/4x3/nl.svg":"flags/4x3/nl-8f7bff63589346e93733c01f1f18c5a11e8c94911253bcf852f173a933cd928e.svg","flags/1x1/nl.svg":"flags/1x1/nl-f46400354e3d489228eca5944d9e181114fe1f748fa22ac0a70fd06c557bec92.svg","flags/4x3/no.svg":"flags/4x3/no-ecdb24f870c1e6777529ec85e3ea8d989a75b5874ecde94fead0218f7c1b5605.svg","flags/1x1/no.svg":"flags/1x1/no-47a12b11ae8b0aca7f7e3d9084e9d3a6c0ef1ad979d22ba9258e6f9ddc3ab16a.svg","flags/4x3/np.svg":"flags/4x3/np-b32c3bad572c4f27b5eee9c1ca97a5f2ca1c2a5b720b67fd636c91064e5fbdd9.svg","flags/1x1/np.svg":"flags/1x1/np-1279e1d699c05de413b30172b7ed97c13bfaa2069abe788ecf8b127210778354.svg","flags/4x3/nr.svg":"flags/4x3/nr-3818437e2251e1f7310734098d13e2eee69a6b9cc310918d3287b345618e6fef.svg","flags/1x1/nr.svg":"flags/1x1/nr-9b9edbaf4e09989f53511c969520cc2c10f3a693cdb80441b2aeabff30ebb381.svg","flags/4x3/nu.svg":"flags/4x3/nu-3b27eef18754c7fb8def8deadc730f074b090c8b6e9101d008d529c1d8784e5e.svg","flags/1x1/nu.svg":"flags/1x1/nu-9f6f9a41e36004711e3ad2e31e3d0425ca698bf242a62b9665b6f41eeb999ac7.svg","flags/4x3/nz.svg":"flags/4x3/nz-9690c3a7cdea4d5d6b88546ad69244a772fd0649e75f6334695fce89f5c4f076.svg","flags/1x1/nz.svg":"flags/1x1/nz-e848215aaf4f9d5738b886ded97ff13b69c752888a27d1ac430116f7133a1c0e.svg","flags/4x3/om.svg":"flags/4x3/om-7b9135ecdcf42a3bb69c5bf685930d32f9be7c6daaf58d5a8d154e22b6079347.svg","flags/1x1/om.svg":"flags/1x1/om-665da86c6b715f3d5f36bba0e01539e574d7871437b03ecbe29a92e5e703e09a.svg","flags/4x3/pa.svg":"flags/4x3/pa-a5b55e50a411899195a8f2bf8f37bddd94a4436582568c9ddfbddc2c99d1ae2d.svg","flags/1x1/pa.svg":"flags/1x1/pa-6c5566a7ace4125d958ec45ade8ce61e2fc065bb7fdd99cf1d6988a01b6fa73a.svg","flags/4x3/pe.svg":"flags/4x3/pe-12966232fe9a3dcc296389dea282cc8aa400327298d25f2f01c4963d1b900d13.svg","flags/1x1/pe.svg":"flags/1x1/pe-449b3363ff9efe701e1f662ae71c31bb4b5952710b73346e2ae090a90c79488d.svg","flags/4x3/pf.svg":"flags/4x3/pf-db568d96a25e93ea2d51edb9ccb8a0ba15bbe46e1241e1bb4376a856290de4e8.svg","flags/1x1/pf.svg":"flags/1x1/pf-d6aacd56a7243b922bbbd26c94696f19a3dd242df5e5ede999e0319930bf8d64.svg","flags/4x3/pg.svg":"flags/4x3/pg-def242bd4b12703b11ddc016962c0ab5ac2252e6afb53647281af0ddf72b08b2.svg","flags/1x1/pg.svg":"flags/1x1/pg-0f89210b4effa3e2f248e9d22710191ec8a5f8cc00e24e7a493fcf6013af6985.svg","flags/4x3/ph.svg":"flags/4x3/ph-76da2cb2822b71a1e7f182cfe2b8744af8704640feceb476aadf1753611c124c.svg","flags/1x1/ph.svg":"flags/1x1/ph-896fe211ebf65c4aec42a1f115ad43894870bc661eb9f32fd97962f0c6a8b666.svg","flags/4x3/pk.svg":"flags/4x3/pk-d0f9243f586c99692f7d7d18a648095badef0c11bd98645924771c71283f6a51.svg","flags/1x1/pk.svg":"flags/1x1/pk-c32541b10dabe01538a811d9e1b600b91b1724239fe99325bc1156c4183127d9.svg","flags/4x3/pl.svg":"flags/4x3/pl-0fc0d2ef9f5b48e43bd93818263cc504c825346f09a73d22c6f84dcde8d651af.svg","flags/1x1/pl.svg":"flags/1x1/pl-44281da3343d3308aaa29a9e7d060a24b8d5bb949d07197e3771aa30793f5ffe.svg","flags/4x3/pm.svg":"flags/4x3/pm-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/pm.svg":"flags/1x1/pm-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/pn.svg":"flags/4x3/pn-b9639507463a2e238b7d0f4cd976455ad4108594cc526882ed83807c321ca6b8.svg","flags/1x1/pn.svg":"flags/1x1/pn-23189e2aa8792ba5d7bbfba6f21467ec9516f9b366ddddce193a7f26ddc18030.svg","flags/4x3/pr.svg":"flags/4x3/pr-3194786def8e2510554b4d46d2ac49a10bfd1fb26f0d6803864b5982b36c12bb.svg","flags/1x1/pr.svg":"flags/1x1/pr-fb6e6e3064fc00cb41a3752358ba09e006375d6139ed63a13e6b81b4c8c53511.svg","flags/4x3/ps.svg":"flags/4x3/ps-e75b0d2d81c169c45624faf1f51ed1b9bf9b7945d71ceddac505c464f47c639a.svg","flags/1x1/ps.svg":"flags/1x1/ps-5e45e6b195fa5aa5b3c8bdff0824ef3fb354d4f1d5a1a5c4d92a9d67a568db3b.svg","flags/4x3/pt.svg":"flags/4x3/pt-7056421a09bf65c1e96a0891db8b1d37b9ece7b39a7a8ecdfcbc837d0f773cfa.svg","flags/1x1/pt.svg":"flags/1x1/pt-4f2b0e37162ed4d197eb28886933009600109e827ac83664f57f3683adc9617a.svg","flags/4x3/pw.svg":"flags/4x3/pw-8991b8ae2bef2f0e81e79442947f1c68f843be48f652a4c3a2af5dab84d73170.svg","flags/1x1/pw.svg":"flags/1x1/pw-4c45576b7f0be5b37d463d126410bfbca0f9dcdd1539fc6866f9fc116baa3437.svg","flags/4x3/py.svg":"flags/4x3/py-c416c19abcc7629572203f00253c9272876e59a88eafa893fa4a534ed8977776.svg","flags/1x1/py.svg":"flags/1x1/py-adb6cfc575e9626cd8284964929c88830d0d6f7e5b0c135649eceb8bd9de1368.svg","flags/4x3/qa.svg":"flags/4x3/qa-821f667f3f99992cf08b05498cc1a0769dee9c4e36d2a2561d6cf7827255af1b.svg","flags/1x1/qa.svg":"flags/1x1/qa-b05242965c0835a82add68dbcfb4523bc5e53e191803eab2c0c8c8762f2fce80.svg","flags/4x3/re.svg":"flags/4x3/re-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/re.svg":"flags/1x1/re-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/ro.svg":"flags/4x3/ro-63c55736a245e5fa5e0484b4693d43e171941143fcbdb34d3aa8d4cfd6160c9d.svg","flags/1x1/ro.svg":"flags/1x1/ro-f5c83b26832bb94b4320340ada4351a695bff66bb1410f6007c87e8395290380.svg","flags/4x3/rs.svg":"flags/4x3/rs-a1bff9944ac65bce131f42964a45cfce50e334c6d52eeeea65f5f6179f8acf4d.svg","flags/1x1/rs.svg":"flags/1x1/rs-6af7605aa8aee1da6e0a75c750964b21b404011cd00f2df43ae55a827952251a.svg","flags/4x3/ru.svg":"flags/4x3/ru-2ba8996aa53f5eca5d1b0ea1a67d6d469659ac2523d1b394e3d6e25913bbbc15.svg","flags/1x1/ru.svg":"flags/1x1/ru-c8ecec77af983cd6ca10baaf2fa8f3dd67a6fa84f80cabdee10858910fdcc233.svg","flags/4x3/rw.svg":"flags/4x3/rw-0fa2c78359e9603d1cf21e4bb9355414ac3eed3635a25ba8f653d0498d61bd16.svg","flags/1x1/rw.svg":"flags/1x1/rw-61cce3e871326334478d73a379b202fc8548581abc02e39a898bc4fd16b2e0eb.svg","flags/4x3/sa.svg":"flags/4x3/sa-5aec890788f78356a42e38fe6ea2c30c4c82c99a3f05f654faae5918aae804c4.svg","flags/1x1/sa.svg":"flags/1x1/sa-57bf549298c1c3cb533120975d49b6cdb9c839addf278497d133236e666239f4.svg","flags/4x3/sb.svg":"flags/4x3/sb-3433de16f2b3f2a8373de87f879dd3b31ec8369256e23193947318976b51a182.svg","flags/1x1/sb.svg":"flags/1x1/sb-e5352ddacf8edb727ef8f68dbb0951f00ae84b96e9b3b224cdf0c3ee2d33e8db.svg","flags/4x3/sc.svg":"flags/4x3/sc-9c1764a913e0577cadb24d11b883978389a818e94b39f6ac5cf4993dd041d501.svg","flags/1x1/sc.svg":"flags/1x1/sc-c1abe18095ce0b84c2b21aa2453b916e00d8c0fd72fd5161f212e6bcf9c8ccd8.svg","flags/4x3/sd.svg":"flags/4x3/sd-df15037b269e643062988e5273f3cd5a379b18d0ff496bdac97e840deb0793bc.svg","flags/1x1/sd.svg":"flags/1x1/sd-baedc80da37d70ce8fa4d5619d85b4823435180311f0c2995717116e681c20d3.svg","flags/4x3/se.svg":"flags/4x3/se-73964261d5ec45c856c9f7b57f1be90f60c5e748596e494aafa5facd817c7118.svg","flags/1x1/se.svg":"flags/1x1/se-ea6d6caac7db4cfc8d68548f70afbf6ddbf072993e655bdb0b0860f724202e2b.svg","flags/4x3/sg.svg":"flags/4x3/sg-2c8851a3c456051d7510b78da650054ee411ecdb01508ab3aa8ddac220de984a.svg","flags/1x1/sg.svg":"flags/1x1/sg-81517add5de364935b2173fd1ed3db2fefc22e07a072d03fd4f91e8543ffcb22.svg","flags/4x3/sh.svg":"flags/4x3/sh-cdfa61ab262caf8d6b13cc66f1d0e1e935dadb144d93ad28fcd850e9164c33d9.svg","flags/1x1/sh.svg":"flags/1x1/sh-763ae01f8c0189641321a0de1085f0d1ceeb962d94bb989c6255dae4616fd14f.svg","flags/4x3/si.svg":"flags/4x3/si-81f600f18fae95b3e2a6813cc012e94bdfd67965eb7ce1676780bc7d04f4f203.svg","flags/1x1/si.svg":"flags/1x1/si-6481bc748939a46efccac3df22ccc34341cc006d871a7ff521769c562a5325df.svg","flags/4x3/sj.svg":"flags/4x3/sj-8c78bb614796386f416c677e7ee2984c9997d0789306a9861e0d3f85edf62608.svg","flags/1x1/sj.svg":"flags/1x1/sj-15448521086e54b5dc1b51bce3e8424a3282aaa539514a8d63fae537d400bc08.svg","flags/4x3/sk.svg":"flags/4x3/sk-271dd9219a226c5e9768072c3d0512b9ab07d1af59a3a5642eba620e3f53ea2c.svg","flags/1x1/sk.svg":"flags/1x1/sk-4ee51ed995ad80a8f9a335b5f36b00a830da6e7065ecda1e84e427cf19dda736.svg","flags/4x3/sl.svg":"flags/4x3/sl-3fd8765025c44c215906c9d33be69326118f5025b35a93636df059926053c84c.svg","flags/1x1/sl.svg":"flags/1x1/sl-ffbed472a2b3677e9339adfd150ffc76bbae85071cbf1b14f75c67b03fff29d8.svg","flags/4x3/sm.svg":"flags/4x3/sm-72df25d7ba785caa3201dc9ea30349a5bd3891de99e6d818bff2f34914264654.svg","flags/1x1/sm.svg":"flags/1x1/sm-afa36059e43d3014dfc9088d30e86449b8463d282611b99f8d496aca155075c2.svg","flags/4x3/sn.svg":"flags/4x3/sn-3465e8417cd4bd6d948ab2311442757688af8516c6aa7c4f73c48a9447087b8c.svg","flags/1x1/sn.svg":"flags/1x1/sn-dfbe30abf15b2937f1b2de375b832ef3fe11e78f3536df35232b2f7265c00d9e.svg","flags/4x3/so.svg":"flags/4x3/so-16f7af15587913f17fd988f914c55de175ed1d4b2282ba2fa52b414c7359b440.svg","flags/1x1/so.svg":"flags/1x1/so-bbf08e60fbda4e45791d985450f6dbcd9ea779f93c818973271845dd01fc8df6.svg","flags/4x3/sr.svg":"flags/4x3/sr-7718ec6fbe85ea55c72189bf0dc94b10f20a7948ab913903e5b8050af20e4f6f.svg","flags/1x1/sr.svg":"flags/1x1/sr-692dfcca46c35b618f0358ef0cc9b2ee7c27c839f98b12134318804f6498ceee.svg","flags/4x3/ss.svg":"flags/4x3/ss-aebe3fc1b10d93add9906690e262b1baf5338529a832ff954e329c897e014e9c.svg","flags/1x1/ss.svg":"flags/1x1/ss-1d0ebcb31f2c0fe874bd046253de4eec410239c2e0f41eb1cea1f312b51bc8a8.svg","flags/4x3/st.svg":"flags/4x3/st-b24fa19cb51844a3187239e3cbacf828f02e7b8ddf4b01e9ec3366e75966c5d6.svg","flags/1x1/st.svg":"flags/1x1/st-d4d96bc9009e10cec6a00ce0d6fae3746ddefce867f63503595110b2fd539d17.svg","flags/4x3/sv.svg":"flags/4x3/sv-cd0c1acd571abd1756fc4e7eea2369c0466265b1d170a7a3618a66800ddbb4c2.svg","flags/1x1/sv.svg":"flags/1x1/sv-e86857616aaa7fc022b68dafd4a58d4be7ddfcc6d5b2c3d5dad67b457d1e75c9.svg","flags/4x3/sx.svg":"flags/4x3/sx-7ed9e6d8c02b265181248986ccd927f6540a7d55b4ec82b60baef06face66ee1.svg","flags/1x1/sx.svg":"flags/1x1/sx-09ab7415791d37231c9fb79b51fc52583407d7721e6f401cc98fc1ab12d2b62d.svg","flags/4x3/sy.svg":"flags/4x3/sy-49bb1803affb9e4ee070fb6e333a445f6df15ac11db6abe0a62f1aa922fe3c16.svg","flags/1x1/sy.svg":"flags/1x1/sy-b52b5ed6037c8e0e0a3ecd13006b79027d5fac2059fdd54109b591e5c5ada752.svg","flags/4x3/sz.svg":"flags/4x3/sz-a545e703e03ec7f9e108fa348d9e222aba1d7514bad2786f9ca8c6c3063a0e68.svg","flags/1x1/sz.svg":"flags/1x1/sz-784ee11c6629bc411d3e274eea68a3739ddfaa4c3bd18e46e62262518ae0b93e.svg","flags/4x3/tc.svg":"flags/4x3/tc-a20d2d87632b3c19e16a599dd45f3918a5f2db3025867c5f1b279050af68f637.svg","flags/1x1/tc.svg":"flags/1x1/tc-4c7c0e4227d06fb697b8c5ec5f95382b1549342013ea80211f2942f81d472d5a.svg","flags/4x3/td.svg":"flags/4x3/td-1b92327abb7d3ba9b54361f6a38018979e57d5083990af57adac25102146b939.svg","flags/1x1/td.svg":"flags/1x1/td-977813c5dfc3b6b640d1390c04c469cf92e84827ca06ed7f4984a58782a059c5.svg","flags/4x3/tf.svg":"flags/4x3/tf-f45e133cfa8a01239d65e1693492ca1de1949f3660de77d802b41c9a9fc662e8.svg","flags/1x1/tf.svg":"flags/1x1/tf-53581d6af7751cf4c126459a2226fd19cd10040d25e33d1653ece9e57a1a0e2b.svg","flags/4x3/tg.svg":"flags/4x3/tg-de9fe13020d702ce964ff7d712c6b6a3a57c3933f56fbd0c783fe0309f0dbae3.svg","flags/1x1/tg.svg":"flags/1x1/tg-92f575529494b0ba885e47302167a14343c1fd78fef5008ec3aacde7f840fd23.svg","flags/4x3/th.svg":"flags/4x3/th-6211c6caabbc4fdd4ff054cb689406bc9cc7816c01d482a6222e873b0e8fc9b0.svg","flags/1x1/th.svg":"flags/1x1/th-b8a0cf7c820f9010ce12333bfa7f8713358dee291bc955fa7e5333fcf5fc8a07.svg","flags/4x3/tj.svg":"flags/4x3/tj-4bf387aa434be996fc00be6dbb457282e311ff6c7538a484f5cb4d99e45b0747.svg","flags/1x1/tj.svg":"flags/1x1/tj-b371ab0647e7dfba73251169fe1e3180058d6556aa7293b7b573eaf43add617d.svg","flags/4x3/tk.svg":"flags/4x3/tk-cef6e368398b0cbaa4ee0b943d02155c51f9e8ab5ba27b9562ccd629f9a72183.svg","flags/1x1/tk.svg":"flags/1x1/tk-1544aef42090102ba2e154b48f8c059dfddd5789fc5f12aa859939c41673a661.svg","flags/4x3/tl.svg":"flags/4x3/tl-cd74f59871cf5453b4e9454a4820e683c06dc8c9c84dae4c47af9264bed7ab22.svg","flags/1x1/tl.svg":"flags/1x1/tl-a7cd9977244579380914f288bf358ec8b1b0abec6b8dc99e65cc35afe41bc405.svg","flags/4x3/tm.svg":"flags/4x3/tm-3db83810be6239a1c7e594a0b11a4847a7d300cc54e12e4cf4c8a9558520dd67.svg","flags/1x1/tm.svg":"flags/1x1/tm-ade1696d2299d73cc6fa06304144055f9a02c1800846516c4e21baba2a05d4cf.svg","flags/4x3/tn.svg":"flags/4x3/tn-17e7bc4e9dad2da8f12c95c56de46b21890b9d1c725ba400fa7d8df17d59fd4d.svg","flags/1x1/tn.svg":"flags/1x1/tn-55604ef719cd538ba0e2541667d4c52b08f18efe91bb52ad0954802d38ea12f7.svg","flags/4x3/to.svg":"flags/4x3/to-db07012009b9d6ac0c8eca209a68c310d9371771cca8c6c4c2022b3db1ba39d9.svg","flags/1x1/to.svg":"flags/1x1/to-1ed20c5d05424776b5d3cc17487ed8311998cb69db89109a380d59722d4bc2bc.svg","flags/4x3/tr.svg":"flags/4x3/tr-b8b3b6850c4c0ffa840db30c814dce6cb86e00e78138bafe8c2c58d263fb4503.svg","flags/1x1/tr.svg":"flags/1x1/tr-be0c612d78c2662c4e9c0dc836b63c8a7a5cfff48afc533f81c2ba2423542f5e.svg","flags/4x3/tt.svg":"flags/4x3/tt-05d9799b6519267990dccbc997c620c6478e00a96a79841494707cc3d036a381.svg","flags/1x1/tt.svg":"flags/1x1/tt-4ab2fff1efee93f41060975098c5c11e043dc0853456c8c0c70cacd4ba92e8ed.svg","flags/4x3/tv.svg":"flags/4x3/tv-14be4bb5a1fe44a8d3d58bde3dca6c63ed2974554c2008b4a2441a096c9f1fea.svg","flags/1x1/tv.svg":"flags/1x1/tv-71e98b9502d12d655a169e8c89de6d5b2fcc957d67d0b7e93dd2be8ff9e6f2a8.svg","flags/4x3/tw.svg":"flags/4x3/tw-3b699e4e60f9765601c0f84bbf3f16f953f5a454a0cf62487a0eef358f456e66.svg","flags/1x1/tw.svg":"flags/1x1/tw-62cd36c5fc2aff70bbd11312601821ca09729e9e246e32d895e0f4a2017ac0b6.svg","flags/4x3/tz.svg":"flags/4x3/tz-f219bcd0e3536ea3653178e0281620ebfe4c5b3b461c2c79fdf2b2a852de372e.svg","flags/1x1/tz.svg":"flags/1x1/tz-2829d5fc4fcdf2e6a149f63ea6b5a5f1af7b6b08fec523ec217ab5a6d9fb7e77.svg","flags/4x3/ua.svg":"flags/4x3/ua-07199c03990a6b4f285e421d928ab4dba2dfdfdb3e40dd9bfa207c86bc0f3c9d.svg","flags/1x1/ua.svg":"flags/1x1/ua-7c939efc452c13b0f8f489f3dfd37d3eba97c0f577c97f0b6673968af62a3207.svg","flags/4x3/ug.svg":"flags/4x3/ug-48c6cbeae1a865915dd5a06f56bdd576e9ed9ce5085b627ef31f3757c0937a5d.svg","flags/1x1/ug.svg":"flags/1x1/ug-da6257aa7e40121a6e8e574bf201701910bbd838cbc8d76030397c0f34ae906b.svg","flags/4x3/um.svg":"flags/4x3/um-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg","flags/1x1/um.svg":"flags/1x1/um-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg","flags/4x3/us.svg":"flags/4x3/us-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg","flags/1x1/us.svg":"flags/1x1/us-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg","flags/4x3/uy.svg":"flags/4x3/uy-3fc569672f687b4f08581179bea609b616d4b5c7d9524df918134fbcdfce6f9f.svg","flags/1x1/uy.svg":"flags/1x1/uy-90def9dd4890c96d1b6355d0bbcebe2a6f25e2bb3bbdc29c4fbba8a5fc601254.svg","flags/4x3/uz.svg":"flags/4x3/uz-e3f628aff038df64725d75a863bc636ae9da4a16f58850ad86470cc012e3a40f.svg","flags/1x1/uz.svg":"flags/1x1/uz-db8cba32635e9c36565f28fbd6b17e1e5afe26ce0af8560eeda3f9d815ecc749.svg","flags/4x3/va.svg":"flags/4x3/va-c8b81b061cbe7a9b0b5f376e10f1a863b4609c742dbb5663ef923b80d43984a2.svg","flags/1x1/va.svg":"flags/1x1/va-d267dbb1213d75780a8d41a34f9eba098a66973c1c2e7d974257f24b4be9df1c.svg","flags/4x3/vc.svg":"flags/4x3/vc-a578edb2904169d050107b4c02051531e4164120c4ac0ad19faabd41fccdd821.svg","flags/1x1/vc.svg":"flags/1x1/vc-85bbaa2c82ed6a9e077e73501bbf071956c761a897d1c4e1bbe061ad5ca9c0ed.svg","flags/4x3/ve.svg":"flags/4x3/ve-77718854ace7f0a8d8a087e331112e4b20f76e9ca7eeb9af41bacccef09bc9b4.svg","flags/1x1/ve.svg":"flags/1x1/ve-27cf5f75e9b842c417f62e3c3c502acafb67db674d5a1eba8709371c186f0fe9.svg","flags/4x3/vg.svg":"flags/4x3/vg-cefdd08a49ab6cf0ce32bf42cb7a72513dfd0a1619bac86ebedee3a86fa35c80.svg","flags/1x1/vg.svg":"flags/1x1/vg-45357a28f1dc16c13df5cfc44454ff28f082b90a4747898d27575650bc93cb1e.svg","flags/4x3/vi.svg":"flags/4x3/vi-a83bcb200832191afa4091bf2c275289aa37f664027dfce6db6b0f7109fe3b6a.svg","flags/1x1/vi.svg":"flags/1x1/vi-cf017aea4123b31f1cf60087c4742b6d57a4213bece5b3f760e16a84a811a74c.svg","flags/4x3/vn.svg":"flags/4x3/vn-16730ca8238b081b7376fc3829eaac4ddd61a5b423c24c9f07c9a02848c4827f.svg","flags/1x1/vn.svg":"flags/1x1/vn-fa15ba0b7d997046ffb7f2469f1254f7119503f2e95b35467151a947ff9b45d6.svg","flags/4x3/vu.svg":"flags/4x3/vu-4e084d69e403d0af11dfc47f622fb2ba88649b17b2038f6ebf533ce3c9907404.svg","flags/1x1/vu.svg":"flags/1x1/vu-3c93d045c0ec3c08c0e9af785016995cbd7a28ddf08ec9abfce0e39c4e842058.svg","flags/4x3/wf.svg":"flags/4x3/wf-039b39c2ab1d92470427e12e2310b2ad9d8a97a36a064b197858a083f5d7fd23.svg","flags/1x1/wf.svg":"flags/1x1/wf-94672c2e6f10547f0023b9f0fff3adfda4d60f91340f287767f1ce68e5a57a12.svg","flags/4x3/ws.svg":"flags/4x3/ws-f91aa288555a505b3e965c781de8207e2cb6e1d165603c80c54cfb111d277874.svg","flags/1x1/ws.svg":"flags/1x1/ws-e6b2a35c9702941a1fe9d84ab2bf8b28b4931b6fce24efb4ce63d3a8fb8c3b90.svg","flags/4x3/ye.svg":"flags/4x3/ye-f3c80f7f99e1f12a079fe0d96830005657aff1687da92391c0acb882b014ff8c.svg","flags/1x1/ye.svg":"flags/1x1/ye-a9b9b54ec295aed99c5439093242110193626524d336cc3115864e5ec0b787da.svg","flags/4x3/yt.svg":"flags/4x3/yt-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/yt.svg":"flags/1x1/yt-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/za.svg":"flags/4x3/za-57f1167ce07b3f345798c69ca8f159cb159f5dccb3c101616cc007ef1f2663d6.svg","flags/1x1/za.svg":"flags/1x1/za-79fe7bd792f8b520caaa2c3db12ab5138cf24867d344a38167580ab6243322b1.svg","flags/4x3/zm.svg":"flags/4x3/zm-9a1622c4151a7379ecc32434948be48ba5af564e136232d1eb6e2a4dfec3baa9.svg","flags/1x1/zm.svg":"flags/1x1/zm-7bc0c09a0b3fd9f0dd01481080be99465d71218ac0679fbb077086f24835433e.svg","flags/4x3/zw.svg":"flags/4x3/zw-2576570465c39038f092c242d89e300a0943c50c090c922bc3bd9c8af9161478.svg","flags/1x1/zw.svg":"flags/1x1/zw-4ee873fa4e174f8d150c672917c8f506b530edcca86288e4b7942c7c74a63caf.svg","flags/4x3/eu.svg":"flags/4x3/eu-ca89dc2597154e6887930fd8bdf47636f82dc13c02d9610a3da2d156f09265d0.svg","flags/1x1/eu.svg":"flags/1x1/eu-73d6f1f646500e1dc04ca798c0d192f9174268e3480a8b1d742004919b7463f9.svg","flags/4x3/gb-eng.svg":"flags/4x3/gb-eng-ec744a15618e0a99abee9e53b70985e4cbf2fc2b7051cf239d6dd19b302e4ae9.svg","flags/1x1/gb-eng.svg":"flags/1x1/gb-eng-b1650bba14f5fa14df73f964c3b3dfeca8e1d48c19f1f9b3fded729cc96cf39d.svg","flags/4x3/gb-nir.svg":"flags/4x3/gb-nir-0a09e794313d063a01d817f3ae931054dc9baddd38cfb9a0e4b3c9fa5852bc41.svg","flags/1x1/gb-nir.svg":"flags/1x1/gb-nir-c54214991841f1e32a4aaee502c6a7bde3ec3b43c0e74886d9bc7112f652035a.svg","flags/4x3/gb-sct.svg":"flags/4x3/gb-sct-c78f4e58aa162732c0a401eebe714a632ed03c5171a13bb98eb67365b338a0ab.svg","flags/1x1/gb-sct.svg":"flags/1x1/gb-sct-4983d57dfd37f55b40b22dddfeefef38d2113818914755ee830c61b97549aaf3.svg","flags/4x3/gb-wls.svg":"flags/4x3/gb-wls-963f0b8dfe114a50032ae1db25542a12d2032a30d88bbfd4698e30f50e752e31.svg","flags/1x1/gb-wls.svg":"flags/1x1/gb-wls-7d5a4120e3e0f7618bde0d4270b0c097f18472e6b1a285918d11538fb001cb60.svg","flags/4x3/un.svg":"flags/4x3/un-c75bef804cdbe6617032bfb0332f009c144b1317cb073e71deb5619fbedefcdb.svg","flags/1x1/un.svg":"flags/1x1/un-ccaaa4bfae7e430b8bd72ddfa6fb07f167c1001490fd247a37898f4632803b1e.svg","font-awesome/fontawesome-webfont.eot":"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","font-awesome/fontawesome-webfont.woff2":"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","font-awesome/fontawesome-webfont.woff":"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","font-awesome/fontawesome-webfont.ttf":"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","font-awesome/fontawesome-webfont.svg":"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","markers-soft.png":"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png","markers-shadow.png":"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png","markers-soft@2x.png":"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png","markers-shadow@2x.png":"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png","leaflet/dist/images/layers.png":"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png","leaflet/dist/images/layers-2x.png":"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png","leaflet/dist/images/marker-icon.png":"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png","regions/CA-QC.png":"regions/CA-QC-776d563b6a4ac4312cae9f0bfe630c20711346e8dbddd41040998eba79f4b588.png","modernizr.js":"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js","agendadescommuns.png":"agendadescommuns-cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6.png","alert.png":"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png","baby_gnu_adl.png":"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png","baby_gnu_adl.svg":"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg","communs.png":"communs-cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6.png","lef-small.png":"lef-small-4b9a75b5a328a7a3a78fd8b8e1b4545e1df777ad3a003ad29b875e7b486b2650.png","lef.png":"lef-3d58e14b026b795b3e71c551d85e63e6e45fc4e6960acc7dec27cdb79abffe75.png","priorite-logiciel-libre-je-soutiens-april_2_m.png":"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png","team.png":"team-cb04c7a311f7160c4eb6a281eae68be84f26991dde5d415bb4e205e6726ae275.png","application.js":"application-7c7206927ff58ad77ed458c5e2fba9abeaeb1f690fa9c68d44f964780cc5ffa2.js","markers-matte.png":"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png","markers-matte@2x.png":"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png","markers-plain.png":"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png","leaflet/dist/images/marker-icon-2x.png":"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png","leaflet/dist/images/marker-shadow.png":"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png","tinymce/langs/ar.js":"tinymce/langs/ar-5a0ab86d268d50c7c9462e0645b96e6c09d928976c0b27007f85f7c5638cbbf8.js","tinymce/langs/ar_SA.js":"tinymce/langs/ar_SA-24b62c76e99e114ae44480a67edbacf74f9fed0ff7afbeacce4966f1bc80333b.js","tinymce/langs/az.js":"tinymce/langs/az-d40cecd6eb423f910f528ae98dcdaba4c2449802621759437174cf8c8c0d5b25.js","tinymce/langs/be.js":"tinymce/langs/be-2d601b695076754977002cf73d6809919ca8c0758850a45e34a692af7b08fb1d.js","tinymce/langs/bg_BG.js":"tinymce/langs/bg_BG-0272f963807ba8672db0d5f6b8919d2f3aa2f8bb172a17c5f8c2934760ba0dce.js","tinymce/langs/bn_BD.js":"tinymce/langs/bn_BD-ef48a9094445dfa624af0c35902f60b7949b30585b5e9bc760a225fe2c07cbd3.js","tinymce/langs/bs.js":"tinymce/langs/bs-eb66c6d6910a30b950d7a0e784027ed288e6e5a2c6db7741da3359f2067e2e0e.js","tinymce/langs/ca.js":"tinymce/langs/ca-e4765b96adf2232248998c6b703730652cd4302035ee39733cd6e5df8d79ee22.js","tinymce/langs/cs.js":"tinymce/langs/cs-77418e2f6150bfb0391227eeff79499f8654a9fcc5314f30ec88e4684e8e5fa6.js","tinymce/langs/cs_CZ.js":"tinymce/langs/cs_CZ-4b0778d233e200dea350f8361129da2844e23d1c0f2d524aeffa6d34e581368d.js","tinymce/langs/cy.js":"tinymce/langs/cy-d337e01ca993cd9fb80ce3fccc39dff7f1dc47021264bf9ec14ac9af2b3d74b5.js","tinymce/langs/da.js":"tinymce/langs/da-4a040df5d2a225dcd10aa1c7d05ff7f36a854d4834919497812c3ba5aa5b06f4.js","tinymce/langs/de.js":"tinymce/langs/de-f9a88202d526e76875d22053cc659e4aabb43fa88411296ba122b8cf4d468eef.js","tinymce/langs/de_AT.js":"tinymce/langs/de_AT-2c6a1926c1cddd2079d27e844db153d797505e21bab6bdab018c2e5d1f0532fb.js","tinymce/langs/dv.js":"tinymce/langs/dv-3b3e040a7e24fd18903d4833a8da09f2e2b65fbd1c3ac325a3cd373775f9bd23.js","tinymce/langs/el.js":"tinymce/langs/el-0d51a187db018442cb94826f66155adb3fd805ac792c1110a04a548bc7d5d6c2.js","tinymce/langs/en_CA.js":"tinymce/langs/en_CA-2c64a16614c895022cc2b6aa4f134f4917ec8dd045c2184672653f3fae158db4.js","tinymce/langs/en_GB.js":"tinymce/langs/en_GB-4eb69d31cb70a3d3c53185883d58027a70524b0f5db82200bfa45b6a8ea22224.js","tinymce/langs/eo.js":"tinymce/langs/eo-cbac4d7ebcb0679845b852d9354e74586e78cf13eef82de1400cf6b465e203cd.js","tinymce/langs/es.js":"tinymce/langs/es-4fd5fd5b991c2c1e3032a297ae4605088bcd6835a467e64f9568de1b554e559c.js","tinymce/langs/es_MX.js":"tinymce/langs/es_MX-bc4f779c4782ed7bc7e7c4b7cd9293d7803256660cc529307dca05a40c49b94d.js","tinymce/langs/et.js":"tinymce/langs/et-26b7ced79b21dc8a21fda1dd95247e93c35096461238c8579dea16e48d12b4ef.js","tinymce/langs/eu.js":"tinymce/langs/eu-8698ae4de236fcd490d0f45d485dbd33d8e9de6eb3db51191e1b4f8ea96a4d06.js","tinymce/langs/fa.js":"tinymce/langs/fa-7eff96595e93d4b0df484dd90c14b7b412966157ed8293f54429e9418882bdb2.js","tinymce/langs/fa_IR.js":"tinymce/langs/fa_IR-4103bdacd3e4b53f30b27019dc9cdbc6402e3345331a93a5768900d591633201.js","tinymce/langs/fi.js":"tinymce/langs/fi-6ca2a93d045067a86e8ea973d0b89368054b15eb9b9625bf1ca871608a5cb77c.js","tinymce/langs/fo.js":"tinymce/langs/fo-340609cecd5571e4eacb8fe7bd1343c8553d96d12610fb77d9a812dc6d3635fd.js","tinymce/langs/fr_CH.js":"tinymce/langs/fr_CH-e0f43c0f20727368ff0767f3bf099bc23eed9fe3e81f8bbe514381e786526928.js","tinymce/langs/fr_FR.js":"tinymce/langs/fr_FR-c7b4bea9c3f186767ffee3f06d12830574620a5f58c4f76dede76d311be2a9c6.js","tinymce/langs/ga.js":"tinymce/langs/ga-7c1e918737301e611973d91e10c27930873e97dd690f7d10862d0cd40e639055.js","tinymce/langs/gd.js":"tinymce/langs/gd-0453e8b97bf3b6cca4065712ec59f20343ad6131735b38547e865177a1c1c490.js","tinymce/langs/gl.js":"tinymce/langs/gl-f6ec1cbe13f00683a8fceb6e73a353dfced77ab3f63d99fa2ae7c40bd6b3a64c.js","tinymce/langs/he_IL.js":"tinymce/langs/he_IL-74b957588e5998649fde6c6f3686bb74790d7173d0f31c90a4272a4596b16b32.js","tinymce/langs/hi_IN.js":"tinymce/langs/hi_IN-695e0cdc22974fe45e0f35289f0249ddab87245165c9df765ec1b885ec55f0be.js","tinymce/langs/hr.js":"tinymce/langs/hr-1dda1c40a40645a936a214478697c44137c805bf8b9c9e4485a0fb142e4ffe18.js","tinymce/langs/hu_HU.js":"tinymce/langs/hu_HU-9e74f5ada14970f167ee2ec1f46c8fd41d8bb98f9f5f5df9b4ad041cdaa81fd7.js","tinymce/langs/hy.js":"tinymce/langs/hy-0d384f3f82cd76793d3e7428a2140ea97f40a943f25ef99a2e3709a3e02b0930.js","tinymce/langs/id.js":"tinymce/langs/id-e9fd018be745b5f14f4af47887420f98c590c607e01d57aca77ef5affe188523.js","tinymce/langs/is_IS.js":"tinymce/langs/is_IS-c6e8c3e7b0e6b447faec3d8d258928f97c84558b29882c056513fb71cf237bfa.js","tinymce/langs/it.js":"tinymce/langs/it-c4549598b4e13df2201efb7f5b971e5bc55a731b25dd9ac7adb5f75780fe5f34.js","tinymce/langs/ja.js":"tinymce/langs/ja-da6414959d66a9b0cb46078592bd018bc8dc6707588d5ab911ebd09e589f92f6.js","tinymce/langs/ka_GE.js":"tinymce/langs/ka_GE-480559d4cffe96c5cae5e41f9ffd06f979785b3ce93e547462fbabc5cc1a88fb.js","tinymce/langs/kab.js":"tinymce/langs/kab-dc638a064c01cae2218d445beec60da010ee8dee8524f245ae3b99c8c5b3567c.js","tinymce/langs/kk.js":"tinymce/langs/kk-282b790d721dcaf6b44d930f70825e06969602572e477b7ef73766360eefdbaf.js","tinymce/langs/km_KH.js":"tinymce/langs/km_KH-dddeacc3c7112c6f230c4746d0fc9e9de1a3f53e419524ce03f483a35a49aaad.js","tinymce/langs/ko.js":"tinymce/langs/ko-ca535bfa388701fb020d24bdfb3f1e3aab127005b54e943cb1bd60b723c8194d.js","tinymce/langs/ko_KR.js":"tinymce/langs/ko_KR-90aae14954461fa073104c36c0f2d7d2c95bbbf0e41be4ef4f04ac402ab8d0a8.js","tinymce/langs/ku.js":"tinymce/langs/ku-95e2ffe4f0112df658f10327c26f2cdddedc2e2ed769767366ae22a465c14725.js","tinymce/langs/ku_IQ.js":"tinymce/langs/ku_IQ-a212e8d41695989e56834facf72474e1934ef166c3fcaf7e255ef573a3c6e76c.js","tinymce/langs/lb.js":"tinymce/langs/lb-94992279091f1a0be927d5d858d3724037d8d81ee6b63cc9ddde84af6124cc04.js","tinymce/langs/lt.js":"tinymce/langs/lt-ae7cefbe2cb5420770b31eabf92605728135ab5d6a2d2cfca2d19809be67e6a8.js","tinymce/langs/lv.js":"tinymce/langs/lv-6c706e8dbf25774d07fea54cc1cbfaaf60c205c95392eee90ae55ac9cae74768.js","tinymce/langs/mk_MK.js":"tinymce/langs/mk_MK-55aadb5d7c82c940cfcf42f24423ef0471294c9b02994a6b22e1b4173baa7ec6.js","tinymce/langs/ml.js":"tinymce/langs/ml-685de0808683c02274dcbe9f8de023a4d72a49b040e7526a99e3d5c786ff71ae.js","tinymce/langs/ml_IN.js":"tinymce/langs/ml_IN-1ab433621d6257c7632718048bacc5ed98a302d33cf0438bbbb4200914e01aac.js","tinymce/langs/mn_MN.js":"tinymce/langs/mn_MN-b89f88cb9b0dd7c879e27532b2979c421c1e69648f65a4108a56060f1e1cb009.js","tinymce/langs/nb_NO.js":"tinymce/langs/nb_NO-8bd2c254b03046ae60710293e7485d4c5cf9fdc3cbce52f97f0bf682ee44e1f8.js","tinymce/langs/nl.js":"tinymce/langs/nl-0436131db0f369f1d07ce9a27f61cd351d8b2a441d352f8261cde3990f7b59d8.js","tinymce/langs/pl.js":"tinymce/langs/pl-eaf96c2c80d9268c2477628c1d23f947391de01553ef43bb488ee88d7bb3b8e6.js","tinymce/langs/pt_BR.js":"tinymce/langs/pt_BR-32ccbdf38597b6d0239e8ba70d73ab75de0661bb06c86fc9a90d1c0a890bc31e.js","tinymce/langs/pt_PT.js":"tinymce/langs/pt_PT-a364a3ca02a98259f33046338ab1bdd32dd4ebf24fa56e88d2578066bc7f0597.js","tinymce/langs/ro.js":"tinymce/langs/ro-83fd95a929d491cbfbfac83f132bdc41c956a7f4b0459c243fd92613c9c841ef.js","tinymce/langs/ru.js":"tinymce/langs/ru-2566ddc510b999f19c499a9838d7b987d5a8332b5802f2211beb4274ae2cd563.js","tinymce/langs/ru_RU.js":"tinymce/langs/ru_RU-9f18ef14f3493cc586cc0b4827fd9e1c2ed3d5790ce536d94f87e2d6aac2a688.js","tinymce/langs/si_LK.js":"tinymce/langs/si_LK-5bfefe9b2fe82574d8ed839df18fd8ff65f1e1cd458b0a843cf1aadd1be704ea.js","tinymce/langs/sk.js":"tinymce/langs/sk-01d012310139d40e606a633db845a03fe285c32cb47043d6d9d761afa0cc3530.js","tinymce/langs/sl_SI.js":"tinymce/langs/sl_SI-ea499e07b7f4c9430bb15f34f6278f7248334c2553a544e240a21a84195d9582.js","tinymce/langs/sr.js":"tinymce/langs/sr-e0b97453a0c1000b19f7ce37fcf86bcacbf9125d81076f60a77686820c7925c6.js","tinymce/langs/sv_SE.js":"tinymce/langs/sv_SE-7af54d4c82419671562478bf4a66d185be79406f3287628df0d2ad8ac044a485.js","tinymce/langs/ta.js":"tinymce/langs/ta-3b428d97786e6eded1c4973fef3fb487786a79f1eee59f15483bd02b96c76239.js","tinymce/langs/ta_IN.js":"tinymce/langs/ta_IN-44bf4b6c5e4de01a2c7f2ccc69b6dd561b8afce86397229a9ff27efaf0600812.js","tinymce/langs/tg.js":"tinymce/langs/tg-1618248bf0aeda614a37ced9fd28b6623ae24f8453368bfb8c483ce820a3cb34.js","tinymce/langs/th_TH.js":"tinymce/langs/th_TH-5869e7cc393913371f3314057c1691e6e0fa296b496cf2d5c465276c31645479.js","tinymce/langs/tr.js":"tinymce/langs/tr-6a58fb650e940025d957945ae4850f6fbb8446c5f092a661063af9606afc1db8.js","tinymce/langs/tr_TR.js":"tinymce/langs/tr_TR-d97de581e91c05fc4f3d9fe1419ad201e227bcd0ff3f036f7b59519395f4dcc2.js","tinymce/langs/tt.js":"tinymce/langs/tt-22e302672df0a77de14688f58dbedf82de7a26e9089c9535a2a3cd1c0ccd7903.js","tinymce/langs/ug.js":"tinymce/langs/ug-50232038bf7262c90be4f2919c74ff93792cdb82e6064d0f5c86f885b93271c5.js","tinymce/langs/uk.js":"tinymce/langs/uk-00866ab0fe7746d258b215475089740306b790d572d081b7f53ce65ec313f413.js","tinymce/langs/uk_UA.js":"tinymce/langs/uk_UA-52b101eeb7079c629edbe4615e64018757791541930fd2733957810a37197356.js","tinymce/langs/vi.js":"tinymce/langs/vi-6aa451047e4df911c92e10178e6a70147534e438c64df7a88eee37b4a440726e.js","tinymce/langs/vi_VN.js":"tinymce/langs/vi_VN-54d1da8a0ca8d0242457ddab5e0230c2cca140d3e480bfd55b9dfbaec7868baa.js","tinymce/langs/zh_CN.js":"tinymce/langs/zh_CN-07499e6b0821cb49c5e16efbe4a68a4d843b4d6939a45866aabe6f9ad7fc805d.js","tinymce/langs/zh_TW.js":"tinymce/langs/zh_TW-c00c3a6539c0e1696436182c935a0a5929ab09ae7bdc43ca9c4ad21098079d53.js","tinymce/preinit.js":"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js","tinymce/tinymce.js":"tinymce/tinymce-6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de.js","tinymce/jquery.tinymce.js":"tinymce/jquery.tinymce-694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53.js","tinymce/langs/readme.md":"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md","tinymce/license.txt":"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt","tinymce/plugins/advlist/plugin.js":"tinymce/plugins/advlist/plugin-60a942b0fac99b527d6f729af8f6f8a5a618b7c40eb2770fb08a6ca81c4ec392.js","tinymce/plugins/anchor/plugin.js":"tinymce/plugins/anchor/plugin-152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec.js","tinymce/plugins/autolink/plugin.js":"tinymce/plugins/autolink/plugin-39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a.js","tinymce/plugins/autoresize/plugin.js":"tinymce/plugins/autoresize/plugin-57c70eb3721f88c5cae4d08038a85724d9285db0caec92dd8c223440fea6a11a.js","tinymce/plugins/autosave/plugin.js":"tinymce/plugins/autosave/plugin-c161b003d4e2500c076f4824c9abe2922848d86b1acf31e949d21bf42da04d98.js","tinymce/plugins/bbcode/plugin.js":"tinymce/plugins/bbcode/plugin-2a039df18058fc9956c15762e63a65e837c7f6ec185e768bcb7560c69d5a5945.js","tinymce/plugins/charmap/plugin.js":"tinymce/plugins/charmap/plugin-5a75321ddb2d6e17b8c9f5950179406d7ff56f73c5423564209432d84490dd9b.js","tinymce/plugins/code/plugin.js":"tinymce/plugins/code/plugin-c6f671d9656f81a0f87a80eb3178519971665855f1764cacc22c97a0c7c93c2a.js","tinymce/plugins/codesample/css/prism.css":"tinymce/plugins/codesample/css/prism-1988b66704b4d23e78c6c20c38a6856cbc1f0be96d6d60a3a0b12f4408f1057e.css","tinymce/plugins/codesample/plugin.js":"tinymce/plugins/codesample/plugin-e2213dfdea0b7c2137c835bdc1b49c5867640389d8acdc7edfd32c296eb6b378.js","tinymce/plugins/colorpicker/plugin.js":"tinymce/plugins/colorpicker/plugin-af8dd454fc58e491381ef90794ca49d7a477aa009b3845f2b9256ef1923a9744.js","tinymce/plugins/contextmenu/plugin.js":"tinymce/plugins/contextmenu/plugin-e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027.js","tinymce/plugins/directionality/plugin.js":"tinymce/plugins/directionality/plugin-432c5483de964fff4110fca8bb9da15562a108aef57f0f9f29bc64125d1ed25f.js","tinymce/plugins/emoticons/img/smiley-cool.gif":"tinymce/plugins/emoticons/img/smiley-cool-bb0e93a050a32df7913e4026b3c88a176998e0e3e073ba06e9b73f6c24227c9c.gif","tinymce/plugins/emoticons/img/smiley-cry.gif":"tinymce/plugins/emoticons/img/smiley-cry-a0c5f3e7a682449c973c9d9f7c46342081c46920686d2353f57aff91ab907f68.gif","tinymce/plugins/emoticons/img/smiley-embarassed.gif":"tinymce/plugins/emoticons/img/smiley-embarassed-d3cafcb50b335672cb5e9f4600ea9ea261dac7828dd28844d4927c393a25618f.gif","tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif":"tinymce/plugins/emoticons/img/smiley-foot-in-mouth-03fe04d3ed533423ac81f05146584b0c451be3d4a30e76687ceef283ed07071f.gif","tinymce/plugins/emoticons/img/smiley-frown.gif":"tinymce/plugins/emoticons/img/smiley-frown-1b984bf98931dd1debb54461eb9d83e985f2b2999fe14bcb556d6c0921bc83b0.gif","tinymce/plugins/emoticons/img/smiley-innocent.gif":"tinymce/plugins/emoticons/img/smiley-innocent-8db353ef102196f2c6ddf5c4666446de955d7b14fc0957c806c9dbfb48fb0c29.gif","tinymce/plugins/emoticons/img/smiley-kiss.gif":"tinymce/plugins/emoticons/img/smiley-kiss-3154c3665356c13ab10fefdbac1fe187fff978a0052037c99cdc4a97103413f2.gif","tinymce/plugins/emoticons/img/smiley-laughing.gif":"tinymce/plugins/emoticons/img/smiley-laughing-8f6adedcd091975ffead171867a6304d908bb6541a6ccb4919286ec6b7d4551e.gif","tinymce/plugins/emoticons/img/smiley-money-mouth.gif":"tinymce/plugins/emoticons/img/smiley-money-mouth-f0b9f4f22e237f5dbc851f900fed8d7eca4c954ae6fbc606c0cd8be431d0ac80.gif","tinymce/plugins/emoticons/img/smiley-sealed.gif":"tinymce/plugins/emoticons/img/smiley-sealed-9933b442636b6e537df7b564e2c3f7a2873526eea6b022a98eb1e468e5204c32.gif","tinymce/plugins/emoticons/img/smiley-smile.gif":"tinymce/plugins/emoticons/img/smiley-smile-fd89cd460ffcacb7e725e00c0275ef5b3924ce468248e5ff4fb43545571cfa65.gif","tinymce/plugins/emoticons/img/smiley-surprised.gif":"tinymce/plugins/emoticons/img/smiley-surprised-3871f356cb41976d7ae8a5f005e8739e4d014352a8adef9b33f773d81b6e6c01.gif","tinymce/plugins/emoticons/img/smiley-tongue-out.gif":"tinymce/plugins/emoticons/img/smiley-tongue-out-5843c85667a8226dc43be83749fd9fbbc5d20b1577de2b763915d99815d37d47.gif","tinymce/plugins/emoticons/img/smiley-undecided.gif":"tinymce/plugins/emoticons/img/smiley-undecided-d8b9bcbb433951ff3c4ca8dd959ac3844239b98e6d52218833e1485a91f67347.gif","tinymce/plugins/emoticons/img/smiley-wink.gif":"tinymce/plugins/emoticons/img/smiley-wink-2af75ad7b1c08488505513503e34b15f40005e04a2a9568f698f0945d2d8ba1f.gif","tinymce/plugins/emoticons/img/smiley-yell.gif":"tinymce/plugins/emoticons/img/smiley-yell-bba903fbcb46fce8c68b9e01863fd095b3b1d0e6aa72161f3a88d762a5f90a79.gif","tinymce/plugins/emoticons/plugin.js":"tinymce/plugins/emoticons/plugin-05910f1a564221738a73275cf2c3a16aab7164f6977eb7506780d0689155c32f.js","tinymce/plugins/fullpage/plugin.js":"tinymce/plugins/fullpage/plugin-7ec780fd59484ab244de2ff81a9ff0402733d7e1a27e6d0899f3fbb03bdddd5c.js","tinymce/plugins/fullscreen/plugin.js":"tinymce/plugins/fullscreen/plugin-cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d.js","tinymce/plugins/help/img/logo.png":"tinymce/plugins/help/img/logo-95b06f8538b11c4c30170075a09f93cf5871f74dd2541e95ad3d9da31976fcac.png","tinymce/plugins/help/plugin.js":"tinymce/plugins/help/plugin-3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c.js","tinymce/plugins/hr/plugin.js":"tinymce/plugins/hr/plugin-25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23.js","tinymce/plugins/image/plugin.js":"tinymce/plugins/image/plugin-f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd.js","tinymce/plugins/imagetools/plugin.js":"tinymce/plugins/imagetools/plugin-07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a.js","tinymce/plugins/importcss/plugin.js":"tinymce/plugins/importcss/plugin-f708109b89ae545b36f60d0f2685647587380549b58f5de55f9f6f1957240704.js","tinymce/plugins/insertdatetime/plugin.js":"tinymce/plugins/insertdatetime/plugin-fffab6ada7fc05ebf0a2a321fff64266ad1e5a73699b03ce48c26811116d657c.js","tinymce/plugins/legacyoutput/plugin.js":"tinymce/plugins/legacyoutput/plugin-ac93d67c9c8683752126c590a2abbe1a0f08ad23e2d931f57fd104f8d99e6a86.js","tinymce/plugins/link/plugin.js":"tinymce/plugins/link/plugin-f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524.js","tinymce/plugins/lists/plugin.js":"tinymce/plugins/lists/plugin-6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd.js","tinymce/plugins/media/plugin.js":"tinymce/plugins/media/plugin-f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934.js","tinymce/plugins/nonbreaking/plugin.js":"tinymce/plugins/nonbreaking/plugin-f818f5747c3bd123dbdc6b0e24a20c5e332e572b3ef6047a44e83da8a86471dc.js","tinymce/plugins/noneditable/plugin.js":"tinymce/plugins/noneditable/plugin-abb398069609339149f11fdb3f2d77ba34c1dfaf7c4bd4406abd2389cdbfaf58.js","tinymce/plugins/pagebreak/plugin.js":"tinymce/plugins/pagebreak/plugin-498022b2b73a3c1c3e332a913306eafb6fd2c3a75793319d49865ab7420dbce7.js","tinymce/plugins/paste/plugin.js":"tinymce/plugins/paste/plugin-fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6.js","tinymce/plugins/preview/plugin.js":"tinymce/plugins/preview/plugin-12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e.js","tinymce/plugins/print/plugin.js":"tinymce/plugins/print/plugin-984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab.js","tinymce/plugins/save/plugin.js":"tinymce/plugins/save/plugin-c925a1d1c20280b230018ead32c271d98e36fa21f91701f28653b44def6b2bf4.js","tinymce/plugins/searchreplace/plugin.js":"tinymce/plugins/searchreplace/plugin-d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2.js","tinymce/plugins/spellchecker/plugin.js":"tinymce/plugins/spellchecker/plugin-c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e.js","tinymce/plugins/tabfocus/plugin.js":"tinymce/plugins/tabfocus/plugin-1f6e19bc145d6dbc89b62278eebbe6fae6f61f6225eaa8fefc59fe5cdcc7716b.js","tinymce/plugins/table/plugin.js":"tinymce/plugins/table/plugin-26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5.js","tinymce/plugins/template/plugin.js":"tinymce/plugins/template/plugin-1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313.js","tinymce/plugins/textcolor/plugin.js":"tinymce/plugins/textcolor/plugin-1afa99da003eb9003f9071d086eb025b8a50a00386bd76e73428807d49c6c94f.js","tinymce/plugins/textpattern/plugin.js":"tinymce/plugins/textpattern/plugin-46aa72bd72de63931af55b83037436672ee1ec8221959cd4f866b40a743cc7e8.js","tinymce/plugins/toc/plugin.js":"tinymce/plugins/toc/plugin-e29ac010fcea309e07d328d306acd4213966a8923e3d1241dc633d66e9510af1.js","tinymce/plugins/visualblocks/css/visualblocks.css":"tinymce/plugins/visualblocks/css/visualblocks-859e261c1d940c90994673ce593b60946710cc4f71371164db4ea695035ea593.css","tinymce/plugins/visualblocks/plugin.js":"tinymce/plugins/visualblocks/plugin-4ded681bb50f7f23fd3543501704fbcdcc267e47f4acae1d69ee75354c722612.js","tinymce/plugins/visualchars/plugin.js":"tinymce/plugins/visualchars/plugin-0582c576749e7736722a3c8034b00c08446345533144e652da3ad44b3f06cdc9.js","tinymce/plugins/wordcount/plugin.js":"tinymce/plugins/wordcount/plugin-004fce15072e9ae2f16d4abb5ba9fb94e6d50d95e5e593727ab690c58a0eefca.js","tinymce/skins/lightgray/content.inline.min.css":"tinymce/skins/lightgray/content.inline.min-58c28f0e832b8f0622b03e4d5faaada2cb2c481a1ec171de02de97fe84555b19.css","tinymce/skins/lightgray/content.min.css":"tinymce/skins/lightgray/content.min-9aaa337dc1206c756b48c9ea0444faac9402206186069dc7423e912a71460055.css","tinymce/skins/lightgray/fonts/tinymce-small.eot":"tinymce/skins/lightgray/fonts/tinymce-small-a10fc4343d95b716c16d77463d475be5c079599ea67e1cd2bd3a94d5e7f508f9.eot","tinymce/skins/lightgray/fonts/tinymce-small.svg":"tinymce/skins/lightgray/fonts/tinymce-small-e7773001446ab937e1d8d4bd5e8dbd9b31d112037353a14b319e36dd010ed8ee.svg","tinymce/skins/lightgray/fonts/tinymce-small.ttf":"tinymce/skins/lightgray/fonts/tinymce-small-2f657502906d6f5c3fc8df3a82969114ebe030addfdc061c60c974b0f515fd09.ttf","tinymce/skins/lightgray/fonts/tinymce-small.woff":"tinymce/skins/lightgray/fonts/tinymce-small-d3efbb678ca6de5632902bd93772746ba2f8e4e2322b953936e12694a183aa31.woff","tinymce/skins/lightgray/fonts/tinymce.eot":"tinymce/skins/lightgray/fonts/tinymce-9f5f4d62ce9ad4bf25c73cb80920c490cc361bf35dd47dcb3ce2ed767be7404d.eot","tinymce/skins/lightgray/fonts/tinymce.svg":"tinymce/skins/lightgray/fonts/tinymce-9b9369e35660db34db422aafd93cd8a68e638c486c107130e75e36c98d2e9a1f.svg","tinymce/skins/lightgray/fonts/tinymce.ttf":"tinymce/skins/lightgray/fonts/tinymce-aad8f3f45064995545e9efd9c4bf10cb4967469aec14a475f648db771d25b6f9.ttf","tinymce/skins/lightgray/fonts/tinymce.woff":"tinymce/skins/lightgray/fonts/tinymce-e378406db7a120c29069a998f7fdd2d4d1867185b360c36767137dbbab5cf83e.woff","tinymce/skins/lightgray/img/anchor.gif":"tinymce/skins/lightgray/img/anchor-2861666fd107d278d4449970615136d06d7f746be9bb19072cf9c8f30e565e1e.gif","tinymce/skins/lightgray/img/loader.gif":"tinymce/skins/lightgray/img/loader-eb7cfd3d959b2e09c170f532e29f8b825f9bc770b2279fde58e595617753e244.gif","tinymce/skins/lightgray/img/object.gif":"tinymce/skins/lightgray/img/object-e6a15e52bc4a17b085073ba8debd4708ead6ae3d4cbeb3880c65cb7afc489777.gif","tinymce/skins/lightgray/img/trans.gif":"tinymce/skins/lightgray/img/trans-9cf020d7c3bba7f5ab10cda54aabef934f906d4f9a3acf99e9e7dc6c98579635.gif","tinymce/skins/lightgray/skin.min.css":"tinymce/skins/lightgray/skin.min-9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e.css","tinymce/themes/inlite/theme.js":"tinymce/themes/inlite/theme-b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c.js","tinymce/themes/modern/theme.js":"tinymce/themes/modern/theme-1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e.js","tinymce/rails.js":"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js","tinymce/skins/lightgray/content.mobile.min.css":"tinymce/skins/lightgray/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css","tinymce/skins/lightgray/fonts/tinymce-mobile.woff":"tinymce/skins/lightgray/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff","tinymce/skins/lightgray/skin.mobile.min.css":"tinymce/skins/lightgray/skin.mobile.min-fe907c53c1657dd3f3c3cc22926b2f6a342a345d2b2f1a7953e3fdceb2841d4c.css","tinymce/themes/mobile/theme.js":"tinymce/themes/mobile/theme-d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514.js","tinymce/langs/af_ZA.js":"tinymce/langs/af_ZA-6d5614830d9cc3d504d9922bf5373665246936adc337530a7a672e9bf5fc21ea.js","tinymce/langs/uz.js":"tinymce/langs/uz-d6923a3190a76dc149ccb2893574e981250344a6c4f6dcaf458df1cce2ea3b30.js","font-awesome/fa-brands-400.eot":"font-awesome/fa-brands-400-75a8d21d405fc02922bf4e5910c02da8c69e1422c54eace016902f8d13f24cc3.eot","font-awesome/fa-regular-400.eot":"font-awesome/fa-regular-400-e73d73f67b277568ab01d56322d1a01d66409a8f947735dd738fe2dcb6bb0c58.eot","font-awesome/fa-solid-900.eot":"font-awesome/fa-solid-900-f5d00bfd4457c03601f28e200ed5db6e5bf58b332164a1e630fa6aafcfab6bcb.eot","font-awesome/fa-brands-400.svg":"font-awesome/fa-brands-400-981c7b389bbd9de156f6b92bb4f65f4e66d329b9d3503277d4fe6eef1008f3f4.svg","font-awesome/fa-regular-400.svg":"font-awesome/fa-regular-400-42e44be1cfd7bfab3031546e1f656418e9c835230a2f69b7a34594815d0e0a80.svg","font-awesome/fa-solid-900.svg":"font-awesome/fa-solid-900-b0f3ece320e40f6c55b19378e123f198a3ef5f2e8fbd9ab7906ce04198770fdf.svg","font-awesome/fa-brands-400.ttf":"font-awesome/fa-brands-400-345def96ebbc01d79e677848420a94ca0653961c03b30977714fa62395553569.ttf","font-awesome/fa-regular-400.ttf":"font-awesome/fa-regular-400-8721a523848f5d583c554552d6daeaaacefc8eb9239ba0c998a09492667f5c75.ttf","font-awesome/fa-solid-900.ttf":"font-awesome/fa-solid-900-9ae2e3bc1545ee5fd1f72e0f4d0656f8054d1ead2e51c28f8f0730f85f688bed.ttf","font-awesome/fa-brands-400.woff":"font-awesome/fa-brands-400-0d9317d5559d4091516c1e240689589122ad9b101f030ef7aee8c01a9fc5a78c.woff","font-awesome/fa-regular-400.woff":"font-awesome/fa-regular-400-4773adbb080c5189d52e31d83658b6d9743bdf7337e53bb8a4706de8dc116ffd.woff","font-awesome/fa-solid-900.woff":"font-awesome/fa-solid-900-6f43ff9f2fb98cc65e18f73ee16951bacfb055f76e68e06f7d91989fd770fa71.woff","font-awesome/fa-brands-400.woff2":"font-awesome/fa-brands-400-155963e3fb06f13011705c65bc52ed31f9989b87309c945948a76b35f8e7da67.woff2","font-awesome/fa-regular-400.woff2":"font-awesome/fa-regular-400-a36d4f83add2176a3c6243bd57a32a387a1906227e286689530ff878de1994eb.woff2","font-awesome/fa-solid-900.woff2":"font-awesome/fa-solid-900-62554277d07b20c6bfae7c6267b3198b4846f604a37d4085bf9f54c392210b56.woff2"}} \ No newline at end of file +{"files":{"active_admin-d4f38d29ff0b2b9b05ed4ecbcebd736e750ad4b29369bc58d35194f7e107eaae.css":{"logical_path":"active_admin.css","mtime":"2018-01-18T21:11:12+01:00","size":80636,"digest":"d4f38d29ff0b2b9b05ed4ecbcebd736e750ad4b29369bc58d35194f7e107eaae","integrity":"sha256-1PONKf8LK5sF7U7Lzr1zbnUK1LKTabxY01GU9+EH6q4="},"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif":{"logical_path":"active_admin/nested_menu_arrow.gif","mtime":"2018-01-18T21:11:12+01:00","size":70,"digest":"15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442","integrity":"sha256-FQhNk8ZcGWTXB3cA6nSL0tcM+i1MGXB8WKnGTiMt1EI="},"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif":{"logical_path":"active_admin/nested_menu_arrow_dark.gif","mtime":"2018-01-18T21:11:12+01:00","size":70,"digest":"7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034","integrity":"sha256-fEO44KX4gjh19JoJPJ16azdPiFtvnMJIrpzX5umykDQ="},"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png":{"logical_path":"active_admin/orderable.png","mtime":"2018-01-18T21:11:12+01:00","size":220,"digest":"29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617","integrity":"sha256-KTdNu1WwAS14o3xhTVc7s0dPB3mEm0eKFH0PGEXKZhc="},"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css":{"logical_path":"active_admin/print.css","mtime":"2018-01-18T21:11:12+01:00","size":7086,"digest":"cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6","integrity":"sha256-z5nL8n+5IGWp6s0o5vrUj6csra9uCRh5Do01sR2PmfY="},"active_admin-115a9ff718613239e12adb1f3bf498a1ccba1735051b69a5d1fbee5e495ff489.js":{"logical_path":"active_admin.js","mtime":"2018-01-05T22:13:22+01:00","size":961412,"digest":"115a9ff718613239e12adb1f3bf498a1ccba1735051b69a5d1fbee5e495ff489","integrity":"sha256-EVqf9xhhMjnhKtsfO/SYocy6FzUFG2ml0fvuXklf9Ik="},"tinymce-d01e33fd7bee04ec85526d769634c548ffc9d13584e1e3ecb754f48c8a3a0662.js":{"logical_path":"tinymce.js","mtime":"2017-10-07T18:51:24+02:00","size":1055,"digest":"d01e33fd7bee04ec85526d769634c548ffc9d13584e1e3ecb754f48c8a3a0662","integrity":"sha256-0B4z/XvuBOyFUm12ljTFSP/J0TWE4ePst1T0jIo6BmI="},"application-ba1c3eda80784b6eec3860ce601adf04370c8c8b17855bd3438a42dc8a69cfa2.css":{"logical_path":"application.css","mtime":"2017-10-07T18:51:24+02:00","size":229915,"digest":"ba1c3eda80784b6eec3860ce601adf04370c8c8b17855bd3438a42dc8a69cfa2","integrity":"sha256-uhw+2oB4S27sOGDOYBrfBDcMjIsXhVvTQ4pC3Ippz6I="},"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png":{"logical_path":"jquery-ui/ui-icons_444444_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d","integrity":"sha256-MdmIdltOb1ZVPClYjFADgdw+bwqimAyCEiAuVkSu/V0="},"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png":{"logical_path":"jquery-ui/ui-icons_555555_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5","integrity":"sha256-MhdSYdrudsgrsO3w7qFqVkIYZvvDHpTzwdVwqhFFAvU="},"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png":{"logical_path":"jquery-ui/ui-icons_ffffff_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a","integrity":"sha256-NQ3xtxMQN94g6DxcDzpBp3DSrEi1di6ncrP0qKe51Ho="},"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png":{"logical_path":"jquery-ui/ui-icons_777620_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b","integrity":"sha256-CwIPxuaW2I0pbnux9h8esq2CeEjixzgqTD4JmecC3Zs="},"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png":{"logical_path":"jquery-ui/ui-icons_cc0000_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69","integrity":"sha256-QJhaZLTV3SE/uif82GKhvRszepdnT2/wuewgq87kvGk="},"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png":{"logical_path":"jquery-ui/ui-icons_777777_256x240.png","mtime":"2017-10-08T14:45:44+02:00","size":3756,"digest":"faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f","integrity":"sha256-+vMgB64SDDAiE1V2JuZg3RDnEcXdTxET018m3AW3jS8="},"flags/4x3/ad-3fc30cc000942b4f3369bdf6ccb85b16f59f4e78f9c53d73252ab529da35ba0a.svg":{"logical_path":"flags/4x3/ad.svg","mtime":"2017-10-08T14:45:34+02:00","size":56452,"digest":"3fc30cc000942b4f3369bdf6ccb85b16f59f4e78f9c53d73252ab529da35ba0a","integrity":"sha256-P8MMwACUK08zab32zLhbFvWfTnj5xT1zJSq1Kdo1ugo="},"flags/1x1/ad-db2c38d603b8eecc9085d6ac1261bbefd3bcd852d44bec476e5e115914bcb2fd.svg":{"logical_path":"flags/1x1/ad.svg","mtime":"2017-10-08T14:45:34+02:00","size":55630,"digest":"db2c38d603b8eecc9085d6ac1261bbefd3bcd852d44bec476e5e115914bcb2fd","integrity":"sha256-2yw41gO47syQhdasEmG779O82FLUS+xHbl4RWRS8sv0="},"flags/4x3/ae-7f41692ef179841ca6e9cae42c704113274707228ff3d2b1ee5169916db15b1e.svg":{"logical_path":"flags/4x3/ae.svg","mtime":"2017-10-08T14:45:34+02:00","size":257,"digest":"7f41692ef179841ca6e9cae42c704113274707228ff3d2b1ee5169916db15b1e","integrity":"sha256-f0FpLvF5hBym6crkLHBBEydHByKP89Kx7lFpkW2xWx4="},"flags/1x1/ae-8c9b9b1f108511722e1f1b0f9a029edf808ff285406545f24e327052e0efa780.svg":{"logical_path":"flags/1x1/ae.svg","mtime":"2017-10-08T14:45:34+02:00","size":273,"digest":"8c9b9b1f108511722e1f1b0f9a029edf808ff285406545f24e327052e0efa780","integrity":"sha256-jJubHxCFEXIuHxsPmgKe34CP8oVAZUXyTjJwUuDvp4A="},"flags/4x3/af-e271fd8f2fcdd0adda22a0e699173ff4e4cc65adfe7f05652cb77375eea99a93.svg":{"logical_path":"flags/4x3/af.svg","mtime":"2017-10-08T14:45:34+02:00","size":97407,"digest":"e271fd8f2fcdd0adda22a0e699173ff4e4cc65adfe7f05652cb77375eea99a93","integrity":"sha256-4nH9jy/N0K3aIqDmmRc/9OTMZa3+fwVlLLdzde6pmpM="},"flags/1x1/af-2629bc2e10edd54c384650f9aab1c6dfaf7101fda43ba3af627f0ec226db5892.svg":{"logical_path":"flags/1x1/af.svg","mtime":"2017-10-08T14:45:34+02:00","size":90925,"digest":"2629bc2e10edd54c384650f9aab1c6dfaf7101fda43ba3af627f0ec226db5892","integrity":"sha256-Jim8LhDt1Uw4RlD5qrHG369xAf2kO6OvYn8OwibbWJI="},"flags/4x3/ag-91fee45d7e1bab658f840a721364dd6eff0b67f9135dc8445a1b3554c347c2e9.svg":{"logical_path":"flags/4x3/ag.svg","mtime":"2017-10-08T14:45:34+02:00","size":902,"digest":"91fee45d7e1bab658f840a721364dd6eff0b67f9135dc8445a1b3554c347c2e9","integrity":"sha256-kf7kXX4bq2WPhApyE2Tdbv8LZ/kTXchEWhs1VMNHwuk="},"flags/1x1/ag-476bf833d4e0789f71d7b0d24164734ed97627f36edd09cc75991bcfbb2aa7af.svg":{"logical_path":"flags/1x1/ag.svg","mtime":"2017-10-08T14:45:34+02:00","size":862,"digest":"476bf833d4e0789f71d7b0d24164734ed97627f36edd09cc75991bcfbb2aa7af","integrity":"sha256-R2v4M9TgeJ9x17DSQWRzTtl2J/Nu3QnMdZkbz7sqp68="},"flags/4x3/ai-0106851bba5120a0f2bca5e6187ea65c9846e696f5ca57631aa89371cdf98871.svg":{"logical_path":"flags/4x3/ai.svg","mtime":"2017-10-08T14:45:34+02:00","size":55336,"digest":"0106851bba5120a0f2bca5e6187ea65c9846e696f5ca57631aa89371cdf98871","integrity":"sha256-AQaFG7pRIKDyvKXmGH6mXJhG5pb1yldjGqiTcc35iHE="},"flags/1x1/ai-50a3279d492c2932919c02880b69da7bb7948ce96988d8ccc9b16357f006165c.svg":{"logical_path":"flags/1x1/ai.svg","mtime":"2017-10-08T14:45:34+02:00","size":58220,"digest":"50a3279d492c2932919c02880b69da7bb7948ce96988d8ccc9b16357f006165c","integrity":"sha256-UKMnnUksKTKRnAKIC2nae7eUjOlpiNjMybFjV/AGFlw="},"flags/4x3/al-f8bc9837446a4880d29088f18bfc014b4cde95d8edda1241be22b5724a74ea8d.svg":{"logical_path":"flags/4x3/al.svg","mtime":"2017-10-08T14:45:34+02:00","size":4647,"digest":"f8bc9837446a4880d29088f18bfc014b4cde95d8edda1241be22b5724a74ea8d","integrity":"sha256-+LyYN0RqSIDSkIjxi/wBS0zeldjt2hJBviK1ckp06o0="},"flags/1x1/al-fb2c4d723ddbfb2c659ee2b3052d33347c130fb1024e2cb0ddd17f25b082542c.svg":{"logical_path":"flags/1x1/al.svg","mtime":"2017-10-08T14:45:34+02:00","size":4908,"digest":"fb2c4d723ddbfb2c659ee2b3052d33347c130fb1024e2cb0ddd17f25b082542c","integrity":"sha256-+yxNcj3b+yxlnuKzBS0zNHwTD7ECTiyw3dF/JbCCVCw="},"flags/4x3/am-aeabb81fbe6ac768ba7b95bb22e5a1791eb35ff83d0b5d6785c88ddc6835444e.svg":{"logical_path":"flags/4x3/am.svg","mtime":"2017-10-08T14:45:34+02:00","size":226,"digest":"aeabb81fbe6ac768ba7b95bb22e5a1791eb35ff83d0b5d6785c88ddc6835444e","integrity":"sha256-rqu4H75qx2i6e5W7IuWheR6zX/g9C11nhciN3Gg1RE4="},"flags/1x1/am-6fc2c9fb24a6a079960d619cc1fdaeee31cdb52d27c75bb9b065d9664d853c11.svg":{"logical_path":"flags/1x1/am.svg","mtime":"2017-10-08T14:45:34+02:00","size":242,"digest":"6fc2c9fb24a6a079960d619cc1fdaeee31cdb52d27c75bb9b065d9664d853c11","integrity":"sha256-b8LJ+ySmoHmWDWGcwf2u7jHNtS0nx1u5sGXZZk2FPBE="},"flags/4x3/ao-34ea70b51c9069ef1a859935f07a64cfffab4e08438a9c746898da56b495d127.svg":{"logical_path":"flags/4x3/ao.svg","mtime":"2017-10-08T14:45:34+02:00","size":2245,"digest":"34ea70b51c9069ef1a859935f07a64cfffab4e08438a9c746898da56b495d127","integrity":"sha256-NOpwtRyQae8ahZk18Hpkz/+rTghDipx0aJjaVrSV0Sc="},"flags/1x1/ao-1240d65f5dd9d8945701ed46611bd97f53f2cecf15b435cc54604eb79f4b97a8.svg":{"logical_path":"flags/1x1/ao.svg","mtime":"2017-10-08T14:45:34+02:00","size":2251,"digest":"1240d65f5dd9d8945701ed46611bd97f53f2cecf15b435cc54604eb79f4b97a8","integrity":"sha256-EkDWX13Z2JRXAe1GYRvZf1Pyzs8VtDXMVGBOt59Ll6g="},"flags/4x3/aq-6e2cee0eae620cd3f1fe6be665fd216f9a54a2afe215441005904dfeca24c169.svg":{"logical_path":"flags/4x3/aq.svg","mtime":"2017-10-08T14:45:34+02:00","size":4488,"digest":"6e2cee0eae620cd3f1fe6be665fd216f9a54a2afe215441005904dfeca24c169","integrity":"sha256-bizuDq5iDNPx/mvmZf0hb5pUoq/iFUQQBZBN/sokwWk="},"flags/1x1/aq-73c87173b09f476af2367895c76cf65d159c0a0b2ec292c1f1f5b08b2e78f829.svg":{"logical_path":"flags/1x1/aq.svg","mtime":"2017-10-08T14:45:34+02:00","size":4611,"digest":"73c87173b09f476af2367895c76cf65d159c0a0b2ec292c1f1f5b08b2e78f829","integrity":"sha256-c8hxc7CfR2ryNniVx2z2XRWcCgsuwpLB8fWwiy54+Ck="},"flags/4x3/ar-71eca3c44a303392f2c8db443add184c4c79d9fa8a3e729be2528c8db53790b6.svg":{"logical_path":"flags/4x3/ar.svg","mtime":"2017-10-08T14:45:34+02:00","size":34347,"digest":"71eca3c44a303392f2c8db443add184c4c79d9fa8a3e729be2528c8db53790b6","integrity":"sha256-ceyjxEowM5LyyNtEOt0YTEx52fqKPnKb4lKMjbU3kLY="},"flags/1x1/ar-0f75960e9ea2b2533e9112d4fc02154182f72460720c5a7d4dc21ef47758c369.svg":{"logical_path":"flags/1x1/ar.svg","mtime":"2017-10-08T14:45:34+02:00","size":34266,"digest":"0f75960e9ea2b2533e9112d4fc02154182f72460720c5a7d4dc21ef47758c369","integrity":"sha256-D3WWDp6islM+kRLU/AIVQYL3JGByDFp9TcIe9HdYw2k="},"flags/4x3/as-29ac7248b1c428a68d0e2b1cfca4fade7b0fcb38151bf980d35c3b0be63d3d91.svg":{"logical_path":"flags/4x3/as.svg","mtime":"2017-10-08T14:45:34+02:00","size":11465,"digest":"29ac7248b1c428a68d0e2b1cfca4fade7b0fcb38151bf980d35c3b0be63d3d91","integrity":"sha256-KaxySLHEKKaNDisc/KT63nsPyzgVG/mA01w7C+Y9PZE="},"flags/1x1/as-f516550a6b6cf7e277a1877cad9afe10f694ac32c92df7709690913fd59ecf20.svg":{"logical_path":"flags/1x1/as.svg","mtime":"2017-10-08T14:45:34+02:00","size":11530,"digest":"f516550a6b6cf7e277a1877cad9afe10f694ac32c92df7709690913fd59ecf20","integrity":"sha256-9RZVCmts9+J3oYd8rZr+EPaUrDLJLfdwlpCRP9WezyA="},"flags/4x3/at-e6517cfc6605c0ffa13da8db795d6e4cd353f72434f8fe38a2ebab7ba685081b.svg":{"logical_path":"flags/4x3/at.svg","mtime":"2017-10-08T14:45:34+02:00","size":263,"digest":"e6517cfc6605c0ffa13da8db795d6e4cd353f72434f8fe38a2ebab7ba685081b","integrity":"sha256-5lF8/GYFwP+hPajbeV1uTNNT9yQ0+P44ouure6aFCBs="},"flags/1x1/at-b9f9e8349460db6d35662b445a8a5fff96fccd904fff3411b711d31b2d7b7f16.svg":{"logical_path":"flags/1x1/at.svg","mtime":"2017-10-08T14:45:34+02:00","size":259,"digest":"b9f9e8349460db6d35662b445a8a5fff96fccd904fff3411b711d31b2d7b7f16","integrity":"sha256-ufnoNJRg2201ZitEWopf/5b8zZBP/zQRtxHTGy17fxY="},"flags/4x3/au-c929c02559051c3f51c0d93dd9df0d886b6c1efa083c0f101d2b3fd39706726e.svg":{"logical_path":"flags/4x3/au.svg","mtime":"2017-10-08T14:45:34+02:00","size":1773,"digest":"c929c02559051c3f51c0d93dd9df0d886b6c1efa083c0f101d2b3fd39706726e","integrity":"sha256-ySnAJVkFHD9RwNk92d8NiGtsHvoIPA8QHSs/05cGcm4="},"flags/1x1/au-96828c63a52eff55282096c045a3822cde99a00bf20528810d31f27b27208593.svg":{"logical_path":"flags/1x1/au.svg","mtime":"2017-10-08T14:45:34+02:00","size":1746,"digest":"96828c63a52eff55282096c045a3822cde99a00bf20528810d31f27b27208593","integrity":"sha256-loKMY6Uu/1UoIJbARaOCLN6ZoAvyBSiBDTHyeycghZM="},"flags/4x3/aw-44597b0ede9ff7df0e659c464a51fdbc1a7f5cc5cd621d281302843c23a905bf.svg":{"logical_path":"flags/4x3/aw.svg","mtime":"2017-10-08T14:45:34+02:00","size":14674,"digest":"44597b0ede9ff7df0e659c464a51fdbc1a7f5cc5cd621d281302843c23a905bf","integrity":"sha256-RFl7Dt6f998OZZxGSlH9vBp/XMXNYh0oEwKEPCOpBb8="},"flags/1x1/aw-2bd4b1890e233baeae0bcaaf1841803de35dd9c422f486588e48bf3506d69ae0.svg":{"logical_path":"flags/1x1/aw.svg","mtime":"2017-10-08T14:45:34+02:00","size":14194,"digest":"2bd4b1890e233baeae0bcaaf1841803de35dd9c422f486588e48bf3506d69ae0","integrity":"sha256-K9SxiQ4jO66uC8qvGEGAPeNd2cQi9IZYjki/NQbWmuA="},"flags/4x3/ax-95093e740b0b492f7cd96fe370fa2478f0d0148b89b424cd8436807234ade9dd.svg":{"logical_path":"flags/4x3/ax.svg","mtime":"2017-10-08T14:45:34+02:00","size":563,"digest":"95093e740b0b492f7cd96fe370fa2478f0d0148b89b424cd8436807234ade9dd","integrity":"sha256-lQk+dAsLSS982W/jcPokePDQFIuJtCTNhDaAcjSt6d0="},"flags/1x1/ax-99af962543005067e7239903eb6bc23226d30ce14a7c6408693dc9641193ddc3.svg":{"logical_path":"flags/1x1/ax.svg","mtime":"2017-10-08T14:45:34+02:00","size":549,"digest":"99af962543005067e7239903eb6bc23226d30ce14a7c6408693dc9641193ddc3","integrity":"sha256-ma+WJUMAUGfnI5kD62vCMibTDOFKfGQIaT3JZBGT3cM="},"flags/4x3/az-c0959e214bf9a3e94993cfc03f4884b15f6d8c4dd20842a5052a29a8495fd431.svg":{"logical_path":"flags/4x3/az.svg","mtime":"2017-10-08T14:45:34+02:00","size":567,"digest":"c0959e214bf9a3e94993cfc03f4884b15f6d8c4dd20842a5052a29a8495fd431","integrity":"sha256-wJWeIUv5o+lJk8/AP0iEsV9tjE3SCEKlBSopqElf1DE="},"flags/1x1/az-3db731c28289795dc3bda91b3bab129d994a09b8ee0959d34f21a1f840f894de.svg":{"logical_path":"flags/1x1/az.svg","mtime":"2017-10-08T14:45:34+02:00","size":611,"digest":"3db731c28289795dc3bda91b3bab129d994a09b8ee0959d34f21a1f840f894de","integrity":"sha256-PbcxwoKJeV3DvakbO6sSnZlKCbjuCVnTTyGh+ED4lN4="},"flags/4x3/ba-388ea99507a04cc5d4768bd708d984714aeebbe4177a1cf8ffe0b8331dd856d9.svg":{"logical_path":"flags/4x3/ba.svg","mtime":"2017-10-08T14:45:34+02:00","size":1512,"digest":"388ea99507a04cc5d4768bd708d984714aeebbe4177a1cf8ffe0b8331dd856d9","integrity":"sha256-OI6plQegTMXUdovXCNmEcUruu+QXehz4/+C4Mx3YVtk="},"flags/1x1/ba-b7d7ab49229704dff0192935c9fb7fb4ea6ba989ce4fee832a738a5d78b39d71.svg":{"logical_path":"flags/1x1/ba.svg","mtime":"2017-10-08T14:45:34+02:00","size":1482,"digest":"b7d7ab49229704dff0192935c9fb7fb4ea6ba989ce4fee832a738a5d78b39d71","integrity":"sha256-t9erSSKXBN/wGSk1yft/tOprqYnOT+6DKnOKXXiznXE="},"flags/4x3/bb-6df74e1044b7f42c2c3b1082d46eb0198aa65a180459fdd950838cd2e6c00ee1.svg":{"logical_path":"flags/4x3/bb.svg","mtime":"2017-10-08T14:45:34+02:00","size":767,"digest":"6df74e1044b7f42c2c3b1082d46eb0198aa65a180459fdd950838cd2e6c00ee1","integrity":"sha256-bfdOEES39CwsOxCC1G6wGYqmWhgEWf3ZUIOM0ubADuE="},"flags/1x1/bb-eb10f33cbde25ab6ccaa49cbe3976b4f5ece2fa1d3d485394caa158f10b8b8c9.svg":{"logical_path":"flags/1x1/bb.svg","mtime":"2017-10-08T14:45:34+02:00","size":763,"digest":"eb10f33cbde25ab6ccaa49cbe3976b4f5ece2fa1d3d485394caa158f10b8b8c9","integrity":"sha256-6xDzPL3iWrbMqknL45drT17OL6HT1IU5TKoVjxC4uMk="},"flags/4x3/bd-6cc222c4343f0027697ddd9e8d48f2cf93d3f677b6460b530eabefd2410cfef3.svg":{"logical_path":"flags/4x3/bd.svg","mtime":"2017-10-08T14:45:34+02:00","size":205,"digest":"6cc222c4343f0027697ddd9e8d48f2cf93d3f677b6460b530eabefd2410cfef3","integrity":"sha256-bMIixDQ/ACdpfd2ejUjyz5PT9ne2RgtTDqvv0kEM/vM="},"flags/1x1/bd-2dc72311aca457668c8bce4f3a22c1b76320e00be50a58fb4001ea39caf6725c.svg":{"logical_path":"flags/1x1/bd.svg","mtime":"2017-10-08T14:45:34+02:00","size":209,"digest":"2dc72311aca457668c8bce4f3a22c1b76320e00be50a58fb4001ea39caf6725c","integrity":"sha256-LccjEaykV2aMi85POiLBt2Mg4AvlClj7QAHqOcr2clw="},"flags/4x3/be-2b7e73068f4f120ed0ccc3a9fbb8566c9574b206afd8373ed9050e2a971c4f99.svg":{"logical_path":"flags/4x3/be.svg","mtime":"2017-10-08T14:45:34+02:00","size":318,"digest":"2b7e73068f4f120ed0ccc3a9fbb8566c9574b206afd8373ed9050e2a971c4f99","integrity":"sha256-K35zBo9PEg7QzMOp+7hWbJV0sgav2Dc+2QUOKpccT5k="},"flags/1x1/be-c4c9351d83a4db1f8c7c73dd6476569f0dfd82290ffd20275b7372908c2f2a7e.svg":{"logical_path":"flags/1x1/be.svg","mtime":"2017-10-08T14:45:34+02:00","size":318,"digest":"c4c9351d83a4db1f8c7c73dd6476569f0dfd82290ffd20275b7372908c2f2a7e","integrity":"sha256-xMk1HYOk2x+MfHPdZHZWnw39gikP/SAnW3NykIwvKn4="},"flags/4x3/bf-56669967fef6bb607ea2fd26d32d922cf78f176115287e37e9cf0b8bbec677f0.svg":{"logical_path":"flags/4x3/bf.svg","mtime":"2017-10-08T14:45:34+02:00","size":447,"digest":"56669967fef6bb607ea2fd26d32d922cf78f176115287e37e9cf0b8bbec677f0","integrity":"sha256-VmaZZ/72u2B+ov0m0y2SLPePF2EVKH436c8Li77Gd/A="},"flags/1x1/bf-ffc3651e87b9ccc9374d5bc95617aad474bcaa35871c83ae91fa71eb8b46bab3.svg":{"logical_path":"flags/1x1/bf.svg","mtime":"2017-10-08T14:45:34+02:00","size":459,"digest":"ffc3651e87b9ccc9374d5bc95617aad474bcaa35871c83ae91fa71eb8b46bab3","integrity":"sha256-/8NlHoe5zMk3TVvJVheq1HS8qjWHHIOukfpx64tGurM="},"flags/4x3/bg-ad796782d048f6ddc6715f7ea915a2c86716753579735ec071a106a7f3fc13b6.svg":{"logical_path":"flags/4x3/bg.svg","mtime":"2017-10-08T14:45:34+02:00","size":305,"digest":"ad796782d048f6ddc6715f7ea915a2c86716753579735ec071a106a7f3fc13b6","integrity":"sha256-rXlngtBI9t3GcV9+qRWiyGcWdTV5c17AcaEGp/P8E7Y="},"flags/1x1/bg-962bd196cc8e4b702757e17a9002e867843c16415a47a52ecd97459278e5fa1f.svg":{"logical_path":"flags/1x1/bg.svg","mtime":"2017-10-08T14:45:34+02:00","size":309,"digest":"962bd196cc8e4b702757e17a9002e867843c16415a47a52ecd97459278e5fa1f","integrity":"sha256-livRlsyOS3AnV+F6kALoZ4Q8FkFaR6UuzZdFknjl+h8="},"flags/4x3/bh-aeff05c6dfa41e89db539312faedc41198ba2f2d9bf5ad9f22992a0a5a4151e8.svg":{"logical_path":"flags/4x3/bh.svg","mtime":"2017-10-08T14:45:34+02:00","size":622,"digest":"aeff05c6dfa41e89db539312faedc41198ba2f2d9bf5ad9f22992a0a5a4151e8","integrity":"sha256-rv8Fxt+kHonbU5MS+u3EEZi6Ly2b9a2fIpkqClpBUeg="},"flags/1x1/bh-12da0d548841b860a7aedbbc858df1278a4f56105ae643f9379f5c2a3caa294a.svg":{"logical_path":"flags/1x1/bh.svg","mtime":"2017-10-08T14:45:34+02:00","size":689,"digest":"12da0d548841b860a7aedbbc858df1278a4f56105ae643f9379f5c2a3caa294a","integrity":"sha256-EtoNVIhBuGCnrtu8hY3xJ4pPVhBa5kP5N59cKjyqKUo="},"flags/4x3/bi-7f43c6407a6f007fd70e7b43f9b34e870cc757736a9e2399c46381c8434d238f.svg":{"logical_path":"flags/4x3/bi.svg","mtime":"2017-10-08T14:45:34+02:00","size":1317,"digest":"7f43c6407a6f007fd70e7b43f9b34e870cc757736a9e2399c46381c8434d238f","integrity":"sha256-f0PGQHpvAH/XDntD+bNOhwzHV3NqniOZxGOByENNI48="},"flags/1x1/bi-454adb690bfce8243896377b9c314ef8f447ec4d85dc677860f521a6c30c896e.svg":{"logical_path":"flags/1x1/bi.svg","mtime":"2017-10-08T14:45:34+02:00","size":1248,"digest":"454adb690bfce8243896377b9c314ef8f447ec4d85dc677860f521a6c30c896e","integrity":"sha256-RUrbaQv86CQ4ljd7nDFO+PRH7E2F3Gd4YPUhpsMMiW4="},"flags/4x3/bj-85ecb891b5ebbe5802bd23d41fa44f1c1dbf047aceba991e6006e377c53fa263.svg":{"logical_path":"flags/4x3/bj.svg","mtime":"2017-10-08T14:45:34+02:00","size":503,"digest":"85ecb891b5ebbe5802bd23d41fa44f1c1dbf047aceba991e6006e377c53fa263","integrity":"sha256-hey4kbXrvlgCvSPUH6RPHB2/BHrOupkeYAbjd8U/omM="},"flags/1x1/bj-861b63ba692ecf3e1705296e51ef4f80da47a2eff5cfa29a787bcbc4fc989a53.svg":{"logical_path":"flags/1x1/bj.svg","mtime":"2017-10-08T14:45:34+02:00","size":504,"digest":"861b63ba692ecf3e1705296e51ef4f80da47a2eff5cfa29a787bcbc4fc989a53","integrity":"sha256-hhtjumkuzz4XBSluUe9PgNpHou/1z6KaeHvLxPyYmlM="},"flags/4x3/bl-2c832da5dfab278f90dcfd6265c08211802e94d9b6a5634df6dacdb750723312.svg":{"logical_path":"flags/4x3/bl.svg","mtime":"2017-10-08T14:45:34+02:00","size":327,"digest":"2c832da5dfab278f90dcfd6265c08211802e94d9b6a5634df6dacdb750723312","integrity":"sha256-LIMtpd+rJ4+Q3P1iZcCCEYAulNm2pWNN9trNt1ByMxI="},"flags/1x1/bl-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/bl.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/bm-05e6a9d863d77266cc3e2a74fddea640757e09b54d3032711f0d1890b5b61d3d.svg":{"logical_path":"flags/4x3/bm.svg","mtime":"2017-10-08T14:45:34+02:00","size":32127,"digest":"05e6a9d863d77266cc3e2a74fddea640757e09b54d3032711f0d1890b5b61d3d","integrity":"sha256-Beap2GPXcmbMPip0/d6mQHV+CbVNMDJxHw0YkLW2HT0="},"flags/1x1/bm-0a16d9ab856676f9511627004ba4ee08ebe041533a33046c3f732ffb2793cf8a.svg":{"logical_path":"flags/1x1/bm.svg","mtime":"2017-10-08T14:45:34+02:00","size":31633,"digest":"0a16d9ab856676f9511627004ba4ee08ebe041533a33046c3f732ffb2793cf8a","integrity":"sha256-ChbZq4VmdvlRFicAS6TuCOvgQVM6MwRsP3Mv+yeTz4o="},"flags/4x3/bn-1560949666220d88ee037b03ce1ac0b95c1b91667f05cf2b8b06a043efb01253.svg":{"logical_path":"flags/4x3/bn.svg","mtime":"2017-10-08T14:45:34+02:00","size":21816,"digest":"1560949666220d88ee037b03ce1ac0b95c1b91667f05cf2b8b06a043efb01253","integrity":"sha256-FWCUlmYiDYjuA3sDzhrAuVwbkWZ/Bc8riwagQ++wElM="},"flags/1x1/bn-387ebb4b9e1b3796c94edd61402851eafb8b185d7061671b832c1879db69d6eb.svg":{"logical_path":"flags/1x1/bn.svg","mtime":"2017-10-08T14:45:34+02:00","size":22121,"digest":"387ebb4b9e1b3796c94edd61402851eafb8b185d7061671b832c1879db69d6eb","integrity":"sha256-OH67S54bN5bJTt1hQChR6vuLGF1wYWcbgywYedtp1us="},"flags/4x3/bo-96c7f8e64029f530108baee22d8a07cad2787f41eeed0b647f800bb533c39c63.svg":{"logical_path":"flags/4x3/bo.svg","mtime":"2017-10-08T14:45:34+02:00","size":212103,"digest":"96c7f8e64029f530108baee22d8a07cad2787f41eeed0b647f800bb533c39c63","integrity":"sha256-lsf45kAp9TAQi67iLYoHytJ4f0Hu7Qtkf4ALtTPDnGM="},"flags/1x1/bo-ef679f07e201a91bc3e2152310eb597f731f7133d58be7fc0b1bbb3d8538c666.svg":{"logical_path":"flags/1x1/bo.svg","mtime":"2017-10-08T14:45:34+02:00","size":210767,"digest":"ef679f07e201a91bc3e2152310eb597f731f7133d58be7fc0b1bbb3d8538c666","integrity":"sha256-72efB+IBqRvD4hUjEOtZf3MfcTPVi+f8Cxu7PYU4xmY="},"flags/4x3/bq-687781ca2bff027ee1c2bf587d45147cbe81af412d8a4c52e89673535bfa6a6c.svg":{"logical_path":"flags/4x3/bq.svg","mtime":"2017-10-08T14:45:34+02:00","size":227,"digest":"687781ca2bff027ee1c2bf587d45147cbe81af412d8a4c52e89673535bfa6a6c","integrity":"sha256-aHeByiv/An7hwr9YfUUUfL6Br0EtikxS6JZzU1v6amw="},"flags/1x1/bq-4c8a202ed7a99c1515fad01c0b79234163b42cfdc813aee71c0d277b49aadaa5.svg":{"logical_path":"flags/1x1/bq.svg","mtime":"2017-10-08T14:45:34+02:00","size":231,"digest":"4c8a202ed7a99c1515fad01c0b79234163b42cfdc813aee71c0d277b49aadaa5","integrity":"sha256-TIogLtepnBUV+tAcC3kjQWO0LP3IE67nHA0ne0mq2qU="},"flags/4x3/br-8370504ef87598decf706a50bc8b5deecfa80f965b4c3642d2207c9e0804be3a.svg":{"logical_path":"flags/4x3/br.svg","mtime":"2017-10-08T14:45:34+02:00","size":12470,"digest":"8370504ef87598decf706a50bc8b5deecfa80f965b4c3642d2207c9e0804be3a","integrity":"sha256-g3BQTvh1mN7PcGpQvItd7s+oD5ZbTDZC0iB8nggEvjo="},"flags/1x1/br-cce00e29adbdf110d4155153c8f21e36c46c34847baffafc33b806e121e320d7.svg":{"logical_path":"flags/1x1/br.svg","mtime":"2017-10-08T14:45:34+02:00","size":12219,"digest":"cce00e29adbdf110d4155153c8f21e36c46c34847baffafc33b806e121e320d7","integrity":"sha256-zOAOKa298RDUFVFTyPIeNsRsNIR7r/r8M7gG4SHjINc="},"flags/4x3/bs-80764fdde4884571c2ce5c348231dfe2c57c9e81d4d0d8722ae649ef37a9888c.svg":{"logical_path":"flags/4x3/bs.svg","mtime":"2017-10-08T14:45:34+02:00","size":608,"digest":"80764fdde4884571c2ce5c348231dfe2c57c9e81d4d0d8722ae649ef37a9888c","integrity":"sha256-gHZP3eSIRXHCzlw0gjHf4sV8noHU0NhyKuZJ7zepiIw="},"flags/1x1/bs-0a06f669be5ce81e27f5d9ace25e2254113cad9c2964208b5cd136e8b173b6e8.svg":{"logical_path":"flags/1x1/bs.svg","mtime":"2017-10-08T14:45:34+02:00","size":658,"digest":"0a06f669be5ce81e27f5d9ace25e2254113cad9c2964208b5cd136e8b173b6e8","integrity":"sha256-Cgb2ab5c6B4n9dms4l4iVBE8rZwpZCCLXNE26LFztug="},"flags/4x3/bt-9d00de93c399a0ed1118946c0d662d997847480445bfbbba259e42f80b170be6.svg":{"logical_path":"flags/4x3/bt.svg","mtime":"2017-10-08T14:45:34+02:00","size":41510,"digest":"9d00de93c399a0ed1118946c0d662d997847480445bfbbba259e42f80b170be6","integrity":"sha256-nQDek8OZoO0RGJRsDWYtmXhHSARFv7u6JZ5C+AsXC+Y="},"flags/1x1/bt-32fb8022976e00163073b1f3ff2f62dda6915dd4270d2e09ae51babe67d2ce32.svg":{"logical_path":"flags/1x1/bt.svg","mtime":"2017-10-08T14:45:34+02:00","size":40896,"digest":"32fb8022976e00163073b1f3ff2f62dda6915dd4270d2e09ae51babe67d2ce32","integrity":"sha256-MvuAIpduABYwc7Hz/y9i3aaRXdQnDS4JrlG6vmfSzjI="},"flags/4x3/bv-e0fd8f945e245badbcc8deedd6c139e2e19d26b3aea7bf1b9714595a2b08def1.svg":{"logical_path":"flags/4x3/bv.svg","mtime":"2017-10-08T14:45:34+02:00","size":647,"digest":"e0fd8f945e245badbcc8deedd6c139e2e19d26b3aea7bf1b9714595a2b08def1","integrity":"sha256-4P2PlF4kW628yN7t1sE54uGdJrOup78blxRZWisI3vE="},"flags/1x1/bv-dceefec7161747877af75d9c4b5bd8c53bfeb5cbbe94b41de9a2201321673653.svg":{"logical_path":"flags/1x1/bv.svg","mtime":"2017-10-08T14:45:34+02:00","size":647,"digest":"dceefec7161747877af75d9c4b5bd8c53bfeb5cbbe94b41de9a2201321673653","integrity":"sha256-3O7+xxYXR4d6912cS1vYxTv+tcu+lLQd6aIgEyFnNlM="},"flags/4x3/bw-b5231bca6e8f2dd2371e3b4f776cb33af3889d2ad41c3791feb7cba3afe12992.svg":{"logical_path":"flags/4x3/bw.svg","mtime":"2017-10-08T14:45:34+02:00","size":327,"digest":"b5231bca6e8f2dd2371e3b4f776cb33af3889d2ad41c3791feb7cba3afe12992","integrity":"sha256-tSMbym6PLdI3HjtPd2yzOvOInSrUHDeR/rfLo6/hKZI="},"flags/1x1/bw-35bd0c7c542ab29aa65df0322f37befe54917cde0ec29a6358a8cbfcd3eb78a2.svg":{"logical_path":"flags/1x1/bw.svg","mtime":"2017-10-08T14:45:34+02:00","size":285,"digest":"35bd0c7c542ab29aa65df0322f37befe54917cde0ec29a6358a8cbfcd3eb78a2","integrity":"sha256-Nb0MfFQqspqmXfAyLze+/lSRfN4OwppjWKjL/NPreKI="},"flags/4x3/by-0111fe7946228bd49fa5ffc1d04e1dbea12bb0483cee4bf146e23fcb5d7bd829.svg":{"logical_path":"flags/4x3/by.svg","mtime":"2017-10-08T14:45:34+02:00","size":9067,"digest":"0111fe7946228bd49fa5ffc1d04e1dbea12bb0483cee4bf146e23fcb5d7bd829","integrity":"sha256-ARH+eUYii9Sfpf/B0E4dvqErsEg87kvxRuI/y1172Ck="},"flags/1x1/by-3a64902f39b8bac7c042cadcd2ace69975498cc6254f60f31829ebbfe31c2ef5.svg":{"logical_path":"flags/1x1/by.svg","mtime":"2017-10-08T14:45:34+02:00","size":8989,"digest":"3a64902f39b8bac7c042cadcd2ace69975498cc6254f60f31829ebbfe31c2ef5","integrity":"sha256-OmSQLzm4usfAQsrc0qzmmXVJjMYlT2DzGCnrv+McLvU="},"flags/4x3/bz-f6761e8e1132b192c6c2dddcb1d0239ed14e801b8902a7ee8fb0cb869a517eab.svg":{"logical_path":"flags/4x3/bz.svg","mtime":"2017-10-08T14:45:34+02:00","size":77834,"digest":"f6761e8e1132b192c6c2dddcb1d0239ed14e801b8902a7ee8fb0cb869a517eab","integrity":"sha256-9nYejhEysZLGwt3csdAjntFOgBuJAqfuj7DLhppRfqs="},"flags/1x1/bz-2d1e5ec107a277b8e97fede80f512c23ebbf9c225a2c5450dc51c5fb03c9571b.svg":{"logical_path":"flags/1x1/bz.svg","mtime":"2017-10-08T14:45:34+02:00","size":78036,"digest":"2d1e5ec107a277b8e97fede80f512c23ebbf9c225a2c5450dc51c5fb03c9571b","integrity":"sha256-LR5ewQeid7jpf+3oD1EsI+u/nCJaLFRQ3FHF+wPJVxs="},"flags/4x3/ca-cf63f34a0cef8ed56b4cf1ba24fecc20cea252a9eb9e2c16acccf4eb80b32f49.svg":{"logical_path":"flags/4x3/ca.svg","mtime":"2017-10-08T14:45:34+02:00","size":1143,"digest":"cf63f34a0cef8ed56b4cf1ba24fecc20cea252a9eb9e2c16acccf4eb80b32f49","integrity":"sha256-z2PzSgzvjtVrTPG6JP7MIM6iUqnrniwWrMz064CzL0k="},"flags/1x1/ca-5c78fbcd8924e8f76111f1cc50317decd6b7c1761e57f19ad33f0b295d002138.svg":{"logical_path":"flags/1x1/ca.svg","mtime":"2017-10-08T14:45:34+02:00","size":1081,"digest":"5c78fbcd8924e8f76111f1cc50317decd6b7c1761e57f19ad33f0b295d002138","integrity":"sha256-XHj7zYkk6PdhEfHMUDF97Na3wXYeV/Ga0z8LKV0AITg="},"flags/4x3/cc-f5d8e042b0f7ee2be5ed555b4ea6a0586e69eeb9230701967903364c19e49006.svg":{"logical_path":"flags/4x3/cc.svg","mtime":"2017-10-08T14:45:34+02:00","size":4337,"digest":"f5d8e042b0f7ee2be5ed555b4ea6a0586e69eeb9230701967903364c19e49006","integrity":"sha256-9djgQrD37ivl7VVbTqagWG5p7rkjBwGWeQM2TBnkkAY="},"flags/1x1/cc-7dc42986b5859331d9f6c96ae7a97b378ff38e4480072cbecceae78e338891a0.svg":{"logical_path":"flags/1x1/cc.svg","mtime":"2017-10-08T14:45:34+02:00","size":4318,"digest":"7dc42986b5859331d9f6c96ae7a97b378ff38e4480072cbecceae78e338891a0","integrity":"sha256-fcQphrWFkzHZ9slq56l7N4/zjkSAByy+zOrnjjOIkaA="},"flags/4x3/cd-9d7d8b11e63073792e3d5e0327cc673101c65ae7545d721b8b1504c31a0c0078.svg":{"logical_path":"flags/4x3/cd.svg","mtime":"2017-10-08T14:45:34+02:00","size":352,"digest":"9d7d8b11e63073792e3d5e0327cc673101c65ae7545d721b8b1504c31a0c0078","integrity":"sha256-nX2LEeYwc3kuPV4DJ8xnMQHGWudUXXIbixUEwxoMAHg="},"flags/1x1/cd-f42723b2e3b7815b2a4b970c5d8a8abea987cf16ff26dbab0c1a78f3ffa3d1fd.svg":{"logical_path":"flags/1x1/cd.svg","mtime":"2017-10-08T14:45:34+02:00","size":512,"digest":"f42723b2e3b7815b2a4b970c5d8a8abea987cf16ff26dbab0c1a78f3ffa3d1fd","integrity":"sha256-9CcjsuO3gVsqS5cMXYqKvqmHzxb/JturDBp48/+j0f0="},"flags/4x3/cf-902b209a0eaeb8f41f529b5c98240d4fa94dffd58ac3bdc2b6c574125897bb8c.svg":{"logical_path":"flags/4x3/cf.svg","mtime":"2017-10-08T14:45:34+02:00","size":757,"digest":"902b209a0eaeb8f41f529b5c98240d4fa94dffd58ac3bdc2b6c574125897bb8c","integrity":"sha256-kCsgmg6uuPQfUptcmCQNT6lN/9WKw73CtsV0EliXu4w="},"flags/1x1/cf-f9b65e234b309ba4f3b2261dcb605b257bd941a308d208b1eaa89af874c779ec.svg":{"logical_path":"flags/1x1/cf.svg","mtime":"2017-10-08T14:45:34+02:00","size":679,"digest":"f9b65e234b309ba4f3b2261dcb605b257bd941a308d208b1eaa89af874c779ec","integrity":"sha256-+bZeI0swm6TzsiYdy2BbJXvZQaMI0gix6qia+HTHeew="},"flags/4x3/cg-f62e43d08581b8665ab9a7e61ab62cc6b3dd8e6fd0722c7d45c6ddc3f46ec5ab.svg":{"logical_path":"flags/4x3/cg.svg","mtime":"2017-10-08T14:45:34+02:00","size":492,"digest":"f62e43d08581b8665ab9a7e61ab62cc6b3dd8e6fd0722c7d45c6ddc3f46ec5ab","integrity":"sha256-9i5D0IWBuGZauafmGrYsxrPdjm/Qcix9Rcbdw/Ruxas="},"flags/1x1/cg-f2fbf08b1f5fd7e097600a9399d467cb9af8d24fd103a3eeb99f5cf58e6fc0b6.svg":{"logical_path":"flags/1x1/cg.svg","mtime":"2017-10-08T14:45:34+02:00","size":507,"digest":"f2fbf08b1f5fd7e097600a9399d467cb9af8d24fd103a3eeb99f5cf58e6fc0b6","integrity":"sha256-8vvwix9f1+CXYAqTmdRny5r40k/RA6PuuZ9c9Y5vwLY="},"flags/4x3/ch-830fe6654b170d461a76a7932b39d352ec30895d512c009a5c193c5a28289158.svg":{"logical_path":"flags/4x3/ch.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"830fe6654b170d461a76a7932b39d352ec30895d512c009a5c193c5a28289158","integrity":"sha256-gw/mZUsXDUYadqeTKznTUuwwiV1RLACaXBk8WigokVg="},"flags/1x1/ch-9f95a95e181489d64144d4502991c00823cf19fefc029cb639199cb100863a0a.svg":{"logical_path":"flags/1x1/ch.svg","mtime":"2017-10-08T14:45:34+02:00","size":354,"digest":"9f95a95e181489d64144d4502991c00823cf19fefc029cb639199cb100863a0a","integrity":"sha256-n5WpXhgUidZBRNRQKZHACCPPGf78Apy2ORmcsQCGOgo="},"flags/4x3/ci-3e6b86d6fc1a24b5635c258bbde180f8638e114be354d7379406d5718e46b70b.svg":{"logical_path":"flags/4x3/ci.svg","mtime":"2017-10-08T14:45:34+02:00","size":346,"digest":"3e6b86d6fc1a24b5635c258bbde180f8638e114be354d7379406d5718e46b70b","integrity":"sha256-PmuG1vwaJLVjXCWLveGA+GOOEUvjVNc3lAbVcY5Gtws="},"flags/1x1/ci-816edfc3bfc44353f99572310ba67643f979b1681c2643ecc34255df1dbee05e.svg":{"logical_path":"flags/1x1/ci.svg","mtime":"2017-10-08T14:45:34+02:00","size":305,"digest":"816edfc3bfc44353f99572310ba67643f979b1681c2643ecc34255df1dbee05e","integrity":"sha256-gW7fw7/EQ1P5lXIxC6Z2Q/l5sWgcJkPsw0JV3x2+4F4="},"flags/4x3/ck-cadf8156d64ddcff3d60079d017b12bb4e25867e58fa2618f42defa4f7bc8587.svg":{"logical_path":"flags/4x3/ck.svg","mtime":"2017-10-08T14:45:34+02:00","size":2639,"digest":"cadf8156d64ddcff3d60079d017b12bb4e25867e58fa2618f42defa4f7bc8587","integrity":"sha256-yt+BVtZN3P89YAedAXsSu04lhn5Y+iYY9C3vpPe8hYc="},"flags/1x1/ck-450d3b83c32f220510bdbab3ec0fca14edf895e53db9e26e4cd00a3edfb3e224.svg":{"logical_path":"flags/1x1/ck.svg","mtime":"2017-10-08T14:45:34+02:00","size":2526,"digest":"450d3b83c32f220510bdbab3ec0fca14edf895e53db9e26e4cd00a3edfb3e224","integrity":"sha256-RQ07g8MvIgUQvbqz7A/KFO34leU9ueJuTNAKPt+z4iQ="},"flags/4x3/cl-28ce953691b1c4b0c6d562370913b3ad645e29e56296c16762992e3c30f2a4a8.svg":{"logical_path":"flags/4x3/cl.svg","mtime":"2017-10-08T14:45:34+02:00","size":635,"digest":"28ce953691b1c4b0c6d562370913b3ad645e29e56296c16762992e3c30f2a4a8","integrity":"sha256-KM6VNpGxxLDG1WI3CROzrWReKeVilsFnYpkuPDDypKg="},"flags/1x1/cl-ed5421f0ff3ba05785268eed2abd3abf76125ec832e519bc10a30db278c23662.svg":{"logical_path":"flags/1x1/cl.svg","mtime":"2017-10-08T14:45:34+02:00","size":665,"digest":"ed5421f0ff3ba05785268eed2abd3abf76125ec832e519bc10a30db278c23662","integrity":"sha256-7VQh8P87oFeFJo7tKr06v3YSXsgy5Rm8EKMNsnjCNmI="},"flags/4x3/cm-d22cb6519bfbf9fbae46b283f6d882f8d46713f18ba59969ae45c542ba2bc621.svg":{"logical_path":"flags/4x3/cm.svg","mtime":"2017-10-08T14:45:34+02:00","size":847,"digest":"d22cb6519bfbf9fbae46b283f6d882f8d46713f18ba59969ae45c542ba2bc621","integrity":"sha256-0iy2UZv7+fuuRrKD9tiC+NRnE/GLpZlprkXFQrorxiE="},"flags/1x1/cm-4619b0400d175f6c0f686526cfdbfcc6f7c2fc7587449e05ab0385cc7d4e8bd4.svg":{"logical_path":"flags/1x1/cm.svg","mtime":"2017-10-08T14:45:34+02:00","size":847,"digest":"4619b0400d175f6c0f686526cfdbfcc6f7c2fc7587449e05ab0385cc7d4e8bd4","integrity":"sha256-RhmwQA0XX2wPaGUmz9v8xvfC/HWHRJ4FqwOFzH1Oi9Q="},"flags/4x3/cn-7af9da3dd810174340b79e6fe636bec183c71d7ce314ac4a5a815bfd388dea54.svg":{"logical_path":"flags/4x3/cn.svg","mtime":"2017-10-08T14:45:34+02:00","size":848,"digest":"7af9da3dd810174340b79e6fe636bec183c71d7ce314ac4a5a815bfd388dea54","integrity":"sha256-evnaPdgQF0NAt55v5ja+wYPHHXzjFKxKWoFb/TiN6lQ="},"flags/1x1/cn-22e04d44d7f85e6f5800bddc6a497e5722de8db2ad74c6c525c392bd7b8c6e09.svg":{"logical_path":"flags/1x1/cn.svg","mtime":"2017-10-08T14:45:34+02:00","size":792,"digest":"22e04d44d7f85e6f5800bddc6a497e5722de8db2ad74c6c525c392bd7b8c6e09","integrity":"sha256-IuBNRNf4Xm9YAL3cakl+VyLejbKtdMbFJcOSvXuMbgk="},"flags/4x3/co-ef2a3c7e495d85d7df1b9bda27023cd558abe89402cad0ff42428c2c5b877551.svg":{"logical_path":"flags/4x3/co.svg","mtime":"2017-10-08T14:45:34+02:00","size":304,"digest":"ef2a3c7e495d85d7df1b9bda27023cd558abe89402cad0ff42428c2c5b877551","integrity":"sha256-7yo8fkldhdffG5vaJwI81Vir6JQCytD/QkKMLFuHdVE="},"flags/1x1/co-42915db89e2fa2f9f97c09ecafc188eb2ec4e51efa87685a01c25d2f0afddf45.svg":{"logical_path":"flags/1x1/co.svg","mtime":"2017-10-08T14:45:34+02:00","size":320,"digest":"42915db89e2fa2f9f97c09ecafc188eb2ec4e51efa87685a01c25d2f0afddf45","integrity":"sha256-QpFduJ4vovn5fAnsr8GI6y7E5R76h2haAcJdLwr930U="},"flags/4x3/cr-7853ef9dbb5832a6d2738b44afdecfcdaa80c56cb66c448b8a8657e236854c8d.svg":{"logical_path":"flags/4x3/cr.svg","mtime":"2017-10-08T14:45:34+02:00","size":303,"digest":"7853ef9dbb5832a6d2738b44afdecfcdaa80c56cb66c448b8a8657e236854c8d","integrity":"sha256-eFPvnbtYMqbSc4tEr97PzaqAxWy2bESLioZX4jaFTI0="},"flags/1x1/cr-b86f916cc80cc14db90b66c652a2919a26baf2864451685af9c34d6310c3f8c6.svg":{"logical_path":"flags/1x1/cr.svg","mtime":"2017-10-08T14:45:34+02:00","size":320,"digest":"b86f916cc80cc14db90b66c652a2919a26baf2864451685af9c34d6310c3f8c6","integrity":"sha256-uG+RbMgMwU25C2bGUqKRmia68oZEUWha+cNNYxDD+MY="},"flags/4x3/cu-e3a3afa4a5c661ad431dc45eb501d7e1280b4a397bafa3956a9fc5bab8735f45.svg":{"logical_path":"flags/4x3/cu.svg","mtime":"2017-10-08T14:45:34+02:00","size":682,"digest":"e3a3afa4a5c661ad431dc45eb501d7e1280b4a397bafa3956a9fc5bab8735f45","integrity":"sha256-46OvpKXGYa1DHcRetQHX4SgLSjl7r6OVap/FurhzX0U="},"flags/1x1/cu-9563bc3aa0b1ac659dddaa2534c37d338e1da3dfd3726a717fc85ca8449c83da.svg":{"logical_path":"flags/1x1/cu.svg","mtime":"2017-10-08T14:45:34+02:00","size":638,"digest":"9563bc3aa0b1ac659dddaa2534c37d338e1da3dfd3726a717fc85ca8449c83da","integrity":"sha256-lWO8OqCxrGWd3aolNMN9M44do9/Tcmpxf8hcqEScg9o="},"flags/4x3/cv-d39c3ae09026623cebad38bbe41231aea9b9afacf7eca1d0abf6666e91dd8bbc.svg":{"logical_path":"flags/4x3/cv.svg","mtime":"2017-10-08T14:45:34+02:00","size":1790,"digest":"d39c3ae09026623cebad38bbe41231aea9b9afacf7eca1d0abf6666e91dd8bbc","integrity":"sha256-05w64JAmYjzrrTi75BIxrqm5r6z37KHQq/ZmbpHdi7w="},"flags/1x1/cv-78857e96ac5b49478a49578f422abe217af9ed7d90fa2d08ae72a67de4f6999e.svg":{"logical_path":"flags/1x1/cv.svg","mtime":"2017-10-08T14:45:34+02:00","size":1734,"digest":"78857e96ac5b49478a49578f422abe217af9ed7d90fa2d08ae72a67de4f6999e","integrity":"sha256-eIV+lqxbSUeKSVePQiq+IXr57X2Q+i0IrnKmfeT2mZ4="},"flags/4x3/cw-c65dd455b3c113d9088e563033c5f1ed3945d6dd88c8f13317fe297fd2291776.svg":{"logical_path":"flags/4x3/cw.svg","mtime":"2017-10-08T14:45:34+02:00","size":705,"digest":"c65dd455b3c113d9088e563033c5f1ed3945d6dd88c8f13317fe297fd2291776","integrity":"sha256-xl3UVbPBE9kIjlYwM8Xx7TlF1t2IyPEzF/4pf9IpF3Y="},"flags/1x1/cw-61f38f9076443eb7ca682abc21e6ea5f170bd855813d7297d85602b76ca36171.svg":{"logical_path":"flags/1x1/cw.svg","mtime":"2017-10-08T14:45:34+02:00","size":711,"digest":"61f38f9076443eb7ca682abc21e6ea5f170bd855813d7297d85602b76ca36171","integrity":"sha256-YfOPkHZEPrfKaCq8IebqXxcL2FWBPXKX2FYCt2yjYXE="},"flags/4x3/cx-aecc7a8b4b84b9f00a63154b027cb8ec78bebcec33e756b5e95151efb43420f7.svg":{"logical_path":"flags/4x3/cx.svg","mtime":"2017-10-08T14:45:34+02:00","size":3488,"digest":"aecc7a8b4b84b9f00a63154b027cb8ec78bebcec33e756b5e95151efb43420f7","integrity":"sha256-rsx6i0uEufAKYxVLAny47Hi+vOwz51a16VFR77Q0IPc="},"flags/1x1/cx-c052a0033a120d56c108dc0a919c3fccb9d01a4b78f1f778e3f2973e96197868.svg":{"logical_path":"flags/1x1/cx.svg","mtime":"2017-10-08T14:45:34+02:00","size":3504,"digest":"c052a0033a120d56c108dc0a919c3fccb9d01a4b78f1f778e3f2973e96197868","integrity":"sha256-wFKgAzoSDVbBCNwKkZw/zLnQGkt48fd44/KXPpYZeGg="},"flags/4x3/cy-b8e0d56b75e0954429cb2253aaf289a83e3c72abd52b4132bdd4016f2bbd43c9.svg":{"logical_path":"flags/4x3/cy.svg","mtime":"2017-10-08T14:45:34+02:00","size":10069,"digest":"b8e0d56b75e0954429cb2253aaf289a83e3c72abd52b4132bdd4016f2bbd43c9","integrity":"sha256-uODVa3XglUQpyyJTqvKJqD48cqvVK0EyvdQBbyu9Q8k="},"flags/1x1/cy-34aa50b77e1b86f5305beec283996cabc45fef1950582b868addc40fd9a8438f.svg":{"logical_path":"flags/1x1/cy.svg","mtime":"2017-10-08T14:45:34+02:00","size":10141,"digest":"34aa50b77e1b86f5305beec283996cabc45fef1950582b868addc40fd9a8438f","integrity":"sha256-NKpQt34bhvUwW+7Cg5lsq8Rf7xlQWCuGit3ED9moQ48="},"flags/4x3/cz-c2a15f3c50b7920c7d82fd9fb21f77c44fb3883f0e34dcf197a23d92d9212290.svg":{"logical_path":"flags/4x3/cz.svg","mtime":"2017-10-08T14:45:34+02:00","size":501,"digest":"c2a15f3c50b7920c7d82fd9fb21f77c44fb3883f0e34dcf197a23d92d9212290","integrity":"sha256-wqFfPFC3kgx9gv2fsh93xE+ziD8ONNzxl6I9ktkhIpA="},"flags/1x1/cz-487367824632a5097e16d7ed1ffc7fe8e233f9e1af45522571e1d4da10de92c7.svg":{"logical_path":"flags/1x1/cz.svg","mtime":"2017-10-08T14:45:34+02:00","size":505,"digest":"487367824632a5097e16d7ed1ffc7fe8e233f9e1af45522571e1d4da10de92c7","integrity":"sha256-SHNngkYypQl+FtftH/x/6OIz+eGvRVIlceHU2hDeksc="},"flags/4x3/de-32f54fb46c7fcaf2dfcf9172273456ea57f975efb228860def92481efe51c506.svg":{"logical_path":"flags/4x3/de.svg","mtime":"2017-10-08T14:45:34+02:00","size":290,"digest":"32f54fb46c7fcaf2dfcf9172273456ea57f975efb228860def92481efe51c506","integrity":"sha256-MvVPtGx/yvLfz5FyJzRW6lf5de+yKIYN75JIHv5RxQY="},"flags/1x1/de-2c94f333afeb14810030d786620fc32e65ba79af53b1037192383823996bb77f.svg":{"logical_path":"flags/1x1/de.svg","mtime":"2017-10-08T14:45:34+02:00","size":315,"digest":"2c94f333afeb14810030d786620fc32e65ba79af53b1037192383823996bb77f","integrity":"sha256-LJTzM6/rFIEAMNeGYg/DLmW6ea9TsQNxkjg4I5lrt38="},"flags/4x3/dj-d84d938856e7b6bdf8d38413c84a6968f94dc2adb218f2a9fab3d703341efc33.svg":{"logical_path":"flags/4x3/dj.svg","mtime":"2017-10-08T14:45:34+02:00","size":641,"digest":"d84d938856e7b6bdf8d38413c84a6968f94dc2adb218f2a9fab3d703341efc33","integrity":"sha256-2E2TiFbntr3404QTyEppaPlNwq2yGPKp+rPXAzQe/DM="},"flags/1x1/dj-6960cafac7e0d593152b60988fd12f5d1bb95068bf055c638cb999459f932692.svg":{"logical_path":"flags/1x1/dj.svg","mtime":"2017-10-08T14:45:34+02:00","size":657,"digest":"6960cafac7e0d593152b60988fd12f5d1bb95068bf055c638cb999459f932692","integrity":"sha256-aWDK+sfg1ZMVK2CYj9EvXRu5UGi/BVxjjLmZRZ+TJpI="},"flags/4x3/dk-fdd09296ac803a8cf4066ff5488821458a9788985e3cc09356d4c4ef81959ecf.svg":{"logical_path":"flags/4x3/dk.svg","mtime":"2017-10-08T14:45:34+02:00","size":249,"digest":"fdd09296ac803a8cf4066ff5488821458a9788985e3cc09356d4c4ef81959ecf","integrity":"sha256-/dCSlqyAOoz0Bm/1SIghRYqXiJhePMCTVtTE74GVns8="},"flags/1x1/dk-87924239a5ff1605582e1736f5ef17c9bd9d580d796d94b05ff668e2a52a223e.svg":{"logical_path":"flags/1x1/dk.svg","mtime":"2017-10-08T14:45:34+02:00","size":243,"digest":"87924239a5ff1605582e1736f5ef17c9bd9d580d796d94b05ff668e2a52a223e","integrity":"sha256-h5JCOaX/FgVYLhc29e8Xyb2dWA15bZSwX/Zo4qUqIj4="},"flags/4x3/dm-dc3b5c9634f0751ebfec181b12a7c530673ced1001b62a9126ed5ae39ba57203.svg":{"logical_path":"flags/4x3/dm.svg","mtime":"2017-10-08T14:45:34+02:00","size":20452,"digest":"dc3b5c9634f0751ebfec181b12a7c530673ced1001b62a9126ed5ae39ba57203","integrity":"sha256-3DtcljTwdR6/7BgbEqfFMGc87RABtiqRJu1a45ulcgM="},"flags/1x1/dm-c8018ea775b0add069f676bbf4b446ed19886c192aa742bb6a61c3602ca63211.svg":{"logical_path":"flags/1x1/dm.svg","mtime":"2017-10-08T14:45:34+02:00","size":20955,"digest":"c8018ea775b0add069f676bbf4b446ed19886c192aa742bb6a61c3602ca63211","integrity":"sha256-yAGOp3WwrdBp9na79LRG7RmIbBkqp0K7amHDYCymMhE="},"flags/4x3/do-5e2d6816118f78fa4a362ee6a276dac655a4c99d57a9e53a52198f1624ed186a.svg":{"logical_path":"flags/4x3/do.svg","mtime":"2017-10-08T14:45:34+02:00","size":466771,"digest":"5e2d6816118f78fa4a362ee6a276dac655a4c99d57a9e53a52198f1624ed186a","integrity":"sha256-Xi1oFhGPePpKNi7monbaxlWkyZ1XqeU6UhmPFiTtGGo="},"flags/1x1/do-f9862ff8016b35d30d5c37ac2c585cdddf235e56ac9a7ae31a90c96963865f57.svg":{"logical_path":"flags/1x1/do.svg","mtime":"2017-10-08T14:45:34+02:00","size":453664,"digest":"f9862ff8016b35d30d5c37ac2c585cdddf235e56ac9a7ae31a90c96963865f57","integrity":"sha256-+YYv+AFrNdMNXDesLFhc3d8jXlasmnrjGpDJaWOGX1c="},"flags/4x3/dz-8a14ddcb20a69c3265924fe2af141ea78c0af47ea07a88707c392a2793092cd4.svg":{"logical_path":"flags/4x3/dz.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"8a14ddcb20a69c3265924fe2af141ea78c0af47ea07a88707c392a2793092cd4","integrity":"sha256-ihTdyyCmnDJlkk/irxQep4wK9H6geohwfDkqJ5MJLNQ="},"flags/1x1/dz-0e2ada15ba7882343f7512929d3cf981a23a91817fdda0be1ed6a093161b649e.svg":{"logical_path":"flags/1x1/dz.svg","mtime":"2017-10-08T14:45:34+02:00","size":339,"digest":"0e2ada15ba7882343f7512929d3cf981a23a91817fdda0be1ed6a093161b649e","integrity":"sha256-DiraFbp4gjQ/dRKSnTz5gaI6kYF/3aC+HtagkxYbZJ4="},"flags/4x3/ec-a4c3c62b4272f5000e1c8f563c45ce8305ec71f4e4e49ac477d81b5cb692d7e6.svg":{"logical_path":"flags/4x3/ec.svg","mtime":"2017-10-08T14:45:34+02:00","size":38481,"digest":"a4c3c62b4272f5000e1c8f563c45ce8305ec71f4e4e49ac477d81b5cb692d7e6","integrity":"sha256-pMPGK0Jy9QAOHI9WPEXOgwXscfTk5JrEd9gbXLaS1+Y="},"flags/1x1/ec-c42aa1de56f2933fc6703e7a59ebc8b424c66f190697ee66814a137b56fa6969.svg":{"logical_path":"flags/1x1/ec.svg","mtime":"2017-10-08T14:45:34+02:00","size":39118,"digest":"c42aa1de56f2933fc6703e7a59ebc8b424c66f190697ee66814a137b56fa6969","integrity":"sha256-xCqh3lbykz/GcD56WevItCTGbxkGl+5mgUoTe1b6aWk="},"flags/4x3/ee-6148aad79adb1c847fedb9da5a7e9c9d47e99ef4c8f4853bb9800e738bddb19d.svg":{"logical_path":"flags/4x3/ee.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"6148aad79adb1c847fedb9da5a7e9c9d47e99ef4c8f4853bb9800e738bddb19d","integrity":"sha256-YUiq15rbHIR/7bnaWn6cnUfpnvTI9IU7uYAOc4vdsZ0="},"flags/1x1/ee-9a87370a85922c5d103d9d21fe3e778b801a62cf40e1f0efe8d708c5fe3b3ac4.svg":{"logical_path":"flags/1x1/ee.svg","mtime":"2017-10-08T14:45:34+02:00","size":371,"digest":"9a87370a85922c5d103d9d21fe3e778b801a62cf40e1f0efe8d708c5fe3b3ac4","integrity":"sha256-moc3CoWSLF0QPZ0h/j53i4AaYs9A4fDv6NcIxf47OsQ="},"flags/4x3/eg-3b2f122e512f0fc470666b35af4f677404d4b811cd795d5cf4e44a72ffd01285.svg":{"logical_path":"flags/4x3/eg.svg","mtime":"2017-10-08T14:45:34+02:00","size":16086,"digest":"3b2f122e512f0fc470666b35af4f677404d4b811cd795d5cf4e44a72ffd01285","integrity":"sha256-Oy8SLlEvD8RwZms1r09ndATUuBHNeV1c9ORKcv/QEoU="},"flags/1x1/eg-a050fc5953113bfa5e12867313b321df472eb86ad1e3d5362ebb27ac2edbd28b.svg":{"logical_path":"flags/1x1/eg.svg","mtime":"2017-10-08T14:45:34+02:00","size":16110,"digest":"a050fc5953113bfa5e12867313b321df472eb86ad1e3d5362ebb27ac2edbd28b","integrity":"sha256-oFD8WVMRO/peEoZzE7Mh30cuuGrR49U2LrsnrC7b0os="},"flags/4x3/eh-fea043048f74c728961fe981d7e5d50e286fef39f3e68659b699c6c357c202dd.svg":{"logical_path":"flags/4x3/eh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1081,"digest":"fea043048f74c728961fe981d7e5d50e286fef39f3e68659b699c6c357c202dd","integrity":"sha256-/qBDBI90xyiWH+mB1+XVDihv7znz5oZZtpnGw1fCAt0="},"flags/1x1/eh-8ea23a1b6813465e739d6f5e2ca6727331fae96cd32c86041a1ba48926a14cfd.svg":{"logical_path":"flags/1x1/eh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1028,"digest":"8ea23a1b6813465e739d6f5e2ca6727331fae96cd32c86041a1ba48926a14cfd","integrity":"sha256-jqI6G2gTRl5znW9eLKZyczH66WzTLIYEGhukiSahTP0="},"flags/4x3/er-b24dc54f7e94d0934d05faa7944e6039a56de8a5e4779a399046f047dbd1b949.svg":{"logical_path":"flags/4x3/er.svg","mtime":"2017-10-08T14:45:34+02:00","size":4800,"digest":"b24dc54f7e94d0934d05faa7944e6039a56de8a5e4779a399046f047dbd1b949","integrity":"sha256-sk3FT36U0JNNBfqnlE5gOaVt6KXkd5o5kEbwR9vRuUk="},"flags/1x1/er-6921f9776ece4a1b1ec594ec5665076462cef2d0b41eba83a7bc840ecf88287d.svg":{"logical_path":"flags/1x1/er.svg","mtime":"2017-10-08T14:45:34+02:00","size":4848,"digest":"6921f9776ece4a1b1ec594ec5665076462cef2d0b41eba83a7bc840ecf88287d","integrity":"sha256-aSH5d27OShsexZTsVmUHZGLO8tC0HrqDp7yEDs+IKH0="},"flags/4x3/es-e36093927dc1fa109e4ddcd4baa65d53d233c23bcdd32796b96409b52c5adbc0.svg":{"logical_path":"flags/4x3/es.svg","mtime":"2017-10-08T14:45:34+02:00","size":145208,"digest":"e36093927dc1fa109e4ddcd4baa65d53d233c23bcdd32796b96409b52c5adbc0","integrity":"sha256-42CTkn3B+hCeTdzUuqZdU9IzwjvN0yeWuWQJtSxa28A="},"flags/1x1/es-16a6c048523ee57edd91e60e87aae136a96893b48828d932a24436bb219c00b9.svg":{"logical_path":"flags/1x1/es.svg","mtime":"2017-10-08T14:45:34+02:00","size":147129,"digest":"16a6c048523ee57edd91e60e87aae136a96893b48828d932a24436bb219c00b9","integrity":"sha256-FqbASFI+5X7dkeYOh6rhNqlok7SIKNkyokQ2uyGcALk="},"flags/4x3/et-a3ef36d217667b7e8ebe910469c2eeef563f03d3ea5628ec7fea0f72650db28e.svg":{"logical_path":"flags/4x3/et.svg","mtime":"2017-10-08T14:45:34+02:00","size":1574,"digest":"a3ef36d217667b7e8ebe910469c2eeef563f03d3ea5628ec7fea0f72650db28e","integrity":"sha256-o+820hdme36OvpEEacLu71Y/A9PqVijsf+oPcmUNso4="},"flags/1x1/et-f66f415e5d5b8b697ed7bb85f4ae3408f9cefaeed7ff0136c4c03da5c3601340.svg":{"logical_path":"flags/1x1/et.svg","mtime":"2017-10-08T14:45:34+02:00","size":1595,"digest":"f66f415e5d5b8b697ed7bb85f4ae3408f9cefaeed7ff0136c4c03da5c3601340","integrity":"sha256-9m9BXl1bi2l+17uF9K40CPnO+u7X/wE2xMA9pcNgE0A="},"flags/4x3/fi-a94779c54a538d2f57a421e6beb619f07cc9c2bda40817d236b686deb8eb3b4c.svg":{"logical_path":"flags/4x3/fi.svg","mtime":"2017-10-08T14:45:34+02:00","size":265,"digest":"a94779c54a538d2f57a421e6beb619f07cc9c2bda40817d236b686deb8eb3b4c","integrity":"sha256-qUd5xUpTjS9XpCHmvrYZ8HzJwr2kCBfSNraG3rjrO0w="},"flags/1x1/fi-865b1ae3ed34a0cf0928c6289411569add2065c7ea4fa6897f971c322d955b16.svg":{"logical_path":"flags/1x1/fi.svg","mtime":"2017-10-08T14:45:34+02:00","size":265,"digest":"865b1ae3ed34a0cf0928c6289411569add2065c7ea4fa6897f971c322d955b16","integrity":"sha256-hlsa4+00oM8JKMYolBFWmt0gZcfqT6aJf5ccMi2VWxY="},"flags/4x3/fj-97dd8f9b0d9df1cd965c8a85ecb6feb538acc83b470596ccd199f71dc3d2eff9.svg":{"logical_path":"flags/4x3/fj.svg","mtime":"2017-10-08T14:45:34+02:00","size":44908,"digest":"97dd8f9b0d9df1cd965c8a85ecb6feb538acc83b470596ccd199f71dc3d2eff9","integrity":"sha256-l92Pmw2d8c2WXIqF7Lb+tTisyDtHBZbM0Zn3HcPS7/k="},"flags/1x1/fj-f772a5a860faef823adad1b0dc8e848349d094f4fa3b37e48c87382bd443c861.svg":{"logical_path":"flags/1x1/fj.svg","mtime":"2017-10-08T14:45:34+02:00","size":45010,"digest":"f772a5a860faef823adad1b0dc8e848349d094f4fa3b37e48c87382bd443c861","integrity":"sha256-93KlqGD674I62tGw3I6Eg0nQlPT6OzfkjIc4K9RDyGE="},"flags/4x3/fk-788901bf125ceebc6c23fa03c801420c787bbc4ce6aa4511ccaaba301e379886.svg":{"logical_path":"flags/4x3/fk.svg","mtime":"2017-10-08T14:45:34+02:00","size":44422,"digest":"788901bf125ceebc6c23fa03c801420c787bbc4ce6aa4511ccaaba301e379886","integrity":"sha256-eIkBvxJc7rxsI/oDyAFCDHh7vEzmqkURzKq6MB43mIY="},"flags/1x1/fk-5d8df0034167cc75863d02bfdb6147da3a694102f7eea0d92e717a048437fc0f.svg":{"logical_path":"flags/1x1/fk.svg","mtime":"2017-10-08T14:45:34+02:00","size":44641,"digest":"5d8df0034167cc75863d02bfdb6147da3a694102f7eea0d92e717a048437fc0f","integrity":"sha256-XY3wA0FnzHWGPQK/22FH2jppQQL37qDZLnF6BIQ3/A8="},"flags/4x3/fm-7167ec387c426a817bccbfec86c8f815b82b36504e1d480f4f9fa04177bdcba0.svg":{"logical_path":"flags/4x3/fm.svg","mtime":"2017-10-08T14:45:34+02:00","size":936,"digest":"7167ec387c426a817bccbfec86c8f815b82b36504e1d480f4f9fa04177bdcba0","integrity":"sha256-cWfsOHxCaoF7zL/shsj4FbgrNlBOHUgPT5+gQXe9y6A="},"flags/1x1/fm-d08e5959b5e3866cdf814f8d6ab594cb3ca84f0887a3adad3bff824ea0aca70a.svg":{"logical_path":"flags/1x1/fm.svg","mtime":"2017-10-08T14:45:34+02:00","size":941,"digest":"d08e5959b5e3866cdf814f8d6ab594cb3ca84f0887a3adad3bff824ea0aca70a","integrity":"sha256-0I5ZWbXjhmzfgU+NarWUyzyoTwiHo62tO/+CTqCspwo="},"flags/4x3/fo-af6148d661d02a6580e8714a6271776b4b8bf3b656bfd5fd88acdd1aa170366a.svg":{"logical_path":"flags/4x3/fo.svg","mtime":"2017-10-08T14:45:34+02:00","size":650,"digest":"af6148d661d02a6580e8714a6271776b4b8bf3b656bfd5fd88acdd1aa170366a","integrity":"sha256-r2FI1mHQKmWA6HFKYnF3a0uL87ZWv9X9iKzdGqFwNmo="},"flags/1x1/fo-26d5af2770c46935170988cbad16ef9aad9be34b38ea92847e6646a516878598.svg":{"logical_path":"flags/1x1/fo.svg","mtime":"2017-10-08T14:45:34+02:00","size":589,"digest":"26d5af2770c46935170988cbad16ef9aad9be34b38ea92847e6646a516878598","integrity":"sha256-JtWvJ3DEaTUXCYjLrRbvmq2b40s46pKEfmZGpRaHhZg="},"flags/4x3/fr-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg":{"logical_path":"flags/4x3/fr.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702","integrity":"sha256-ToxEbgMlcqLnTR/czsmjrpPWbcJJUu0vH+W9q2/vVwI="},"flags/1x1/fr-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/fr.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/ga-80f90062ef9aa4d236c81ec6c6c6e08058750794014bb93d8dbdc8e1684ca4fa.svg":{"logical_path":"flags/4x3/ga.svg","mtime":"2017-10-08T14:45:34+02:00","size":297,"digest":"80f90062ef9aa4d236c81ec6c6c6e08058750794014bb93d8dbdc8e1684ca4fa","integrity":"sha256-gPkAYu+apNI2yB7GxsbggFh1B5QBS7k9jb3I4WhMpPo="},"flags/1x1/ga-a66094862d24f29704c190fe42ff50820923f3940ff417f3e1623e9089b57eb9.svg":{"logical_path":"flags/1x1/ga.svg","mtime":"2017-10-08T14:45:34+02:00","size":328,"digest":"a66094862d24f29704c190fe42ff50820923f3940ff417f3e1623e9089b57eb9","integrity":"sha256-pmCUhi0k8pcEwZD+Qv9Qggkj85QP9Bfz4WI+kIm1frk="},"flags/4x3/gb-d85f0f149b4390bed6624bc30ca2cbfa37d394f14474fcf81d63363ad363e284.svg":{"logical_path":"flags/4x3/gb.svg","mtime":"2017-10-08T14:45:34+02:00","size":956,"digest":"d85f0f149b4390bed6624bc30ca2cbfa37d394f14474fcf81d63363ad363e284","integrity":"sha256-2F8PFJtDkL7WYkvDDKLL+jfTlPFEdPz4HWM2OtNj4oQ="},"flags/1x1/gb-2f0cc6ed1e8e9a7e56cafd3500585d685ae0c51abacddc52f750fb4d23f60b04.svg":{"logical_path":"flags/1x1/gb.svg","mtime":"2017-10-08T14:45:34+02:00","size":911,"digest":"2f0cc6ed1e8e9a7e56cafd3500585d685ae0c51abacddc52f750fb4d23f60b04","integrity":"sha256-LwzG7R6Omn5Wyv01AFhdaFrgxRq6zdxS91D7TSP2CwQ="},"flags/4x3/gd-51a8d53466df4426bec5fb202dd8f35239324b9c8b5256d38fe411c4b79945cb.svg":{"logical_path":"flags/4x3/gd.svg","mtime":"2017-10-08T14:45:34+02:00","size":1960,"digest":"51a8d53466df4426bec5fb202dd8f35239324b9c8b5256d38fe411c4b79945cb","integrity":"sha256-UajVNGbfRCa+xfsgLdjzUjkyS5yLUlbTj+QRxLeZRcs="},"flags/1x1/gd-9156f824a83004691a7a354e925bc1680b5cffe663bbfa37aa4609ff28148218.svg":{"logical_path":"flags/1x1/gd.svg","mtime":"2017-10-08T14:45:34+02:00","size":1872,"digest":"9156f824a83004691a7a354e925bc1680b5cffe663bbfa37aa4609ff28148218","integrity":"sha256-kVb4JKgwBGkaejVOklvBaAtc/+Zju/o3qkYJ/ygUghg="},"flags/4x3/ge-4ef2c8e6f371a711c61ac54d8d201a80aab53767cacc5322fb848cd3e38b00e7.svg":{"logical_path":"flags/4x3/ge.svg","mtime":"2017-10-08T14:45:34+02:00","size":2325,"digest":"4ef2c8e6f371a711c61ac54d8d201a80aab53767cacc5322fb848cd3e38b00e7","integrity":"sha256-TvLI5vNxpxHGGsVNjSAagKq1N2fKzFMi+4SM0+OLAOc="},"flags/1x1/ge-a3af8272a5fb63372705825519543e53269282c4800b70e6a93ba69674524eee.svg":{"logical_path":"flags/1x1/ge.svg","mtime":"2017-10-08T14:45:34+02:00","size":2263,"digest":"a3af8272a5fb63372705825519543e53269282c4800b70e6a93ba69674524eee","integrity":"sha256-o6+CcqX7YzcnBYJVGVQ+UyaSgsSAC3DmqTumlnRSTu4="},"flags/4x3/gf-c7d5ee882949b708641f99ec02edcc6b3b2362d393cc3869342442225be7cd3d.svg":{"logical_path":"flags/4x3/gf.svg","mtime":"2017-10-08T14:45:34+02:00","size":288,"digest":"c7d5ee882949b708641f99ec02edcc6b3b2362d393cc3869342442225be7cd3d","integrity":"sha256-x9XuiClJtwhkH5nsAu3MazsjYtOTzDhpNCRCIlvnzT0="},"flags/1x1/gf-b297e376fc00d3d7bfafd081766dafc4590f4ac4b71f53bc2bbdf2c028547920.svg":{"logical_path":"flags/1x1/gf.svg","mtime":"2017-10-08T14:45:34+02:00","size":292,"digest":"b297e376fc00d3d7bfafd081766dafc4590f4ac4b71f53bc2bbdf2c028547920","integrity":"sha256-spfjdvwA09e/r9CBdm2vxFkPSsS3H1O8K73ywChUeSA="},"flags/4x3/gg-e99b36723ffe04d7be392d612c76ef44e82bc84823d71793eb38e338116f0ee0.svg":{"logical_path":"flags/4x3/gg.svg","mtime":"2017-10-08T14:45:34+02:00","size":621,"digest":"e99b36723ffe04d7be392d612c76ef44e82bc84823d71793eb38e338116f0ee0","integrity":"sha256-6Zs2cj/+BNe+OS1hLHbvROgryEgj1xeT6zjjOBFvDuA="},"flags/1x1/gg-3f764a4568626d43f89b2b200dcbfe68de3093be418716549ab7c5c33f433d37.svg":{"logical_path":"flags/1x1/gg.svg","mtime":"2017-10-08T14:45:34+02:00","size":664,"digest":"3f764a4568626d43f89b2b200dcbfe68de3093be418716549ab7c5c33f433d37","integrity":"sha256-P3ZKRWhibUP4mysgDcv+aN4wk75BhxZUmrfFwz9DPTc="},"flags/4x3/gh-817c2eb8b3f7190647510371b2d38ad8e28e1348cb657e34778f970af5ca3868.svg":{"logical_path":"flags/4x3/gh.svg","mtime":"2017-10-08T14:45:34+02:00","size":312,"digest":"817c2eb8b3f7190647510371b2d38ad8e28e1348cb657e34778f970af5ca3868","integrity":"sha256-gXwuuLP3GQZHUQNxstOK2OKOE0jLZX40d4+XCvXKOGg="},"flags/1x1/gh-87a6486910cb62e58439da330c4270d1e2a0fd8e1ace80987c295971d15f9af3.svg":{"logical_path":"flags/1x1/gh.svg","mtime":"2017-10-08T14:45:34+02:00","size":332,"digest":"87a6486910cb62e58439da330c4270d1e2a0fd8e1ace80987c295971d15f9af3","integrity":"sha256-h6ZIaRDLYuWEOdozDEJw0eKg/Y4azoCYfClZcdFfmvM="},"flags/4x3/gi-52bfb6cd7cbebf1da96dfc6bf708d3b7239984d36400181ca4ac020081ae41b5.svg":{"logical_path":"flags/4x3/gi.svg","mtime":"2017-10-08T14:45:34+02:00","size":4125,"digest":"52bfb6cd7cbebf1da96dfc6bf708d3b7239984d36400181ca4ac020081ae41b5","integrity":"sha256-Ur+2zXy+vx2pbfxr9wjTtyOZhNNkABgcpKwCAIGuQbU="},"flags/1x1/gi-f7ebd8d36a5cb260392a92f10d8bc8d7cf11433fdce9474e08cc52a07dcd5258.svg":{"logical_path":"flags/1x1/gi.svg","mtime":"2017-10-08T14:45:34+02:00","size":4115,"digest":"f7ebd8d36a5cb260392a92f10d8bc8d7cf11433fdce9474e08cc52a07dcd5258","integrity":"sha256-9+vY02pcsmA5KpLxDYvI188RQz/c6UdOCMxSoH3NUlg="},"flags/4x3/gl-e031a722ec76e8262439e50a0dbba62f7b7bea020361f2bf4a9a49d6b59954a5.svg":{"logical_path":"flags/4x3/gl.svg","mtime":"2017-10-08T14:45:34+02:00","size":662,"digest":"e031a722ec76e8262439e50a0dbba62f7b7bea020361f2bf4a9a49d6b59954a5","integrity":"sha256-4DGnIux26CYkOeUKDbumL3t76gIDYfK/SppJ1rWZVKU="},"flags/1x1/gl-847b3362e50c1d74aeb01a5ea55cfa2950597cbbfa2377bd7cb70e273d4c57fb.svg":{"logical_path":"flags/1x1/gl.svg","mtime":"2017-10-08T14:45:34+02:00","size":511,"digest":"847b3362e50c1d74aeb01a5ea55cfa2950597cbbfa2377bd7cb70e273d4c57fb","integrity":"sha256-hHszYuUMHXSusBpepVz6KVBZfLv6I3e9fLcOJz1MV/s="},"flags/4x3/gm-a13d89d1cd66c77706dbaa380370ce3d62c0cf3219c287008759e823fd42a27c.svg":{"logical_path":"flags/4x3/gm.svg","mtime":"2017-10-08T14:45:34+02:00","size":558,"digest":"a13d89d1cd66c77706dbaa380370ce3d62c0cf3219c287008759e823fd42a27c","integrity":"sha256-oT2J0c1mx3cG26o4A3DOPWLAzzIZwocAh1noI/1Conw="},"flags/1x1/gm-4a4490e2aea203b32862d6e58bd02efc45d07a401684795ecae68ddb97756387.svg":{"logical_path":"flags/1x1/gm.svg","mtime":"2017-10-08T14:45:34+02:00","size":421,"digest":"4a4490e2aea203b32862d6e58bd02efc45d07a401684795ecae68ddb97756387","integrity":"sha256-SkSQ4q6iA7MoYtbli9Au/EXQekAWhHleyuaN25d1Y4c="},"flags/4x3/gn-cfa24192de905cc4a07dffb54ea252304bcffd387ce2d6dedae89b654486f286.svg":{"logical_path":"flags/4x3/gn.svg","mtime":"2017-10-08T14:45:34+02:00","size":310,"digest":"cfa24192de905cc4a07dffb54ea252304bcffd387ce2d6dedae89b654486f286","integrity":"sha256-z6JBkt6QXMSgff+1TqJSMEvP/Th84tbe2uibZUSG8oY="},"flags/1x1/gn-b50eaffe8a6fd16c9cf2c2d51adea53250b089f04ea701b8d5d812877de6d084.svg":{"logical_path":"flags/1x1/gn.svg","mtime":"2017-10-08T14:45:34+02:00","size":314,"digest":"b50eaffe8a6fd16c9cf2c2d51adea53250b089f04ea701b8d5d812877de6d084","integrity":"sha256-tQ6v/opv0Wyc8sLVGt6lMlCwifBOpwG41dgSh33m0IQ="},"flags/4x3/gp-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg":{"logical_path":"flags/4x3/gp.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702","integrity":"sha256-ToxEbgMlcqLnTR/czsmjrpPWbcJJUu0vH+W9q2/vVwI="},"flags/1x1/gp-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/gp.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/gq-548afdaa6c448c6bec87c1e2148831c41f9a2f4f83922cf32e5a3904679d889d.svg":{"logical_path":"flags/4x3/gq.svg","mtime":"2017-10-08T14:45:34+02:00","size":6577,"digest":"548afdaa6c448c6bec87c1e2148831c41f9a2f4f83922cf32e5a3904679d889d","integrity":"sha256-VIr9qmxEjGvsh8HiFIgxxB+aL0+DkizzLlo5BGediJ0="},"flags/1x1/gq-28c6e2820b326370a489d4f9efaf258432fdabecb67e610ddd752ed0f0e8a8ce.svg":{"logical_path":"flags/1x1/gq.svg","mtime":"2017-10-08T14:45:34+02:00","size":8200,"digest":"28c6e2820b326370a489d4f9efaf258432fdabecb67e610ddd752ed0f0e8a8ce","integrity":"sha256-KMbiggsyY3CkidT5768lhDL9q+y2fmEN3XUu0PDoqM4="},"flags/4x3/gr-e2aa8c913feebbed26a8fa0de5ac4aeb51545a4c0dee9bfda4ec5d9673f96386.svg":{"logical_path":"flags/4x3/gr.svg","mtime":"2017-10-08T14:45:34+02:00","size":819,"digest":"e2aa8c913feebbed26a8fa0de5ac4aeb51545a4c0dee9bfda4ec5d9673f96386","integrity":"sha256-4qqMkT/uu+0mqPoN5axK61FUWkwN7pv9pOxdlnP5Y4Y="},"flags/1x1/gr-64dc4363c7c3b827adaa7cd51bb8a0f30bd0a547e86772c473d433b1a6033e2f.svg":{"logical_path":"flags/1x1/gr.svg","mtime":"2017-10-08T14:45:34+02:00","size":876,"digest":"64dc4363c7c3b827adaa7cd51bb8a0f30bd0a547e86772c473d433b1a6033e2f","integrity":"sha256-ZNxDY8fDuCetqnzVG7ig8wvQpUfoZ3LEc9QzsaYDPi8="},"flags/4x3/gs-83141fac364fa2871379c6b1cb8da9935a185bf9b0e5dafc6b6458fa13359589.svg":{"logical_path":"flags/4x3/gs.svg","mtime":"2017-10-08T14:45:34+02:00","size":46535,"digest":"83141fac364fa2871379c6b1cb8da9935a185bf9b0e5dafc6b6458fa13359589","integrity":"sha256-gxQfrDZPoocTecaxy42pk1oYW/mw5dr8a2RY+hM1lYk="},"flags/1x1/gs-31c9e0016c7bd2cfed68cc4e6c2ca73123ce9391e8a50804e5c74101b72e07cc.svg":{"logical_path":"flags/1x1/gs.svg","mtime":"2017-10-08T14:45:34+02:00","size":47063,"digest":"31c9e0016c7bd2cfed68cc4e6c2ca73123ce9391e8a50804e5c74101b72e07cc","integrity":"sha256-McngAWx70s/taMxObCynMSPOk5HopQgE5cdBAbcuB8w="},"flags/4x3/gt-b4ca8c4ed71131c43ba14f3631a0ee92dababef325bd698ee0bac0da84980c85.svg":{"logical_path":"flags/4x3/gt.svg","mtime":"2017-10-08T14:45:34+02:00","size":59566,"digest":"b4ca8c4ed71131c43ba14f3631a0ee92dababef325bd698ee0bac0da84980c85","integrity":"sha256-tMqMTtcRMcQ7oU82MaDuktq6vvMlvWmO4LrA2oSYDIU="},"flags/1x1/gt-a7ce73eaabe1b659b733691076f8455051951432a1fac682f5896f8c4af6ff69.svg":{"logical_path":"flags/1x1/gt.svg","mtime":"2017-10-08T14:45:34+02:00","size":59566,"digest":"a7ce73eaabe1b659b733691076f8455051951432a1fac682f5896f8c4af6ff69","integrity":"sha256-p85z6qvhtlm3M2kQdvhFUFGVFDKh+saC9YlvjEr2/2k="},"flags/4x3/gu-a71a2e02c06f22984e424d15a410d9261ec9ddeeb3df112d5f46b66a09f5bd9a.svg":{"logical_path":"flags/4x3/gu.svg","mtime":"2017-10-08T14:45:34+02:00","size":6350,"digest":"a71a2e02c06f22984e424d15a410d9261ec9ddeeb3df112d5f46b66a09f5bd9a","integrity":"sha256-pxouAsBvIphOQk0VpBDZJh7J3e6z3xEtX0a2agn1vZo="},"flags/1x1/gu-2156b3d721b79189d40c7f5b5de9e219f83a40b69e0a3855514a097fcdc2f2d2.svg":{"logical_path":"flags/1x1/gu.svg","mtime":"2017-10-08T14:45:34+02:00","size":6066,"digest":"2156b3d721b79189d40c7f5b5de9e219f83a40b69e0a3855514a097fcdc2f2d2","integrity":"sha256-IVaz1yG3kYnUDH9bXeniGfg6QLaeCjhVUUoJf83C8tI="},"flags/4x3/gw-9eba06bd7c024dbd764b1bc1360120ed8a280d59075f81a50994930534cc42f2.svg":{"logical_path":"flags/4x3/gw.svg","mtime":"2017-10-08T14:45:34+02:00","size":828,"digest":"9eba06bd7c024dbd764b1bc1360120ed8a280d59075f81a50994930534cc42f2","integrity":"sha256-nroGvXwCTb12SxvBNgEg7YooDVkHX4GlCZSTBTTMQvI="},"flags/1x1/gw-6c4ca99e9871a9cde81966aaf02aac0106e2210f9c64e94bdb5168c7abbbc0e6.svg":{"logical_path":"flags/1x1/gw.svg","mtime":"2017-10-08T14:45:34+02:00","size":840,"digest":"6c4ca99e9871a9cde81966aaf02aac0106e2210f9c64e94bdb5168c7abbbc0e6","integrity":"sha256-bEypnphxqc3oGWaq8CqsAQbiIQ+cZOlL21Fox6u7wOY="},"flags/4x3/gy-b6f25e30b463f760ea01c81ff88a3932bf6812e6b626fd7fbe711a4cbac246c6.svg":{"logical_path":"flags/4x3/gy.svg","mtime":"2017-10-08T14:45:34+02:00","size":573,"digest":"b6f25e30b463f760ea01c81ff88a3932bf6812e6b626fd7fbe711a4cbac246c6","integrity":"sha256-tvJeMLRj92DqAcgf+Io5Mr9oEua2Jv1/vnEaTLrCRsY="},"flags/1x1/gy-d82b2a81ce6cca3e7c5854a5bc1198224b6455eab7adf06d69822a3cf433a1d2.svg":{"logical_path":"flags/1x1/gy.svg","mtime":"2017-10-08T14:45:34+02:00","size":573,"digest":"d82b2a81ce6cca3e7c5854a5bc1198224b6455eab7adf06d69822a3cf433a1d2","integrity":"sha256-2Csqgc5syj58WFSlvBGYIktkVeq3rfBtaYIqPPQzodI="},"flags/4x3/hk-b69c165653e2d112296b963d3369a7d8f656e77432c6c1c5ac1485db077c80a0.svg":{"logical_path":"flags/4x3/hk.svg","mtime":"2017-10-08T14:45:34+02:00","size":4540,"digest":"b69c165653e2d112296b963d3369a7d8f656e77432c6c1c5ac1485db077c80a0","integrity":"sha256-tpwWVlPi0RIpa5Y9M2mn2PZW53QyxsHFrBSF2wd8gKA="},"flags/1x1/hk-09c50dc6f3b0d5bffbc85a2998c5c86da531a939cf48c07ddb644061ab0b2222.svg":{"logical_path":"flags/1x1/hk.svg","mtime":"2017-10-08T14:45:34+02:00","size":4601,"digest":"09c50dc6f3b0d5bffbc85a2998c5c86da531a939cf48c07ddb644061ab0b2222","integrity":"sha256-CcUNxvOw1b/7yFopmMXIbaUxqTnPSMB922RAYasLIiI="},"flags/4x3/hm-faf74b1cde15843a42becf5d05a373f9af8d867d68c824e80d2c41b48c23ea57.svg":{"logical_path":"flags/4x3/hm.svg","mtime":"2017-10-08T14:45:34+02:00","size":1814,"digest":"faf74b1cde15843a42becf5d05a373f9af8d867d68c824e80d2c41b48c23ea57","integrity":"sha256-+vdLHN4VhDpCvs9dBaNz+a+Nhn1oyCToDSxBtIwj6lc="},"flags/1x1/hm-6cc1243d9638246c1bac7e52287dcfc6f9b00d142105fcfc9e8b7b3405d4852f.svg":{"logical_path":"flags/1x1/hm.svg","mtime":"2017-10-08T14:45:34+02:00","size":1772,"digest":"6cc1243d9638246c1bac7e52287dcfc6f9b00d142105fcfc9e8b7b3405d4852f","integrity":"sha256-bMEkPZY4JGwbrH5SKH3PxvmwDRQhBfz8not7NAXUhS8="},"flags/4x3/hn-3ad02422915a4ac6a81c3249610cbd42638ebe27d412a2d490bc63e75e1028ea.svg":{"logical_path":"flags/4x3/hn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1141,"digest":"3ad02422915a4ac6a81c3249610cbd42638ebe27d412a2d490bc63e75e1028ea","integrity":"sha256-OtAkIpFaSsaoHDJJYQy9QmOOvifUEqLUkLxj514QKOo="},"flags/1x1/hn-f0be4d00b892418864d0e4cd3000ee2dc519dbb96d424cb42f55707f8999d44a.svg":{"logical_path":"flags/1x1/hn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1144,"digest":"f0be4d00b892418864d0e4cd3000ee2dc519dbb96d424cb42f55707f8999d44a","integrity":"sha256-8L5NALiSQYhk0OTNMADuLcUZ27ltQky0L1Vwf4mZ1Eo="},"flags/4x3/hr-6671992f1644503121dce7774bf2f7e2ab65da14124251d80b024d78fb34f6f0.svg":{"logical_path":"flags/4x3/hr.svg","mtime":"2017-10-08T14:45:34+02:00","size":79805,"digest":"6671992f1644503121dce7774bf2f7e2ab65da14124251d80b024d78fb34f6f0","integrity":"sha256-ZnGZLxZEUDEh3Od3S/L34qtl2hQSQlHYCwJNePs09vA="},"flags/1x1/hr-f086b6932d53408f2b57db5e038dc7b508af60a49670e187eed42714f1115b49.svg":{"logical_path":"flags/1x1/hr.svg","mtime":"2017-10-08T14:45:34+02:00","size":80065,"digest":"f086b6932d53408f2b57db5e038dc7b508af60a49670e187eed42714f1115b49","integrity":"sha256-8Ia2ky1TQI8rV9teA43HtQivYKSWcOGH7tQnFPERW0k="},"flags/4x3/ht-0c3452573c61366d1e9d647d61675d2e9a309312e63c649f98d73fe37d2aab4f.svg":{"logical_path":"flags/4x3/ht.svg","mtime":"2017-10-08T14:45:34+02:00","size":22536,"digest":"0c3452573c61366d1e9d647d61675d2e9a309312e63c649f98d73fe37d2aab4f","integrity":"sha256-DDRSVzxhNm0enWR9YWddLpowkxLmPGSfmNc/430qq08="},"flags/1x1/ht-80c212d49effab9e944de758c08cc296833bc2a04b3098e8ee58266657522fdc.svg":{"logical_path":"flags/1x1/ht.svg","mtime":"2017-10-08T14:45:34+02:00","size":22543,"digest":"80c212d49effab9e944de758c08cc296833bc2a04b3098e8ee58266657522fdc","integrity":"sha256-gMIS1J7/q56UTedYwIzCloM7wqBLMJjo7lgmZldSL9w="},"flags/4x3/hu-b48c8253bec6b4e08f8954a2955fdbc2311d254b51358770d3eaec5fe0875965.svg":{"logical_path":"flags/4x3/hu.svg","mtime":"2017-10-08T14:45:34+02:00","size":328,"digest":"b48c8253bec6b4e08f8954a2955fdbc2311d254b51358770d3eaec5fe0875965","integrity":"sha256-tIyCU77GtOCPiVSilV/bwjEdJUtRNYdw0+rsX+CHWWU="},"flags/1x1/hu-af59966ca652f5ba1d081af0c1c2343acb479d1a06e03d248bde266cb29aa931.svg":{"logical_path":"flags/1x1/hu.svg","mtime":"2017-10-08T14:45:34+02:00","size":327,"digest":"af59966ca652f5ba1d081af0c1c2343acb479d1a06e03d248bde266cb29aa931","integrity":"sha256-r1mWbKZS9bodCBrwwcI0OstHnRoG4D0ki94mbLKaqTE="},"flags/4x3/id-e02525ae7152d4bd10dcad2ffdf0bf5d08c6c67d3142bc78a7cdbcaf1fcd4a4a.svg":{"logical_path":"flags/4x3/id.svg","mtime":"2017-10-08T14:45:34+02:00","size":264,"digest":"e02525ae7152d4bd10dcad2ffdf0bf5d08c6c67d3142bc78a7cdbcaf1fcd4a4a","integrity":"sha256-4CUlrnFS1L0Q3K0v/fC/XQjGxn0xQrx4p828rx/NSko="},"flags/1x1/id-5b846f6ce4715ea50d4068d9941290229c1be67d619a978096eab2c612e9b297.svg":{"logical_path":"flags/1x1/id.svg","mtime":"2017-10-08T14:45:34+02:00","size":264,"digest":"5b846f6ce4715ea50d4068d9941290229c1be67d619a978096eab2c612e9b297","integrity":"sha256-W4RvbORxXqUNQGjZlBKQIpwb5n1hmpeAluqyxhLpspc="},"flags/4x3/ie-0e75a4c4027484997f14bd4c2529384ef6c621591908473ccbeda20381c05c93.svg":{"logical_path":"flags/4x3/ie.svg","mtime":"2017-10-08T14:45:34+02:00","size":333,"digest":"0e75a4c4027484997f14bd4c2529384ef6c621591908473ccbeda20381c05c93","integrity":"sha256-DnWkxAJ0hJl/FL1MJSk4TvbGIVkZCEc8y+2iA4HAXJM="},"flags/1x1/ie-6446113a9abff1feba085706937ff83d73ba310c78153e8da3ca2d6f0c529510.svg":{"logical_path":"flags/1x1/ie.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6446113a9abff1feba085706937ff83d73ba310c78153e8da3ca2d6f0c529510","integrity":"sha256-ZEYROpq/8f66CFcGk3/4PXO6MQx4FT6No8otbwxSlRA="},"flags/4x3/il-98c3c0d9628008ac3a947d8f10fcb01d8e2545dfb265e94e6a29910e1ba57a2d.svg":{"logical_path":"flags/4x3/il.svg","mtime":"2017-10-08T14:45:34+02:00","size":1046,"digest":"98c3c0d9628008ac3a947d8f10fcb01d8e2545dfb265e94e6a29910e1ba57a2d","integrity":"sha256-mMPA2WKACKw6lH2PEPywHY4lRd+yZelOaimRDhulei0="},"flags/1x1/il-0f95bc7892bcf9eb3b6af9bf930e803b5121c45fa7261874ab4d7a8542c20c45.svg":{"logical_path":"flags/1x1/il.svg","mtime":"2017-10-08T14:45:34+02:00","size":993,"digest":"0f95bc7892bcf9eb3b6af9bf930e803b5121c45fa7261874ab4d7a8542c20c45","integrity":"sha256-D5W8eJK8+es7avm/kw6AO1EhxF+nJhh0q016hULCDEU="},"flags/4x3/im-0c402e364a705500028c46ccbd78a29944e91103b490607b366ae1d4f221ffc0.svg":{"logical_path":"flags/4x3/im.svg","mtime":"2017-10-08T14:45:34+02:00","size":15257,"digest":"0c402e364a705500028c46ccbd78a29944e91103b490607b366ae1d4f221ffc0","integrity":"sha256-DEAuNkpwVQACjEbMvXiimUTpEQO0kGB7Nmrh1PIh/8A="},"flags/1x1/im-718f45e1c60fd42db2a814bfaaa3a9be828f4dd0e4a4aea49e021f066087dece.svg":{"logical_path":"flags/1x1/im.svg","mtime":"2017-10-08T14:45:34+02:00","size":15596,"digest":"718f45e1c60fd42db2a814bfaaa3a9be828f4dd0e4a4aea49e021f066087dece","integrity":"sha256-cY9F4cYP1C2yqBS/qqOpvoKPTdDkpK6kngIfBmCH3s4="},"flags/4x3/in-a6c958c4b5cb12e2392d81b11dd0fed5fd5d0a66c7decb3ad3c8d27175854d3c.svg":{"logical_path":"flags/4x3/in.svg","mtime":"2017-10-08T14:45:34+02:00","size":1092,"digest":"a6c958c4b5cb12e2392d81b11dd0fed5fd5d0a66c7decb3ad3c8d27175854d3c","integrity":"sha256-pslYxLXLEuI5LYGxHdD+1f1dCmbH3ss608jScXWFTTw="},"flags/1x1/in-b4163420567e8e04fa58b79688af8d7bacf32ddf0e2b63ae2f1c5f0aacaaa696.svg":{"logical_path":"flags/1x1/in.svg","mtime":"2017-10-08T14:45:34+02:00","size":1114,"digest":"b4163420567e8e04fa58b79688af8d7bacf32ddf0e2b63ae2f1c5f0aacaaa696","integrity":"sha256-tBY0IFZ+jgT6WLeWiK+Ne6zzLd8OK2OuLxxfCqyqppY="},"flags/4x3/io-b951cf1fa71ddae941ee31dd018d2593bb8621ff92508bb311c7362c537a474c.svg":{"logical_path":"flags/4x3/io.svg","mtime":"2017-10-08T14:45:34+02:00","size":36459,"digest":"b951cf1fa71ddae941ee31dd018d2593bb8621ff92508bb311c7362c537a474c","integrity":"sha256-uVHPH6cd2ulB7jHdAY0lk7uGIf+SUIuzEcc2LFN6R0w="},"flags/1x1/io-d9dfc871f0bca35430b17de2e55394b0145334aa2080e07856e21d6d2e007d8d.svg":{"logical_path":"flags/1x1/io.svg","mtime":"2017-10-08T14:45:34+02:00","size":36554,"digest":"d9dfc871f0bca35430b17de2e55394b0145334aa2080e07856e21d6d2e007d8d","integrity":"sha256-2d/IcfC8o1QwsX3i5VOUsBRTNKoggOB4VuIdbS4AfY0="},"flags/4x3/iq-6a74e49d2c3d0ff072086fba1a2fc8b948ca34891a3aca960f9daacec107bcc6.svg":{"logical_path":"flags/4x3/iq.svg","mtime":"2017-10-08T14:45:34+02:00","size":2305,"digest":"6a74e49d2c3d0ff072086fba1a2fc8b948ca34891a3aca960f9daacec107bcc6","integrity":"sha256-anTknSw9D/ByCG+6Gi/IuUjKNIkaOsqWD52qzsEHvMY="},"flags/1x1/iq-95f5be79b6ab86e6338abd39ef8499af1517dba8ec3b266ea8e3c954601f0bbb.svg":{"logical_path":"flags/1x1/iq.svg","mtime":"2017-10-08T14:45:34+02:00","size":2321,"digest":"95f5be79b6ab86e6338abd39ef8499af1517dba8ec3b266ea8e3c954601f0bbb","integrity":"sha256-lfW+ebarhuYzir0574SZrxUX26jsOyZuqOPJVGAfC7s="},"flags/4x3/ir-5f9fdfd2d4cad535338f6de7927cc8094d02eaf06dd5122d3cba9e859c9ec4df.svg":{"logical_path":"flags/4x3/ir.svg","mtime":"2017-10-08T14:45:34+02:00","size":21755,"digest":"5f9fdfd2d4cad535338f6de7927cc8094d02eaf06dd5122d3cba9e859c9ec4df","integrity":"sha256-X5/f0tTK1TUzj23nknzICU0C6vBt1RItPLqehZyexN8="},"flags/1x1/ir-f5367274525b1f050dfae895943620a2e711f63a5726b273b488721a4501465d.svg":{"logical_path":"flags/1x1/ir.svg","mtime":"2017-10-08T14:45:34+02:00","size":21479,"digest":"f5367274525b1f050dfae895943620a2e711f63a5726b273b488721a4501465d","integrity":"sha256-9TZydFJbHwUN+uiVlDYgoucR9jpXJrJztIhyGkUBRl0="},"flags/4x3/is-15409efb6cec16b490b4abbbc03db415ef3448cb8cb281dd7cd1b2ba496d534d.svg":{"logical_path":"flags/4x3/is.svg","mtime":"2017-10-08T14:45:34+02:00","size":562,"digest":"15409efb6cec16b490b4abbbc03db415ef3448cb8cb281dd7cd1b2ba496d534d","integrity":"sha256-FUCe+2zsFrSQtKu7wD20Fe80SMuMsoHdfNGyukltU00="},"flags/1x1/is-500c3ef83fe917ab9cad59b7e8e6d693d9e78876febc1882c4bb06c8876b7357.svg":{"logical_path":"flags/1x1/is.svg","mtime":"2017-10-08T14:45:34+02:00","size":543,"digest":"500c3ef83fe917ab9cad59b7e8e6d693d9e78876febc1882c4bb06c8876b7357","integrity":"sha256-UAw++D/pF6ucrVm36ObWk9nniHb+vBiCxLsGyIdrc1c="},"flags/4x3/it-a285a0e341ba9492a2b7478e8a7a13f7c76d3c6a581aafb965ea26e1c554f0f3.svg":{"logical_path":"flags/4x3/it.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"a285a0e341ba9492a2b7478e8a7a13f7c76d3c6a581aafb965ea26e1c554f0f3","integrity":"sha256-ooWg40G6lJKit0eOinoT98dtPGpYGq+5Zeom4cVU8PM="},"flags/1x1/it-eeb47e346a5f6124b34f8428c97fc7dab2726f8d36d62dec08df3ec7171353cd.svg":{"logical_path":"flags/1x1/it.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"eeb47e346a5f6124b34f8428c97fc7dab2726f8d36d62dec08df3ec7171353cd","integrity":"sha256-7rR+NGpfYSSzT4QoyX/H2rJyb4021i3sCN8+xxcTU80="},"flags/4x3/je-b611f3e0fb7a94f85fa7d5f6f7a7db839381d054eb92abe0856dda8218c40687.svg":{"logical_path":"flags/4x3/je.svg","mtime":"2017-10-08T14:45:34+02:00","size":7509,"digest":"b611f3e0fb7a94f85fa7d5f6f7a7db839381d054eb92abe0856dda8218c40687","integrity":"sha256-thHz4Pt6lPhfp9X296fbg5OB0FTrkqvghW3aghjEBoc="},"flags/1x1/je-39c0c1482c1c533366153edc873f5eae266fdbf591e2022a7f82c17ce2d676ef.svg":{"logical_path":"flags/1x1/je.svg","mtime":"2017-10-08T14:45:34+02:00","size":7477,"digest":"39c0c1482c1c533366153edc873f5eae266fdbf591e2022a7f82c17ce2d676ef","integrity":"sha256-OcDBSCwcUzNmFT7chz9eriZv2/WR4gIqf4LBfOLWdu8="},"flags/4x3/jm-62fcbb8ed5b923b6aafe3990a24ad571485b4ac8db1bd7ed7b200cfadeeb8d7f.svg":{"logical_path":"flags/4x3/jm.svg","mtime":"2017-10-08T14:45:34+02:00","size":417,"digest":"62fcbb8ed5b923b6aafe3990a24ad571485b4ac8db1bd7ed7b200cfadeeb8d7f","integrity":"sha256-Yvy7jtW5I7aq/jmQokrVcUhbSsjbG9fteyAM+t7rjX8="},"flags/1x1/jm-b57cb61fb8eb67f0887afb7c779d6033e1c4c10242662093df69496aa58cc464.svg":{"logical_path":"flags/1x1/jm.svg","mtime":"2017-10-08T14:45:34+02:00","size":488,"digest":"b57cb61fb8eb67f0887afb7c779d6033e1c4c10242662093df69496aa58cc464","integrity":"sha256-tXy2H7jrZ/CIevt8d51gM+HEwQJCZiCT32lJaqWMxGQ="},"flags/4x3/jo-8e1174e66beeec19016b2754e8bdae987f420fa937ba78efecd61c177d9d40dc.svg":{"logical_path":"flags/4x3/jo.svg","mtime":"2017-10-08T14:45:34+02:00","size":835,"digest":"8e1174e66beeec19016b2754e8bdae987f420fa937ba78efecd61c177d9d40dc","integrity":"sha256-jhF05mvu7BkBaydU6L2umH9CD6k3unjv7NYcF32dQNw="},"flags/1x1/jo-47d2fc18e8af9194bcb249161a10383f89c11a73148b6dc77f4ab47a90294ae1.svg":{"logical_path":"flags/1x1/jo.svg","mtime":"2017-10-08T14:45:34+02:00","size":767,"digest":"47d2fc18e8af9194bcb249161a10383f89c11a73148b6dc77f4ab47a90294ae1","integrity":"sha256-R9L8GOivkZS8skkWGhA4P4nBGnMUi23Hf0q0epApSuE="},"flags/4x3/jp-1785964f1f3a4346ab8e1cbdc211399c5ced34a566c4725f3d23e8105413d6f4.svg":{"logical_path":"flags/4x3/jp.svg","mtime":"2017-10-08T14:45:34+02:00","size":513,"digest":"1785964f1f3a4346ab8e1cbdc211399c5ced34a566c4725f3d23e8105413d6f4","integrity":"sha256-F4WWTx86Q0arjhy9whE5nFztNKVmxHJfPSPoEFQT1vQ="},"flags/1x1/jp-a71cace9d237527635ee960b4df645f202d630c46458cf7e7a7ac09659e4404f.svg":{"logical_path":"flags/1x1/jp.svg","mtime":"2017-10-08T14:45:34+02:00","size":526,"digest":"a71cace9d237527635ee960b4df645f202d630c46458cf7e7a7ac09659e4404f","integrity":"sha256-pxys6dI3UnY17pYLTfZF8gLWMMRkWM9+enrAllnkQE8="},"flags/4x3/ke-680e981e37f7f0497e148043390987748a5bc78f4c3af09cf58c61d42b2a4a24.svg":{"logical_path":"flags/4x3/ke.svg","mtime":"2017-10-08T14:45:34+02:00","size":1432,"digest":"680e981e37f7f0497e148043390987748a5bc78f4c3af09cf58c61d42b2a4a24","integrity":"sha256-aA6YHjf38El+FIBDOQmHdIpbx49MOvCc9Yxh1CsqSiQ="},"flags/1x1/ke-60ff7f8bf6b5da9182867b8200475cb0a87f80cc960643ee15c99bcdcf200654.svg":{"logical_path":"flags/1x1/ke.svg","mtime":"2017-10-08T14:45:34+02:00","size":1570,"digest":"60ff7f8bf6b5da9182867b8200475cb0a87f80cc960643ee15c99bcdcf200654","integrity":"sha256-YP9/i/a12pGChnuCAEdcsKh/gMyWBkPuFcmbzc8gBlQ="},"flags/4x3/kg-3a93d17f0ed778664ae760032710fd7235bc43090de3543ec50fb8d2dfd9b595.svg":{"logical_path":"flags/4x3/kg.svg","mtime":"2017-10-08T14:45:34+02:00","size":5088,"digest":"3a93d17f0ed778664ae760032710fd7235bc43090de3543ec50fb8d2dfd9b595","integrity":"sha256-OpPRfw7XeGZK52ADJxD9cjW8QwkN41Q+xQ+40t/ZtZU="},"flags/1x1/kg-165c50f348fe0d4d8f0bc9cbf2666acde0f3a81dfed3398b8a7db5a51e3348aa.svg":{"logical_path":"flags/1x1/kg.svg","mtime":"2017-10-08T14:45:34+02:00","size":5012,"digest":"165c50f348fe0d4d8f0bc9cbf2666acde0f3a81dfed3398b8a7db5a51e3348aa","integrity":"sha256-FlxQ80j+DU2PC8nL8mZqzeDzqB3+0zmLin21pR4zSKo="},"flags/4x3/kh-6f3eb3cb44cd8124f4b7cb0d9230ddab4f782ad10746c2e1fa73f54ca2fe4446.svg":{"logical_path":"flags/4x3/kh.svg","mtime":"2017-10-08T14:45:34+02:00","size":10798,"digest":"6f3eb3cb44cd8124f4b7cb0d9230ddab4f782ad10746c2e1fa73f54ca2fe4446","integrity":"sha256-bz6zy0TNgST0t8sNkjDdq094KtEHRsLh+nP1TKL+REY="},"flags/1x1/kh-9541bd094c9e79e8ebb77a8ba94b22ed079b0502b2d70769b89ac9d19d16781b.svg":{"logical_path":"flags/1x1/kh.svg","mtime":"2017-10-08T14:45:34+02:00","size":10800,"digest":"9541bd094c9e79e8ebb77a8ba94b22ed079b0502b2d70769b89ac9d19d16781b","integrity":"sha256-lUG9CUyeeejrt3qLqUsi7QebBQKy1wdpuJrJ0Z0WeBs="},"flags/4x3/ki-a1b39a59ce5be52e1c6ca618ccc97f47d2a7b0d652bc2e5814c30a13d03842b8.svg":{"logical_path":"flags/4x3/ki.svg","mtime":"2017-10-08T14:45:34+02:00","size":7537,"digest":"a1b39a59ce5be52e1c6ca618ccc97f47d2a7b0d652bc2e5814c30a13d03842b8","integrity":"sha256-obOaWc5b5S4cbKYYzMl/R9KnsNZSvC5YFMMKE9A4Qrg="},"flags/1x1/ki-e9e5127171d893619b247b605865507b61019dee9e6ea589c5cd0c0e7d513f22.svg":{"logical_path":"flags/1x1/ki.svg","mtime":"2017-10-08T14:45:34+02:00","size":7920,"digest":"e9e5127171d893619b247b605865507b61019dee9e6ea589c5cd0c0e7d513f22","integrity":"sha256-6eUScXHYk2GbJHtgWGVQe2EBne6ebqWJxc0MDn1RPyI="},"flags/4x3/km-2ad8132e636de92218e06cad237154128fd1e84dbed82610e138ea148a53c01a.svg":{"logical_path":"flags/4x3/km.svg","mtime":"2017-10-08T14:45:34+02:00","size":1297,"digest":"2ad8132e636de92218e06cad237154128fd1e84dbed82610e138ea148a53c01a","integrity":"sha256-KtgTLmNt6SIY4GytI3FUEo/R6E2+2CYQ4TjqFIpTwBo="},"flags/1x1/km-d9d978cca1790b3165a0d18e159a536b4a2405f12b0200b03cf721042d326089.svg":{"logical_path":"flags/1x1/km.svg","mtime":"2017-10-08T14:45:34+02:00","size":1244,"digest":"d9d978cca1790b3165a0d18e159a536b4a2405f12b0200b03cf721042d326089","integrity":"sha256-2dl4zKF5CzFloNGOFZpTa0okBfErAgCwPPchBC0yYIk="},"flags/4x3/kn-08b7f26ac06f65c797de647f61bb738a4212cfc9ceb53ef11d8db093b58386d1.svg":{"logical_path":"flags/4x3/kn.svg","mtime":"2017-10-08T14:45:34+02:00","size":968,"digest":"08b7f26ac06f65c797de647f61bb738a4212cfc9ceb53ef11d8db093b58386d1","integrity":"sha256-CLfyasBvZceX3mR/YbtzikISz8nOtT7xHY2wk7WDhtE="},"flags/1x1/kn-e632854084c163a1752b53117eb4f773e57eef231917db846fc8009541cfe4b9.svg":{"logical_path":"flags/1x1/kn.svg","mtime":"2017-10-08T14:45:34+02:00","size":957,"digest":"e632854084c163a1752b53117eb4f773e57eef231917db846fc8009541cfe4b9","integrity":"sha256-5jKFQITBY6F1K1MRfrT3c+V+7yMZF9uEb8gAlUHP5Lk="},"flags/4x3/kp-f073e224e1faff5a0bbcb51cd05288d1b13cb607dda42fc7702afe8cfb01d0b3.svg":{"logical_path":"flags/4x3/kp.svg","mtime":"2017-10-08T14:45:34+02:00","size":1002,"digest":"f073e224e1faff5a0bbcb51cd05288d1b13cb607dda42fc7702afe8cfb01d0b3","integrity":"sha256-8HPiJOH6/1oLvLUc0FKI0bE8tgfdpC/HcCr+jPsB0LM="},"flags/1x1/kp-504fc83119f2a2c34ac75051d3ce15edee6f93555d729d759ef15f5f5caab3d3.svg":{"logical_path":"flags/1x1/kp.svg","mtime":"2017-10-08T14:45:34+02:00","size":1002,"digest":"504fc83119f2a2c34ac75051d3ce15edee6f93555d729d759ef15f5f5caab3d3","integrity":"sha256-UE/IMRnyosNKx1BR084V7e5vk1Vdcp11nvFfX1yqs9M="},"flags/4x3/kr-dbe4354aefeb100e561ee6f6ea6cc46551c1722d1b75fc164b60b0592d9dc30d.svg":{"logical_path":"flags/4x3/kr.svg","mtime":"2017-10-08T14:45:34+02:00","size":2420,"digest":"dbe4354aefeb100e561ee6f6ea6cc46551c1722d1b75fc164b60b0592d9dc30d","integrity":"sha256-2+Q1Su/rEA5WHub26mzEZVHBci0bdfwWS2CwWS2dww0="},"flags/1x1/kr-3aefdef6c6b72177aea924981a673bcc58c24b8c98cb00960e23250c07766b63.svg":{"logical_path":"flags/1x1/kr.svg","mtime":"2017-10-08T14:45:34+02:00","size":2194,"digest":"3aefdef6c6b72177aea924981a673bcc58c24b8c98cb00960e23250c07766b63","integrity":"sha256-Ou/e9sa3IXeuqSSYGmc7zFjCS4yYywCWDiMlDAd2a2M="},"flags/4x3/kw-fc682de5f565e3a918a9cce44a87a0cd8a40b93a555be3dc7c381ced74853021.svg":{"logical_path":"flags/4x3/kw.svg","mtime":"2017-10-08T14:45:34+02:00","size":515,"digest":"fc682de5f565e3a918a9cce44a87a0cd8a40b93a555be3dc7c381ced74853021","integrity":"sha256-/Ggt5fVl46kYqczkSoegzYpAuTpVW+PcfDgc7XSFMCE="},"flags/1x1/kw-63c2078d09713c30c0b917fdaac63a1fdb9161ec4b8cf1e91d4a9a8730a5cb65.svg":{"logical_path":"flags/1x1/kw.svg","mtime":"2017-10-08T14:45:34+02:00","size":529,"digest":"63c2078d09713c30c0b917fdaac63a1fdb9161ec4b8cf1e91d4a9a8730a5cb65","integrity":"sha256-Y8IHjQlxPDDAuRf9qsY6H9uRYexLjPHpHUqahzCly2U="},"flags/4x3/ky-77da018be33fa8aec69147e6107ff363bfc467ba857e7d47bd383984305cebab.svg":{"logical_path":"flags/4x3/ky.svg","mtime":"2017-10-08T14:45:34+02:00","size":33338,"digest":"77da018be33fa8aec69147e6107ff363bfc467ba857e7d47bd383984305cebab","integrity":"sha256-d9oBi+M/qK7GkUfmEH/zY7/EZ7qFfn1HvTg5hDBc66s="},"flags/1x1/ky-4a6b098e38d727959969a977668aefbdf6b9adcaef4cd922aac232d64a8a9d75.svg":{"logical_path":"flags/1x1/ky.svg","mtime":"2017-10-08T14:45:34+02:00","size":33549,"digest":"4a6b098e38d727959969a977668aefbdf6b9adcaef4cd922aac232d64a8a9d75","integrity":"sha256-SmsJjjjXJ5WZaal3Zorvvfa5rcrvTNkiqsIy1kqKnXU="},"flags/4x3/kz-ce3998065f1b6242d0a1755ffb590f15b2ff477b594b26b9a497f7181304bbe3.svg":{"logical_path":"flags/4x3/kz.svg","mtime":"2017-10-08T14:45:34+02:00","size":17502,"digest":"ce3998065f1b6242d0a1755ffb590f15b2ff477b594b26b9a497f7181304bbe3","integrity":"sha256-zjmYBl8bYkLQoXVf+1kPFbL/R3tZSya5pJf3GBMEu+M="},"flags/1x1/kz-795fd9bf32b68805f9e80f120db569eacbd5727fc523d7ff89943bdf9ef5b1e9.svg":{"logical_path":"flags/1x1/kz.svg","mtime":"2017-10-08T14:45:34+02:00","size":17476,"digest":"795fd9bf32b68805f9e80f120db569eacbd5727fc523d7ff89943bdf9ef5b1e9","integrity":"sha256-eV/ZvzK2iAX56A8SDbVp6svVcn/FI9f/iZQ73571sek="},"flags/4x3/la-dd2ead7123a2c4d2fda71d8a462319d30c6ff8e83c72cfd888230f6a670fdff4.svg":{"logical_path":"flags/4x3/la.svg","mtime":"2017-10-08T14:45:34+02:00","size":477,"digest":"dd2ead7123a2c4d2fda71d8a462319d30c6ff8e83c72cfd888230f6a670fdff4","integrity":"sha256-3S6tcSOixNL9px2KRiMZ0wxv+Og8cs/YiCMPamcP3/Q="},"flags/1x1/la-7ebc9f64aad0049a8167272ce06a7c1512c7d14080ff93a88e6b28e4050f33d3.svg":{"logical_path":"flags/1x1/la.svg","mtime":"2017-10-08T14:45:34+02:00","size":604,"digest":"7ebc9f64aad0049a8167272ce06a7c1512c7d14080ff93a88e6b28e4050f33d3","integrity":"sha256-fryfZKrQBJqBZycs4Gp8FRLH0UCA/5Oojmso5AUPM9M="},"flags/4x3/lb-7afb0e27b8cec77e2c65c3467b68ab24d49879a4739ab4780154a7db4358f6fc.svg":{"logical_path":"flags/4x3/lb.svg","mtime":"2017-10-08T14:45:34+02:00","size":3981,"digest":"7afb0e27b8cec77e2c65c3467b68ab24d49879a4739ab4780154a7db4358f6fc","integrity":"sha256-evsOJ7jOx34sZcNGe2irJNSYeaRzmrR4AVSn20NY9vw="},"flags/1x1/lb-6f50829425260779f08ad80ac9430796e64901b0dd74d010bdf2336f541eb47d.svg":{"logical_path":"flags/1x1/lb.svg","mtime":"2017-10-08T14:45:34+02:00","size":3991,"digest":"6f50829425260779f08ad80ac9430796e64901b0dd74d010bdf2336f541eb47d","integrity":"sha256-b1CClCUmB3nwitgKyUMHluZJAbDddNAQvfIzb1QetH0="},"flags/4x3/lc-9efcb3c88f9ff13bedcbd0c7f48c7fab604d3842ee559be3a11c6bc64e31a53c.svg":{"logical_path":"flags/4x3/lc.svg","mtime":"2017-10-08T14:45:34+02:00","size":403,"digest":"9efcb3c88f9ff13bedcbd0c7f48c7fab604d3842ee559be3a11c6bc64e31a53c","integrity":"sha256-nvyzyI+f8Tvty9DH9Ix/q2BNOELuVZvjoRxrxk4xpTw="},"flags/1x1/lc-31d72d1034bf031934561da9615fc3db916bb08a210f434a981e053a7edfa339.svg":{"logical_path":"flags/1x1/lc.svg","mtime":"2017-10-08T14:45:34+02:00","size":409,"digest":"31d72d1034bf031934561da9615fc3db916bb08a210f434a981e053a7edfa339","integrity":"sha256-MdctEDS/Axk0Vh2pYV/D25FrsIohD0NKmB4FOn7fozk="},"flags/4x3/li-9eed98d7d4e07cba0a2aae80e31add4bbe663e959df8cafd607cef17daf4351a.svg":{"logical_path":"flags/4x3/li.svg","mtime":"2017-10-08T14:45:34+02:00","size":12453,"digest":"9eed98d7d4e07cba0a2aae80e31add4bbe663e959df8cafd607cef17daf4351a","integrity":"sha256-nu2Y19TgfLoKKq6A4xrdS75mPpWd+Mr9YHzvF9r0NRo="},"flags/1x1/li-f655bf461c1690078c846528eb6d3ebe8d594b2539e3cc37f89204a754424c81.svg":{"logical_path":"flags/1x1/li.svg","mtime":"2017-10-08T14:45:34+02:00","size":12476,"digest":"f655bf461c1690078c846528eb6d3ebe8d594b2539e3cc37f89204a754424c81","integrity":"sha256-9lW/RhwWkAeMhGUo620+vo1ZSyU548w3+JIEp1RCTIE="},"flags/4x3/lk-3471b0585fb1e0ee350d6fe87e55ef07eef01e99444263b86ff005156dea1b73.svg":{"logical_path":"flags/4x3/lk.svg","mtime":"2017-10-08T14:45:34+02:00","size":17549,"digest":"3471b0585fb1e0ee350d6fe87e55ef07eef01e99444263b86ff005156dea1b73","integrity":"sha256-NHGwWF+x4O41DW/oflXvB+7wHplEQmO4b/AFFW3qG3M="},"flags/1x1/lk-d3bb56415e6e2095a470cf4e2ed455c57cde204aa79362786aca785db35ecff8.svg":{"logical_path":"flags/1x1/lk.svg","mtime":"2017-10-08T14:45:34+02:00","size":17573,"digest":"d3bb56415e6e2095a470cf4e2ed455c57cde204aa79362786aca785db35ecff8","integrity":"sha256-07tWQV5uIJWkcM9OLtRVxXzeIEqnk2J4asp4XbNez/g="},"flags/4x3/lr-a39f30a6169c4a3f3ff8e0eb04862e7f941c5d7c8e489ff5e7e4cd8cd436f5e2.svg":{"logical_path":"flags/4x3/lr.svg","mtime":"2017-10-08T14:45:34+02:00","size":829,"digest":"a39f30a6169c4a3f3ff8e0eb04862e7f941c5d7c8e489ff5e7e4cd8cd436f5e2","integrity":"sha256-o58wphacSj8/+ODrBIYuf5QcXXyOSJ/15+TNjNQ29eI="},"flags/1x1/lr-731191ad65bf784386cabac12693722d16aeb2e97d6456cc33488f805067aca8.svg":{"logical_path":"flags/1x1/lr.svg","mtime":"2017-10-08T14:45:34+02:00","size":801,"digest":"731191ad65bf784386cabac12693722d16aeb2e97d6456cc33488f805067aca8","integrity":"sha256-cxGRrWW/eEOGyrrBJpNyLRausul9ZFbMM0iPgFBnrKg="},"flags/4x3/ls-1e4f7ec2600e30b515cd12b509c376c3014d760731d89f87ae9a962fe249b3d4.svg":{"logical_path":"flags/4x3/ls.svg","mtime":"2017-10-08T14:45:34+02:00","size":1901,"digest":"1e4f7ec2600e30b515cd12b509c376c3014d760731d89f87ae9a962fe249b3d4","integrity":"sha256-Hk9+wmAOMLUVzRK1CcN2wwFNdgcx2J+HrpqWL+JJs9Q="},"flags/1x1/ls-ba2a8327ab9b0e74f4f411ab989980cde309e86395736a1f77e17a0eefc85266.svg":{"logical_path":"flags/1x1/ls.svg","mtime":"2017-10-08T14:45:34+02:00","size":1919,"digest":"ba2a8327ab9b0e74f4f411ab989980cde309e86395736a1f77e17a0eefc85266","integrity":"sha256-uiqDJ6ubDnT09BGrmJmAzeMJ6GOVc2ofd+F6Du/IUmY="},"flags/4x3/lt-d6a367644254244a8219c2eaa525b43d261f5da4fb074b0e08cedeb343f737a1.svg":{"logical_path":"flags/4x3/lt.svg","mtime":"2017-10-08T14:45:34+02:00","size":489,"digest":"d6a367644254244a8219c2eaa525b43d261f5da4fb074b0e08cedeb343f737a1","integrity":"sha256-1qNnZEJUJEqCGcLqpSW0PSYfXaT7B0sOCM7es0P3N6E="},"flags/1x1/lt-933670ec7627a78f72b60cfe7f49cd09b4afa58fb341857f76a5b7b612c12c97.svg":{"logical_path":"flags/1x1/lt.svg","mtime":"2017-10-08T14:45:34+02:00","size":489,"digest":"933670ec7627a78f72b60cfe7f49cd09b4afa58fb341857f76a5b7b612c12c97","integrity":"sha256-kzZw7HYnp49ytgz+f0nNCbSvpY+zQYV/dqW3thLBLJc="},"flags/4x3/lu-949c9e81217b58fe622d4d4d00903499b3e2249aa3f688401b78bd3ad977c740.svg":{"logical_path":"flags/4x3/lu.svg","mtime":"2017-10-08T14:45:34+02:00","size":268,"digest":"949c9e81217b58fe622d4d4d00903499b3e2249aa3f688401b78bd3ad977c740","integrity":"sha256-lJyegSF7WP5iLU1NAJA0mbPiJJqj9ohAG3i9Otl3x0A="},"flags/1x1/lu-ab39ab3ddef396fcd816d4170f3f73ed89465ed37a180685c68b3833aa3f01a9.svg":{"logical_path":"flags/1x1/lu.svg","mtime":"2017-10-08T14:45:34+02:00","size":254,"digest":"ab39ab3ddef396fcd816d4170f3f73ed89465ed37a180685c68b3833aa3f01a9","integrity":"sha256-qzmrPd7zlvzYFtQXDz9z7YlGXtN6GAaFxos4M6o/Aak="},"flags/4x3/lv-b672e3ee7e344abaaf9128111a6543ad7897aa92084b74c42a2877aa1b8cf7a8.svg":{"logical_path":"flags/4x3/lv.svg","mtime":"2017-10-08T14:45:34+02:00","size":252,"digest":"b672e3ee7e344abaaf9128111a6543ad7897aa92084b74c42a2877aa1b8cf7a8","integrity":"sha256-tnLj7n40SrqvkSgRGmVDrXiXqpIIS3TEKih3qhuM96g="},"flags/1x1/lv-55fc46607d153eb1d40d1b478ab6448117b79cdc3d9d973ea2beb44ee4d77316.svg":{"logical_path":"flags/1x1/lv.svg","mtime":"2017-10-08T14:45:34+02:00","size":264,"digest":"55fc46607d153eb1d40d1b478ab6448117b79cdc3d9d973ea2beb44ee4d77316","integrity":"sha256-VfxGYH0VPrHUDRtHirZEgRe3nNw9nZc+or60TuTXcxY="},"flags/4x3/ly-6f996771734c3f63c65d925a3d991f7d238734cc10e56b3160841fac2939e21a.svg":{"logical_path":"flags/4x3/ly.svg","mtime":"2017-10-08T14:45:34+02:00","size":537,"digest":"6f996771734c3f63c65d925a3d991f7d238734cc10e56b3160841fac2939e21a","integrity":"sha256-b5lncXNMP2PGXZJaPZkffSOHNMwQ5WsxYIQfrCk54ho="},"flags/1x1/ly-4e0bf9ff6856dcbba708b4fb176abd44cd385274badbb6e609b596a660109191.svg":{"logical_path":"flags/1x1/ly.svg","mtime":"2017-10-08T14:45:34+02:00","size":535,"digest":"4e0bf9ff6856dcbba708b4fb176abd44cd385274badbb6e609b596a660109191","integrity":"sha256-Tgv5/2hW3LunCLT7F2q9RM04UnS627bmCbWWpmAQkZE="},"flags/4x3/ma-70b305040cec175c749a22e6d1e0c1c96bd2164768f208a34d6c8a7ed5caa0ae.svg":{"logical_path":"flags/4x3/ma.svg","mtime":"2017-10-08T14:45:34+02:00","size":284,"digest":"70b305040cec175c749a22e6d1e0c1c96bd2164768f208a34d6c8a7ed5caa0ae","integrity":"sha256-cLMFBAzsF1x0miLm0eDByWvSFkdo8gijTWyKftXKoK4="},"flags/1x1/ma-919d8fa71ed3a3cadabade682f5326334f11d659245d51b31b40880689cbe275.svg":{"logical_path":"flags/1x1/ma.svg","mtime":"2017-10-08T14:45:34+02:00","size":282,"digest":"919d8fa71ed3a3cadabade682f5326334f11d659245d51b31b40880689cbe275","integrity":"sha256-kZ2Ppx7To8raut5oL1MmM08R1lkkXVGzG0CIBonL4nU="},"flags/4x3/mc-f0bd30faa57995276026f00e97f6d4ffd3c151e6d2c3d440331ac739965f3bc9.svg":{"logical_path":"flags/4x3/mc.svg","mtime":"2017-10-08T14:45:34+02:00","size":240,"digest":"f0bd30faa57995276026f00e97f6d4ffd3c151e6d2c3d440331ac739965f3bc9","integrity":"sha256-8L0w+qV5lSdgJvAOl/bU/9PBUebSw9RAMxrHOZZfO8k="},"flags/1x1/mc-6fcd8ec0404ec1e02e8f38934202004b443c39ffa369be045872c4c89b0674b3.svg":{"logical_path":"flags/1x1/mc.svg","mtime":"2017-10-08T14:45:34+02:00","size":260,"digest":"6fcd8ec0404ec1e02e8f38934202004b443c39ffa369be045872c4c89b0674b3","integrity":"sha256-b82OwEBOweAujziTQgIAS0Q8Of+jab4EWHLEyJsGdLM="},"flags/4x3/md-4bb12bafd1cae33ea4d420dc80301e573d39247323d0eca7c343650a414931ad.svg":{"logical_path":"flags/4x3/md.svg","mtime":"2017-10-08T14:45:34+02:00","size":14670,"digest":"4bb12bafd1cae33ea4d420dc80301e573d39247323d0eca7c343650a414931ad","integrity":"sha256-S7Err9HK4z6k1CDcgDAeVz05JHMj0Oynw0NlCkFJMa0="},"flags/1x1/md-76e3c791e11574492239b07821b43d8f5308e8b7b9ed7d72a5b189f06bb0a81d.svg":{"logical_path":"flags/1x1/md.svg","mtime":"2017-10-08T14:45:34+02:00","size":14809,"digest":"76e3c791e11574492239b07821b43d8f5308e8b7b9ed7d72a5b189f06bb0a81d","integrity":"sha256-duPHkeEVdEkiObB4IbQ9j1MI6Le57X1ypbGJ8GuwqB0="},"flags/4x3/me-096ce4c309762cde78cb1fec7f1d9ab7c38e6270ddb5aaaf9d29ec63a160e276.svg":{"logical_path":"flags/4x3/me.svg","mtime":"2017-10-08T14:45:34+02:00","size":110221,"digest":"096ce4c309762cde78cb1fec7f1d9ab7c38e6270ddb5aaaf9d29ec63a160e276","integrity":"sha256-CWzkwwl2LN54yx/sfx2at8OOYnDdtaqvnSnsY6Fg4nY="},"flags/1x1/me-9f8dc8f8e7b38bfc2edd5a35d13818544d304c7834a315ffbfcccecf7a9e6ba6.svg":{"logical_path":"flags/1x1/me.svg","mtime":"2017-10-08T14:45:34+02:00","size":108220,"digest":"9f8dc8f8e7b38bfc2edd5a35d13818544d304c7834a315ffbfcccecf7a9e6ba6","integrity":"sha256-n43I+Oezi/wu3Vo10TgYVE0wTHg0oxX/v8zOz3qea6Y="},"flags/4x3/mf-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg":{"logical_path":"flags/4x3/mf.svg","mtime":"2017-10-08T14:45:34+02:00","size":313,"digest":"4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702","integrity":"sha256-ToxEbgMlcqLnTR/czsmjrpPWbcJJUu0vH+W9q2/vVwI="},"flags/1x1/mf-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/mf.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/mg-f8afb0a551765b27b0c173a623e30af523e907e665858c401e8246b2fa5c2052.svg":{"logical_path":"flags/4x3/mg.svg","mtime":"2017-10-08T14:45:34+02:00","size":322,"digest":"f8afb0a551765b27b0c173a623e30af523e907e665858c401e8246b2fa5c2052","integrity":"sha256-+K+wpVF2WyewwXOmI+MK9SPpB+ZlhYxAHoJGsvpcIFI="},"flags/1x1/mg-d5527653deeb8cd3c7d24082dab7c9dcd8218dd9c9043c832cb1436f1d8090ae.svg":{"logical_path":"flags/1x1/mg.svg","mtime":"2017-10-08T14:45:34+02:00","size":349,"digest":"d5527653deeb8cd3c7d24082dab7c9dcd8218dd9c9043c832cb1436f1d8090ae","integrity":"sha256-1VJ2U97rjNPH0kCC2rfJ3NghjdnJBDyDLLFDbx2AkK4="},"flags/4x3/mh-4edc79226b41a72a4f0a8ca6d4f7f8f73e92972ae6b30c96a9dab4274a046165.svg":{"logical_path":"flags/4x3/mh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1008,"digest":"4edc79226b41a72a4f0a8ca6d4f7f8f73e92972ae6b30c96a9dab4274a046165","integrity":"sha256-Ttx5ImtBpypPCoym1Pf49z6SlyrmswyWqdq0J0oEYWU="},"flags/1x1/mh-1bd8a38684a5d55aea8319d106fdc1e62a91424e36a8fb5a27f215cfadb98707.svg":{"logical_path":"flags/1x1/mh.svg","mtime":"2017-10-08T14:45:34+02:00","size":1017,"digest":"1bd8a38684a5d55aea8319d106fdc1e62a91424e36a8fb5a27f215cfadb98707","integrity":"sha256-G9ijhoSl1VrqgxnRBv3B5iqRQk42qPtaJ/IVz625hwc="},"flags/4x3/mk-2098f24dab54b22fbc7aff34c15009b4ae7012a6848cede09d6db9ed5caaffec.svg":{"logical_path":"flags/4x3/mk.svg","mtime":"2017-10-08T14:45:34+02:00","size":395,"digest":"2098f24dab54b22fbc7aff34c15009b4ae7012a6848cede09d6db9ed5caaffec","integrity":"sha256-IJjyTatUsi+8ev80wVAJtK5wEqaEjO3gnW257Vyq/+w="},"flags/1x1/mk-1b083e708a18b40383921595134b167e0fa84a6f233934668481b902b518f089.svg":{"logical_path":"flags/1x1/mk.svg","mtime":"2017-10-08T14:45:34+02:00","size":423,"digest":"1b083e708a18b40383921595134b167e0fa84a6f233934668481b902b518f089","integrity":"sha256-Gwg+cIoYtAODkhWVE0sWfg+oSm8jOTRmhIG5ArUY8Ik="},"flags/4x3/ml-5cb117165c5ebebb07725430dce0fbd0bce2ad618967354eda44d9229e16c676.svg":{"logical_path":"flags/4x3/ml.svg","mtime":"2017-10-08T14:45:34+02:00","size":342,"digest":"5cb117165c5ebebb07725430dce0fbd0bce2ad618967354eda44d9229e16c676","integrity":"sha256-XLEXFlxevrsHclQw3OD70LzirWGJZzVO2kTZIp4WxnY="},"flags/1x1/ml-cf94ba5bc9f5b9f3b15c187243a5fc60dd80a43715da7ae005dc13321f0d411b.svg":{"logical_path":"flags/1x1/ml.svg","mtime":"2017-10-08T14:45:34+02:00","size":299,"digest":"cf94ba5bc9f5b9f3b15c187243a5fc60dd80a43715da7ae005dc13321f0d411b","integrity":"sha256-z5S6W8n1ufOxXBhyQ6X8YN2ApDcV2nrgBdwTMh8NQRs="},"flags/4x3/mm-987d96563a6517ba568b2ad3e8dbcd77c01c0a6114b8497b214cf3e967ce27d1.svg":{"logical_path":"flags/4x3/mm.svg","mtime":"2017-10-08T14:45:34+02:00","size":996,"digest":"987d96563a6517ba568b2ad3e8dbcd77c01c0a6114b8497b214cf3e967ce27d1","integrity":"sha256-mH2WVjplF7pWiyrT6NvNd8AcCmEUuEl7IUzz6WfOJ9E="},"flags/1x1/mm-a78cffaf229320ef1cc28570ec3e91e9e188d8cff8cc01f14423b9c5383e87d2.svg":{"logical_path":"flags/1x1/mm.svg","mtime":"2017-10-08T14:45:34+02:00","size":1015,"digest":"a78cffaf229320ef1cc28570ec3e91e9e188d8cff8cc01f14423b9c5383e87d2","integrity":"sha256-p4z/ryKTIO8cwoVw7D6R6eGI2M/4zAHxRCO5xTg+h9I="},"flags/4x3/mn-a3dc85a21b868793f084dd954c31e13c0cf993eef59102a102406c95d99e243d.svg":{"logical_path":"flags/4x3/mn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1601,"digest":"a3dc85a21b868793f084dd954c31e13c0cf993eef59102a102406c95d99e243d","integrity":"sha256-o9yFohuGh5PwhN2VTDHhPAz5k+71kQKhAkBsldmeJD0="},"flags/1x1/mn-141a15f289b3e49d8e0c1a21b9015f14ebb9e55660ebc23deefa55a3fa6fc9b5.svg":{"logical_path":"flags/1x1/mn.svg","mtime":"2017-10-08T14:45:34+02:00","size":1603,"digest":"141a15f289b3e49d8e0c1a21b9015f14ebb9e55660ebc23deefa55a3fa6fc9b5","integrity":"sha256-FBoV8omz5J2ODBohuQFfFOu55VZg68I97vpVo/pvybU="},"flags/4x3/mo-f58284a9e6021d88f7756d6cbe408f79789a30113084ef6bbd8541e15008d684.svg":{"logical_path":"flags/4x3/mo.svg","mtime":"2017-10-08T14:45:34+02:00","size":2047,"digest":"f58284a9e6021d88f7756d6cbe408f79789a30113084ef6bbd8541e15008d684","integrity":"sha256-9YKEqeYCHYj3dW1svkCPeXiaMBEwhO9rvYVB4VAI1oQ="},"flags/1x1/mo-b871b2e0087b09318060384476b25c28de16acac946f5ecbb4e162660e6486c1.svg":{"logical_path":"flags/1x1/mo.svg","mtime":"2017-10-08T14:45:34+02:00","size":2082,"digest":"b871b2e0087b09318060384476b25c28de16acac946f5ecbb4e162660e6486c1","integrity":"sha256-uHGy4Ah7CTGAYDhEdrJcKN4WrKyUb17LtOFiZg5khsE="},"flags/4x3/mp-d9f8b726babd7cba9e128eb81ce7e7d9adb81945f056072aaa3b5540c8299f9d.svg":{"logical_path":"flags/4x3/mp.svg","mtime":"2017-10-08T14:45:34+02:00","size":34391,"digest":"d9f8b726babd7cba9e128eb81ce7e7d9adb81945f056072aaa3b5540c8299f9d","integrity":"sha256-2fi3Jrq9fLqeEo64HOfn2a24GUXwVgcqqjtVQMgpn50="},"flags/1x1/mp-41d27c2d802f8487a3343a962c11711e9ebf682bda766cceb72ccac2b37dbda0.svg":{"logical_path":"flags/1x1/mp.svg","mtime":"2017-10-08T14:45:34+02:00","size":34062,"digest":"41d27c2d802f8487a3343a962c11711e9ebf682bda766cceb72ccac2b37dbda0","integrity":"sha256-QdJ8LYAvhIejNDqWLBFxHp6/aCvadmzOtyzKwrN9vaA="},"flags/4x3/mq-21e70a8c243dc97f486dadf01f0b3300a8310c719d5a650fe4d7512e7ee8169d.svg":{"logical_path":"flags/4x3/mq.svg","mtime":"2017-10-08T14:45:34+02:00","size":310,"digest":"21e70a8c243dc97f486dadf01f0b3300a8310c719d5a650fe4d7512e7ee8169d","integrity":"sha256-IecKjCQ9yX9Iba3wHwszAKgxDHGdWmUP5NdRLn7oFp0="},"flags/1x1/mq-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/mq.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/mr-76898913a879ac1eadb03f5950843ea63fd9a0a998d1b9113c386012cf1c80e6.svg":{"logical_path":"flags/4x3/mr.svg","mtime":"2017-10-08T14:45:34+02:00","size":935,"digest":"76898913a879ac1eadb03f5950843ea63fd9a0a998d1b9113c386012cf1c80e6","integrity":"sha256-domJE6h5rB6tsD9ZUIQ+pj/ZoKmY0bkRPDhgEs8cgOY="},"flags/1x1/mr-5288f91d4c12b6fdca7129a8564638991028f730a170bb72be9fee1ac8d8f206.svg":{"logical_path":"flags/1x1/mr.svg","mtime":"2017-10-08T14:45:34+02:00","size":969,"digest":"5288f91d4c12b6fdca7129a8564638991028f730a170bb72be9fee1ac8d8f206","integrity":"sha256-Uoj5HUwStv3KcSmoVkY4mRAo9zChcLtyvp/uGsjY8gY="},"flags/4x3/ms-add4964ba7fa5a4440d40902dabd49345476d13ddf6e20e7b06834ab30721b79.svg":{"logical_path":"flags/4x3/ms.svg","mtime":"2017-10-08T14:45:34+02:00","size":8602,"digest":"add4964ba7fa5a4440d40902dabd49345476d13ddf6e20e7b06834ab30721b79","integrity":"sha256-rdSWS6f6WkRA1AkC2r1JNFR20T3fbiDnsGg0qzByG3k="},"flags/1x1/ms-47f49520f4ba965587509e45980be0ef29792830738cdae717e52616a11bc00b.svg":{"logical_path":"flags/1x1/ms.svg","mtime":"2017-10-08T14:45:34+02:00","size":8574,"digest":"47f49520f4ba965587509e45980be0ef29792830738cdae717e52616a11bc00b","integrity":"sha256-R/SVIPS6llWHUJ5FmAvg7yl5KDBzjNrnF+UmFqEbwAs="},"flags/4x3/mt-55b5c69335d7e2691e50443b34fc5b708309c99326fea6233dd3575c3402043a.svg":{"logical_path":"flags/4x3/mt.svg","mtime":"2017-10-08T14:45:34+02:00","size":13407,"digest":"55b5c69335d7e2691e50443b34fc5b708309c99326fea6233dd3575c3402043a","integrity":"sha256-VbXGkzXX4mkeUEQ7NPxbcIMJyZMm/qYjPdNXXDQCBDo="},"flags/1x1/mt-bbdc4f8e3dc66dc066d8ad0a264d751090794c53eee6be34f8df84ab389988a0.svg":{"logical_path":"flags/1x1/mt.svg","mtime":"2017-10-08T14:45:34+02:00","size":15270,"digest":"bbdc4f8e3dc66dc066d8ad0a264d751090794c53eee6be34f8df84ab389988a0","integrity":"sha256-u9xPjj3GbcBm2K0KJk11EJB5TFPu5r40+N+EqziZiKA="},"flags/4x3/mu-d0d2fd85209d5ca5b9f90da3947f3142b96ae688536ed796f2bc912aef84c333.svg":{"logical_path":"flags/4x3/mu.svg","mtime":"2017-10-08T14:45:34+02:00","size":366,"digest":"d0d2fd85209d5ca5b9f90da3947f3142b96ae688536ed796f2bc912aef84c333","integrity":"sha256-0NL9hSCdXKW5+Q2jlH8xQrlq5ohTbteW8ryRKu+EwzM="},"flags/1x1/mu-3e18fa9a066e02636f5a119d445b4f0439c8b75bae4e2999c17a6105bb95bd5a.svg":{"logical_path":"flags/1x1/mu.svg","mtime":"2017-10-08T14:45:34+02:00","size":348,"digest":"3e18fa9a066e02636f5a119d445b4f0439c8b75bae4e2999c17a6105bb95bd5a","integrity":"sha256-Phj6mgZuAmNvWhGdRFtPBDnIt1uuTimZwXphBbuVvVo="},"flags/4x3/mv-595fccd022d985bf319bfee09ded164593e8206c364adc1fa3abbc68450c516a.svg":{"logical_path":"flags/4x3/mv.svg","mtime":"2017-10-08T14:45:34+02:00","size":304,"digest":"595fccd022d985bf319bfee09ded164593e8206c364adc1fa3abbc68450c516a","integrity":"sha256-WV/M0CLZhb8xm/7gne0WRZPoIGw2Stwfo6u8aEUMUWo="},"flags/1x1/mv-ba59c37e1fcf099ca68e7fa68fc30d5e75c4171aad18be54126fd214a0b0b6b5.svg":{"logical_path":"flags/1x1/mv.svg","mtime":"2017-10-08T14:45:34+02:00","size":330,"digest":"ba59c37e1fcf099ca68e7fa68fc30d5e75c4171aad18be54126fd214a0b0b6b5","integrity":"sha256-ulnDfh/PCZymjn+mj8MNXnXEFxqtGL5UEm/SFKCwtrU="},"flags/4x3/mw-67c2a39590afb916054063262e67293e303a264b9f9219767c13feb988f47212.svg":{"logical_path":"flags/4x3/mw.svg","mtime":"2017-10-08T14:45:34+02:00","size":5696,"digest":"67c2a39590afb916054063262e67293e303a264b9f9219767c13feb988f47212","integrity":"sha256-Z8KjlZCvuRYFQGMmLmcpPjA6Jkufkhl2fBP+uYj0chI="},"flags/1x1/mw-b82e28e3e51b467c8db86b1dd9cae837204255320928eb5e5f6b8536c7b1b28e.svg":{"logical_path":"flags/1x1/mw.svg","mtime":"2017-10-08T14:45:34+02:00","size":5922,"digest":"b82e28e3e51b467c8db86b1dd9cae837204255320928eb5e5f6b8536c7b1b28e","integrity":"sha256-uC4o4+UbRnyNuGsd2croNyBCVTIJKOteX2uFNsexso4="},"flags/4x3/mx-416fe6de02b7d9dfc0e479454d06fa7701631bf848c888365bc56978ea524bc5.svg":{"logical_path":"flags/4x3/mx.svg","mtime":"2017-10-08T14:45:34+02:00","size":48965,"digest":"416fe6de02b7d9dfc0e479454d06fa7701631bf848c888365bc56978ea524bc5","integrity":"sha256-QW/m3gK32d/A5HlFTQb6dwFjG/hIyIg2W8VpeOpSS8U="},"flags/1x1/mx-b9461685b2714abb039fbd65510729f7ab324940045465b1c74666721d721f7d.svg":{"logical_path":"flags/1x1/mx.svg","mtime":"2017-10-08T14:45:34+02:00","size":49254,"digest":"b9461685b2714abb039fbd65510729f7ab324940045465b1c74666721d721f7d","integrity":"sha256-uUYWhbJxSrsDn71lUQcp96sySUAEVGWxx0Zmch1yH30="},"flags/4x3/my-c0f21e9c6679e1ae455392ded0b9e5d8aad5f5ee79589634ac89d88f0c548060.svg":{"logical_path":"flags/4x3/my.svg","mtime":"2017-10-08T14:45:34+02:00","size":1542,"digest":"c0f21e9c6679e1ae455392ded0b9e5d8aad5f5ee79589634ac89d88f0c548060","integrity":"sha256-wPIenGZ54a5FU5Le0Lnl2KrV9e55WJY0rInYjwxUgGA="},"flags/1x1/my-868a1feec94ccf789db1040a953f25d3982056514195dcd961ff2d6b51b04431.svg":{"logical_path":"flags/1x1/my.svg","mtime":"2017-10-08T14:45:34+02:00","size":1538,"digest":"868a1feec94ccf789db1040a953f25d3982056514195dcd961ff2d6b51b04431","integrity":"sha256-hoof7slMz3idsQQKlT8l05ggVlFBldzZYf8ta1GwRDE="},"flags/4x3/mz-0c06b80f82ab675854d23444740910298f4b8e82b929112dbec4e1927342120f.svg":{"logical_path":"flags/4x3/mz.svg","mtime":"2017-10-08T14:45:34+02:00","size":3565,"digest":"0c06b80f82ab675854d23444740910298f4b8e82b929112dbec4e1927342120f","integrity":"sha256-DAa4D4KrZ1hU0jREdAkQKY9LjoK5KREtvsThknNCEg8="},"flags/1x1/mz-09a8632f1d20d400401b944af3c4b13e5d64052466bf9a59f6d2927d188150da.svg":{"logical_path":"flags/1x1/mz.svg","mtime":"2017-10-08T14:45:34+02:00","size":3592,"digest":"09a8632f1d20d400401b944af3c4b13e5d64052466bf9a59f6d2927d188150da","integrity":"sha256-CahjLx0g1ABAG5RK88SxPl1kBSRmv5pZ9tKSfRiBUNo="},"flags/4x3/na-43a5f5934fc004e64eadcfb7675114ed1eab3b7f1e9153886edb0b69e7581ce2.svg":{"logical_path":"flags/4x3/na.svg","mtime":"2017-10-08T14:45:34+02:00","size":1311,"digest":"43a5f5934fc004e64eadcfb7675114ed1eab3b7f1e9153886edb0b69e7581ce2","integrity":"sha256-Q6X1k0/ABOZOrc+3Z1EU7R6rO38ekVOIbtsLaedYHOI="},"flags/1x1/na-549c5971f5c2a771c83113a4f9b7a9b5e69546d855e92559b49d6772ff6d3e82.svg":{"logical_path":"flags/1x1/na.svg","mtime":"2017-10-08T14:45:34+02:00","size":1297,"digest":"549c5971f5c2a771c83113a4f9b7a9b5e69546d855e92559b49d6772ff6d3e82","integrity":"sha256-VJxZcfXCp3HIMROk+bepteaVRthV6SVZtJ1ncv9tPoI="},"flags/4x3/nc-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/nc.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/nc-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/nc.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/ne-3be65335a772b7ba2c8916d0d60f12ed4cc2aebc302151ea23ced9c9a3c38ed4.svg":{"logical_path":"flags/4x3/ne.svg","mtime":"2017-10-08T14:45:34+02:00","size":291,"digest":"3be65335a772b7ba2c8916d0d60f12ed4cc2aebc302151ea23ced9c9a3c38ed4","integrity":"sha256-O+ZTNadyt7osiRbQ1g8S7UzCrrwwIVHqI87ZyaPDjtQ="},"flags/1x1/ne-783c25c63f68afe3c462b326b7faec7cc1493f6a4c140bc62fd524604de09d27.svg":{"logical_path":"flags/1x1/ne.svg","mtime":"2017-10-08T14:45:34+02:00","size":303,"digest":"783c25c63f68afe3c462b326b7faec7cc1493f6a4c140bc62fd524604de09d27","integrity":"sha256-eDwlxj9or+PEYrMmt/rsfMFJP2pMFAvGL9UkYE3gnSc="},"flags/4x3/nf-6ff37be9a0581fec55eef9e9871aa0d76d61c44007445184712ec6df3a04208a.svg":{"logical_path":"flags/4x3/nf.svg","mtime":"2017-10-08T14:45:34+02:00","size":9092,"digest":"6ff37be9a0581fec55eef9e9871aa0d76d61c44007445184712ec6df3a04208a","integrity":"sha256-b/N76aBYH+xV7vnphxqg121hxEAHRFGEcS7G3zoEIIo="},"flags/1x1/nf-2f25b6485f62ce38b25bc9f6428d3e0dc0043d71221eac1f4c3d71bca91c2ea6.svg":{"logical_path":"flags/1x1/nf.svg","mtime":"2017-10-08T14:45:34+02:00","size":8982,"digest":"2f25b6485f62ce38b25bc9f6428d3e0dc0043d71221eac1f4c3d71bca91c2ea6","integrity":"sha256-LyW2SF9izjiyW8n2Qo0+DcAEPXEiHqwfTD1xvKkcLqY="},"flags/4x3/ng-22aaf5a93f277f26cbfb21f7b141476fc8853298cf423fe5c849f87c2813d4e1.svg":{"logical_path":"flags/4x3/ng.svg","mtime":"2017-10-08T14:45:34+02:00","size":299,"digest":"22aaf5a93f277f26cbfb21f7b141476fc8853298cf423fe5c849f87c2813d4e1","integrity":"sha256-Iqr1qT8nfybL+yH3sUFHb8iFMpjPQj/lyEn4fCgT1OE="},"flags/1x1/ng-8753476807ab9e0c201397dbe6a884155d97e8766667d10071650d64fe277fb0.svg":{"logical_path":"flags/1x1/ng.svg","mtime":"2017-10-08T14:45:34+02:00","size":296,"digest":"8753476807ab9e0c201397dbe6a884155d97e8766667d10071650d64fe277fb0","integrity":"sha256-h1NHaAerngwgE5fb5qiEFV2X6HZmZ9EAcWUNZP4nf7A="},"flags/4x3/ni-295d07e91f9417b2ca8c7c918481874a7da7f9ac25035edf3a8d1d79b1230e32.svg":{"logical_path":"flags/4x3/ni.svg","mtime":"2017-10-08T14:45:34+02:00","size":28935,"digest":"295d07e91f9417b2ca8c7c918481874a7da7f9ac25035edf3a8d1d79b1230e32","integrity":"sha256-KV0H6R+UF7LKjHyRhIGHSn2n+awlA17fOo0debEjDjI="},"flags/1x1/ni-6786ef719864e51745934adc319ed0ed95fca75687ee6050d580435ee3f2b236.svg":{"logical_path":"flags/1x1/ni.svg","mtime":"2017-10-08T14:45:34+02:00","size":28945,"digest":"6786ef719864e51745934adc319ed0ed95fca75687ee6050d580435ee3f2b236","integrity":"sha256-Z4bvcZhk5RdFk0rcMZ7Q7ZX8p1aH7mBQ1YBDXuPysjY="},"flags/4x3/nl-8f7bff63589346e93733c01f1f18c5a11e8c94911253bcf852f173a933cd928e.svg":{"logical_path":"flags/4x3/nl.svg","mtime":"2017-10-08T14:45:34+02:00","size":385,"digest":"8f7bff63589346e93733c01f1f18c5a11e8c94911253bcf852f173a933cd928e","integrity":"sha256-j3v/Y1iTRuk3M8AfHxjFoR6MlJESU7z4UvFzqTPNko4="},"flags/1x1/nl-f46400354e3d489228eca5944d9e181114fe1f748fa22ac0a70fd06c557bec92.svg":{"logical_path":"flags/1x1/nl.svg","mtime":"2017-10-08T14:45:34+02:00","size":400,"digest":"f46400354e3d489228eca5944d9e181114fe1f748fa22ac0a70fd06c557bec92","integrity":"sha256-9GQANU49SJIo7KWUTZ4YERT+H3SPoirApw/QbFV77JI="},"flags/4x3/no-ecdb24f870c1e6777529ec85e3ea8d989a75b5874ecde94fead0218f7c1b5605.svg":{"logical_path":"flags/4x3/no.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"ecdb24f870c1e6777529ec85e3ea8d989a75b5874ecde94fead0218f7c1b5605","integrity":"sha256-7Nsk+HDB5nd1KeyF4+qNmJp1tYdOzelP6tAhj3wbVgU="},"flags/1x1/no-47a12b11ae8b0aca7f7e3d9084e9d3a6c0ef1ad979d22ba9258e6f9ddc3ab16a.svg":{"logical_path":"flags/1x1/no.svg","mtime":"2017-10-08T14:45:34+02:00","size":336,"digest":"47a12b11ae8b0aca7f7e3d9084e9d3a6c0ef1ad979d22ba9258e6f9ddc3ab16a","integrity":"sha256-R6ErEa6LCsp/fj2QhOnTpsDvGtl50iupJY5vndw6sWo="},"flags/4x3/np-b32c3bad572c4f27b5eee9c1ca97a5f2ca1c2a5b720b67fd636c91064e5fbdd9.svg":{"logical_path":"flags/4x3/np.svg","mtime":"2017-10-08T14:45:34+02:00","size":1378,"digest":"b32c3bad572c4f27b5eee9c1ca97a5f2ca1c2a5b720b67fd636c91064e5fbdd9","integrity":"sha256-syw7rVcsTye17unBypel8socKltyC2f9Y2yRBk5fvdk="},"flags/1x1/np-1279e1d699c05de413b30172b7ed97c13bfaa2069abe788ecf8b127210778354.svg":{"logical_path":"flags/1x1/np.svg","mtime":"2017-10-08T14:45:34+02:00","size":1520,"digest":"1279e1d699c05de413b30172b7ed97c13bfaa2069abe788ecf8b127210778354","integrity":"sha256-Ennh1pnAXeQTswFyt+2XwTv6ogaavniOz4sSchB3g1Q="},"flags/4x3/nr-3818437e2251e1f7310734098d13e2eee69a6b9cc310918d3287b345618e6fef.svg":{"logical_path":"flags/4x3/nr.svg","mtime":"2017-10-08T14:45:34+02:00","size":811,"digest":"3818437e2251e1f7310734098d13e2eee69a6b9cc310918d3287b345618e6fef","integrity":"sha256-OBhDfiJR4fcxBzQJjRPi7uaaa5zDEJGNMoezRWGOb+8="},"flags/1x1/nr-9b9edbaf4e09989f53511c969520cc2c10f3a693cdb80441b2aeabff30ebb381.svg":{"logical_path":"flags/1x1/nr.svg","mtime":"2017-10-08T14:45:34+02:00","size":802,"digest":"9b9edbaf4e09989f53511c969520cc2c10f3a693cdb80441b2aeabff30ebb381","integrity":"sha256-m57br04JmJ9TURyWlSDMLBDzppPNuARBsq6r/zDrs4E="},"flags/4x3/nu-3b27eef18754c7fb8def8deadc730f074b090c8b6e9101d008d529c1d8784e5e.svg":{"logical_path":"flags/4x3/nu.svg","mtime":"2017-10-08T14:45:34+02:00","size":2311,"digest":"3b27eef18754c7fb8def8deadc730f074b090c8b6e9101d008d529c1d8784e5e","integrity":"sha256-Oyfu8YdUx/uN743q3HMPB0sJDItukQHQCNUpwdh4Tl4="},"flags/1x1/nu-9f6f9a41e36004711e3ad2e31e3d0425ca698bf242a62b9665b6f41eeb999ac7.svg":{"logical_path":"flags/1x1/nu.svg","mtime":"2017-10-08T14:45:34+02:00","size":2303,"digest":"9f6f9a41e36004711e3ad2e31e3d0425ca698bf242a62b9665b6f41eeb999ac7","integrity":"sha256-n2+aQeNgBHEeOtLjHj0EJcppi/JCpiuWZbb0HuuZmsc="},"flags/4x3/nz-9690c3a7cdea4d5d6b88546ad69244a772fd0649e75f6334695fce89f5c4f076.svg":{"logical_path":"flags/4x3/nz.svg","mtime":"2017-10-08T14:45:34+02:00","size":2149,"digest":"9690c3a7cdea4d5d6b88546ad69244a772fd0649e75f6334695fce89f5c4f076","integrity":"sha256-lpDDp83qTV1riFRq1pJEp3L9BknnX2M0aV/OifXE8HY="},"flags/1x1/nz-e848215aaf4f9d5738b886ded97ff13b69c752888a27d1ac430116f7133a1c0e.svg":{"logical_path":"flags/1x1/nz.svg","mtime":"2017-10-08T14:45:34+02:00","size":2146,"digest":"e848215aaf4f9d5738b886ded97ff13b69c752888a27d1ac430116f7133a1c0e","integrity":"sha256-6EghWq9PnVc4uIbe2X/xO2nHUoiKJ9GsQwEW9xM6HA4="},"flags/4x3/om-7b9135ecdcf42a3bb69c5bf685930d32f9be7c6daaf58d5a8d154e22b6079347.svg":{"logical_path":"flags/4x3/om.svg","mtime":"2017-10-08T14:45:34+02:00","size":29648,"digest":"7b9135ecdcf42a3bb69c5bf685930d32f9be7c6daaf58d5a8d154e22b6079347","integrity":"sha256-e5E17Nz0Kju2nFv2hZMNMvm+fG2q9Y1ajRVOIrYHk0c="},"flags/1x1/om-665da86c6b715f3d5f36bba0e01539e574d7871437b03ecbe29a92e5e703e09a.svg":{"logical_path":"flags/1x1/om.svg","mtime":"2017-10-08T14:45:34+02:00","size":29508,"digest":"665da86c6b715f3d5f36bba0e01539e574d7871437b03ecbe29a92e5e703e09a","integrity":"sha256-Zl2obGtxXz1fNrug4BU55XTXhxQ3sD7L4pqS5ecD4Jo="},"flags/4x3/pa-a5b55e50a411899195a8f2bf8f37bddd94a4436582568c9ddfbddc2c99d1ae2d.svg":{"logical_path":"flags/4x3/pa.svg","mtime":"2017-10-08T14:45:34+02:00","size":879,"digest":"a5b55e50a411899195a8f2bf8f37bddd94a4436582568c9ddfbddc2c99d1ae2d","integrity":"sha256-pbVeUKQRiZGVqPK/jze93ZSkQ2WCVoyd373cLJnRri0="},"flags/1x1/pa-6c5566a7ace4125d958ec45ade8ce61e2fc065bb7fdd99cf1d6988a01b6fa73a.svg":{"logical_path":"flags/1x1/pa.svg","mtime":"2017-10-08T14:45:34+02:00","size":785,"digest":"6c5566a7ace4125d958ec45ade8ce61e2fc065bb7fdd99cf1d6988a01b6fa73a","integrity":"sha256-bFVmp6zkEl2VjsRa3ozmHi/AZbt/3ZnPHWmIoBtvpzo="},"flags/4x3/pe-12966232fe9a3dcc296389dea282cc8aa400327298d25f2f01c4963d1b900d13.svg":{"logical_path":"flags/4x3/pe.svg","mtime":"2017-10-08T14:45:34+02:00","size":315,"digest":"12966232fe9a3dcc296389dea282cc8aa400327298d25f2f01c4963d1b900d13","integrity":"sha256-EpZiMv6aPcwpY4neooLMiqQAMnKY0l8vAcSWPRuQDRM="},"flags/1x1/pe-449b3363ff9efe701e1f662ae71c31bb4b5952710b73346e2ae090a90c79488d.svg":{"logical_path":"flags/1x1/pe.svg","mtime":"2017-10-08T14:45:34+02:00","size":271,"digest":"449b3363ff9efe701e1f662ae71c31bb4b5952710b73346e2ae090a90c79488d","integrity":"sha256-RJszY/+e/nAeH2Yq5xwxu0tZUnELczRuKuCQqQx5SI0="},"flags/4x3/pf-db568d96a25e93ea2d51edb9ccb8a0ba15bbe46e1241e1bb4376a856290de4e8.svg":{"logical_path":"flags/4x3/pf.svg","mtime":"2017-10-08T14:45:34+02:00","size":6691,"digest":"db568d96a25e93ea2d51edb9ccb8a0ba15bbe46e1241e1bb4376a856290de4e8","integrity":"sha256-21aNlqJek+otUe25zLiguhW75G4SQeG7Q3aoVikN5Og="},"flags/1x1/pf-d6aacd56a7243b922bbbd26c94696f19a3dd242df5e5ede999e0319930bf8d64.svg":{"logical_path":"flags/1x1/pf.svg","mtime":"2017-10-08T14:45:34+02:00","size":6623,"digest":"d6aacd56a7243b922bbbd26c94696f19a3dd242df5e5ede999e0319930bf8d64","integrity":"sha256-1qrNVqckO5Iru9JslGlvGaPdJC315e3pmeAxmTC/jWQ="},"flags/4x3/pg-def242bd4b12703b11ddc016962c0ab5ac2252e6afb53647281af0ddf72b08b2.svg":{"logical_path":"flags/4x3/pg.svg","mtime":"2017-10-08T14:45:34+02:00","size":2218,"digest":"def242bd4b12703b11ddc016962c0ab5ac2252e6afb53647281af0ddf72b08b2","integrity":"sha256-3vJCvUsScDsR3cAWliwKtawiUuavtTZHKBrw3fcrCLI="},"flags/1x1/pg-0f89210b4effa3e2f248e9d22710191ec8a5f8cc00e24e7a493fcf6013af6985.svg":{"logical_path":"flags/1x1/pg.svg","mtime":"2017-10-08T14:45:34+02:00","size":2966,"digest":"0f89210b4effa3e2f248e9d22710191ec8a5f8cc00e24e7a493fcf6013af6985","integrity":"sha256-D4khC07/o+LySOnSJxAZHsil+MwA4k56ST/PYBOvaYU="},"flags/4x3/ph-76da2cb2822b71a1e7f182cfe2b8744af8704640feceb476aadf1753611c124c.svg":{"logical_path":"flags/4x3/ph.svg","mtime":"2017-10-08T14:45:34+02:00","size":1377,"digest":"76da2cb2822b71a1e7f182cfe2b8744af8704640feceb476aadf1753611c124c","integrity":"sha256-dtossoIrcaHn8YLP4rh0SvhwRkD+zrR2qt8XU2EcEkw="},"flags/1x1/ph-896fe211ebf65c4aec42a1f115ad43894870bc661eb9f32fd97962f0c6a8b666.svg":{"logical_path":"flags/1x1/ph.svg","mtime":"2017-10-08T14:45:34+02:00","size":1377,"digest":"896fe211ebf65c4aec42a1f115ad43894870bc661eb9f32fd97962f0c6a8b666","integrity":"sha256-iW/iEev2XErsQqHxFa1DiUhwvGYeufMv2Xli8MaotmY="},"flags/4x3/pk-d0f9243f586c99692f7d7d18a648095badef0c11bd98645924771c71283f6a51.svg":{"logical_path":"flags/4x3/pk.svg","mtime":"2017-10-08T14:45:34+02:00","size":922,"digest":"d0f9243f586c99692f7d7d18a648095badef0c11bd98645924771c71283f6a51","integrity":"sha256-0PkkP1hsmWkvfX0YpkgJW63vDBG9mGRZJHcccSg/alE="},"flags/1x1/pk-c32541b10dabe01538a811d9e1b600b91b1724239fe99325bc1156c4183127d9.svg":{"logical_path":"flags/1x1/pk.svg","mtime":"2017-10-08T14:45:34+02:00","size":864,"digest":"c32541b10dabe01538a811d9e1b600b91b1724239fe99325bc1156c4183127d9","integrity":"sha256-wyVBsQ2r4BU4qBHZ4bYAuRsXJCOf6ZMlvBFWxBgxJ9k="},"flags/4x3/pl-0fc0d2ef9f5b48e43bd93818263cc504c825346f09a73d22c6f84dcde8d651af.svg":{"logical_path":"flags/4x3/pl.svg","mtime":"2017-10-08T14:45:34+02:00","size":237,"digest":"0fc0d2ef9f5b48e43bd93818263cc504c825346f09a73d22c6f84dcde8d651af","integrity":"sha256-D8DS759bSOQ72TgYJjzFBMglNG8Jpz0ixvhNzejWUa8="},"flags/1x1/pl-44281da3343d3308aaa29a9e7d060a24b8d5bb949d07197e3771aa30793f5ffe.svg":{"logical_path":"flags/1x1/pl.svg","mtime":"2017-10-08T14:45:34+02:00","size":237,"digest":"44281da3343d3308aaa29a9e7d060a24b8d5bb949d07197e3771aa30793f5ffe","integrity":"sha256-RCgdozQ9MwiqopqefQYKJLjVu5SdBxl+N3GqMHk/X/4="},"flags/4x3/pm-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/pm.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/pm-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/pm.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/pn-b9639507463a2e238b7d0f4cd976455ad4108594cc526882ed83807c321ca6b8.svg":{"logical_path":"flags/4x3/pn.svg","mtime":"2017-10-08T14:45:34+02:00","size":16790,"digest":"b9639507463a2e238b7d0f4cd976455ad4108594cc526882ed83807c321ca6b8","integrity":"sha256-uWOVB0Y6LiOLfQ9M2XZFWtQQhZTMUmiC7YOAfDIcprg="},"flags/1x1/pn-23189e2aa8792ba5d7bbfba6f21467ec9516f9b366ddddce193a7f26ddc18030.svg":{"logical_path":"flags/1x1/pn.svg","mtime":"2017-10-08T14:45:34+02:00","size":17272,"digest":"23189e2aa8792ba5d7bbfba6f21467ec9516f9b366ddddce193a7f26ddc18030","integrity":"sha256-IxieKqh5K6XXu/um8hRn7JUW+bNm3d3OGTp/Jt3BgDA="},"flags/4x3/pr-3194786def8e2510554b4d46d2ac49a10bfd1fb26f0d6803864b5982b36c12bb.svg":{"logical_path":"flags/4x3/pr.svg","mtime":"2017-10-08T14:45:34+02:00","size":721,"digest":"3194786def8e2510554b4d46d2ac49a10bfd1fb26f0d6803864b5982b36c12bb","integrity":"sha256-MZR4be+OJRBVS01G0qxJoQv9H7JvDWgDhktZgrNsErs="},"flags/1x1/pr-fb6e6e3064fc00cb41a3752358ba09e006375d6139ed63a13e6b81b4c8c53511.svg":{"logical_path":"flags/1x1/pr.svg","mtime":"2017-10-08T14:45:34+02:00","size":697,"digest":"fb6e6e3064fc00cb41a3752358ba09e006375d6139ed63a13e6b81b4c8c53511","integrity":"sha256-+25uMGT8AMtBo3UjWLoJ4AY3XWE57WOhPmuBtMjFNRE="},"flags/4x3/ps-e75b0d2d81c169c45624faf1f51ed1b9bf9b7945d71ceddac505c464f47c639a.svg":{"logical_path":"flags/4x3/ps.svg","mtime":"2017-10-08T14:45:34+02:00","size":609,"digest":"e75b0d2d81c169c45624faf1f51ed1b9bf9b7945d71ceddac505c464f47c639a","integrity":"sha256-51sNLYHBacRWJPrx9R7Rub+beUXXHO3axQXEZPR8Y5o="},"flags/1x1/ps-5e45e6b195fa5aa5b3c8bdff0824ef3fb354d4f1d5a1a5c4d92a9d67a568db3b.svg":{"logical_path":"flags/1x1/ps.svg","mtime":"2017-10-08T14:45:34+02:00","size":560,"digest":"5e45e6b195fa5aa5b3c8bdff0824ef3fb354d4f1d5a1a5c4d92a9d67a568db3b","integrity":"sha256-XkXmsZX6WqWzyL3/CCTvP7NU1PHVoaXE2SqdZ6Vo2zs="},"flags/4x3/pt-7056421a09bf65c1e96a0891db8b1d37b9ece7b39a7a8ecdfcbc837d0f773cfa.svg":{"logical_path":"flags/4x3/pt.svg","mtime":"2017-10-08T14:45:34+02:00","size":12226,"digest":"7056421a09bf65c1e96a0891db8b1d37b9ece7b39a7a8ecdfcbc837d0f773cfa","integrity":"sha256-cFZCGgm/ZcHpagiR24sdN7ns57Oaeo7N/LyDfQ93PPo="},"flags/1x1/pt-4f2b0e37162ed4d197eb28886933009600109e827ac83664f57f3683adc9617a.svg":{"logical_path":"flags/1x1/pt.svg","mtime":"2017-10-08T14:45:34+02:00","size":12319,"digest":"4f2b0e37162ed4d197eb28886933009600109e827ac83664f57f3683adc9617a","integrity":"sha256-TysONxYu1NGX6yiIaTMAlgAQnoJ6yDZk9X82g63JYXo="},"flags/4x3/pw-8991b8ae2bef2f0e81e79442947f1c68f843be48f652a4c3a2af5dab84d73170.svg":{"logical_path":"flags/4x3/pw.svg","mtime":"2017-10-08T14:45:34+02:00","size":489,"digest":"8991b8ae2bef2f0e81e79442947f1c68f843be48f652a4c3a2af5dab84d73170","integrity":"sha256-iZG4rivvLw6B55RClH8caPhDvkj2UqTDoq9dq4TXMXA="},"flags/1x1/pw-4c45576b7f0be5b37d463d126410bfbca0f9dcdd1539fc6866f9fc116baa3437.svg":{"logical_path":"flags/1x1/pw.svg","mtime":"2017-10-08T14:45:34+02:00","size":596,"digest":"4c45576b7f0be5b37d463d126410bfbca0f9dcdd1539fc6866f9fc116baa3437","integrity":"sha256-TEVXa38L5bN9Rj0SZBC/vKD53N0VOfxoZvn8EWuqNDc="},"flags/4x3/py-c416c19abcc7629572203f00253c9272876e59a88eafa893fa4a534ed8977776.svg":{"logical_path":"flags/4x3/py.svg","mtime":"2017-10-08T14:45:34+02:00","size":26946,"digest":"c416c19abcc7629572203f00253c9272876e59a88eafa893fa4a534ed8977776","integrity":"sha256-xBbBmrzHYpVyID8AJTyScoduWaiOr6iT+kpTTtiXd3Y="},"flags/1x1/py-adb6cfc575e9626cd8284964929c88830d0d6f7e5b0c135649eceb8bd9de1368.svg":{"logical_path":"flags/1x1/py.svg","mtime":"2017-10-08T14:45:34+02:00","size":27004,"digest":"adb6cfc575e9626cd8284964929c88830d0d6f7e5b0c135649eceb8bd9de1368","integrity":"sha256-rbbPxXXpYmzYKElkkpyIgw0Nb35bDBNWSezri9neE2g="},"flags/4x3/qa-821f667f3f99992cf08b05498cc1a0769dee9c4e36d2a2561d6cf7827255af1b.svg":{"logical_path":"flags/4x3/qa.svg","mtime":"2017-10-08T14:45:34+02:00","size":414,"digest":"821f667f3f99992cf08b05498cc1a0769dee9c4e36d2a2561d6cf7827255af1b","integrity":"sha256-gh9mfz+ZmSzwiwVJjMGgdp3unE420qJWHWz3gnJVrxs="},"flags/1x1/qa-b05242965c0835a82add68dbcfb4523bc5e53e191803eab2c0c8c8762f2fce80.svg":{"logical_path":"flags/1x1/qa.svg","mtime":"2017-10-08T14:45:34+02:00","size":430,"digest":"b05242965c0835a82add68dbcfb4523bc5e53e191803eab2c0c8c8762f2fce80","integrity":"sha256-sFJCllwINagq3Wjbz7RSO8XlPhkYA+qywMjIdi8vzoA="},"flags/4x3/re-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/re.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/re-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/re.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/ro-63c55736a245e5fa5e0484b4693d43e171941143fcbdb34d3aa8d4cfd6160c9d.svg":{"logical_path":"flags/4x3/ro.svg","mtime":"2017-10-08T14:45:34+02:00","size":320,"digest":"63c55736a245e5fa5e0484b4693d43e171941143fcbdb34d3aa8d4cfd6160c9d","integrity":"sha256-Y8VXNqJF5fpeBIS0aT1D4XGUEUP8vbNNOqjUz9YWDJ0="},"flags/1x1/ro-f5c83b26832bb94b4320340ada4351a695bff66bb1410f6007c87e8395290380.svg":{"logical_path":"flags/1x1/ro.svg","mtime":"2017-10-08T14:45:34+02:00","size":324,"digest":"f5c83b26832bb94b4320340ada4351a695bff66bb1410f6007c87e8395290380","integrity":"sha256-9cg7JoMruUtDIDQK2kNRppW/9muxQQ9gB8h+g5UpA4A="},"flags/4x3/rs-a1bff9944ac65bce131f42964a45cfce50e334c6d52eeeea65f5f6179f8acf4d.svg":{"logical_path":"flags/4x3/rs.svg","mtime":"2017-10-08T14:45:34+02:00","size":494000,"digest":"a1bff9944ac65bce131f42964a45cfce50e334c6d52eeeea65f5f6179f8acf4d","integrity":"sha256-ob/5lErGW84TH0KWSkXPzlDjNMbVLu7qZfX2F5+Kz00="},"flags/1x1/rs-6af7605aa8aee1da6e0a75c750964b21b404011cd00f2df43ae55a827952251a.svg":{"logical_path":"flags/1x1/rs.svg","mtime":"2017-10-08T14:45:34+02:00","size":493892,"digest":"6af7605aa8aee1da6e0a75c750964b21b404011cd00f2df43ae55a827952251a","integrity":"sha256-avdgWqiu4dpuCnXHUJZLIbQEARzQDy30OuVagnlSJRo="},"flags/4x3/ru-2ba8996aa53f5eca5d1b0ea1a67d6d469659ac2523d1b394e3d6e25913bbbc15.svg":{"logical_path":"flags/4x3/ru.svg","mtime":"2017-10-08T14:45:34+02:00","size":309,"digest":"2ba8996aa53f5eca5d1b0ea1a67d6d469659ac2523d1b394e3d6e25913bbbc15","integrity":"sha256-K6iZaqU/XspdGw6hpn1tRpZZrCUj0bOU49biWRO7vBU="},"flags/1x1/ru-c8ecec77af983cd6ca10baaf2fa8f3dd67a6fa84f80cabdee10858910fdcc233.svg":{"logical_path":"flags/1x1/ru.svg","mtime":"2017-10-08T14:45:34+02:00","size":321,"digest":"c8ecec77af983cd6ca10baaf2fa8f3dd67a6fa84f80cabdee10858910fdcc233","integrity":"sha256-yOzsd6+YPNbKELqvL6jz3Wem+oT4DKve4QhYkQ/cwjM="},"flags/4x3/rw-0fa2c78359e9603d1cf21e4bb9355414ac3eed3635a25ba8f653d0498d61bd16.svg":{"logical_path":"flags/4x3/rw.svg","mtime":"2017-10-08T14:45:34+02:00","size":793,"digest":"0fa2c78359e9603d1cf21e4bb9355414ac3eed3635a25ba8f653d0498d61bd16","integrity":"sha256-D6LHg1npYD0c8h5LuTVUFKw+7TY1oluo9lPQSY1hvRY="},"flags/1x1/rw-61cce3e871326334478d73a379b202fc8548581abc02e39a898bc4fd16b2e0eb.svg":{"logical_path":"flags/1x1/rw.svg","mtime":"2017-10-08T14:45:34+02:00","size":795,"digest":"61cce3e871326334478d73a379b202fc8548581abc02e39a898bc4fd16b2e0eb","integrity":"sha256-Yczj6HEyYzRHjXOjebIC/IVIWBq8AuOaiYvE/Ray4Os="},"flags/4x3/sa-5aec890788f78356a42e38fe6ea2c30c4c82c99a3f05f654faae5918aae804c4.svg":{"logical_path":"flags/4x3/sa.svg","mtime":"2017-10-08T14:45:34+02:00","size":16083,"digest":"5aec890788f78356a42e38fe6ea2c30c4c82c99a3f05f654faae5918aae804c4","integrity":"sha256-WuyJB4j3g1akLjj+bqLDDEyCyZo/BfZU+q5ZGKroBMQ="},"flags/1x1/sa-57bf549298c1c3cb533120975d49b6cdb9c839addf278497d133236e666239f4.svg":{"logical_path":"flags/1x1/sa.svg","mtime":"2017-10-08T14:45:34+02:00","size":16334,"digest":"57bf549298c1c3cb533120975d49b6cdb9c839addf278497d133236e666239f4","integrity":"sha256-V79UkpjBw8tTMSCXXUm2zbnIOa3fJ4SX0TMjbmZiOfQ="},"flags/4x3/sb-3433de16f2b3f2a8373de87f879dd3b31ec8369256e23193947318976b51a182.svg":{"logical_path":"flags/4x3/sb.svg","mtime":"2017-10-08T14:45:34+02:00","size":1196,"digest":"3433de16f2b3f2a8373de87f879dd3b31ec8369256e23193947318976b51a182","integrity":"sha256-NDPeFvKz8qg3Peh/h53Tsx7INpJW4jGTlHMYl2tRoYI="},"flags/1x1/sb-e5352ddacf8edb727ef8f68dbb0951f00ae84b96e9b3b224cdf0c3ee2d33e8db.svg":{"logical_path":"flags/1x1/sb.svg","mtime":"2017-10-08T14:45:34+02:00","size":1221,"digest":"e5352ddacf8edb727ef8f68dbb0951f00ae84b96e9b3b224cdf0c3ee2d33e8db","integrity":"sha256-5TUt2s+O23J++PaNuwlR8AroS5bps7IkzfDD7i0z6Ns="},"flags/4x3/sc-9c1764a913e0577cadb24d11b883978389a818e94b39f6ac5cf4993dd041d501.svg":{"logical_path":"flags/4x3/sc.svg","mtime":"2017-10-08T14:45:34+02:00","size":591,"digest":"9c1764a913e0577cadb24d11b883978389a818e94b39f6ac5cf4993dd041d501","integrity":"sha256-nBdkqRPgV3ytsk0RuIOXg4moGOlLOfasXPSZPdBB1QE="},"flags/1x1/sc-c1abe18095ce0b84c2b21aa2453b916e00d8c0fd72fd5161f212e6bcf9c8ccd8.svg":{"logical_path":"flags/1x1/sc.svg","mtime":"2017-10-08T14:45:34+02:00","size":644,"digest":"c1abe18095ce0b84c2b21aa2453b916e00d8c0fd72fd5161f212e6bcf9c8ccd8","integrity":"sha256-wavhgJXOC4TCshqiRTuRbgDYwP1y/VFh8hLmvPnIzNg="},"flags/4x3/sd-df15037b269e643062988e5273f3cd5a379b18d0ff496bdac97e840deb0793bc.svg":{"logical_path":"flags/4x3/sd.svg","mtime":"2017-10-08T14:45:34+02:00","size":501,"digest":"df15037b269e643062988e5273f3cd5a379b18d0ff496bdac97e840deb0793bc","integrity":"sha256-3xUDeyaeZDBimI5Sc/PNWjebGND/SWvayX6EDesHk7w="},"flags/1x1/sd-baedc80da37d70ce8fa4d5619d85b4823435180311f0c2995717116e681c20d3.svg":{"logical_path":"flags/1x1/sd.svg","mtime":"2017-10-08T14:45:34+02:00","size":515,"digest":"baedc80da37d70ce8fa4d5619d85b4823435180311f0c2995717116e681c20d3","integrity":"sha256-uu3IDaN9cM6PpNVhnYW0gjQ1GAMR8MKZVxcRbmgcINM="},"flags/4x3/se-73964261d5ec45c856c9f7b57f1be90f60c5e748596e494aafa5facd817c7118.svg":{"logical_path":"flags/4x3/se.svg","mtime":"2017-10-08T14:45:34+02:00","size":765,"digest":"73964261d5ec45c856c9f7b57f1be90f60c5e748596e494aafa5facd817c7118","integrity":"sha256-c5ZCYdXsRchWyfe1fxvpD2DF50hZbklKr6X6zYF8cRg="},"flags/1x1/se-ea6d6caac7db4cfc8d68548f70afbf6ddbf072993e655bdb0b0860f724202e2b.svg":{"logical_path":"flags/1x1/se.svg","mtime":"2017-10-08T14:45:34+02:00","size":799,"digest":"ea6d6caac7db4cfc8d68548f70afbf6ddbf072993e655bdb0b0860f724202e2b","integrity":"sha256-6m1sqsfbTPyNaFSPcK+/bdvwcpk+ZVvbCwhg9yQgLis="},"flags/4x3/sg-2c8851a3c456051d7510b78da650054ee411ecdb01508ab3aa8ddac220de984a.svg":{"logical_path":"flags/4x3/sg.svg","mtime":"2017-10-08T14:45:34+02:00","size":1278,"digest":"2c8851a3c456051d7510b78da650054ee411ecdb01508ab3aa8ddac220de984a","integrity":"sha256-LIhRo8RWBR11ELeNplAFTuQR7NsBUIqzqo3awiDemEo="},"flags/1x1/sg-81517add5de364935b2173fd1ed3db2fefc22e07a072d03fd4f91e8543ffcb22.svg":{"logical_path":"flags/1x1/sg.svg","mtime":"2017-10-08T14:45:34+02:00","size":1373,"digest":"81517add5de364935b2173fd1ed3db2fefc22e07a072d03fd4f91e8543ffcb22","integrity":"sha256-gVF63V3jZJNbIXP9HtPbL+/CLgegctA/1PkehUP/yyI="},"flags/4x3/sh-cdfa61ab262caf8d6b13cc66f1d0e1e935dadb144d93ad28fcd850e9164c33d9.svg":{"logical_path":"flags/4x3/sh.svg","mtime":"2017-10-08T14:45:34+02:00","size":48963,"digest":"cdfa61ab262caf8d6b13cc66f1d0e1e935dadb144d93ad28fcd850e9164c33d9","integrity":"sha256-zfphqyYsr41rE8xm8dDh6TXa2xRNk60o/NhQ6RZMM9k="},"flags/1x1/sh-763ae01f8c0189641321a0de1085f0d1ceeb962d94bb989c6255dae4616fd14f.svg":{"logical_path":"flags/1x1/sh.svg","mtime":"2017-10-08T14:45:34+02:00","size":49731,"digest":"763ae01f8c0189641321a0de1085f0d1ceeb962d94bb989c6255dae4616fd14f","integrity":"sha256-djrgH4wBiWQTIaDeEIXw0c7rli2Uu5icYlXa5GFv0U8="},"flags/4x3/si-81f600f18fae95b3e2a6813cc012e94bdfd67965eb7ce1676780bc7d04f4f203.svg":{"logical_path":"flags/4x3/si.svg","mtime":"2017-10-08T14:45:34+02:00","size":2910,"digest":"81f600f18fae95b3e2a6813cc012e94bdfd67965eb7ce1676780bc7d04f4f203","integrity":"sha256-gfYA8Y+ulbPipoE8wBLpS9/WeWXrfOFnZ4C8fQT08gM="},"flags/1x1/si-6481bc748939a46efccac3df22ccc34341cc006d871a7ff521769c562a5325df.svg":{"logical_path":"flags/1x1/si.svg","mtime":"2017-10-08T14:45:34+02:00","size":2924,"digest":"6481bc748939a46efccac3df22ccc34341cc006d871a7ff521769c562a5325df","integrity":"sha256-ZIG8dIk5pG78ysPfIszDQ0HMAG2HGn/1IXacVipTJd8="},"flags/4x3/sj-8c78bb614796386f416c677e7ee2984c9997d0789306a9861e0d3f85edf62608.svg":{"logical_path":"flags/4x3/sj.svg","mtime":"2017-10-08T14:45:34+02:00","size":809,"digest":"8c78bb614796386f416c677e7ee2984c9997d0789306a9861e0d3f85edf62608","integrity":"sha256-jHi7YUeWOG9BbGd+fuKYTJmX0HiTBqmGHg0/he32Jgg="},"flags/1x1/sj-15448521086e54b5dc1b51bce3e8424a3282aaa539514a8d63fae537d400bc08.svg":{"logical_path":"flags/1x1/sj.svg","mtime":"2017-10-08T14:45:34+02:00","size":751,"digest":"15448521086e54b5dc1b51bce3e8424a3282aaa539514a8d63fae537d400bc08","integrity":"sha256-FUSFIQhuVLXcG1G84+hCSjKCqqU5UUqNY/rlN9QAvAg="},"flags/4x3/sk-271dd9219a226c5e9768072c3d0512b9ab07d1af59a3a5642eba620e3f53ea2c.svg":{"logical_path":"flags/4x3/sk.svg","mtime":"2017-10-08T14:45:34+02:00","size":1633,"digest":"271dd9219a226c5e9768072c3d0512b9ab07d1af59a3a5642eba620e3f53ea2c","integrity":"sha256-Jx3ZIZoibF6XaAcsPQUSuasH0a9Zo6VkLrpiDj9T6iw="},"flags/1x1/sk-4ee51ed995ad80a8f9a335b5f36b00a830da6e7065ecda1e84e427cf19dda736.svg":{"logical_path":"flags/1x1/sk.svg","mtime":"2017-10-08T14:45:34+02:00","size":1644,"digest":"4ee51ed995ad80a8f9a335b5f36b00a830da6e7065ecda1e84e427cf19dda736","integrity":"sha256-TuUe2ZWtgKj5ozW182sAqDDabnBl7NoehOQnzxndpzY="},"flags/4x3/sl-3fd8765025c44c215906c9d33be69326118f5025b35a93636df059926053c84c.svg":{"logical_path":"flags/4x3/sl.svg","mtime":"2017-10-08T14:45:34+02:00","size":340,"digest":"3fd8765025c44c215906c9d33be69326118f5025b35a93636df059926053c84c","integrity":"sha256-P9h2UCXETCFZBsnTO+aTJhGPUCWzWpNjbfBZkmBTyEw="},"flags/1x1/sl-ffbed472a2b3677e9339adfd150ffc76bbae85071cbf1b14f75c67b03fff29d8.svg":{"logical_path":"flags/1x1/sl.svg","mtime":"2017-10-08T14:45:34+02:00","size":454,"digest":"ffbed472a2b3677e9339adfd150ffc76bbae85071cbf1b14f75c67b03fff29d8","integrity":"sha256-/77UcqKzZ36TOa39FQ/8druuhQccvxsU91xnsD//Kdg="},"flags/4x3/sm-72df25d7ba785caa3201dc9ea30349a5bd3891de99e6d818bff2f34914264654.svg":{"logical_path":"flags/4x3/sm.svg","mtime":"2017-10-08T14:45:34+02:00","size":22920,"digest":"72df25d7ba785caa3201dc9ea30349a5bd3891de99e6d818bff2f34914264654","integrity":"sha256-ct8l17p4XKoyAdyeowNJpb04kd6Z5tgYv/LzSRQmRlQ="},"flags/1x1/sm-afa36059e43d3014dfc9088d30e86449b8463d282611b99f8d496aca155075c2.svg":{"logical_path":"flags/1x1/sm.svg","mtime":"2017-10-08T14:45:34+02:00","size":23051,"digest":"afa36059e43d3014dfc9088d30e86449b8463d282611b99f8d496aca155075c2","integrity":"sha256-r6NgWeQ9MBTfyQiNMOhkSbhGPSgmEbmfjUlqyhVQdcI="},"flags/4x3/sn-3465e8417cd4bd6d948ab2311442757688af8516c6aa7c4f73c48a9447087b8c.svg":{"logical_path":"flags/4x3/sn.svg","mtime":"2017-10-08T14:45:34+02:00","size":485,"digest":"3465e8417cd4bd6d948ab2311442757688af8516c6aa7c4f73c48a9447087b8c","integrity":"sha256-NGXoQXzUvW2UirIxFEJ1doivhRbGqnxPc8SKlEcIe4w="},"flags/1x1/sn-dfbe30abf15b2937f1b2de375b832ef3fe11e78f3536df35232b2f7265c00d9e.svg":{"logical_path":"flags/1x1/sn.svg","mtime":"2017-10-08T14:45:34+02:00","size":480,"digest":"dfbe30abf15b2937f1b2de375b832ef3fe11e78f3536df35232b2f7265c00d9e","integrity":"sha256-374wq/FbKTfxst43W4Mu8/4R5481Nt81IysvcmXADZ4="},"flags/4x3/so-16f7af15587913f17fd988f914c55de175ed1d4b2282ba2fa52b414c7359b440.svg":{"logical_path":"flags/4x3/so.svg","mtime":"2017-10-08T14:45:34+02:00","size":558,"digest":"16f7af15587913f17fd988f914c55de175ed1d4b2282ba2fa52b414c7359b440","integrity":"sha256-FvevFVh5E/F/2Yj5FMVd4XXtHUsigrovpStBTHNZtEA="},"flags/1x1/so-bbf08e60fbda4e45791d985450f6dbcd9ea779f93c818973271845dd01fc8df6.svg":{"logical_path":"flags/1x1/so.svg","mtime":"2017-10-08T14:45:34+02:00","size":571,"digest":"bbf08e60fbda4e45791d985450f6dbcd9ea779f93c818973271845dd01fc8df6","integrity":"sha256-u/COYPvaTkV5HZhUUPbbzZ6nefk8gYlzJxhF3QH8jfY="},"flags/4x3/sr-7718ec6fbe85ea55c72189bf0dc94b10f20a7948ab913903e5b8050af20e4f6f.svg":{"logical_path":"flags/4x3/sr.svg","mtime":"2017-10-08T14:45:34+02:00","size":331,"digest":"7718ec6fbe85ea55c72189bf0dc94b10f20a7948ab913903e5b8050af20e4f6f","integrity":"sha256-dxjsb76F6lXHIYm/DclLEPIKeUirkTkD5bgFCvIOT28="},"flags/1x1/sr-692dfcca46c35b618f0358ef0cc9b2ee7c27c839f98b12134318804f6498ceee.svg":{"logical_path":"flags/1x1/sr.svg","mtime":"2017-10-08T14:45:34+02:00","size":341,"digest":"692dfcca46c35b618f0358ef0cc9b2ee7c27c839f98b12134318804f6498ceee","integrity":"sha256-aS38ykbDW2GPA1jvDMmy7nwnyDn5ixITQxiAT2SYzu4="},"flags/4x3/ss-aebe3fc1b10d93add9906690e262b1baf5338529a832ff954e329c897e014e9c.svg":{"logical_path":"flags/4x3/ss.svg","mtime":"2017-10-08T14:45:34+02:00","size":406,"digest":"aebe3fc1b10d93add9906690e262b1baf5338529a832ff954e329c897e014e9c","integrity":"sha256-rr4/wbENk63ZkGaQ4mKxuvUzhSmoMv+VTjKciX4BTpw="},"flags/1x1/ss-1d0ebcb31f2c0fe874bd046253de4eec410239c2e0f41eb1cea1f312b51bc8a8.svg":{"logical_path":"flags/1x1/ss.svg","mtime":"2017-10-08T14:45:34+02:00","size":424,"digest":"1d0ebcb31f2c0fe874bd046253de4eec410239c2e0f41eb1cea1f312b51bc8a8","integrity":"sha256-HQ68sx8sD+h0vQRiU95O7EECOcLg9B6xzqHzErUbyKg="},"flags/4x3/st-b24fa19cb51844a3187239e3cbacf828f02e7b8ddf4b01e9ec3366e75966c5d6.svg":{"logical_path":"flags/4x3/st.svg","mtime":"2017-10-08T14:45:34+02:00","size":822,"digest":"b24fa19cb51844a3187239e3cbacf828f02e7b8ddf4b01e9ec3366e75966c5d6","integrity":"sha256-sk+hnLUYRKMYcjnjy6z4KPAue43fSwHp7DNm51lmxdY="},"flags/1x1/st-d4d96bc9009e10cec6a00ce0d6fae3746ddefce867f63503595110b2fd539d17.svg":{"logical_path":"flags/1x1/st.svg","mtime":"2017-10-08T14:45:34+02:00","size":790,"digest":"d4d96bc9009e10cec6a00ce0d6fae3746ddefce867f63503595110b2fd539d17","integrity":"sha256-1NlryQCeEM7GoAzg1vrjdG3e/Ohn9jUDWVEQsv1TnRc="},"flags/4x3/sv-cd0c1acd571abd1756fc4e7eea2369c0466265b1d170a7a3618a66800ddbb4c2.svg":{"logical_path":"flags/4x3/sv.svg","mtime":"2017-10-08T14:45:34+02:00","size":129725,"digest":"cd0c1acd571abd1756fc4e7eea2369c0466265b1d170a7a3618a66800ddbb4c2","integrity":"sha256-zQwazVcavRdW/E5+6iNpwEZiZbHRcKejYYpmgA3btMI="},"flags/1x1/sv-e86857616aaa7fc022b68dafd4a58d4be7ddfcc6d5b2c3d5dad67b457d1e75c9.svg":{"logical_path":"flags/1x1/sv.svg","mtime":"2017-10-08T14:45:34+02:00","size":129880,"digest":"e86857616aaa7fc022b68dafd4a58d4be7ddfcc6d5b2c3d5dad67b457d1e75c9","integrity":"sha256-6GhXYWqqf8Aito2v1KWNS+fd/MbVssPV2tZ7RX0edck="},"flags/4x3/sx-7ed9e6d8c02b265181248986ccd927f6540a7d55b4ec82b60baef06face66ee1.svg":{"logical_path":"flags/4x3/sx.svg","mtime":"2017-10-08T14:45:34+02:00","size":19945,"digest":"7ed9e6d8c02b265181248986ccd927f6540a7d55b4ec82b60baef06face66ee1","integrity":"sha256-ftnm2MArJlGBJImGzNkn9lQKfVW07IK2C67wb6zmbuE="},"flags/1x1/sx-09ab7415791d37231c9fb79b51fc52583407d7721e6f401cc98fc1ab12d2b62d.svg":{"logical_path":"flags/1x1/sx.svg","mtime":"2017-10-08T14:45:34+02:00","size":19770,"digest":"09ab7415791d37231c9fb79b51fc52583407d7721e6f401cc98fc1ab12d2b62d","integrity":"sha256-Cat0FXkdNyMcn7ebUfxSWDQH13Ieb0AcyY/BqxLSti0="},"flags/4x3/sy-49bb1803affb9e4ee070fb6e333a445f6df15ac11db6abe0a62f1aa922fe3c16.svg":{"logical_path":"flags/4x3/sy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1029,"digest":"49bb1803affb9e4ee070fb6e333a445f6df15ac11db6abe0a62f1aa922fe3c16","integrity":"sha256-SbsYA6/7nk7gcPtuMzpEX23xWsEdtqvgpi8aqSL+PBY="},"flags/1x1/sy-b52b5ed6037c8e0e0a3ecd13006b79027d5fac2059fdd54109b591e5c5ada752.svg":{"logical_path":"flags/1x1/sy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1193,"digest":"b52b5ed6037c8e0e0a3ecd13006b79027d5fac2059fdd54109b591e5c5ada752","integrity":"sha256-tSte1gN8jg4KPs0TAGt5An1frCBZ/dVBCbWR5cWtp1I="},"flags/4x3/sz-a545e703e03ec7f9e108fa348d9e222aba1d7514bad2786f9ca8c6c3063a0e68.svg":{"logical_path":"flags/4x3/sz.svg","mtime":"2017-10-08T14:45:34+02:00","size":9230,"digest":"a545e703e03ec7f9e108fa348d9e222aba1d7514bad2786f9ca8c6c3063a0e68","integrity":"sha256-pUXnA+A+x/nhCPo0jZ4iKroddRS60nhvnKjGwwY6Dmg="},"flags/1x1/sz-784ee11c6629bc411d3e274eea68a3739ddfaa4c3bd18e46e62262518ae0b93e.svg":{"logical_path":"flags/1x1/sz.svg","mtime":"2017-10-08T14:45:34+02:00","size":9135,"digest":"784ee11c6629bc411d3e274eea68a3739ddfaa4c3bd18e46e62262518ae0b93e","integrity":"sha256-eE7hHGYpvEEdPidO6mijc53fqkw70Y5G5iJiUYrguT4="},"flags/4x3/tc-a20d2d87632b3c19e16a599dd45f3918a5f2db3025867c5f1b279050af68f637.svg":{"logical_path":"flags/4x3/tc.svg","mtime":"2017-10-08T14:45:34+02:00","size":19596,"digest":"a20d2d87632b3c19e16a599dd45f3918a5f2db3025867c5f1b279050af68f637","integrity":"sha256-og0th2MrPBnhalmd1F85GKXy2zAlhnxfGyeQUK9o9jc="},"flags/1x1/tc-4c7c0e4227d06fb697b8c5ec5f95382b1549342013ea80211f2942f81d472d5a.svg":{"logical_path":"flags/1x1/tc.svg","mtime":"2017-10-08T14:45:34+02:00","size":19881,"digest":"4c7c0e4227d06fb697b8c5ec5f95382b1549342013ea80211f2942f81d472d5a","integrity":"sha256-THwOQifQb7aXuMXsX5U4KxVJNCAT6oAhHylC+B1HLVo="},"flags/4x3/td-1b92327abb7d3ba9b54361f6a38018979e57d5083990af57adac25102146b939.svg":{"logical_path":"flags/4x3/td.svg","mtime":"2017-10-08T14:45:34+02:00","size":342,"digest":"1b92327abb7d3ba9b54361f6a38018979e57d5083990af57adac25102146b939","integrity":"sha256-G5Iyert9O6m1Q2H2o4AYl55X1Qg5kK9XrawlECFGuTk="},"flags/1x1/td-977813c5dfc3b6b640d1390c04c469cf92e84827ca06ed7f4984a58782a059c5.svg":{"logical_path":"flags/1x1/td.svg","mtime":"2017-10-08T14:45:34+02:00","size":294,"digest":"977813c5dfc3b6b640d1390c04c469cf92e84827ca06ed7f4984a58782a059c5","integrity":"sha256-l3gTxd/DtrZA0TkMBMRpz5LoSCfKBu1/SYSlh4KgWcU="},"flags/4x3/tf-f45e133cfa8a01239d65e1693492ca1de1949f3660de77d802b41c9a9fc662e8.svg":{"logical_path":"flags/4x3/tf.svg","mtime":"2017-10-08T14:45:34+02:00","size":1130,"digest":"f45e133cfa8a01239d65e1693492ca1de1949f3660de77d802b41c9a9fc662e8","integrity":"sha256-9F4TPPqKASOdZeFpNJLKHeGUnzZg3nfYArQcmp/GYug="},"flags/1x1/tf-53581d6af7751cf4c126459a2226fd19cd10040d25e33d1653ece9e57a1a0e2b.svg":{"logical_path":"flags/1x1/tf.svg","mtime":"2017-10-08T14:45:34+02:00","size":1303,"digest":"53581d6af7751cf4c126459a2226fd19cd10040d25e33d1653ece9e57a1a0e2b","integrity":"sha256-U1gdavd1HPTBJkWaIib9Gc0QBA0l4z0WU+zp5XoaDis="},"flags/4x3/tg-de9fe13020d702ce964ff7d712c6b6a3a57c3933f56fbd0c783fe0309f0dbae3.svg":{"logical_path":"flags/4x3/tg.svg","mtime":"2017-10-08T14:45:34+02:00","size":831,"digest":"de9fe13020d702ce964ff7d712c6b6a3a57c3933f56fbd0c783fe0309f0dbae3","integrity":"sha256-3p/hMCDXAs6WT/fXEsa2o6V8OTP1b70MeD/gMJ8NuuM="},"flags/1x1/tg-92f575529494b0ba885e47302167a14343c1fd78fef5008ec3aacde7f840fd23.svg":{"logical_path":"flags/1x1/tg.svg","mtime":"2017-10-08T14:45:34+02:00","size":839,"digest":"92f575529494b0ba885e47302167a14343c1fd78fef5008ec3aacde7f840fd23","integrity":"sha256-kvV1UpSUsLqIXkcwIWehQ0PB/Xj+9QCOw6rN5/hA/SM="},"flags/4x3/th-6211c6caabbc4fdd4ff054cb689406bc9cc7816c01d482a6222e873b0e8fc9b0.svg":{"logical_path":"flags/4x3/th.svg","mtime":"2017-10-08T14:45:34+02:00","size":312,"digest":"6211c6caabbc4fdd4ff054cb689406bc9cc7816c01d482a6222e873b0e8fc9b0","integrity":"sha256-YhHGyqu8T91P8FTLaJQGvJzHgWwB1IKmIi6HOw6PybA="},"flags/1x1/th-b8a0cf7c820f9010ce12333bfa7f8713358dee291bc955fa7e5333fcf5fc8a07.svg":{"logical_path":"flags/1x1/th.svg","mtime":"2017-10-08T14:45:34+02:00","size":311,"digest":"b8a0cf7c820f9010ce12333bfa7f8713358dee291bc955fa7e5333fcf5fc8a07","integrity":"sha256-uKDPfIIPkBDOEjM7+n+HEzWN7ikbyVX6flMz/PX8igc="},"flags/4x3/tj-4bf387aa434be996fc00be6dbb457282e311ff6c7538a484f5cb4d99e45b0747.svg":{"logical_path":"flags/4x3/tj.svg","mtime":"2017-10-08T14:45:34+02:00","size":2023,"digest":"4bf387aa434be996fc00be6dbb457282e311ff6c7538a484f5cb4d99e45b0747","integrity":"sha256-S/OHqkNL6Zb8AL5tu0VyguMR/2x1OKSE9ctNmeRbB0c="},"flags/1x1/tj-b371ab0647e7dfba73251169fe1e3180058d6556aa7293b7b573eaf43add617d.svg":{"logical_path":"flags/1x1/tj.svg","mtime":"2017-10-08T14:45:34+02:00","size":1908,"digest":"b371ab0647e7dfba73251169fe1e3180058d6556aa7293b7b573eaf43add617d","integrity":"sha256-s3GrBkfn37pzJRFp/h4xgAWNZVaqcpO3tXPq9DrdYX0="},"flags/4x3/tk-cef6e368398b0cbaa4ee0b943d02155c51f9e8ab5ba27b9562ccd629f9a72183.svg":{"logical_path":"flags/4x3/tk.svg","mtime":"2017-10-08T14:45:34+02:00","size":841,"digest":"cef6e368398b0cbaa4ee0b943d02155c51f9e8ab5ba27b9562ccd629f9a72183","integrity":"sha256-zvbjaDmLDLqk7guUPQIVXFH56KtbonuVYszWKfmnIYM="},"flags/1x1/tk-1544aef42090102ba2e154b48f8c059dfddd5789fc5f12aa859939c41673a661.svg":{"logical_path":"flags/1x1/tk.svg","mtime":"2017-10-08T14:45:34+02:00","size":840,"digest":"1544aef42090102ba2e154b48f8c059dfddd5789fc5f12aa859939c41673a661","integrity":"sha256-FUSu9CCQECui4VS0j4wFnf3dV4n8XxKqhZk5xBZzpmE="},"flags/4x3/tl-cd74f59871cf5453b4e9454a4820e683c06dc8c9c84dae4c47af9264bed7ab22.svg":{"logical_path":"flags/4x3/tl.svg","mtime":"2017-10-08T14:45:34+02:00","size":658,"digest":"cd74f59871cf5453b4e9454a4820e683c06dc8c9c84dae4c47af9264bed7ab22","integrity":"sha256-zXT1mHHPVFO06UVKSCDmg8BtyMnITa5MR6+SZL7XqyI="},"flags/1x1/tl-a7cd9977244579380914f288bf358ec8b1b0abec6b8dc99e65cc35afe41bc405.svg":{"logical_path":"flags/1x1/tl.svg","mtime":"2017-10-08T14:45:34+02:00","size":675,"digest":"a7cd9977244579380914f288bf358ec8b1b0abec6b8dc99e65cc35afe41bc405","integrity":"sha256-p82ZdyRFeTgJFPKIvzWOyLGwq+xrjcmeZcw1r+QbxAU="},"flags/4x3/tm-3db83810be6239a1c7e594a0b11a4847a7d300cc54e12e4cf4c8a9558520dd67.svg":{"logical_path":"flags/4x3/tm.svg","mtime":"2017-10-08T14:45:34+02:00","size":45153,"digest":"3db83810be6239a1c7e594a0b11a4847a7d300cc54e12e4cf4c8a9558520dd67","integrity":"sha256-Pbg4EL5iOaHH5ZSgsRpIR6fTAMxU4S5M9MipVYUg3Wc="},"flags/1x1/tm-ade1696d2299d73cc6fa06304144055f9a02c1800846516c4e21baba2a05d4cf.svg":{"logical_path":"flags/1x1/tm.svg","mtime":"2017-10-08T14:45:34+02:00","size":45051,"digest":"ade1696d2299d73cc6fa06304144055f9a02c1800846516c4e21baba2a05d4cf","integrity":"sha256-reFpbSKZ1zzG+gYwQUQFX5oCwYAIRlFsTiG6uioF1M8="},"flags/4x3/tn-17e7bc4e9dad2da8f12c95c56de46b21890b9d1c725ba400fa7d8df17d59fd4d.svg":{"logical_path":"flags/4x3/tn.svg","mtime":"2017-10-08T14:45:34+02:00","size":984,"digest":"17e7bc4e9dad2da8f12c95c56de46b21890b9d1c725ba400fa7d8df17d59fd4d","integrity":"sha256-F+e8Tp2tLajxLJXFbeRrIYkLnRxyW6QA+n2N8X1Z/U0="},"flags/1x1/tn-55604ef719cd538ba0e2541667d4c52b08f18efe91bb52ad0954802d38ea12f7.svg":{"logical_path":"flags/1x1/tn.svg","mtime":"2017-10-08T14:45:34+02:00","size":957,"digest":"55604ef719cd538ba0e2541667d4c52b08f18efe91bb52ad0954802d38ea12f7","integrity":"sha256-VWBO9xnNU4ug4lQWZ9TFKwjxjv6Ru1KtCVSALTjqEvc="},"flags/4x3/to-db07012009b9d6ac0c8eca209a68c310d9371771cca8c6c4c2022b3db1ba39d9.svg":{"logical_path":"flags/4x3/to.svg","mtime":"2017-10-08T14:45:34+02:00","size":385,"digest":"db07012009b9d6ac0c8eca209a68c310d9371771cca8c6c4c2022b3db1ba39d9","integrity":"sha256-2wcBIAm51qwMjsogmmjDENk3F3HMqMbEwgIrPbG6Odk="},"flags/1x1/to-1ed20c5d05424776b5d3cc17487ed8311998cb69db89109a380d59722d4bc2bc.svg":{"logical_path":"flags/1x1/to.svg","mtime":"2017-10-08T14:45:34+02:00","size":387,"digest":"1ed20c5d05424776b5d3cc17487ed8311998cb69db89109a380d59722d4bc2bc","integrity":"sha256-HtIMXQVCR3a108wXSH7YMRmYy2nbiRCaOA1Zci1Lwrw="},"flags/4x3/tr-b8b3b6850c4c0ffa840db30c814dce6cb86e00e78138bafe8c2c58d263fb4503.svg":{"logical_path":"flags/4x3/tr.svg","mtime":"2017-10-08T14:45:34+02:00","size":688,"digest":"b8b3b6850c4c0ffa840db30c814dce6cb86e00e78138bafe8c2c58d263fb4503","integrity":"sha256-uLO2hQxMD/qEDbMMgU3ObLhuAOeBOLr+jCxY0mP7RQM="},"flags/1x1/tr-be0c612d78c2662c4e9c0dc836b63c8a7a5cfff48afc533f81c2ba2423542f5e.svg":{"logical_path":"flags/1x1/tr.svg","mtime":"2017-10-08T14:45:34+02:00","size":690,"digest":"be0c612d78c2662c4e9c0dc836b63c8a7a5cfff48afc533f81c2ba2423542f5e","integrity":"sha256-vgxhLXjCZixOnA3INrY8inpc//SK/FM/gcK6JCNUL14="},"flags/4x3/tt-05d9799b6519267990dccbc997c620c6478e00a96a79841494707cc3d036a381.svg":{"logical_path":"flags/4x3/tt.svg","mtime":"2017-10-08T14:45:34+02:00","size":365,"digest":"05d9799b6519267990dccbc997c620c6478e00a96a79841494707cc3d036a381","integrity":"sha256-Bdl5m2UZJnmQ3MvJl8YgxkeOAKlqeYQUlHB8w9A2o4E="},"flags/1x1/tt-4ab2fff1efee93f41060975098c5c11e043dc0853456c8c0c70cacd4ba92e8ed.svg":{"logical_path":"flags/1x1/tt.svg","mtime":"2017-10-08T14:45:34+02:00","size":393,"digest":"4ab2fff1efee93f41060975098c5c11e043dc0853456c8c0c70cacd4ba92e8ed","integrity":"sha256-SrL/8e/uk/QQYJdQmMXBHgQ9wIU0VsjAxwys1LqS6O0="},"flags/4x3/tv-14be4bb5a1fe44a8d3d58bde3dca6c63ed2974554c2008b4a2441a096c9f1fea.svg":{"logical_path":"flags/4x3/tv.svg","mtime":"2017-10-08T14:45:34+02:00","size":2957,"digest":"14be4bb5a1fe44a8d3d58bde3dca6c63ed2974554c2008b4a2441a096c9f1fea","integrity":"sha256-FL5LtaH+RKjT1YvePcpsY+0pdFVMIAi0okQaCWyfH+o="},"flags/1x1/tv-71e98b9502d12d655a169e8c89de6d5b2fcc957d67d0b7e93dd2be8ff9e6f2a8.svg":{"logical_path":"flags/1x1/tv.svg","mtime":"2017-10-08T14:45:34+02:00","size":2956,"digest":"71e98b9502d12d655a169e8c89de6d5b2fcc957d67d0b7e93dd2be8ff9e6f2a8","integrity":"sha256-cemLlQLRLWVaFp6Mid5tWy/MlX1n0LfpPdK+j/nm8qg="},"flags/4x3/tw-3b699e4e60f9765601c0f84bbf3f16f953f5a454a0cf62487a0eef358f456e66.svg":{"logical_path":"flags/4x3/tw.svg","mtime":"2017-10-08T14:45:34+02:00","size":1252,"digest":"3b699e4e60f9765601c0f84bbf3f16f953f5a454a0cf62487a0eef358f456e66","integrity":"sha256-O2meTmD5dlYBwPhLvz8W+VP1pFSgz2JIeg7vNY9FbmY="},"flags/1x1/tw-62cd36c5fc2aff70bbd11312601821ca09729e9e246e32d895e0f4a2017ac0b6.svg":{"logical_path":"flags/1x1/tw.svg","mtime":"2017-10-08T14:45:34+02:00","size":1228,"digest":"62cd36c5fc2aff70bbd11312601821ca09729e9e246e32d895e0f4a2017ac0b6","integrity":"sha256-Ys02xfwq/3C70RMSYBghyglynp4kbjLYleD0ogF6wLY="},"flags/4x3/tz-f219bcd0e3536ea3653178e0281620ebfe4c5b3b461c2c79fdf2b2a852de372e.svg":{"logical_path":"flags/4x3/tz.svg","mtime":"2017-10-08T14:45:34+02:00","size":582,"digest":"f219bcd0e3536ea3653178e0281620ebfe4c5b3b461c2c79fdf2b2a852de372e","integrity":"sha256-8hm80ONTbqNlMXjgKBYg6/5MWztGHCx5/fKyqFLeNy4="},"flags/1x1/tz-2829d5fc4fcdf2e6a149f63ea6b5a5f1af7b6b08fec523ec217ab5a6d9fb7e77.svg":{"logical_path":"flags/1x1/tz.svg","mtime":"2017-10-08T14:45:34+02:00","size":692,"digest":"2829d5fc4fcdf2e6a149f63ea6b5a5f1af7b6b08fec523ec217ab5a6d9fb7e77","integrity":"sha256-KCnV/E/N8uahSfY+prWl8a97awj+xSPsIXq1ptn7fnc="},"flags/4x3/ua-07199c03990a6b4f285e421d928ab4dba2dfdfdb3e40dd9bfa207c86bc0f3c9d.svg":{"logical_path":"flags/4x3/ua.svg","mtime":"2017-10-08T14:45:34+02:00","size":253,"digest":"07199c03990a6b4f285e421d928ab4dba2dfdfdb3e40dd9bfa207c86bc0f3c9d","integrity":"sha256-BxmcA5kKa08oXkIdkoq026Lf39s+QN2b+iB8hrwPPJ0="},"flags/1x1/ua-7c939efc452c13b0f8f489f3dfd37d3eba97c0f577c97f0b6673968af62a3207.svg":{"logical_path":"flags/1x1/ua.svg","mtime":"2017-10-08T14:45:34+02:00","size":261,"digest":"7c939efc452c13b0f8f489f3dfd37d3eba97c0f577c97f0b6673968af62a3207","integrity":"sha256-fJOe/EUsE7D49Inz39N9PrqXwPV3yX8LZnOWivYqMgc="},"flags/4x3/ug-48c6cbeae1a865915dd5a06f56bdd576e9ed9ce5085b627ef31f3757c0937a5d.svg":{"logical_path":"flags/4x3/ug.svg","mtime":"2017-10-08T14:45:34+02:00","size":5381,"digest":"48c6cbeae1a865915dd5a06f56bdd576e9ed9ce5085b627ef31f3757c0937a5d","integrity":"sha256-SMbL6uGoZZFd1aBvVr3VduntnOUIW2J+8x83V8CTel0="},"flags/1x1/ug-da6257aa7e40121a6e8e574bf201701910bbd838cbc8d76030397c0f34ae906b.svg":{"logical_path":"flags/1x1/ug.svg","mtime":"2017-10-08T14:45:34+02:00","size":5316,"digest":"da6257aa7e40121a6e8e574bf201701910bbd838cbc8d76030397c0f34ae906b","integrity":"sha256-2mJXqn5AEhpujldL8gFwGRC72DjLyNdgMDl8DzSukGs="},"flags/4x3/um-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg":{"logical_path":"flags/4x3/um.svg","mtime":"2017-10-08T14:45:34+02:00","size":6989,"digest":"6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7","integrity":"sha256-bQU/TW4UEnRXSfyNmBgz1tf48ZtyBC0aZeM1bKKafvc="},"flags/1x1/um-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg":{"logical_path":"flags/1x1/um.svg","mtime":"2017-10-08T14:45:34+02:00","size":6201,"digest":"5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435","integrity":"sha256-W89dQaptX9v8kgoBT8d9bNvfN7205n2/5o7RYbrkpDU="},"flags/4x3/us-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg":{"logical_path":"flags/4x3/us.svg","mtime":"2017-10-08T14:45:34+02:00","size":6989,"digest":"6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7","integrity":"sha256-bQU/TW4UEnRXSfyNmBgz1tf48ZtyBC0aZeM1bKKafvc="},"flags/1x1/us-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg":{"logical_path":"flags/1x1/us.svg","mtime":"2017-10-08T14:45:34+02:00","size":6201,"digest":"5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435","integrity":"sha256-W89dQaptX9v8kgoBT8d9bNvfN7205n2/5o7RYbrkpDU="},"flags/4x3/uy-3fc569672f687b4f08581179bea609b616d4b5c7d9524df918134fbcdfce6f9f.svg":{"logical_path":"flags/4x3/uy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1753,"digest":"3fc569672f687b4f08581179bea609b616d4b5c7d9524df918134fbcdfce6f9f","integrity":"sha256-P8VpZy9oe08IWBF5vqYJthbUtcfZUk35GBNPvN/Ob58="},"flags/1x1/uy-90def9dd4890c96d1b6355d0bbcebe2a6f25e2bb3bbdc29c4fbba8a5fc601254.svg":{"logical_path":"flags/1x1/uy.svg","mtime":"2017-10-08T14:45:34+02:00","size":1758,"digest":"90def9dd4890c96d1b6355d0bbcebe2a6f25e2bb3bbdc29c4fbba8a5fc601254","integrity":"sha256-kN753UiQyW0bY1XQu86+Km8l4rs7vcKcT7uopfxgElQ="},"flags/4x3/uz-e3f628aff038df64725d75a863bc636ae9da4a16f58850ad86470cc012e3a40f.svg":{"logical_path":"flags/4x3/uz.svg","mtime":"2017-10-08T14:45:34+02:00","size":1465,"digest":"e3f628aff038df64725d75a863bc636ae9da4a16f58850ad86470cc012e3a40f","integrity":"sha256-4/Yor/A432RyXXWoY7xjaunaShb1iFCthkcMwBLjpA8="},"flags/1x1/uz-db8cba32635e9c36565f28fbd6b17e1e5afe26ce0af8560eeda3f9d815ecc749.svg":{"logical_path":"flags/1x1/uz.svg","mtime":"2017-10-08T14:45:34+02:00","size":1487,"digest":"db8cba32635e9c36565f28fbd6b17e1e5afe26ce0af8560eeda3f9d815ecc749","integrity":"sha256-24y6MmNenDZWXyj71rF+Hlr+Js4K+FYO7aP52BXsx0k="},"flags/4x3/va-c8b81b061cbe7a9b0b5f376e10f1a863b4609c742dbb5663ef923b80d43984a2.svg":{"logical_path":"flags/4x3/va.svg","mtime":"2017-10-08T14:45:34+02:00","size":114058,"digest":"c8b81b061cbe7a9b0b5f376e10f1a863b4609c742dbb5663ef923b80d43984a2","integrity":"sha256-yLgbBhy+epsLXzduEPGoY7RgnHQtu1Zj75I7gNQ5hKI="},"flags/1x1/va-d267dbb1213d75780a8d41a34f9eba098a66973c1c2e7d974257f24b4be9df1c.svg":{"logical_path":"flags/1x1/va.svg","mtime":"2017-10-08T14:45:34+02:00","size":113397,"digest":"d267dbb1213d75780a8d41a34f9eba098a66973c1c2e7d974257f24b4be9df1c","integrity":"sha256-0mfbsSE9dXgKjUGjT566CYpmlzwcLn2XQlfyS0vp3xw="},"flags/4x3/vc-a578edb2904169d050107b4c02051531e4164120c4ac0ad19faabd41fccdd821.svg":{"logical_path":"flags/4x3/vc.svg","mtime":"2017-10-08T14:45:34+02:00","size":518,"digest":"a578edb2904169d050107b4c02051531e4164120c4ac0ad19faabd41fccdd821","integrity":"sha256-pXjtspBBadBQEHtMAgUVMeQWQSDErArRn6q9QfzN2CE="},"flags/1x1/vc-85bbaa2c82ed6a9e077e73501bbf071956c761a897d1c4e1bbe061ad5ca9c0ed.svg":{"logical_path":"flags/1x1/vc.svg","mtime":"2017-10-08T14:45:34+02:00","size":597,"digest":"85bbaa2c82ed6a9e077e73501bbf071956c761a897d1c4e1bbe061ad5ca9c0ed","integrity":"sha256-hbuqLILtap4HfnNQG78HGVbHYaiX0cThu+BhrVypwO0="},"flags/4x3/ve-77718854ace7f0a8d8a087e331112e4b20f76e9ca7eeb9af41bacccef09bc9b4.svg":{"logical_path":"flags/4x3/ve.svg","mtime":"2017-10-08T14:45:34+02:00","size":1199,"digest":"77718854ace7f0a8d8a087e331112e4b20f76e9ca7eeb9af41bacccef09bc9b4","integrity":"sha256-d3GIVKzn8KjYoIfjMREuSyD3bpyn7rmvQbrMzvCbybQ="},"flags/1x1/ve-27cf5f75e9b842c417f62e3c3c502acafb67db674d5a1eba8709371c186f0fe9.svg":{"logical_path":"flags/1x1/ve.svg","mtime":"2017-10-08T14:45:34+02:00","size":1229,"digest":"27cf5f75e9b842c417f62e3c3c502acafb67db674d5a1eba8709371c186f0fe9","integrity":"sha256-J89fdem4QsQX9i48PFAqyvtn22dNWh66hwk3HBhvD+k="},"flags/4x3/vg-cefdd08a49ab6cf0ce32bf42cb7a72513dfd0a1619bac86ebedee3a86fa35c80.svg":{"logical_path":"flags/4x3/vg.svg","mtime":"2017-10-08T14:45:34+02:00","size":34914,"digest":"cefdd08a49ab6cf0ce32bf42cb7a72513dfd0a1619bac86ebedee3a86fa35c80","integrity":"sha256-zv3QikmrbPDOMr9Cy3pyUT39ChYZushuvt7jqG+jXIA="},"flags/1x1/vg-45357a28f1dc16c13df5cfc44454ff28f082b90a4747898d27575650bc93cb1e.svg":{"logical_path":"flags/1x1/vg.svg","mtime":"2017-10-08T14:45:34+02:00","size":34418,"digest":"45357a28f1dc16c13df5cfc44454ff28f082b90a4747898d27575650bc93cb1e","integrity":"sha256-RTV6KPHcFsE99c/ERFT/KPCCuQpHR4mNJ1dWULyTyx4="},"flags/4x3/vi-a83bcb200832191afa4091bf2c275289aa37f664027dfce6db6b0f7109fe3b6a.svg":{"logical_path":"flags/4x3/vi.svg","mtime":"2017-10-08T14:45:34+02:00","size":12347,"digest":"a83bcb200832191afa4091bf2c275289aa37f664027dfce6db6b0f7109fe3b6a","integrity":"sha256-qDvLIAgyGRr6QJG/LCdSiao39mQCffzm22sPcQn+O2o="},"flags/1x1/vi-cf017aea4123b31f1cf60087c4742b6d57a4213bece5b3f760e16a84a811a74c.svg":{"logical_path":"flags/1x1/vi.svg","mtime":"2017-10-08T14:45:34+02:00","size":12314,"digest":"cf017aea4123b31f1cf60087c4742b6d57a4213bece5b3f760e16a84a811a74c","integrity":"sha256-zwF66kEjsx8c9gCHxHQrbVekITvs5bP3YOFqhKgRp0w="},"flags/4x3/vn-16730ca8238b081b7376fc3829eaac4ddd61a5b423c24c9f07c9a02848c4827f.svg":{"logical_path":"flags/4x3/vn.svg","mtime":"2017-10-08T14:45:34+02:00","size":560,"digest":"16730ca8238b081b7376fc3829eaac4ddd61a5b423c24c9f07c9a02848c4827f","integrity":"sha256-FnMMqCOLCBtzdvw4KeqsTd1hpbQjwkyfB8mgKEjEgn8="},"flags/1x1/vn-fa15ba0b7d997046ffb7f2469f1254f7119503f2e95b35467151a947ff9b45d6.svg":{"logical_path":"flags/1x1/vn.svg","mtime":"2017-10-08T14:45:34+02:00","size":571,"digest":"fa15ba0b7d997046ffb7f2469f1254f7119503f2e95b35467151a947ff9b45d6","integrity":"sha256-+hW6C32ZcEb/t/JGnxJU9xGVA/LpWzVGcVGpR/+bRdY="},"flags/4x3/vu-4e084d69e403d0af11dfc47f622fb2ba88649b17b2038f6ebf533ce3c9907404.svg":{"logical_path":"flags/4x3/vu.svg","mtime":"2017-10-08T14:45:34+02:00","size":5820,"digest":"4e084d69e403d0af11dfc47f622fb2ba88649b17b2038f6ebf533ce3c9907404","integrity":"sha256-TghNaeQD0K8R38R/Yi+yuohkmxeyA49uv1M848mQdAQ="},"flags/1x1/vu-3c93d045c0ec3c08c0e9af785016995cbd7a28ddf08ec9abfce0e39c4e842058.svg":{"logical_path":"flags/1x1/vu.svg","mtime":"2017-10-08T14:45:34+02:00","size":5783,"digest":"3c93d045c0ec3c08c0e9af785016995cbd7a28ddf08ec9abfce0e39c4e842058","integrity":"sha256-PJPQRcDsPAjA6a94UBaZXL16KN3wjsmr/ODjnE6EIFg="},"flags/4x3/wf-039b39c2ab1d92470427e12e2310b2ad9d8a97a36a064b197858a083f5d7fd23.svg":{"logical_path":"flags/4x3/wf.svg","mtime":"2017-10-08T14:45:34+02:00","size":322,"digest":"039b39c2ab1d92470427e12e2310b2ad9d8a97a36a064b197858a083f5d7fd23","integrity":"sha256-A5s5wqsdkkcEJ+EuIxCyrZ2Kl6NqBksZeFigg/XX/SM="},"flags/1x1/wf-94672c2e6f10547f0023b9f0fff3adfda4d60f91340f287767f1ce68e5a57a12.svg":{"logical_path":"flags/1x1/wf.svg","mtime":"2017-10-08T14:45:34+02:00","size":310,"digest":"94672c2e6f10547f0023b9f0fff3adfda4d60f91340f287767f1ce68e5a57a12","integrity":"sha256-lGcsLm8QVH8AI7nw//Ot/aTWD5E0Dyh3Z/HOaOWlehI="},"flags/4x3/ws-f91aa288555a505b3e965c781de8207e2cb6e1d165603c80c54cfb111d277874.svg":{"logical_path":"flags/4x3/ws.svg","mtime":"2017-10-08T14:45:34+02:00","size":901,"digest":"f91aa288555a505b3e965c781de8207e2cb6e1d165603c80c54cfb111d277874","integrity":"sha256-+RqiiFVaUFs+llx4Heggfiy24dFlYDyAxUz7ER0neHQ="},"flags/1x1/ws-e6b2a35c9702941a1fe9d84ab2bf8b28b4931b6fce24efb4ce63d3a8fb8c3b90.svg":{"logical_path":"flags/1x1/ws.svg","mtime":"2017-10-08T14:45:34+02:00","size":879,"digest":"e6b2a35c9702941a1fe9d84ab2bf8b28b4931b6fce24efb4ce63d3a8fb8c3b90","integrity":"sha256-5rKjXJcClBof6dhKsr+LKLSTG2/OJO+0zmPTqPuMO5A="},"flags/4x3/ye-f3c80f7f99e1f12a079fe0d96830005657aff1687da92391c0acb882b014ff8c.svg":{"logical_path":"flags/4x3/ye.svg","mtime":"2017-10-08T14:45:34+02:00","size":287,"digest":"f3c80f7f99e1f12a079fe0d96830005657aff1687da92391c0acb882b014ff8c","integrity":"sha256-88gPf5nh8SoHn+DZaDAAVlev8Wh9qSORwKy4grAU/4w="},"flags/1x1/ye-a9b9b54ec295aed99c5439093242110193626524d336cc3115864e5ec0b787da.svg":{"logical_path":"flags/1x1/ye.svg","mtime":"2017-10-08T14:45:34+02:00","size":298,"digest":"a9b9b54ec295aed99c5439093242110193626524d336cc3115864e5ec0b787da","integrity":"sha256-qbm1TsKVrtmcVDkJMkIRAZNiZSTTNswxFYZOXsC3h9o="},"flags/4x3/yt-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg":{"logical_path":"flags/4x3/yt.svg","mtime":"2017-10-08T14:45:34+02:00","size":329,"digest":"6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554","integrity":"sha256-b5HSZsDJZfI0DqSalYv8dEXXbdmr9wlQkVQ82Nr+BVQ="},"flags/1x1/yt-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg":{"logical_path":"flags/1x1/yt.svg","mtime":"2017-10-08T14:45:34+02:00","size":317,"digest":"ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9","integrity":"sha256-/+x298QK1yqp99Lruqvrjq+FmEUo2YiwFsciTbhSLak="},"flags/4x3/za-57f1167ce07b3f345798c69ca8f159cb159f5dccb3c101616cc007ef1f2663d6.svg":{"logical_path":"flags/4x3/za.svg","mtime":"2017-10-08T14:45:34+02:00","size":1085,"digest":"57f1167ce07b3f345798c69ca8f159cb159f5dccb3c101616cc007ef1f2663d6","integrity":"sha256-V/EWfOB7PzRXmMacqPFZyxWfXcyzwQFhbMAH7x8mY9Y="},"flags/1x1/za-79fe7bd792f8b520caaa2c3db12ab5138cf24867d344a38167580ab6243322b1.svg":{"logical_path":"flags/1x1/za.svg","mtime":"2017-10-08T14:45:34+02:00","size":1033,"digest":"79fe7bd792f8b520caaa2c3db12ab5138cf24867d344a38167580ab6243322b1","integrity":"sha256-ef5715L4tSDKqiw9sSq1E4zySGfTRKOBZ1gKtiQzIrE="},"flags/4x3/zm-9a1622c4151a7379ecc32434948be48ba5af564e136232d1eb6e2a4dfec3baa9.svg":{"logical_path":"flags/4x3/zm.svg","mtime":"2017-10-08T14:45:34+02:00","size":8223,"digest":"9a1622c4151a7379ecc32434948be48ba5af564e136232d1eb6e2a4dfec3baa9","integrity":"sha256-mhYixBUac3nswyQ0lIvki6WvVk4TYjLR624qTf7Duqk="},"flags/1x1/zm-7bc0c09a0b3fd9f0dd01481080be99465d71218ac0679fbb077086f24835433e.svg":{"logical_path":"flags/1x1/zm.svg","mtime":"2017-10-08T14:45:34+02:00","size":8281,"digest":"7bc0c09a0b3fd9f0dd01481080be99465d71218ac0679fbb077086f24835433e","integrity":"sha256-e8DAmgs/2fDdAUgQgL6ZRl1xIYrAZ5+7B3CG8kg1Qz4="},"flags/4x3/zw-2576570465c39038f092c242d89e300a0943c50c090c922bc3bd9c8af9161478.svg":{"logical_path":"flags/4x3/zw.svg","mtime":"2017-10-08T14:45:34+02:00","size":3083,"digest":"2576570465c39038f092c242d89e300a0943c50c090c922bc3bd9c8af9161478","integrity":"sha256-JXZXBGXDkDjwksJC2J4wCglDxQwJDJIrw72civkWFHg="},"flags/1x1/zw-4ee873fa4e174f8d150c672917c8f506b530edcca86288e4b7942c7c74a63caf.svg":{"logical_path":"flags/1x1/zw.svg","mtime":"2017-10-08T14:45:34+02:00","size":2985,"digest":"4ee873fa4e174f8d150c672917c8f506b530edcca86288e4b7942c7c74a63caf","integrity":"sha256-Tuhz+k4XT40VDGcpF8j1BrUw7cyoYojkt5QsfHSmPK8="},"flags/4x3/eu-ca89dc2597154e6887930fd8bdf47636f82dc13c02d9610a3da2d156f09265d0.svg":{"logical_path":"flags/4x3/eu.svg","mtime":"2017-10-08T14:45:34+02:00","size":1289,"digest":"ca89dc2597154e6887930fd8bdf47636f82dc13c02d9610a3da2d156f09265d0","integrity":"sha256-yoncJZcVTmiHkw/YvfR2NvgtwTwC2WEKPaLRVvCSZdA="},"flags/1x1/eu-73d6f1f646500e1dc04ca798c0d192f9174268e3480a8b1d742004919b7463f9.svg":{"logical_path":"flags/1x1/eu.svg","mtime":"2017-10-08T14:45:34+02:00","size":1290,"digest":"73d6f1f646500e1dc04ca798c0d192f9174268e3480a8b1d742004919b7463f9","integrity":"sha256-c9bx9kZQDh3ATKeYwNGS+RdCaONICosddCAEkZt0Y/k="},"flags/4x3/gb-eng-ec744a15618e0a99abee9e53b70985e4cbf2fc2b7051cf239d6dd19b302e4ae9.svg":{"logical_path":"flags/4x3/gb-eng.svg","mtime":"2017-10-08T14:45:34+02:00","size":253,"digest":"ec744a15618e0a99abee9e53b70985e4cbf2fc2b7051cf239d6dd19b302e4ae9","integrity":"sha256-7HRKFWGOCpmr7p5TtwmF5Mvy/CtwUc8jnW3RmzAuSuk="},"flags/1x1/gb-eng-b1650bba14f5fa14df73f964c3b3dfeca8e1d48c19f1f9b3fded729cc96cf39d.svg":{"logical_path":"flags/1x1/gb-eng.svg","mtime":"2017-10-08T14:45:34+02:00","size":258,"digest":"b1650bba14f5fa14df73f964c3b3dfeca8e1d48c19f1f9b3fded729cc96cf39d","integrity":"sha256-sWULuhT1+hTfc/lkw7Pf7Kjh1IwZ8fmz/e1ynMls850="},"flags/4x3/gb-nir-0a09e794313d063a01d817f3ae931054dc9baddd38cfb9a0e4b3c9fa5852bc41.svg":{"logical_path":"flags/4x3/gb-nir.svg","mtime":"2017-10-08T14:45:34+02:00","size":34786,"digest":"0a09e794313d063a01d817f3ae931054dc9baddd38cfb9a0e4b3c9fa5852bc41","integrity":"sha256-CgnnlDE9BjoB2BfzrpMQVNybrd04z7mg5LPJ+lhSvEE="},"flags/1x1/gb-nir-c54214991841f1e32a4aaee502c6a7bde3ec3b43c0e74886d9bc7112f652035a.svg":{"logical_path":"flags/1x1/gb-nir.svg","mtime":"2017-10-08T14:45:34+02:00","size":35668,"digest":"c54214991841f1e32a4aaee502c6a7bde3ec3b43c0e74886d9bc7112f652035a","integrity":"sha256-xUIUmRhB8eMqSq7lAsanvePsO0PA50iG2bxxEvZSA1o="},"flags/4x3/gb-sct-c78f4e58aa162732c0a401eebe714a632ed03c5171a13bb98eb67365b338a0ab.svg":{"logical_path":"flags/4x3/gb-sct.svg","mtime":"2017-10-08T14:45:34+02:00","size":242,"digest":"c78f4e58aa162732c0a401eebe714a632ed03c5171a13bb98eb67365b338a0ab","integrity":"sha256-x49OWKoWJzLApAHuvnFKYy7QPFFxoTu5jrZzZbM4oKs="},"flags/1x1/gb-sct-4983d57dfd37f55b40b22dddfeefef38d2113818914755ee830c61b97549aaf3.svg":{"logical_path":"flags/1x1/gb-sct.svg","mtime":"2017-10-08T14:45:34+02:00","size":250,"digest":"4983d57dfd37f55b40b22dddfeefef38d2113818914755ee830c61b97549aaf3","integrity":"sha256-SYPVff039VtAsi3d/u/vONIROBiRR1XugwxhuXVJqvM="},"flags/4x3/gb-wls-963f0b8dfe114a50032ae1db25542a12d2032a30d88bbfd4698e30f50e752e31.svg":{"logical_path":"flags/4x3/gb-wls.svg","mtime":"2017-10-08T14:45:34+02:00","size":14488,"digest":"963f0b8dfe114a50032ae1db25542a12d2032a30d88bbfd4698e30f50e752e31","integrity":"sha256-lj8Ljf4RSlADKuHbJVQqEtIDKjDYi7/UaY4w9Q51LjE="},"flags/1x1/gb-wls-7d5a4120e3e0f7618bde0d4270b0c097f18472e6b1a285918d11538fb001cb60.svg":{"logical_path":"flags/1x1/gb-wls.svg","mtime":"2017-10-08T14:45:34+02:00","size":14312,"digest":"7d5a4120e3e0f7618bde0d4270b0c097f18472e6b1a285918d11538fb001cb60","integrity":"sha256-fVpBIOPg92GL3g1CcLDAl/GEcuaxooWRjRFTj7ABy2A="},"flags/4x3/un-c75bef804cdbe6617032bfb0332f009c144b1317cb073e71deb5619fbedefcdb.svg":{"logical_path":"flags/4x3/un.svg","mtime":"2017-10-08T14:45:34+02:00","size":31012,"digest":"c75bef804cdbe6617032bfb0332f009c144b1317cb073e71deb5619fbedefcdb","integrity":"sha256-x1vvgEzb5mFwMr+wMy8AnBRLExfLBz5x3rVhn77e/Ns="},"flags/1x1/un-ccaaa4bfae7e430b8bd72ddfa6fb07f167c1001490fd247a37898f4632803b1e.svg":{"logical_path":"flags/1x1/un.svg","mtime":"2017-10-08T14:45:34+02:00","size":32142,"digest":"ccaaa4bfae7e430b8bd72ddfa6fb07f167c1001490fd247a37898f4632803b1e","integrity":"sha256-zKqkv65+QwuL1y3fpvsH8WfBABSQ/SR6N4mPRjKAOx4="},"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot":{"logical_path":"font-awesome/fontawesome-webfont.eot","mtime":"2017-10-08T14:45:34+02:00","size":165742,"digest":"7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979","integrity":"sha256-e/yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk="},"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2":{"logical_path":"font-awesome/fontawesome-webfont.woff2","mtime":"2017-10-08T14:45:34+02:00","size":77160,"digest":"2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe","integrity":"sha256-Kt78vAQefRj88tQXh53FoJmXqmTWdbejxLbOM9oT8/4="},"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff":{"logical_path":"font-awesome/fontawesome-webfont.woff","mtime":"2017-10-08T14:45:34+02:00","size":98024,"digest":"ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07","integrity":"sha256-ugxZ3rVFD1y0Gz+TYJ7i0NmVQVh33foiPoqKdTNHTwc="},"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf":{"logical_path":"font-awesome/fontawesome-webfont.ttf","mtime":"2017-10-08T14:45:34+02:00","size":165548,"digest":"aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8","integrity":"sha256-qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg="},"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg":{"logical_path":"font-awesome/fontawesome-webfont.svg","mtime":"2017-10-08T14:45:34+02:00","size":444379,"digest":"ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4","integrity":"sha256-rWFXkmwWIrpOHQPUePFUE2hSS/xG9R5C/g2UX37zI+Q="},"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png":{"logical_path":"markers-soft.png","mtime":"2016-05-21T23:41:15+02:00","size":41226,"digest":"e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739","integrity":"sha256-54eE5O1wqv/d1zwxX6tZAjPMTntyOI191HoUeW/Hxzk="},"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png":{"logical_path":"markers-shadow.png","mtime":"2016-05-21T23:41:15+02:00","size":535,"digest":"8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20","integrity":"sha256-hwOiJicQ9ePSnmXSrN+Q1lEuFZ4RnSe4I0cx2KYgiiA="},"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png":{"logical_path":"markers-soft@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":66408,"digest":"c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf","integrity":"sha256-wedyU6i/vjDOwkiF1wRvRDt267ZvTJYfdwg7A/Sly68="},"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png":{"logical_path":"markers-shadow@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":1469,"digest":"b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a","integrity":"sha256-shpTa+JzE/tQT2n1iZ/wsSRbJ2VxdprAjWwyw1Z25Ho="},"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png":{"logical_path":"leaflet/dist/images/layers.png","mtime":"2018-01-18T21:11:10+01:00","size":696,"digest":"1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6","integrity":"sha256-Hbvp0CjikvNvy6j4s6KNXokydU/CIVuaxp5M3s9RB8Y="},"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png":{"logical_path":"leaflet/dist/images/layers-2x.png","mtime":"2018-01-18T21:11:10+01:00","size":1259,"digest":"066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf","integrity":"sha256-Bm2sqFDY/77wB68AsG6sABVyje4nnFHzy2xxbffELt8="},"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png":{"logical_path":"leaflet/dist/images/marker-icon.png","mtime":"2018-01-18T21:11:10+01:00","size":1466,"digest":"574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437","integrity":"sha256-V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy/owHesdxDc="},"regions/CA-QC-776d563b6a4ac4312cae9f0bfe630c20711346e8dbddd41040998eba79f4b588.png":{"logical_path":"regions/CA-QC.png","mtime":"2015-10-22T22:54:30+02:00","size":567,"digest":"776d563b6a4ac4312cae9f0bfe630c20711346e8dbddd41040998eba79f4b588","integrity":"sha256-d21WO2pKxDEsrp8L/mMMIHETRujb3dQQQJmOunn0tYg="},"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js":{"logical_path":"modernizr.js","mtime":"2017-10-08T14:44:59+02:00","size":51365,"digest":"654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97","integrity":"sha256-ZUIi3r6AGLEvGZPO3f8w3BY6fVAI15hpw5nW0WcyH5c="},"agendadescommuns-cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6.png":{"logical_path":"agendadescommuns.png","mtime":"2015-10-22T22:54:30+02:00","size":2760,"digest":"cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6","integrity":"sha256-zUDjQgJL4Fh/jnoOOQLTLPZwCdNJtnwA9ofgSZ/en/Y="},"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png":{"logical_path":"alert.png","mtime":"2014-07-04T14:08:56+02:00","size":47876,"digest":"762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906","integrity":"sha256-dirOlHkygkOkQGE0a2TE1rmX6WPGjfxr3dnk0kEZKQY="},"baby_gnu_adl-232caf355c30740d5d9b30491887cd546b8849b33ca9bdb6cc71f8a47ea61815.png":{"logical_path":"baby_gnu_adl.png","mtime":"2016-09-11T17:42:49+02:00","size":10155,"digest":"232caf355c30740d5d9b30491887cd546b8849b33ca9bdb6cc71f8a47ea61815","integrity":"sha256-IyyvNVwwdA1dmzBJGIfNVGuISbM8qb22zHH4pH6mGBU="},"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg":{"logical_path":"baby_gnu_adl.svg","mtime":"2016-09-11T17:42:49+02:00","size":109635,"digest":"97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e","integrity":"sha256-lyUQBdMiXPHVi4xJfWt5BdvJVgzIrNUBGPzOYNCiZ54="},"communs-cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6.png":{"logical_path":"communs.png","mtime":"2015-10-22T22:54:30+02:00","size":2760,"digest":"cd40e342024be0587f8e7a0e3902d32cf67009d349b67c00f687e0499fde9ff6","integrity":"sha256-zUDjQgJL4Fh/jnoOOQLTLPZwCdNJtnwA9ofgSZ/en/Y="},"lef-small-160cf5b883add60c9c0f4361bd8425c75f6fb23b0e551a0b941fa0491c70e0c9.png":{"logical_path":"lef-small.png","mtime":"2015-03-29T11:07:15+02:00","size":1089,"digest":"160cf5b883add60c9c0f4361bd8425c75f6fb23b0e551a0b941fa0491c70e0c9","integrity":"sha256-Fgz1uIOt1gycD0NhvYQlx19vsjsOVRoLlB+gSRxw4Mk="},"lef-9fcdd7ddd4d40de29c3809b59688c668b85f5628e219d4cd8a8810b72a64533b.png":{"logical_path":"lef.png","mtime":"2017-01-07T19:07:36+01:00","size":8332,"digest":"9fcdd7ddd4d40de29c3809b59688c668b85f5628e219d4cd8a8810b72a64533b","integrity":"sha256-n83X3dTUDeKcOAm1lojGaLhfVijiGdTNiogQtypkUzs="},"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png":{"logical_path":"priorite-logiciel-libre-je-soutiens-april_2_m.png","mtime":"2015-10-22T22:54:30+02:00","size":16952,"digest":"6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc","integrity":"sha256-ZELkVOlu1FzB68QGc6bFC9KGucKOpqi1hXLpT31kWfw="},"team-cb04c7a311f7160c4eb6a281eae68be84f26991dde5d415bb4e205e6726ae275.png":{"logical_path":"team.png","mtime":"2014-07-04T14:08:56+02:00","size":3586,"digest":"cb04c7a311f7160c4eb6a281eae68be84f26991dde5d415bb4e205e6726ae275","integrity":"sha256-ywTHoxH3FgxOtqKB6uaL6E8mmR3eXUFbtOIF5nJq4nU="},"application-7a3f00de5ab63c63aeb8d9d4911869e3ee0ac0e05c869adbfdb78ba2a79dd517.js":{"logical_path":"application.js","mtime":"2017-10-08T00:43:01+02:00","size":2822533,"digest":"7a3f00de5ab63c63aeb8d9d4911869e3ee0ac0e05c869adbfdb78ba2a79dd517","integrity":"sha256-ej8A3lq2PGOuuNnUkRhp4+4KwOBchprb/beLoqed1Rc="},"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png":{"logical_path":"markers-matte.png","mtime":"2016-05-21T23:41:15+02:00","size":14323,"digest":"497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9","integrity":"sha256-SXgmVFqQ4JokBQTRRTDrpFgjsZ/UQXXgnifEfNgi3bk="},"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png":{"logical_path":"markers-matte@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":31113,"digest":"948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823","integrity":"sha256-lI/IxEJvBPYJZO0gOUJH9FsLYOV10COYubaBDnopqCM="},"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png":{"logical_path":"markers-plain.png","mtime":"2016-05-21T23:41:15+02:00","size":7946,"digest":"cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff","integrity":"sha256-zyM0I6pE51rAAx53uLpXHNMzEBBRfhGX5j+3sGhWwf8="},"leaflet/dist/images/marker-icon-2x-2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d.png":{"logical_path":"leaflet/dist/images/marker-icon-2x.png","mtime":"2017-10-08T14:45:01+02:00","size":2586,"digest":"2d77a2e4c2f08bbac41808324ef946b9a2fe61b6150480d011b72b379c3b238d","integrity":"sha256-LXei5MLwi7rEGAgyTvlGuaL+YbYVBIDQEbcrN5w7I40="},"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png":{"logical_path":"leaflet/dist/images/marker-shadow.png","mtime":"2018-01-18T21:11:10+01:00","size":618,"digest":"264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da","integrity":"sha256-Jk9cZAM58ELdcpBiz8BMF/jqDymIK1OOOEjtjxDttNo="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2017-10-08T14:45:44+02:00","size":86,"digest":"ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410","integrity":"sha256-rmWnriLEwjEVlI/etcBckTfb0Tyi1CazxMPEGDRR5BA="},"tinymce/langs/ar-e47a394dbc461d20aa547fa0c2027a9dad45fe55e18adb0da309045be6ed4109.js":{"logical_path":"tinymce/langs/ar.js","mtime":"2017-10-08T14:45:46+02:00","size":17776,"digest":"e47a394dbc461d20aa547fa0c2027a9dad45fe55e18adb0da309045be6ed4109","integrity":"sha256-5Ho5TbxGHSCqVH+gwgJ6na1F/lXhitsNowkEW+btQQk="},"tinymce/langs/ar_SA-24b62c76e99e114ae44480a67edbacf74f9fed0ff7afbeacce4966f1bc80333b.js":{"logical_path":"tinymce/langs/ar_SA.js","mtime":"2018-01-05T22:13:22+01:00","size":10003,"digest":"24b62c76e99e114ae44480a67edbacf74f9fed0ff7afbeacce4966f1bc80333b","integrity":"sha256-JLYsdumeEUrkRICmftus90+f7Q/3r76szklm8byAMzs="},"tinymce/langs/az-d40cecd6eb423f910f528ae98dcdaba4c2449802621759437174cf8c8c0d5b25.js":{"logical_path":"tinymce/langs/az.js","mtime":"2018-01-05T22:13:22+01:00","size":9680,"digest":"d40cecd6eb423f910f528ae98dcdaba4c2449802621759437174cf8c8c0d5b25","integrity":"sha256-1Azs1utCP5EPUorpjc2rpMJEmAJiF1lDcXTPjIwNWyU="},"tinymce/langs/be-42e2884c0f2394afa1a17e31e702660eeea0d84618bbd18155cb0313c6eb5f69.js":{"logical_path":"tinymce/langs/be.js","mtime":"2017-10-08T14:45:46+02:00","size":21064,"digest":"42e2884c0f2394afa1a17e31e702660eeea0d84618bbd18155cb0313c6eb5f69","integrity":"sha256-QuKITA8jlK+hoX4x5wJmDu6g2EYYu9GBVcsDE8brX2k="},"tinymce/langs/bg_BG-2fac9d785519d2791d42881fcc08c6a82e841575785690259d7f64e1b88d7db3.js":{"logical_path":"tinymce/langs/bg_BG.js","mtime":"2017-10-08T14:45:46+02:00","size":23945,"digest":"2fac9d785519d2791d42881fcc08c6a82e841575785690259d7f64e1b88d7db3","integrity":"sha256-L6ydeFUZ0nkdQogfzAjGqC6EFXV4VpAlnX9k4biNfbM="},"tinymce/langs/bn_BD-ef48a9094445dfa624af0c35902f60b7949b30585b5e9bc760a225fe2c07cbd3.js":{"logical_path":"tinymce/langs/bn_BD.js","mtime":"2018-01-05T22:13:22+01:00","size":6846,"digest":"ef48a9094445dfa624af0c35902f60b7949b30585b5e9bc760a225fe2c07cbd3","integrity":"sha256-70ipCURF36Ykrww1kC9gt5SbMFhbXpvHYKIl/iwHy9M="},"tinymce/langs/bs-eb66c6d6910a30b950d7a0e784027ed288e6e5a2c6db7741da3359f2067e2e0e.js":{"logical_path":"tinymce/langs/bs.js","mtime":"2018-01-05T22:13:22+01:00","size":6970,"digest":"eb66c6d6910a30b950d7a0e784027ed288e6e5a2c6db7741da3359f2067e2e0e","integrity":"sha256-62bG1pEKMLlQ16DnhAJ+0ojm5aLG23dB2jNZ8gZ+Lg4="},"tinymce/langs/ca-77ab49d6420318ed7f5fd51b6856bc396c393095bd78ea91dad83e38e5859637.js":{"logical_path":"tinymce/langs/ca.js","mtime":"2017-10-08T14:45:46+02:00","size":7787,"digest":"77ab49d6420318ed7f5fd51b6856bc396c393095bd78ea91dad83e38e5859637","integrity":"sha256-d6tJ1kIDGO1/X9UbaFa8OWw5MJW9eOqR2tg+OOWFljc="},"tinymce/langs/cs-3d7ecd619895e3e4c7e1db06f6526682ef88f22f6e8b50d7b45ed0ae7c206714.js":{"logical_path":"tinymce/langs/cs.js","mtime":"2017-10-08T14:45:46+02:00","size":8751,"digest":"3d7ecd619895e3e4c7e1db06f6526682ef88f22f6e8b50d7b45ed0ae7c206714","integrity":"sha256-PX7NYZiV4+TH4dsG9lJmgu+I8i9ui1DXtF7QrnwgZxQ="},"tinymce/langs/cs_CZ-4b0778d233e200dea350f8361129da2844e23d1c0f2d524aeffa6d34e581368d.js":{"logical_path":"tinymce/langs/cs_CZ.js","mtime":"2018-01-05T22:13:22+01:00","size":8399,"digest":"4b0778d233e200dea350f8361129da2844e23d1c0f2d524aeffa6d34e581368d","integrity":"sha256-Swd40jPiAN6jUPg2ESnaKETiPRwPLVJK7/ptNOWBNo0="},"tinymce/langs/cy-a847ff54657ccf76eec362cc14fbc63adb4c67f9b1de023b29d817aba4fec062.js":{"logical_path":"tinymce/langs/cy.js","mtime":"2017-10-08T14:45:46+02:00","size":6142,"digest":"a847ff54657ccf76eec362cc14fbc63adb4c67f9b1de023b29d817aba4fec062","integrity":"sha256-qEf/VGV8z3buw2LMFPvGOttMZ/mx3gI7KdgXq6T+wGI="},"tinymce/langs/da-a87f3ae1c442c3bb26b81569687e98072d038269360361ec9728f00d6b17c282.js":{"logical_path":"tinymce/langs/da.js","mtime":"2017-10-08T14:45:46+02:00","size":7513,"digest":"a87f3ae1c442c3bb26b81569687e98072d038269360361ec9728f00d6b17c282","integrity":"sha256-qH864cRCw7smuBVpaH6YBy0Dgmk2A2HslyjwDWsXwoI="},"tinymce/langs/de-a10c8f6f1e53da776e7026dffd54ea8ba527492b767e5b54ae5c3974f6953311.js":{"logical_path":"tinymce/langs/de.js","mtime":"2017-10-08T14:45:46+02:00","size":8280,"digest":"a10c8f6f1e53da776e7026dffd54ea8ba527492b767e5b54ae5c3974f6953311","integrity":"sha256-oQyPbx5T2nducCbf/VTqi6UnSSt2fltUrlw5dPaVMxE="},"tinymce/langs/de_AT-a32eec12ce12b06fc2c8919d2372242e9596712c96dc9bcfff1fc8b7dc458627.js":{"logical_path":"tinymce/langs/de_AT.js","mtime":"2017-10-08T14:45:46+02:00","size":8308,"digest":"a32eec12ce12b06fc2c8919d2372242e9596712c96dc9bcfff1fc8b7dc458627","integrity":"sha256-oy7sEs4SsG/CyJGdI3IkLpWWcSyW3JvP/x/It9xFhic="},"tinymce/langs/dv-182756bf33409a8b76bc684d0a2ab86881718c360d1f1fb3fbc609ce3f5e3f49.js":{"logical_path":"tinymce/langs/dv.js","mtime":"2017-10-08T14:45:46+02:00","size":18100,"digest":"182756bf33409a8b76bc684d0a2ab86881718c360d1f1fb3fbc609ce3f5e3f49","integrity":"sha256-GCdWvzNAmot2vGhNCiq4aIFxjDYNHx+z+8YJzj9eP0k="},"tinymce/langs/el-6bbdbf3ccb2b2f22f961eb6749b43fe401c84fd6d89cd3f76a538dc2d06bb071.js":{"logical_path":"tinymce/langs/el.js","mtime":"2017-10-08T14:45:46+02:00","size":22973,"digest":"6bbdbf3ccb2b2f22f961eb6749b43fe401c84fd6d89cd3f76a538dc2d06bb071","integrity":"sha256-a72/PMsrLyL5YetnSbQ/5AHIT9bYnNP3alONwtBrsHE="},"tinymce/langs/en_CA-1a9457da814b0a1f15687a00f3ae4b38da0301445b52c29a423a38c943d9a431.js":{"logical_path":"tinymce/langs/en_CA.js","mtime":"2017-10-08T14:45:46+02:00","size":6916,"digest":"1a9457da814b0a1f15687a00f3ae4b38da0301445b52c29a423a38c943d9a431","integrity":"sha256-GpRX2oFLCh8VaHoA865LONoDAURbUsKaQjo4yUPZpDE="},"tinymce/langs/en_GB-a0f7752ff9ddf3ed3d2cd24fee04fe585bca0babc4ce655560c923ad386c0c07.js":{"logical_path":"tinymce/langs/en_GB.js","mtime":"2017-10-08T14:45:46+02:00","size":5907,"digest":"a0f7752ff9ddf3ed3d2cd24fee04fe585bca0babc4ce655560c923ad386c0c07","integrity":"sha256-oPd1L/nd8+09LNJP7gT+WFvKC6vEzmVVYMkjrThsDAc="},"tinymce/langs/eo-cbac4d7ebcb0679845b852d9354e74586e78cf13eef82de1400cf6b465e203cd.js":{"logical_path":"tinymce/langs/eo.js","mtime":"2018-01-05T22:13:22+01:00","size":7466,"digest":"cbac4d7ebcb0679845b852d9354e74586e78cf13eef82de1400cf6b465e203cd","integrity":"sha256-y6xNfrywZ5hFuFLZNU50WG54zxPu+C3hQAz2tGXiA80="},"tinymce/langs/es-133cb5bd627c2a299544586bf365859b5a1c96c57d18c90e7853048434a809b6.js":{"logical_path":"tinymce/langs/es.js","mtime":"2017-10-08T14:45:46+02:00","size":7809,"digest":"133cb5bd627c2a299544586bf365859b5a1c96c57d18c90e7853048434a809b6","integrity":"sha256-Ezy1vWJ8KimVRFhr82WFm1oclsV9GMkOeFMEhDSoCbY="},"tinymce/langs/es_MX-352fcdff567919ff09a2e19c56d8059d339bffdbd999bcc82aa6d8340c19bbb9.js":{"logical_path":"tinymce/langs/es_MX.js","mtime":"2017-10-08T14:45:46+02:00","size":7894,"digest":"352fcdff567919ff09a2e19c56d8059d339bffdbd999bcc82aa6d8340c19bbb9","integrity":"sha256-NS/N/1Z5Gf8JouGcVtgFnTOb/9vZmbzIKqbYNAwZu7k="},"tinymce/langs/et-2cfc3da0ff39a37f0bd3c896d49604028f231ff0e7d8ebbc30dbfd4b87125f06.js":{"logical_path":"tinymce/langs/et.js","mtime":"2017-10-08T14:45:46+02:00","size":7784,"digest":"2cfc3da0ff39a37f0bd3c896d49604028f231ff0e7d8ebbc30dbfd4b87125f06","integrity":"sha256-LPw9oP85o38L08iW1JYEAo8jH/Dn2Ou8MNv9S4cSXwY="},"tinymce/langs/eu-8698ae4de236fcd490d0f45d485dbd33d8e9de6eb3db51191e1b4f8ea96a4d06.js":{"logical_path":"tinymce/langs/eu.js","mtime":"2018-01-05T22:13:22+01:00","size":7011,"digest":"8698ae4de236fcd490d0f45d485dbd33d8e9de6eb3db51191e1b4f8ea96a4d06","integrity":"sha256-hpiuTeI2/NSQ0PRdSF29M9jp3m6z21EZHhtPjqlqTQY="},"tinymce/langs/fa-7eff96595e93d4b0df484dd90c14b7b412966157ed8293f54429e9418882bdb2.js":{"logical_path":"tinymce/langs/fa.js","mtime":"2018-01-05T22:13:22+01:00","size":16462,"digest":"7eff96595e93d4b0df484dd90c14b7b412966157ed8293f54429e9418882bdb2","integrity":"sha256-fv+WWV6T1LDfSE3ZDBS3tBKWYVftgpP1RCnpQYiCvbI="},"tinymce/langs/fa_IR-2f9d33f16718ae9c1f3642905b58434ed2662fb66448c4d115b8491aa68e7904.js":{"logical_path":"tinymce/langs/fa_IR.js","mtime":"2017-10-08T14:45:46+02:00","size":17725,"digest":"2f9d33f16718ae9c1f3642905b58434ed2662fb66448c4d115b8491aa68e7904","integrity":"sha256-L50z8WcYrpwfNkKQW1hDTtJmL7ZkSMTRFbhJGqaOeQQ="},"tinymce/langs/fi-6ca2a93d045067a86e8ea973d0b89368054b15eb9b9625bf1ca871608a5cb77c.js":{"logical_path":"tinymce/langs/fi.js","mtime":"2018-01-05T22:13:22+01:00","size":8143,"digest":"6ca2a93d045067a86e8ea973d0b89368054b15eb9b9625bf1ca871608a5cb77c","integrity":"sha256-bKKpPQRQZ6hujqlz0LiTaAVLFeubliW/HKhxYIpct3w="},"tinymce/langs/fo-340609cecd5571e4eacb8fe7bd1343c8553d96d12610fb77d9a812dc6d3635fd.js":{"logical_path":"tinymce/langs/fo.js","mtime":"2018-01-05T22:13:22+01:00","size":8044,"digest":"340609cecd5571e4eacb8fe7bd1343c8553d96d12610fb77d9a812dc6d3635fd","integrity":"sha256-NAYJzs1VceTqy4/nvRNDyFU9ltEmEPt32agS3G02Nf0="},"tinymce/langs/fr_CH-e0f43c0f20727368ff0767f3bf099bc23eed9fe3e81f8bbe514381e786526928.js":{"logical_path":"tinymce/langs/fr_CH.js","mtime":"2018-01-05T22:13:22+01:00","size":8074,"digest":"e0f43c0f20727368ff0767f3bf099bc23eed9fe3e81f8bbe514381e786526928","integrity":"sha256-4PQ8DyByc2j/B2fzvwmbwj7tn+PoH4u+UUOB54ZSaSg="},"tinymce/langs/fr_FR-2702de7be93bd1e0d7120ae3c9e637061565186c66886f155ffca0663df25b4c.js":{"logical_path":"tinymce/langs/fr_FR.js","mtime":"2017-10-08T14:45:46+02:00","size":8009,"digest":"2702de7be93bd1e0d7120ae3c9e637061565186c66886f155ffca0663df25b4c","integrity":"sha256-JwLee+k70eDXEgrjyeY3BhVlGGxmiG8VX/ygZj3yW0w="},"tinymce/langs/ga-d2a3de6f28723d75b03f7f42fd3aedfd045d473425ee38f02350b56035383af1.js":{"logical_path":"tinymce/langs/ga.js","mtime":"2017-10-08T14:45:46+02:00","size":8591,"digest":"d2a3de6f28723d75b03f7f42fd3aedfd045d473425ee38f02350b56035383af1","integrity":"sha256-0qPebyhyPXWwP39C/Trt/QRdRzQl7jjwI1C1YDU4OvE="},"tinymce/langs/gd-0453e8b97bf3b6cca4065712ec59f20343ad6131735b38547e865177a1c1c490.js":{"logical_path":"tinymce/langs/gd.js","mtime":"2018-01-05T22:13:22+01:00","size":8808,"digest":"0453e8b97bf3b6cca4065712ec59f20343ad6131735b38547e865177a1c1c490","integrity":"sha256-BFPouXvztsykBlcS7FnyA0OtYTFzWzhUfoZRd6HBxJA="},"tinymce/langs/gl-1ff612222934f558870111f10934110c5656df3bb293c917e4eeceeb6605fcc5.js":{"logical_path":"tinymce/langs/gl.js","mtime":"2017-10-08T14:45:46+02:00","size":7066,"digest":"1ff612222934f558870111f10934110c5656df3bb293c917e4eeceeb6605fcc5","integrity":"sha256-H/YSIik09ViHARHxCTQRDFZW3zuyk8kX5O7O62YF/MU="},"tinymce/langs/he_IL-981f5250a4b8d404b37040ca5a35c30498cbeeb36e298d81bf1592b43fff7656.js":{"logical_path":"tinymce/langs/he_IL.js","mtime":"2017-10-08T14:45:46+02:00","size":16081,"digest":"981f5250a4b8d404b37040ca5a35c30498cbeeb36e298d81bf1592b43fff7656","integrity":"sha256-mB9SUKS41ASzcEDKWjXDBJjL7rNuKY2BvxWStD//dlY="},"tinymce/langs/hi_IN-695e0cdc22974fe45e0f35289f0249ddab87245165c9df765ec1b885ec55f0be.js":{"logical_path":"tinymce/langs/hi_IN.js","mtime":"2018-01-05T22:13:22+01:00","size":18458,"digest":"695e0cdc22974fe45e0f35289f0249ddab87245165c9df765ec1b885ec55f0be","integrity":"sha256-aV4M3CKXT+ReDzUonwJJ3auHJFFlyd92XsG4hexV8L4="},"tinymce/langs/hr-f77f1da2736d13f9a9a86ebf596f592fcc748f2975a0b9904b512d630f2c1a17.js":{"logical_path":"tinymce/langs/hr.js","mtime":"2017-10-08T14:45:46+02:00","size":7577,"digest":"f77f1da2736d13f9a9a86ebf596f592fcc748f2975a0b9904b512d630f2c1a17","integrity":"sha256-938donNtE/mpqG6/WW9ZL8x0jyl1oLmQS1EtYw8sGhc="},"tinymce/langs/hu_HU-1e22021a4f9c61919aa024041af555eac277bfc08ccb8c07fd329b87090a15e5.js":{"logical_path":"tinymce/langs/hu_HU.js","mtime":"2017-10-08T14:45:46+02:00","size":9410,"digest":"1e22021a4f9c61919aa024041af555eac277bfc08ccb8c07fd329b87090a15e5","integrity":"sha256-HiICGk+cYZGaoCQEGvVV6sJ3v8CMy4wH/TKbhwkKFeU="},"tinymce/langs/hy-0d384f3f82cd76793d3e7428a2140ea97f40a943f25ef99a2e3709a3e02b0930.js":{"logical_path":"tinymce/langs/hy.js","mtime":"2018-01-05T22:13:22+01:00","size":20375,"digest":"0d384f3f82cd76793d3e7428a2140ea97f40a943f25ef99a2e3709a3e02b0930","integrity":"sha256-DThPP4LNdnk9PnQoohQOqX9AqUPyXvmaLjcJo+ArCTA="},"tinymce/langs/id-e9fd018be745b5f14f4af47887420f98c590c607e01d57aca77ef5affe188523.js":{"logical_path":"tinymce/langs/id.js","mtime":"2018-01-05T22:13:22+01:00","size":7141,"digest":"e9fd018be745b5f14f4af47887420f98c590c607e01d57aca77ef5affe188523","integrity":"sha256-6f0Bi+dFtfFPSvR4h0IPmMWQxgfgHVesp371r/4YhSM="},"tinymce/langs/is_IS-c6e8c3e7b0e6b447faec3d8d258928f97c84558b29882c056513fb71cf237bfa.js":{"logical_path":"tinymce/langs/is_IS.js","mtime":"2018-01-05T22:13:22+01:00","size":7928,"digest":"c6e8c3e7b0e6b447faec3d8d258928f97c84558b29882c056513fb71cf237bfa","integrity":"sha256-xujD57DmtEf67D2NJYko+XyEVYspiCwFZRP7cc8je/o="},"tinymce/langs/it-25b5546d48c80ad666b600e5be3a05718b80645721b191785c1fafe1853f4a46.js":{"logical_path":"tinymce/langs/it.js","mtime":"2017-10-08T14:45:46+02:00","size":7598,"digest":"25b5546d48c80ad666b600e5be3a05718b80645721b191785c1fafe1853f4a46","integrity":"sha256-JbVUbUjICtZmtgDlvjoFcYuAZFchsZF4XB+v4YU/SkY="},"tinymce/langs/ja-80f0e7414030c32617ff651da1affa0bc85ee514fc9bc81f46edfd8ce0053ac0.js":{"logical_path":"tinymce/langs/ja.js","mtime":"2017-10-08T14:45:46+02:00","size":12290,"digest":"80f0e7414030c32617ff651da1affa0bc85ee514fc9bc81f46edfd8ce0053ac0","integrity":"sha256-gPDnQUAwwyYX/2Udoa/6C8he5RT8m8gfRu39jOAFOsA="},"tinymce/langs/ka_GE-3c6b82346a7070a8b6a15ae6e8faeecc5bfe63ad7e616b7de2e8ab8a75ec39c2.js":{"logical_path":"tinymce/langs/ka_GE.js","mtime":"2017-10-08T14:45:46+02:00","size":21284,"digest":"3c6b82346a7070a8b6a15ae6e8faeecc5bfe63ad7e616b7de2e8ab8a75ec39c2","integrity":"sha256-PGuCNGpwcKi2oVrm6PruzFv+Y61+YWt94uirinXsOcI="},"tinymce/langs/kab-3651d08aacd5bda15a04698f202bf616efbf13d3789aadd9ce4f93e430818c13.js":{"logical_path":"tinymce/langs/kab.js","mtime":"2017-10-08T14:45:46+02:00","size":7391,"digest":"3651d08aacd5bda15a04698f202bf616efbf13d3789aadd9ce4f93e430818c13","integrity":"sha256-NlHQiqzVvaFaBGmPICv2Fu+/E9N4mq3Zzk+T5DCBjBM="},"tinymce/langs/kk-0c1ba792ed9445c6512f310228f64d1cde7b5a98e0b212cca749dcb2d728fe86.js":{"logical_path":"tinymce/langs/kk.js","mtime":"2017-10-08T14:45:46+02:00","size":16681,"digest":"0c1ba792ed9445c6512f310228f64d1cde7b5a98e0b212cca749dcb2d728fe86","integrity":"sha256-DBunku2URcZRLzECKPZNHN57WpjgshLMp0ncstco/oY="},"tinymce/langs/km_KH-8bec84e4078db8c2a680260c073dfb486c85b61df62e14ca330d66d2ca2a85b5.js":{"logical_path":"tinymce/langs/km_KH.js","mtime":"2017-10-08T14:45:46+02:00","size":21396,"digest":"8bec84e4078db8c2a680260c073dfb486c85b61df62e14ca330d66d2ca2a85b5","integrity":"sha256-i+yE5AeNuMKmgCYMBz37SGyFth32LhTKMw1m0soqhbU="},"tinymce/langs/ko-ca535bfa388701fb020d24bdfb3f1e3aab127005b54e943cb1bd60b723c8194d.js":{"logical_path":"tinymce/langs/ko.js","mtime":"2018-01-05T22:13:22+01:00","size":10105,"digest":"ca535bfa388701fb020d24bdfb3f1e3aab127005b54e943cb1bd60b723c8194d","integrity":"sha256-ylNb+jiHAfsCDSS9+z8eOqsScAW1TpQ8sb1gtyPIGU0="},"tinymce/langs/ko_KR-daa3ae950d70260bb0901a5349034952247905523bbc2bcbe527701b6aad8e28.js":{"logical_path":"tinymce/langs/ko_KR.js","mtime":"2017-10-08T14:45:46+02:00","size":10005,"digest":"daa3ae950d70260bb0901a5349034952247905523bbc2bcbe527701b6aad8e28","integrity":"sha256-2qOulQ1wJguwkBpTSQNJUiR5BVI7vCvL5SdwG2qtjig="},"tinymce/langs/ku-95e2ffe4f0112df658f10327c26f2cdddedc2e2ed769767366ae22a465c14725.js":{"logical_path":"tinymce/langs/ku.js","mtime":"2018-01-05T22:13:22+01:00","size":18274,"digest":"95e2ffe4f0112df658f10327c26f2cdddedc2e2ed769767366ae22a465c14725","integrity":"sha256-leL/5PARLfZY8QMnwm8s3d7cLi7XaXZzZq4ipGXBRyU="},"tinymce/langs/ku_IQ-a212e8d41695989e56834facf72474e1934ef166c3fcaf7e255ef573a3c6e76c.js":{"logical_path":"tinymce/langs/ku_IQ.js","mtime":"2018-01-05T22:13:22+01:00","size":18364,"digest":"a212e8d41695989e56834facf72474e1934ef166c3fcaf7e255ef573a3c6e76c","integrity":"sha256-ohLo1BaVmJ5Wg0+s9yR04ZNO8WbD/K9+JV71c6PG52w="},"tinymce/langs/lb-94992279091f1a0be927d5d858d3724037d8d81ee6b63cc9ddde84af6124cc04.js":{"logical_path":"tinymce/langs/lb.js","mtime":"2018-01-05T22:13:22+01:00","size":7467,"digest":"94992279091f1a0be927d5d858d3724037d8d81ee6b63cc9ddde84af6124cc04","integrity":"sha256-lJkieQkfGgvpJ9XYWNNyQDfY2B7mtjzJ3d6Er2EkzAQ="},"tinymce/langs/lt-ae7cefbe2cb5420770b31eabf92605728135ab5d6a2d2cfca2d19809be67e6a8.js":{"logical_path":"tinymce/langs/lt.js","mtime":"2018-01-05T22:13:22+01:00","size":8899,"digest":"ae7cefbe2cb5420770b31eabf92605728135ab5d6a2d2cfca2d19809be67e6a8","integrity":"sha256-rnzvviy1Qgdwsx6r+SYFcoE1q11qLSz8otGYCb5n5qg="},"tinymce/langs/lv-e468ed0c78466d1fff9f4957645606d8aa683cb5dc35931e047df97b8e4f5433.js":{"logical_path":"tinymce/langs/lv.js","mtime":"2017-10-08T14:45:46+02:00","size":8282,"digest":"e468ed0c78466d1fff9f4957645606d8aa683cb5dc35931e047df97b8e4f5433","integrity":"sha256-5GjtDHhGbR//n0lXZFYG2KpoPLXcNZMeBH35e45PVDM="},"tinymce/langs/mk_MK-55aadb5d7c82c940cfcf42f24423ef0471294c9b02994a6b22e1b4173baa7ec6.js":{"logical_path":"tinymce/langs/mk_MK.js","mtime":"2018-01-05T22:13:22+01:00","size":18733,"digest":"55aadb5d7c82c940cfcf42f24423ef0471294c9b02994a6b22e1b4173baa7ec6","integrity":"sha256-VarbXXyCyUDPz0LyRCPvBHEpTJsCmUprIuG0FzuqfsY="},"tinymce/langs/ml-685de0808683c02274dcbe9f8de023a4d72a49b040e7526a99e3d5c786ff71ae.js":{"logical_path":"tinymce/langs/ml.js","mtime":"2018-01-05T22:13:22+01:00","size":7339,"digest":"685de0808683c02274dcbe9f8de023a4d72a49b040e7526a99e3d5c786ff71ae","integrity":"sha256-aF3ggIaDwCJ03L6fjeAjpNcqSbBA51JqmePVx4b/ca4="},"tinymce/langs/ml_IN-1ab433621d6257c7632718048bacc5ed98a302d33cf0438bbbb4200914e01aac.js":{"logical_path":"tinymce/langs/ml_IN.js","mtime":"2018-01-05T22:13:22+01:00","size":20019,"digest":"1ab433621d6257c7632718048bacc5ed98a302d33cf0438bbbb4200914e01aac","integrity":"sha256-GrQzYh1iV8djJxgEi6zF7ZijAtM88EOLu7QgCRTgGqw="},"tinymce/langs/mn_MN-b89f88cb9b0dd7c879e27532b2979c421c1e69648f65a4108a56060f1e1cb009.js":{"logical_path":"tinymce/langs/mn_MN.js","mtime":"2018-01-05T22:13:22+01:00","size":6877,"digest":"b89f88cb9b0dd7c879e27532b2979c421c1e69648f65a4108a56060f1e1cb009","integrity":"sha256-uJ+Iy5sN18h54nUyspecQhweaWSPZaQQilYGDx4csAk="},"tinymce/langs/nb_NO-602ee249e98a26ae24c1ee1311090c68a782050086a835f1e7bd46ebfe7879ef.js":{"logical_path":"tinymce/langs/nb_NO.js","mtime":"2017-10-08T14:45:46+02:00","size":7528,"digest":"602ee249e98a26ae24c1ee1311090c68a782050086a835f1e7bd46ebfe7879ef","integrity":"sha256-YC7iSemKJq4kwe4TEQkMaKeCBQCGqDXx571G6/54ee8="},"tinymce/langs/nl-9c77e9404a27fd7e4bd162ad44538b72d2725b7fee7be7ca3ff801cf217c4968.js":{"logical_path":"tinymce/langs/nl.js","mtime":"2017-10-08T14:45:46+02:00","size":7235,"digest":"9c77e9404a27fd7e4bd162ad44538b72d2725b7fee7be7ca3ff801cf217c4968","integrity":"sha256-nHfpQEon/X5L0WKtRFOLctJyW3/ue+fKP/gBzyF8SWg="},"tinymce/langs/pl-5cdd1586ec8fa67293f2175cd92edbd0392c4c77b24ed64cfdceccba8d99f152.js":{"logical_path":"tinymce/langs/pl.js","mtime":"2017-10-08T14:45:46+02:00","size":8129,"digest":"5cdd1586ec8fa67293f2175cd92edbd0392c4c77b24ed64cfdceccba8d99f152","integrity":"sha256-XN0VhuyPpnKT8hdc2S7b0DksTHeyTtZM/c7Muo2Z8VI="},"tinymce/langs/pt_BR-e3955318582d58bd241a62c3a81afe74e0ae7f31bdc92a562b75243701f114df.js":{"logical_path":"tinymce/langs/pt_BR.js","mtime":"2017-10-08T14:45:46+02:00","size":8002,"digest":"e3955318582d58bd241a62c3a81afe74e0ae7f31bdc92a562b75243701f114df","integrity":"sha256-45VTGFgtWL0kGmLDqBr+dOCufzG9ySpWK3UkNwHxFN8="},"tinymce/langs/pt_PT-1101d080ecd5da091c7ef70b23200adbd5136c5c32f0c79dae665a443d76c35d.js":{"logical_path":"tinymce/langs/pt_PT.js","mtime":"2017-10-08T14:45:46+02:00","size":8145,"digest":"1101d080ecd5da091c7ef70b23200adbd5136c5c32f0c79dae665a443d76c35d","integrity":"sha256-EQHQgOzV2gkcfvcLIyAK29UTbFwy8MedrmZaRD12w10="},"tinymce/langs/ro-484799d182031efab087d749b024014fd06ed06c1e7712b8bf87f3a4a965c2e4.js":{"logical_path":"tinymce/langs/ro.js","mtime":"2017-10-08T14:45:46+02:00","size":8275,"digest":"484799d182031efab087d749b024014fd06ed06c1e7712b8bf87f3a4a965c2e4","integrity":"sha256-SEeZ0YIDHvqwh9dJsCQBT9Bu0GwedxK4v4fzpKllwuQ="},"tinymce/langs/ru-bdd59cb662a7b4d61e770b07014d1791051312c87513ecc1891e80beba617171.js":{"logical_path":"tinymce/langs/ru.js","mtime":"2017-10-08T14:45:46+02:00","size":22290,"digest":"bdd59cb662a7b4d61e770b07014d1791051312c87513ecc1891e80beba617171","integrity":"sha256-vdWctmKntNYedwsHAU0XkQUTEsh1E+zBiR6AvrphcXE="},"tinymce/langs/ru_RU-9f18ef14f3493cc586cc0b4827fd9e1c2ed3d5790ce536d94f87e2d6aac2a688.js":{"logical_path":"tinymce/langs/ru_RU.js","mtime":"2018-01-05T22:13:22+01:00","size":4955,"digest":"9f18ef14f3493cc586cc0b4827fd9e1c2ed3d5790ce536d94f87e2d6aac2a688","integrity":"sha256-nxjvFPNJPMWGzAtIJ/2eHC7T1XkM5TbZT4fi1qrCpog="},"tinymce/langs/si_LK-5bfefe9b2fe82574d8ed839df18fd8ff65f1e1cd458b0a843cf1aadd1be704ea.js":{"logical_path":"tinymce/langs/si_LK.js","mtime":"2018-01-05T22:13:22+01:00","size":15856,"digest":"5bfefe9b2fe82574d8ed839df18fd8ff65f1e1cd458b0a843cf1aadd1be704ea","integrity":"sha256-W/7+my/oJXTY7YOd8Y/Y/2Xx4c1FiwqEPPGq3RvnBOo="},"tinymce/langs/sk-412fa7f982ad2733341203daa035c8ba10035262ca8f5f65e0a41507512209bd.js":{"logical_path":"tinymce/langs/sk.js","mtime":"2017-10-08T14:45:46+02:00","size":8958,"digest":"412fa7f982ad2733341203daa035c8ba10035262ca8f5f65e0a41507512209bd","integrity":"sha256-QS+n+YKtJzM0EgPaoDXIuhADUmLKj19l4KQVB1EiCb0="},"tinymce/langs/sl_SI-2bea4f3854a992ea840808019dc99467dc173b12454ea6016135234a741671d8.js":{"logical_path":"tinymce/langs/sl_SI.js","mtime":"2017-10-08T14:45:46+02:00","size":7039,"digest":"2bea4f3854a992ea840808019dc99467dc173b12454ea6016135234a741671d8","integrity":"sha256-K+pPOFSpkuqECAgBncmUZ9wXOxJFTqYBYTUjSnQWcdg="},"tinymce/langs/sr-e0b97453a0c1000b19f7ce37fcf86bcacbf9125d81076f60a77686820c7925c6.js":{"logical_path":"tinymce/langs/sr.js","mtime":"2018-01-05T22:13:22+01:00","size":6336,"digest":"e0b97453a0c1000b19f7ce37fcf86bcacbf9125d81076f60a77686820c7925c6","integrity":"sha256-4Ll0U6DBAAsZ9843/Phrysv5El2BB29gp3aGggx5JcY="},"tinymce/langs/sv_SE-fa561a7e49fdb42d5913337176fed6bc8a9997eb3ca8f20ecd9520d5391e17be.js":{"logical_path":"tinymce/langs/sv_SE.js","mtime":"2017-10-08T14:45:46+02:00","size":7496,"digest":"fa561a7e49fdb42d5913337176fed6bc8a9997eb3ca8f20ecd9520d5391e17be","integrity":"sha256-+lYafkn9tC1ZEzNxdv7WvIqZl+s8qPIOzZUg1TkeF74="},"tinymce/langs/ta-0fd0e62250fc1a3626ac2111c5adb4194a6a898888bb224414f6dc8adf53d385.js":{"logical_path":"tinymce/langs/ta.js","mtime":"2017-10-08T14:45:46+02:00","size":22617,"digest":"0fd0e62250fc1a3626ac2111c5adb4194a6a898888bb224414f6dc8adf53d385","integrity":"sha256-D9DmIlD8GjYmrCERxa20GUpqiYiIuyJEFPbcit9T04U="},"tinymce/langs/ta_IN-32303f65d2378e8202b17b0920b79277a2580872e3a6bd9409aeceef90867dd0.js":{"logical_path":"tinymce/langs/ta_IN.js","mtime":"2017-10-08T14:45:46+02:00","size":22620,"digest":"32303f65d2378e8202b17b0920b79277a2580872e3a6bd9409aeceef90867dd0","integrity":"sha256-MjA/ZdI3joICsXsJILeSd6JYCHLjpr2UCa7O75CGfdA="},"tinymce/langs/tg-1618248bf0aeda614a37ced9fd28b6623ae24f8453368bfb8c483ce820a3cb34.js":{"logical_path":"tinymce/langs/tg.js","mtime":"2018-01-05T22:13:22+01:00","size":18183,"digest":"1618248bf0aeda614a37ced9fd28b6623ae24f8453368bfb8c483ce820a3cb34","integrity":"sha256-Fhgki/Cu2mFKN87Z/Si2YjriT4RTNov7jEg86CCjyzQ="},"tinymce/langs/th_TH-5279a379afc886c2a31e22aba9d7ee7a8e3edf4c0785f39aaa20ccd03d46b19a.js":{"logical_path":"tinymce/langs/th_TH.js","mtime":"2017-10-08T14:45:46+02:00","size":17297,"digest":"5279a379afc886c2a31e22aba9d7ee7a8e3edf4c0785f39aaa20ccd03d46b19a","integrity":"sha256-Unmjea/IhsKjHiKrqdfueo4+30wHhfOaqiDM0D1GsZo="},"tinymce/langs/tr-3765d4a8923ef22864747d9c825c3e0af401e1356e75a5458bed837d486b7673.js":{"logical_path":"tinymce/langs/tr.js","mtime":"2017-10-08T14:45:46+02:00","size":8705,"digest":"3765d4a8923ef22864747d9c825c3e0af401e1356e75a5458bed837d486b7673","integrity":"sha256-N2XUqJI+8ihkdH2cglw+CvQB4TVudaVFi+2DfUhrdnM="},"tinymce/langs/tr_TR-5c93f80b89e5dd2eb6972f37bf50b76d7705c61f28120b836704a91fa5c14399.js":{"logical_path":"tinymce/langs/tr_TR.js","mtime":"2017-10-08T14:45:46+02:00","size":8141,"digest":"5c93f80b89e5dd2eb6972f37bf50b76d7705c61f28120b836704a91fa5c14399","integrity":"sha256-XJP4C4nl3S62ly83v1C3bXcFxh8oEguDZwSpH6XBQ5k="},"tinymce/langs/tt-22e302672df0a77de14688f58dbedf82de7a26e9089c9535a2a3cd1c0ccd7903.js":{"logical_path":"tinymce/langs/tt.js","mtime":"2018-01-05T22:13:22+01:00","size":19035,"digest":"22e302672df0a77de14688f58dbedf82de7a26e9089c9535a2a3cd1c0ccd7903","integrity":"sha256-IuMCZy3wp33hRoj1jb7fgt56JukInJU1oqPNHAzNeQM="},"tinymce/langs/ug-50232038bf7262c90be4f2919c74ff93792cdb82e6064d0f5c86f885b93271c5.js":{"logical_path":"tinymce/langs/ug.js","mtime":"2018-01-05T22:13:22+01:00","size":16888,"digest":"50232038bf7262c90be4f2919c74ff93792cdb82e6064d0f5c86f885b93271c5","integrity":"sha256-UCMgOL9yYskL5PKRnHT/k3ks24LmBk0PXIb4hbkyccU="},"tinymce/langs/uk-f6d7911714c422b178c0249df323cf7ec415a83195d751c7e4024590b1738c42.js":{"logical_path":"tinymce/langs/uk.js","mtime":"2017-10-08T14:45:46+02:00","size":22264,"digest":"f6d7911714c422b178c0249df323cf7ec415a83195d751c7e4024590b1738c42","integrity":"sha256-9teRFxTEIrF4wCSd8yPPfsQVqDGV11HH5AJFkLFzjEI="},"tinymce/langs/uk_UA-bd8cd7ca66228d85f8a4cadb651c49981f26e007fa2a952856c8c3d3c1baa66a.js":{"logical_path":"tinymce/langs/uk_UA.js","mtime":"2017-10-08T14:45:46+02:00","size":21691,"digest":"bd8cd7ca66228d85f8a4cadb651c49981f26e007fa2a952856c8c3d3c1baa66a","integrity":"sha256-vYzXymYijYX4pMrbZRxJmB8m4Af6KpUoVsjD08G6pmo="},"tinymce/langs/vi-6aa451047e4df911c92e10178e6a70147534e438c64df7a88eee37b4a440726e.js":{"logical_path":"tinymce/langs/vi.js","mtime":"2018-01-05T22:13:22+01:00","size":9901,"digest":"6aa451047e4df911c92e10178e6a70147534e438c64df7a88eee37b4a440726e","integrity":"sha256-aqRRBH5N+RHJLhAXjmpwFHU05DjGTfeoju43tKRAcm4="},"tinymce/langs/vi_VN-aea52c2e9397f8a657d54d50a42b3c5be0ca79480555a4fa1e0f5d785c5f6561.js":{"logical_path":"tinymce/langs/vi_VN.js","mtime":"2017-10-08T14:45:46+02:00","size":9899,"digest":"aea52c2e9397f8a657d54d50a42b3c5be0ca79480555a4fa1e0f5d785c5f6561","integrity":"sha256-rqUsLpOX+KZX1U1QpCs8W+DKeUgFVaT6Hg9deFxfZWE="},"tinymce/langs/zh_CN-8622ec46e2980b6f5baf3b745c6b0187dd2a54ddecbbf69a21f0b3e72f84f6dc.js":{"logical_path":"tinymce/langs/zh_CN.js","mtime":"2017-10-08T14:45:46+02:00","size":8483,"digest":"8622ec46e2980b6f5baf3b745c6b0187dd2a54ddecbbf69a21f0b3e72f84f6dc","integrity":"sha256-hiLsRuKYC29brzt0XGsBh90qVN3su/aaIfCz5y+E9tw="},"tinymce/langs/zh_TW-90723da3b889f2a4477d4aaf00ca3e75439998269b36b359ea4caa37e1defb4a.js":{"logical_path":"tinymce/langs/zh_TW.js","mtime":"2017-10-08T14:45:46+02:00","size":9379,"digest":"90723da3b889f2a4477d4aaf00ca3e75439998269b36b359ea4caa37e1defb4a","integrity":"sha256-kHI9o7iJ8qRHfUqvAMo+dUOZmCabNrNZ6kyqN+He+0o="},"tinymce/preinit-4eb7f4ac58f2f450d20185cf83ca1d8550d2a1419141bfe70eb5a2c4afe67349.js":{"logical_path":"tinymce/preinit.js","mtime":"2017-10-07T16:14:30+02:00","size":248,"digest":"4eb7f4ac58f2f450d20185cf83ca1d8550d2a1419141bfe70eb5a2c4afe67349","integrity":"sha256-Trf0rFjy9FDSAYXPg8odhVDSoUGRQb/nDrWixK/mc0k="},"tinymce/tinymce-ea002509455c2d4e12e195ec050ff03ce90bbe0bdf22bb0d4180bba730c2bcc6.js":{"logical_path":"tinymce/tinymce.js","mtime":"2017-10-07T16:14:30+02:00","size":1733332,"digest":"ea002509455c2d4e12e195ec050ff03ce90bbe0bdf22bb0d4180bba730c2bcc6","integrity":"sha256-6gAlCUVcLU4S4ZXsBQ/wPOkLvgvfIrsNQYC7pzDCvMY="},"tinymce/jquery.tinymce-c4e34b289f498e7a8e4ff16c48b895310113eae7c296ac5f17680704bc3a0032.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2017-10-07T16:14:30+02:00","size":4275,"digest":"c4e34b289f498e7a8e4ff16c48b895310113eae7c296ac5f17680704bc3a0032","integrity":"sha256-xONLKJ9JjnqOT/FsSLiVMQET6ufClqxfF2gHBLw6ADI="},"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md":{"logical_path":"tinymce/langs/readme.md","mtime":"2018-03-01T22:04:07+01:00","size":151,"digest":"5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de","integrity":"sha256-WotqBNV7XIjj+38qhwuOLTpI7APOZHQgbEHfeMFVst4="},"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt":{"logical_path":"tinymce/license.txt","mtime":"2018-03-01T22:04:07+01:00","size":26441,"digest":"47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66","integrity":"sha256-R6nc0ldIkaWkZREv2d/OvMfmGETt7Cf6k2pkZCAI/mY="},"tinymce/plugins/advlist/plugin-8298c4226e435f9350b2bfedab63fec1a9a153277a48930406bd9446ca3d9206.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2683,"digest":"8298c4226e435f9350b2bfedab63fec1a9a153277a48930406bd9446ca3d9206","integrity":"sha256-gpjEIm5DX5NQsr/tq2P+wamhUyd6SJMEBr2URso9kgY="},"tinymce/plugins/anchor/plugin-910353b28da9ffa1075fd37b1c95f1f05f0d6809e41a5e4250b33e1a3a7a86c8.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2110,"digest":"910353b28da9ffa1075fd37b1c95f1f05f0d6809e41a5e4250b33e1a3a7a86c8","integrity":"sha256-kQNTso2p/6EHX9N7HJXx8F8NaAnkGl5CULM+Gjp6hsg="},"tinymce/plugins/autolink/plugin-ee2bb5e9c684882fb0db4d350f0c7feab2643841f2b8729db0f9111043c70d39.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3017,"digest":"ee2bb5e9c684882fb0db4d350f0c7feab2643841f2b8729db0f9111043c70d39","integrity":"sha256-7iu16caEiC+w2001Dwx/6rJkOEHyuHKdsPkREEPHDTk="},"tinymce/plugins/autoresize/plugin-2e0a2856650e8fa09fba9a00fd18a9078e5ee436c6c47ead6ba6689fee74cafa.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2916,"digest":"2e0a2856650e8fa09fba9a00fd18a9078e5ee436c6c47ead6ba6689fee74cafa","integrity":"sha256-LgooVmUOj6CfupoA/RipB45e5DbGxH6ta6Zon+50yvo="},"tinymce/plugins/autosave/plugin-54b4451f49d642d08cbec840341ac6edb501b69d2383115c62bc7070eb0a57f4.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3217,"digest":"54b4451f49d642d08cbec840341ac6edb501b69d2383115c62bc7070eb0a57f4","integrity":"sha256-VLRFH0nWQtCMvshANBrG7bUBtp0jgxFcYrxwcOsKV/Q="},"tinymce/plugins/bbcode/plugin-3e2fdc6fa5b587ce568ca570974d0e910b6684e392a9ecaba02b5c6c15269080.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3990,"digest":"3e2fdc6fa5b587ce568ca570974d0e910b6684e392a9ecaba02b5c6c15269080","integrity":"sha256-Pi/cb6W1h85WjKVwl00OkQtmhOOSqeyroCtcbBUmkIA="},"tinymce/plugins/charmap/plugin-49d7ef5688ed83d2a102b0c9702dc3aac70a33c22a7ef4885d6528a61b8210e2.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":9164,"digest":"49d7ef5688ed83d2a102b0c9702dc3aac70a33c22a7ef4885d6528a61b8210e2","integrity":"sha256-SdfvVojtg9KhArDJcC3DqscKM8IqfvSIXWUophuCEOI="},"tinymce/plugins/code/plugin-2c12bcd21813fa52b23a65c3080cc6f4ecb33be04ee058b6c460719724511372.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1656,"digest":"2c12bcd21813fa52b23a65c3080cc6f4ecb33be04ee058b6c460719724511372","integrity":"sha256-LBK80hgT+lKyOmXDCAzG9OyzO+BO4Fi2xGBxlyRRE3I="},"tinymce/plugins/codesample/css/prism-1988b66704b4d23e78c6c20c38a6856cbc1f0be96d6d60a3a0b12f4408f1057e.css":{"logical_path":"tinymce/plugins/codesample/css/prism.css","mtime":"2018-03-01T22:04:07+01:00","size":1776,"digest":"1988b66704b4d23e78c6c20c38a6856cbc1f0be96d6d60a3a0b12f4408f1057e","integrity":"sha256-GYi2ZwS00j54xsIMOKaFbLwfC+ltbWCjoLEvRAjxBX4="},"tinymce/plugins/codesample/plugin-a3591d2c33d0499eed106bbdc9d0aa698115456632cb806e8f44bdf270d8d6b8.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":19950,"digest":"a3591d2c33d0499eed106bbdc9d0aa698115456632cb806e8f44bdf270d8d6b8","integrity":"sha256-o1kdLDPQSZ7tEGu9ydCqaYEVRWYyy4Buj0S98nDY1rg="},"tinymce/plugins/colorpicker/plugin-f4ea1ac5bfaaef5adef0789427a1ef1e3c07814ff9a7623953bfb1a79f9f502d.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2144,"digest":"f4ea1ac5bfaaef5adef0789427a1ef1e3c07814ff9a7623953bfb1a79f9f502d","integrity":"sha256-9Ooaxb+q71re8HiUJ6HvHjwHgU/5p2I5U7+xp5+fUC0="},"tinymce/plugins/contextmenu/plugin-36bf2806ad2d3ead1a04e45b840bd6cea455f38ca02d88f973302219e05734ab.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":7098,"digest":"36bf2806ad2d3ead1a04e45b840bd6cea455f38ca02d88f973302219e05734ab","integrity":"sha256-Nr8oBq0tPq0aBORbhAvWzqRV84ygLYj5czAiGeBXNKs="},"tinymce/plugins/directionality/plugin-8b9d9e0d97d8cf5c20b4f74509a94cbd84c59b330d7badaad66ff2d0553479fd.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1653,"digest":"8b9d9e0d97d8cf5c20b4f74509a94cbd84c59b330d7badaad66ff2d0553479fd","integrity":"sha256-i52eDZfYz1wgtPdFCalMvYTFmzMNe62q1m/y0FU0ef0="},"tinymce/plugins/emoticons/img/smiley-cool-bb0e93a050a32df7913e4026b3c88a176998e0e3e073ba06e9b73f6c24227c9c.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-cool.gif","mtime":"2018-03-01T22:04:07+01:00","size":354,"digest":"bb0e93a050a32df7913e4026b3c88a176998e0e3e073ba06e9b73f6c24227c9c","integrity":"sha256-uw6ToFCjLfeRPkAms8iKF2mY4OPgc7oG6bc/bCQifJw="},"tinymce/plugins/emoticons/img/smiley-cry-a0c5f3e7a682449c973c9d9f7c46342081c46920686d2353f57aff91ab907f68.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-cry.gif","mtime":"2018-03-01T22:04:07+01:00","size":329,"digest":"a0c5f3e7a682449c973c9d9f7c46342081c46920686d2353f57aff91ab907f68","integrity":"sha256-oMXz56aCRJyXPJ2ffEY0IIHEaSBobSNT9Xr/kauQf2g="},"tinymce/plugins/emoticons/img/smiley-embarassed-d3cafcb50b335672cb5e9f4600ea9ea261dac7828dd28844d4927c393a25618f.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-embarassed.gif","mtime":"2018-03-01T22:04:07+01:00","size":331,"digest":"d3cafcb50b335672cb5e9f4600ea9ea261dac7828dd28844d4927c393a25618f","integrity":"sha256-08r8tQszVnLLXp9GAOqeomHax4KN0ohE1JJ8OTolYY8="},"tinymce/plugins/emoticons/img/smiley-foot-in-mouth-03fe04d3ed533423ac81f05146584b0c451be3d4a30e76687ceef283ed07071f.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif","mtime":"2018-03-01T22:04:07+01:00","size":342,"digest":"03fe04d3ed533423ac81f05146584b0c451be3d4a30e76687ceef283ed07071f","integrity":"sha256-A/4E0+1TNCOsgfBRRlhLDEUb49SjDnZofO7yg+0HBx8="},"tinymce/plugins/emoticons/img/smiley-frown-1b984bf98931dd1debb54461eb9d83e985f2b2999fe14bcb556d6c0921bc83b0.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-frown.gif","mtime":"2018-03-01T22:04:07+01:00","size":340,"digest":"1b984bf98931dd1debb54461eb9d83e985f2b2999fe14bcb556d6c0921bc83b0","integrity":"sha256-G5hL+Ykx3R3rtURh652D6YXyspmf4UvLVW1sCSG8g7A="},"tinymce/plugins/emoticons/img/smiley-innocent-8db353ef102196f2c6ddf5c4666446de955d7b14fc0957c806c9dbfb48fb0c29.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-innocent.gif","mtime":"2018-03-01T22:04:07+01:00","size":336,"digest":"8db353ef102196f2c6ddf5c4666446de955d7b14fc0957c806c9dbfb48fb0c29","integrity":"sha256-jbNT7xAhlvLG3fXEZmRG3pVdexT8CVfIBsnb+0j7DCk="},"tinymce/plugins/emoticons/img/smiley-kiss-3154c3665356c13ab10fefdbac1fe187fff978a0052037c99cdc4a97103413f2.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-kiss.gif","mtime":"2018-03-01T22:04:07+01:00","size":338,"digest":"3154c3665356c13ab10fefdbac1fe187fff978a0052037c99cdc4a97103413f2","integrity":"sha256-MVTDZlNWwTqxD+/brB/hh//5eKAFIDfJnNxKlxA0E/I="},"tinymce/plugins/emoticons/img/smiley-laughing-8f6adedcd091975ffead171867a6304d908bb6541a6ccb4919286ec6b7d4551e.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-laughing.gif","mtime":"2018-03-01T22:04:07+01:00","size":343,"digest":"8f6adedcd091975ffead171867a6304d908bb6541a6ccb4919286ec6b7d4551e","integrity":"sha256-j2re3NCRl1/+rRcYZ6YwTZCLtlQabMtJGShuxrfUVR4="},"tinymce/plugins/emoticons/img/smiley-money-mouth-f0b9f4f22e237f5dbc851f900fed8d7eca4c954ae6fbc606c0cd8be431d0ac80.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-money-mouth.gif","mtime":"2018-03-01T22:04:07+01:00","size":321,"digest":"f0b9f4f22e237f5dbc851f900fed8d7eca4c954ae6fbc606c0cd8be431d0ac80","integrity":"sha256-8Ln08i4jf128hR+QD+2NfspMlUrm+8YGwM2L5DHQrIA="},"tinymce/plugins/emoticons/img/smiley-sealed-9933b442636b6e537df7b564e2c3f7a2873526eea6b022a98eb1e468e5204c32.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-sealed.gif","mtime":"2018-03-01T22:04:07+01:00","size":323,"digest":"9933b442636b6e537df7b564e2c3f7a2873526eea6b022a98eb1e468e5204c32","integrity":"sha256-mTO0QmNrblN997Vk4sP3ooc1Ju6msCKpjrHkaOUgTDI="},"tinymce/plugins/emoticons/img/smiley-smile-fd89cd460ffcacb7e725e00c0275ef5b3924ce468248e5ff4fb43545571cfa65.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-smile.gif","mtime":"2018-03-01T22:04:07+01:00","size":344,"digest":"fd89cd460ffcacb7e725e00c0275ef5b3924ce468248e5ff4fb43545571cfa65","integrity":"sha256-/YnNRg/8rLfnJeAMAnXvWzkkzkaCSOX/T7Q1RVcc+mU="},"tinymce/plugins/emoticons/img/smiley-surprised-3871f356cb41976d7ae8a5f005e8739e4d014352a8adef9b33f773d81b6e6c01.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-surprised.gif","mtime":"2018-03-01T22:04:07+01:00","size":338,"digest":"3871f356cb41976d7ae8a5f005e8739e4d014352a8adef9b33f773d81b6e6c01","integrity":"sha256-OHHzVstBl2166KXwBehznk0BQ1Kore+bM/dz2BtubAE="},"tinymce/plugins/emoticons/img/smiley-tongue-out-5843c85667a8226dc43be83749fd9fbbc5d20b1577de2b763915d99815d37d47.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-tongue-out.gif","mtime":"2018-03-01T22:04:07+01:00","size":328,"digest":"5843c85667a8226dc43be83749fd9fbbc5d20b1577de2b763915d99815d37d47","integrity":"sha256-WEPIVmeoIm3EO+g3Sf2fu8XSCxV33it2ORXZmBXTfUc="},"tinymce/plugins/emoticons/img/smiley-undecided-d8b9bcbb433951ff3c4ca8dd959ac3844239b98e6d52218833e1485a91f67347.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-undecided.gif","mtime":"2018-03-01T22:04:07+01:00","size":337,"digest":"d8b9bcbb433951ff3c4ca8dd959ac3844239b98e6d52218833e1485a91f67347","integrity":"sha256-2Lm8u0M5Uf88TKjdlZrDhEI5uY5tUiGIM+FIWpH2c0c="},"tinymce/plugins/emoticons/img/smiley-wink-2af75ad7b1c08488505513503e34b15f40005e04a2a9568f698f0945d2d8ba1f.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-wink.gif","mtime":"2018-03-01T22:04:07+01:00","size":350,"digest":"2af75ad7b1c08488505513503e34b15f40005e04a2a9568f698f0945d2d8ba1f","integrity":"sha256-Kvda17HAhIhQVRNQPjSxX0AAXgSiqVaPaY8JRdLYuh8="},"tinymce/plugins/emoticons/img/smiley-yell-bba903fbcb46fce8c68b9e01863fd095b3b1d0e6aa72161f3a88d762a5f90a79.gif":{"logical_path":"tinymce/plugins/emoticons/img/smiley-yell.gif","mtime":"2018-03-01T22:04:07+01:00","size":336,"digest":"bba903fbcb46fce8c68b9e01863fd095b3b1d0e6aa72161f3a88d762a5f90a79","integrity":"sha256-u6kD+8tG/OjGi54Bhj/QlbOx0OaqchYfOojXYqX5Cnk="},"tinymce/plugins/emoticons/plugin-4e4ed709e1a04969c1d82745d84b01eb7fdd36a19a3529452c81cc2ed4e6b58d.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1838,"digest":"4e4ed709e1a04969c1d82745d84b01eb7fdd36a19a3529452c81cc2ed4e6b58d","integrity":"sha256-Tk7XCeGgSWnB2CdF2EsB63/dNqGaNSlFLIHMLtTmtY0="},"tinymce/plugins/fullpage/plugin-2184bd5db93788e2ead614801f7f96ed7aea38a25dd6f5f94a836807da12f4b7.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":7649,"digest":"2184bd5db93788e2ead614801f7f96ed7aea38a25dd6f5f94a836807da12f4b7","integrity":"sha256-IYS9Xbk3iOLq1hSAH3+W7XrqOKJd1vX5SoNoB9oS9Lc="},"tinymce/plugins/fullscreen/plugin-58355e469e27d887f7c5cedc4ab9c33268605171d0a6ef7539d7889bd6c22e95.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2611,"digest":"58355e469e27d887f7c5cedc4ab9c33268605171d0a6ef7539d7889bd6c22e95","integrity":"sha256-WDVeRp4n2If3xc7cSrnDMmhgUXHQpu91OdeIm9bCLpU="},"tinymce/plugins/help/img/logo-8b03dc4f83c4fea0b62c4f9866898c98e81057c55b3e3b8c1da3f5fdbf0086e9.png":{"logical_path":"tinymce/plugins/help/img/logo.png","mtime":"2017-10-07T16:14:30+02:00","size":23101,"digest":"8b03dc4f83c4fea0b62c4f9866898c98e81057c55b3e3b8c1da3f5fdbf0086e9","integrity":"sha256-iwPcT4PE/qC2LE+YZomMmOgQV8VbPjuMHaP1/b8Ahuk="},"tinymce/plugins/help/plugin-fe41ec41705f0ab8974189c7a262bd6abfca631da91bec80cca08557d933400e.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":13955,"digest":"fe41ec41705f0ab8974189c7a262bd6abfca631da91bec80cca08557d933400e","integrity":"sha256-/kHsQXBfCriXQYnHomK9ar/KYx2pG+yAzKCFV9kzQA4="},"tinymce/plugins/hr/plugin-7e54a59e7cc42e5dbcb208c5e1e171bfa1e07a12a4f2bc29eb924e3b56b2137e.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1198,"digest":"7e54a59e7cc42e5dbcb208c5e1e171bfa1e07a12a4f2bc29eb924e3b56b2137e","integrity":"sha256-flSlnnzELl28sgjF4eFxv6HgehKk8rwp65JOO1ayE34="},"tinymce/plugins/image/plugin-9c58ff73baa30b22932a2940f6499720916ff0667664c0fd1879facb30c7e15e.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":12180,"digest":"9c58ff73baa30b22932a2940f6499720916ff0667664c0fd1879facb30c7e15e","integrity":"sha256-nFj/c7qjCyKTKilA9kmXIJFv8GZ2ZMD9GHn6yzDH4V4="},"tinymce/plugins/imagetools/plugin-cde4e862daaa1072a4a548d462ecd155e4c5798ea673bdab3ba4bf6193123257.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":38257,"digest":"cde4e862daaa1072a4a548d462ecd155e4c5798ea673bdab3ba4bf6193123257","integrity":"sha256-zeToYtqqEHKkpUjUYuzRVeTFeY6mc72rO6S/YZMSMlc="},"tinymce/plugins/importcss/plugin-c9f390348b03c3c6311b5babcb935a60ba6fb23cf30013749dd3cda157b784b9.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3760,"digest":"c9f390348b03c3c6311b5babcb935a60ba6fb23cf30013749dd3cda157b784b9","integrity":"sha256-yfOQNIsDw8YxG1ury5NaYLpvsjzzABN0ndPNoVe3hLk="},"tinymce/plugins/insertdatetime/plugin-918c81e56c28ac5ecf1a7cf1441532a94637da84ae8119d69f5628a42dc1a70a.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2904,"digest":"918c81e56c28ac5ecf1a7cf1441532a94637da84ae8119d69f5628a42dc1a70a","integrity":"sha256-kYyB5WworF7PGnzxRBUyqUY32oSugRnWn1YopC3Bpwo="},"tinymce/plugins/legacyoutput/plugin-367fc211a27027020d9cab6dec42bf1a86f428a507bb47530386439a9d581bd7.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":4184,"digest":"367fc211a27027020d9cab6dec42bf1a86f428a507bb47530386439a9d581bd7","integrity":"sha256-Nn/CEaJwJwINnKtt7EK/Gob0KKUHu0dTA4ZDmp1YG9c="},"tinymce/plugins/link/plugin-188203a47fcc2b8092733c0999105e52aa76af1fc7fa86d82791feee615105e5.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":11309,"digest":"188203a47fcc2b8092733c0999105e52aa76af1fc7fa86d82791feee615105e5","integrity":"sha256-GIIDpH/MK4CSczwJmRBeUqp2rx/H+obYJ5H+7mFRBeU="},"tinymce/plugins/lists/plugin-570f4ed934292f815ba8a8ab0309e44abd776120f629c35a9e6d19d8fb2f7890.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":16394,"digest":"570f4ed934292f815ba8a8ab0309e44abd776120f629c35a9e6d19d8fb2f7890","integrity":"sha256-Vw9O2TQpL4FbqKirAwnkSr13YSD2KcNanm0Z2PsveJA="},"tinymce/plugins/media/plugin-5b4758de69f15a33a07cc4cddd1a896c9de832cdd120b901a7188e57f31cb570.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":16814,"digest":"5b4758de69f15a33a07cc4cddd1a896c9de832cdd120b901a7188e57f31cb570","integrity":"sha256-W0dY3mnxWjOgfMTN3RqJbJ3oMs3RILkBpxiOV/MctXA="},"tinymce/plugins/nonbreaking/plugin-911e6f2517df4ca758f67e28dadebaf921d1b7bb120b23ee2779dce0cf7bb842.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1573,"digest":"911e6f2517df4ca758f67e28dadebaf921d1b7bb120b23ee2779dce0cf7bb842","integrity":"sha256-kR5vJRffTKdY9n4o2t66+SHRt7sSCyPuJ3nc4M97uEI="},"tinymce/plugins/noneditable/plugin-99b4ff9b08ba148764914357b4c626cf07ce5dae739ec678d43fd6f6c6461bc0.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2191,"digest":"99b4ff9b08ba148764914357b4c626cf07ce5dae739ec678d43fd6f6c6461bc0","integrity":"sha256-mbT/mwi6FIdkkUNXtMYmzwfOXa5znsZ41D/W9sZGG8A="},"tinymce/plugins/pagebreak/plugin-ba3703ad8ce5ff341f209e6fa1ab0afdb66d66365dde2f322338d9382f8cabcb.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2152,"digest":"ba3703ad8ce5ff341f209e6fa1ab0afdb66d66365dde2f322338d9382f8cabcb","integrity":"sha256-ujcDrYzl/zQfIJ5voasK/bZtZjZd3i8yIzjZOC+Mq8s="},"tinymce/plugins/paste/plugin-e32879a5ac81dedf097e5a06653c4740fc4fab4766589bab761312d0b2d560c9.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":21374,"digest":"e32879a5ac81dedf097e5a06653c4740fc4fab4766589bab761312d0b2d560c9","integrity":"sha256-4yh5payB3t8JfloGZTxHQPxPq0dmWJurdhMS0LLVYMk="},"tinymce/plugins/preview/plugin-326a8321cd75624f9b746e4efcd8e6f1d5e4d0b2d96155e3b8c8345ec70a95aa.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2611,"digest":"326a8321cd75624f9b746e4efcd8e6f1d5e4d0b2d96155e3b8c8345ec70a95aa","integrity":"sha256-MmqDIc11Yk+bdG5O/Njm8dXk0LLZYVXjuMg0XscKlao="},"tinymce/plugins/print/plugin-360588108f9b3c4d49e62b084a288f7b789d4555ff53eaedd793b7880d5b0799.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":1169,"digest":"360588108f9b3c4d49e62b084a288f7b789d4555ff53eaedd793b7880d5b0799","integrity":"sha256-NgWIEI+bPE1J5isISiiPe3idRVX/U+rt15O3iA1bB5k="},"tinymce/plugins/save/plugin-18a4bdbbb2894ce2f3badb7a901ce2b21f18c9cbe54c1c346245ea3092f1d230.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2202,"digest":"18a4bdbbb2894ce2f3badb7a901ce2b21f18c9cbe54c1c346245ea3092f1d230","integrity":"sha256-GKS9u7KJTOLzutt6kBzish8YycvlTBw0YkXqMJLx0jA="},"tinymce/plugins/searchreplace/plugin-cf1237ef21f140faadb3977c326cca488796cae1bafc26f201ab78dd6a498752.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":7494,"digest":"cf1237ef21f140faadb3977c326cca488796cae1bafc26f201ab78dd6a498752","integrity":"sha256-zxI37yHxQPqts5d8MmzKSIeWyuG6/CbyAat43WpJh1I="},"tinymce/plugins/spellchecker/plugin-c4b0e6c01647313b0beda3037aff99d35fd3c10e74afd56329210239cee26a53.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":10081,"digest":"c4b0e6c01647313b0beda3037aff99d35fd3c10e74afd56329210239cee26a53","integrity":"sha256-xLDmwBZHMTsL7aMDev+Z01/TwQ50r9VjKSECOc7ialM="},"tinymce/plugins/tabfocus/plugin-c004f18acdee65bc533bf582e05017cb72a1c78e235e6a6301d7f8cb218f059e.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2368,"digest":"c004f18acdee65bc533bf582e05017cb72a1c78e235e6a6301d7f8cb218f059e","integrity":"sha256-wATxis3uZbxTO/WC4FAXy3Khx44jXmpjAdf4yyGPBZ4="},"tinymce/plugins/table/plugin-dbea734fa37f0c2143ea225ff48c358261941b6cf347292de89f6d503a16cd27.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":48127,"digest":"dbea734fa37f0c2143ea225ff48c358261941b6cf347292de89f6d503a16cd27","integrity":"sha256-2+pzT6N/DCFD6iJf9Iw1gmGUG2zzRykt6J9tUDoWzSc="},"tinymce/plugins/template/plugin-9d2e073f0fa6d0e2c9433260db997138945ea2c73402420a8b12dbba432c5726.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":6762,"digest":"9d2e073f0fa6d0e2c9433260db997138945ea2c73402420a8b12dbba432c5726","integrity":"sha256-nS4HPw+m0OLJQzJg25lxOJReosc0AkIKixLbukMsVyY="},"tinymce/plugins/textcolor/plugin-7f993a50c7d5ca5af4a2117aecbafa820fc5c669bae6916509bc392b21ec10d7.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":5169,"digest":"7f993a50c7d5ca5af4a2117aecbafa820fc5c669bae6916509bc392b21ec10d7","integrity":"sha256-f5k6UMfVylr0ohF67Lr6gg/Fxmm65pFlCbw5KyHsENc="},"tinymce/plugins/textpattern/plugin-3abf3b59885a2b30139e25377c6ebf369e77178752ded63a8ae3a04bba7dabeb.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":4951,"digest":"3abf3b59885a2b30139e25377c6ebf369e77178752ded63a8ae3a04bba7dabeb","integrity":"sha256-Or87WYhaKzATniU3fG6/Np53F4dS3tY6iuOgS7p9q+s="},"tinymce/plugins/toc/plugin-24e4d24233ae96b5d80a1add45fed792c0be45c2ffb266957112465cd45ed0b7.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":3764,"digest":"24e4d24233ae96b5d80a1add45fed792c0be45c2ffb266957112465cd45ed0b7","integrity":"sha256-JOTSQjOulrXYChrdRf7XksC+RcL/smaVcRJGXNRe0Lc="},"tinymce/plugins/visualblocks/css/visualblocks-859e261c1d940c90994673ce593b60946710cc4f71371164db4ea695035ea593.css":{"logical_path":"tinymce/plugins/visualblocks/css/visualblocks.css","mtime":"2018-03-01T22:04:07+01:00","size":4995,"digest":"859e261c1d940c90994673ce593b60946710cc4f71371164db4ea695035ea593","integrity":"sha256-hZ4mHB2UDJCZRnPOWTtglGcQzE9xNxFk206mlQNepZM="},"tinymce/plugins/visualblocks/plugin-d65e950bb619d5c52a4fb236da31bb0ecc492e7477e7b0841a2ac06b6faeea26.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":2029,"digest":"d65e950bb619d5c52a4fb236da31bb0ecc492e7477e7b0841a2ac06b6faeea26","integrity":"sha256-1l6VC7YZ1cUqT7I22jG7DsxJLnR357CEGirAa2+u6iY="},"tinymce/plugins/visualchars/plugin-d56ff99b2792abbb690ebafe6d70e6c4487a7f5cf2788cb1f3fa4ea62d8b70a2.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":8944,"digest":"d56ff99b2792abbb690ebafe6d70e6c4487a7f5cf2788cb1f3fa4ea62d8b70a2","integrity":"sha256-1W/5myeSq7tpDrr+bXDmxEh6f1zyeIyx8/pOpi2LcKI="},"tinymce/plugins/wordcount/plugin-15f7440d901e81ffa69553b6cb42b1c9ed94c8d9a2417bbe47802539d152bdbc.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2017-10-07T16:14:30+02:00","size":12201,"digest":"15f7440d901e81ffa69553b6cb42b1c9ed94c8d9a2417bbe47802539d152bdbc","integrity":"sha256-FfdEDZAegf+mlVO2y0Kxye2UyNmiQXu+R4AlOdFSvbw="},"tinymce/skins/lightgray/content.inline.min-244f66927d819115fc6403d3562ac16d18884dcd2ca4766e464a03ec6f223adf.css":{"logical_path":"tinymce/skins/lightgray/content.inline.min.css","mtime":"2017-10-07T16:14:30+02:00","size":3335,"digest":"244f66927d819115fc6403d3562ac16d18884dcd2ca4766e464a03ec6f223adf","integrity":"sha256-JE9mkn2BkRX8ZAPTVirBbRiITc0spHZuRkoD7G8iOt8="},"tinymce/skins/lightgray/content.min-c59b96ac316de5e14c27896f4ffdfb27da41502112b8a9c5ea0851a25a742e4e.css":{"logical_path":"tinymce/skins/lightgray/content.min.css","mtime":"2017-10-07T16:14:30+02:00","size":3741,"digest":"c59b96ac316de5e14c27896f4ffdfb27da41502112b8a9c5ea0851a25a742e4e","integrity":"sha256-xZuWrDFt5eFMJ4lvT/37J9pBUCESuKnF6ghRolp0Lk4="},"tinymce/skins/lightgray/fonts/tinymce-small-a10fc4343d95b716c16d77463d475be5c079599ea67e1cd2bd3a94d5e7f508f9.eot":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.eot","mtime":"2018-03-01T22:04:07+01:00","size":9492,"digest":"a10fc4343d95b716c16d77463d475be5c079599ea67e1cd2bd3a94d5e7f508f9","integrity":"sha256-oQ/END2VtxbBbXdGPUdb5cB5WZ6mfhzSvTqU1ef1CPk="},"tinymce/skins/lightgray/fonts/tinymce-small-e7773001446ab937e1d8d4bd5e8dbd9b31d112037353a14b319e36dd010ed8ee.svg":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.svg","mtime":"2018-03-01T22:04:07+01:00","size":24727,"digest":"e7773001446ab937e1d8d4bd5e8dbd9b31d112037353a14b319e36dd010ed8ee","integrity":"sha256-53cwAURquTfh2NS9Xo29mzHREgNzU6FLMZ423QEO2O4="},"tinymce/skins/lightgray/fonts/tinymce-small-2f657502906d6f5c3fc8df3a82969114ebe030addfdc061c60c974b0f515fd09.ttf":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.ttf","mtime":"2018-03-01T22:04:07+01:00","size":9304,"digest":"2f657502906d6f5c3fc8df3a82969114ebe030addfdc061c60c974b0f515fd09","integrity":"sha256-L2V1ApBtb1w/yN86gpaRFOvgMK3f3AYcYMl0sPUV/Qk="},"tinymce/skins/lightgray/fonts/tinymce-small-d3efbb678ca6de5632902bd93772746ba2f8e4e2322b953936e12694a183aa31.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-small.woff","mtime":"2018-03-01T22:04:07+01:00","size":9380,"digest":"d3efbb678ca6de5632902bd93772746ba2f8e4e2322b953936e12694a183aa31","integrity":"sha256-0++7Z4ym3lYykCvZN3J0a6L45OIyK5U5NuEmlKGDqjE="},"tinymce/skins/lightgray/fonts/tinymce-2e9c4a68fde992476e0db9e44128cb1f2e898f0de0b80f552a8acb52bb7ca0db.eot":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.eot","mtime":"2017-12-25T19:51:42+01:00","size":17572,"digest":"2e9c4a68fde992476e0db9e44128cb1f2e898f0de0b80f552a8acb52bb7ca0db","integrity":"sha256-LpxKaP3pkkduDbnkQSjLHy6Jjw3guA9VKorLUrt8oNs="},"tinymce/skins/lightgray/fonts/tinymce-2094ddadc265c7f33570475fc78ef7adcdcb814e49060d17f5b4c4f8d1cb7ec6.svg":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.svg","mtime":"2017-12-25T19:51:42+01:00","size":45991,"digest":"2094ddadc265c7f33570475fc78ef7adcdcb814e49060d17f5b4c4f8d1cb7ec6","integrity":"sha256-IJTdrcJlx/M1cEdfx473rc3LgU5JBg0X9bTE+NHLfsY="},"tinymce/skins/lightgray/fonts/tinymce-477ea2d46c1a975dd492af4c10235fabfd09069595779cce00ea0381ca9b4a20.ttf":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.ttf","mtime":"2017-12-25T19:51:42+01:00","size":17408,"digest":"477ea2d46c1a975dd492af4c10235fabfd09069595779cce00ea0381ca9b4a20","integrity":"sha256-R36i1Gwal13Ukq9MECNfq/0JBpWVd5zOAOoDgcqbSiA="},"tinymce/skins/lightgray/fonts/tinymce-1ebc636bb24cbea637946ba8c22cbf4f35d8343ba9763045d2aee59e3714ae78.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.woff","mtime":"2017-12-25T19:51:42+01:00","size":17484,"digest":"1ebc636bb24cbea637946ba8c22cbf4f35d8343ba9763045d2aee59e3714ae78","integrity":"sha256-Hrxja7JMvqY3lGuowiy/TzXYNDupdjBF0q7lnjcUrng="},"tinymce/skins/lightgray/img/anchor-2861666fd107d278d4449970615136d06d7f746be9bb19072cf9c8f30e565e1e.gif":{"logical_path":"tinymce/skins/lightgray/img/anchor.gif","mtime":"2018-03-01T22:04:07+01:00","size":53,"digest":"2861666fd107d278d4449970615136d06d7f746be9bb19072cf9c8f30e565e1e","integrity":"sha256-KGFmb9EH0njURJlwYVE20G1/dGvpuxkHLPnI8w5WXh4="},"tinymce/skins/lightgray/img/loader-eb7cfd3d959b2e09c170f532e29f8b825f9bc770b2279fde58e595617753e244.gif":{"logical_path":"tinymce/skins/lightgray/img/loader.gif","mtime":"2018-03-01T22:04:07+01:00","size":2608,"digest":"eb7cfd3d959b2e09c170f532e29f8b825f9bc770b2279fde58e595617753e244","integrity":"sha256-63z9PZWbLgnBcPUy4p+Lgl+bx3CyJ5/eWOWVYXdT4kQ="},"tinymce/skins/lightgray/img/object-e6a15e52bc4a17b085073ba8debd4708ead6ae3d4cbeb3880c65cb7afc489777.gif":{"logical_path":"tinymce/skins/lightgray/img/object.gif","mtime":"2018-03-01T22:04:07+01:00","size":152,"digest":"e6a15e52bc4a17b085073ba8debd4708ead6ae3d4cbeb3880c65cb7afc489777","integrity":"sha256-5qFeUrxKF7CFBzuo3r1HCOrWrj1MvrOIDGXLevxIl3c="},"tinymce/skins/lightgray/img/trans-9cf020d7c3bba7f5ab10cda54aabef934f906d4f9a3acf99e9e7dc6c98579635.gif":{"logical_path":"tinymce/skins/lightgray/img/trans.gif","mtime":"2018-03-01T22:04:07+01:00","size":43,"digest":"9cf020d7c3bba7f5ab10cda54aabef934f906d4f9a3acf99e9e7dc6c98579635","integrity":"sha256-nPAg18O7p/WrEM2lSqvvk0+QbU+aOs+Z6efcbJhXljU="},"tinymce/skins/lightgray/skin.min-b12163641969e8e7775e00e73f8691e2892c35bf53d399deb4399832950c8acf.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2017-10-07T16:14:30+02:00","size":40376,"digest":"b12163641969e8e7775e00e73f8691e2892c35bf53d399deb4399832950c8acf","integrity":"sha256-sSFjZBlp6Od3XgDnP4aR4oksNb9T05netDmYMpUMis8="},"tinymce/themes/inlite/theme-705c8874883e10384f2f0f31576331734af05e4871ea70c8b54c09acf68b562a.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2017-10-07T16:14:30+02:00","size":17114,"digest":"705c8874883e10384f2f0f31576331734af05e4871ea70c8b54c09acf68b562a","integrity":"sha256-cFyIdIg+EDhPLw8xV2Mxc0rwXkhx6nDItUwJrPaLVio="},"tinymce/themes/modern/theme-acb8d1f30de151cc3b7f6b5131ed0e7e45abfd745256260b2d57b3594c97c685.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2017-10-07T16:14:30+02:00","size":14361,"digest":"acb8d1f30de151cc3b7f6b5131ed0e7e45abfd745256260b2d57b3594c97c685","integrity":"sha256-rLjR8w3hUcw7f2tRMe0OfkWr/XRSViYLLVezWUyXxoU="},"application-a3e14c617593fb4bc194d8021b38514c9b130e782e45cf92a07e546d36602c13.js":{"logical_path":"application.js","mtime":"2017-10-14T19:50:25+02:00","size":2822537,"digest":"a3e14c617593fb4bc194d8021b38514c9b130e782e45cf92a07e546d36602c13","integrity":"sha256-o+FMYXWT+0vBlNgCGzhRTJsTDnguRc+SoH5UbTZgLBM="},"tinymce-e0a997125d47cb527bd10d048179b98997bbac47ebaca5bd3e7a7439ae29d0f0.js":{"logical_path":"tinymce.js","mtime":"2018-01-05T22:13:22+01:00","size":1370217,"digest":"e0a997125d47cb527bd10d048179b98997bbac47ebaca5bd3e7a7439ae29d0f0","integrity":"sha256-4KmXEl1Hy1J70Q0EgXm5iZe7rEfrrKW9Pnp0Oa4p0PA="},"application-9b741d81e960c215cca53ea2b4e0bda53cfedf35d173e3075fa3aa0b1ed8ef0a.js":{"logical_path":"application.js","mtime":"2018-01-05T22:13:22+01:00","size":2459274,"digest":"9b741d81e960c215cca53ea2b4e0bda53cfedf35d173e3075fa3aa0b1ed8ef0a","integrity":"sha256-m3QdgelgwhXMpT6itOC9pTz+3zXRc+MHX6OqCx7Y7wo="},"application-661f8a3a1589512fce34b1382f6b7a631001f9cf430896fc658c95562edff4b7.css":{"logical_path":"application.css","mtime":"2018-01-05T22:13:22+01:00","size":230014,"digest":"661f8a3a1589512fce34b1382f6b7a631001f9cf430896fc658c95562edff4b7","integrity":"sha256-Zh+KOhWJUS/ONLE4L2t6YxAB+c9DCJb8ZYyVVi7f9Lc="},"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js":{"logical_path":"tinymce/preinit.js","mtime":"2018-03-01T22:04:07+01:00","size":82,"digest":"84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89","integrity":"sha256-hDKKU+eY3xL4ketJhxdz/Z+SVDnIYw6eIkI6gu+eb4k="},"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js":{"logical_path":"tinymce/rails.js","mtime":"2018-03-01T22:04:07+01:00","size":1345,"digest":"bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca","integrity":"sha256-v3/VyVLyVIEBB1jd5qJoFJgHT5UJIw9gGzFzVqalT8o="},"tinymce/tinymce-cccbb9fb34a9d8d8634a3a9ae0080ca394081f2b98cd81c4c378c5a1d73fba21.js":{"logical_path":"tinymce/tinymce.js","mtime":"2017-12-25T19:51:42+01:00","size":1368787,"digest":"cccbb9fb34a9d8d8634a3a9ae0080ca394081f2b98cd81c4c378c5a1d73fba21","integrity":"sha256-zMu5+zSp2NhjSjqa4AgMo5QIHyuYzYHEw3jFodc/uiE="},"tinymce/jquery.tinymce-c9ec5ed0b9118216bc9aa1ad4a251afff33d2c60e62057737b026003ab34efb3.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2017-12-25T19:51:42+01:00","size":4353,"digest":"c9ec5ed0b9118216bc9aa1ad4a251afff33d2c60e62057737b026003ab34efb3","integrity":"sha256-yexe0LkRgha8mqGtSiUa//M9LGDmIFdzewJgA6s077M="},"tinymce/plugins/advlist/plugin-1470ecd481c44e215caf021f095382fb9960da96dc0986228f269dbba0067d4a.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3704,"digest":"1470ecd481c44e215caf021f095382fb9960da96dc0986228f269dbba0067d4a","integrity":"sha256-FHDs1IHETiFcrwIfCVOC+5lg2pbcCYYijyadu6AGfUo="},"tinymce/plugins/anchor/plugin-c0c08d516edff61b4216b240af7f77487a035272794d0aef1c924a67129ac067.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2595,"digest":"c0c08d516edff61b4216b240af7f77487a035272794d0aef1c924a67129ac067","integrity":"sha256-wMCNUW7f9htCFrJAr393SHoDUnJ5TQrvHJJKZxKawGc="},"tinymce/plugins/autolink/plugin-a13df878211dfb03dda14031db66bbc8021b6b55e1da4447a96ee50ea0ba86e0.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3283,"digest":"a13df878211dfb03dda14031db66bbc8021b6b55e1da4447a96ee50ea0ba86e0","integrity":"sha256-oT34eCEd+wPdoUAx22a7yAIba1Xh2kRHqW7lDqC6huA="},"tinymce/plugins/autoresize/plugin-4cb04cc171a4e3f3b3b69770c74c53ec2ac0a743c303c2f5072b7f7c0d71c187.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3400,"digest":"4cb04cc171a4e3f3b3b69770c74c53ec2ac0a743c303c2f5072b7f7c0d71c187","integrity":"sha256-TLBMwXGk4/Oztpdwx0xT7CrAp0PDA8L1Byt/fA1xwYc="},"tinymce/plugins/autosave/plugin-b471db0ebd9f584c62a614a85fa16ae06cadce14af85ee5b2e39b84d0c9ec05c.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4787,"digest":"b471db0ebd9f584c62a614a85fa16ae06cadce14af85ee5b2e39b84d0c9ec05c","integrity":"sha256-tHHbDr2fWExiphSoX6Fq4GytzhSvhe5bLjm4TQyewFw="},"tinymce/plugins/bbcode/plugin-b624047c40c5435b935c2591fbf0eb851ae7794d9350b611b10bb6b23aa4bd9c.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3771,"digest":"b624047c40c5435b935c2591fbf0eb851ae7794d9350b611b10bb6b23aa4bd9c","integrity":"sha256-tiQEfEDFQ1uTXCWR+/DrhRrneU2TULYRsQu2sjqkvZw="},"tinymce/plugins/charmap/plugin-8f5abea75aec0a80dd6328f29da433574c8a9b025fea0a3b2cb8127605dda330.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":10091,"digest":"8f5abea75aec0a80dd6328f29da433574c8a9b025fea0a3b2cb8127605dda330","integrity":"sha256-j1q+p1rsCoDdYyjynaQzV0yKmwJf6go7LLgSdgXdozA="},"tinymce/plugins/code/plugin-41ed678cf1339c20afc948e499212d06bd502c3d4a94da1d37ad427ec525f123.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2209,"digest":"41ed678cf1339c20afc948e499212d06bd502c3d4a94da1d37ad427ec525f123","integrity":"sha256-Qe1njPEznCCvyUjkmSEtBr1QLD1KlNodN61CfsUl8SM="},"tinymce/plugins/codesample/plugin-a59fe13189ec82797e929ebf320e294669e73fc040d5a4505e3ab01f6b96daaa.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":21159,"digest":"a59fe13189ec82797e929ebf320e294669e73fc040d5a4505e3ab01f6b96daaa","integrity":"sha256-pZ/hMYnsgnl+kp6/Mg4pRmnnP8BA1aRQXjqwH2uW2qo="},"tinymce/plugins/colorpicker/plugin-e48f5ad978732e6129285d3aa00dfaf5d7b670dc189629835ad888438963bc3d.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2230,"digest":"e48f5ad978732e6129285d3aa00dfaf5d7b670dc189629835ad888438963bc3d","integrity":"sha256-5I9a2XhzLmEpKF06oA369de2cNwYlimDWtiIQ4ljvD0="},"tinymce/plugins/contextmenu/plugin-d9e7ddcde9ffdbdb2eec811e817b822662234b90d6046fba0ed5a77c5cc0c3d7.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3139,"digest":"d9e7ddcde9ffdbdb2eec811e817b822662234b90d6046fba0ed5a77c5cc0c3d7","integrity":"sha256-2efdzen/29su7IEegXuCJmIjS5DWBG+6DtWnfFzAw9c="},"tinymce/plugins/directionality/plugin-d2e6f8a1c65b0c9e6484d356263e8afc3dc7d3c4c9bbf2bb2155599063f427e5.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":1859,"digest":"d2e6f8a1c65b0c9e6484d356263e8afc3dc7d3c4c9bbf2bb2155599063f427e5","integrity":"sha256-0ub4ocZbDJ5khNNWJj6K/D3H08TJu/K7IVVZkGP0J+U="},"tinymce/plugins/emoticons/plugin-d57266d91f221127649a29316e2a6b33a89281d5e546b0688cf177d56144b62d.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2014,"digest":"d57266d91f221127649a29316e2a6b33a89281d5e546b0688cf177d56144b62d","integrity":"sha256-1XJm2R8iESdkmikxbiprM6iSgdXlRrBojPF31WFEti0="},"tinymce/plugins/fullpage/plugin-04d845d28977b02b9669d861dc21188ca666de825803eef4e57c040d40249562.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":8990,"digest":"04d845d28977b02b9669d861dc21188ca666de825803eef4e57c040d40249562","integrity":"sha256-BNhF0ol3sCuWadhh3CEYjKZm3oJYA+705XwEDUAklWI="},"tinymce/plugins/fullscreen/plugin-f8bbdd50ed0196693f9d98d1e478cc4d18a65270cc1517eca5a03d6eeefd369a.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3430,"digest":"f8bbdd50ed0196693f9d98d1e478cc4d18a65270cc1517eca5a03d6eeefd369a","integrity":"sha256-+LvdUO0Blmk/nZjR5HjMTRimUnDMFRfspaA9bu79Npo="},"tinymce/plugins/help/img/logo-95b06f8538b11c4c30170075a09f93cf5871f74dd2541e95ad3d9da31976fcac.png":{"logical_path":"tinymce/plugins/help/img/logo.png","mtime":"2018-03-01T22:04:07+01:00","size":13208,"digest":"95b06f8538b11c4c30170075a09f93cf5871f74dd2541e95ad3d9da31976fcac","integrity":"sha256-lbBvhTixHEwwFwB1oJ+Tz1hx903SVB6VrT2doxl2/Kw="},"tinymce/plugins/help/plugin-18f46f77691cc2f94b36c711b01da5f867cfe14faf2fb84c9e8886782ce3de52.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":14457,"digest":"18f46f77691cc2f94b36c711b01da5f867cfe14faf2fb84c9e8886782ce3de52","integrity":"sha256-GPRvd2kcwvlLNscRsB2l+GfP4U+vL7hMnoiGeCzj3lI="},"tinymce/plugins/hr/plugin-9664dcccc57ea070459d3ba1aba0916f22c941d7a601f9d4cc91b9d29365b15a.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":1355,"digest":"9664dcccc57ea070459d3ba1aba0916f22c941d7a601f9d4cc91b9d29365b15a","integrity":"sha256-lmTczMV+oHBFnTuhq6CRbyLJQdemAfnUzJG50pNlsVo="},"tinymce/plugins/image/plugin-1f27e4ea86eb5aa38162dd5ba9dc2c4dd1ee8bd5d11f5583420979cf05d16f86.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":15667,"digest":"1f27e4ea86eb5aa38162dd5ba9dc2c4dd1ee8bd5d11f5583420979cf05d16f86","integrity":"sha256-Hyfk6obrWqOBYt1bqdwsTdHui9XRH1WDQgl5zwXRb4Y="},"tinymce/plugins/imagetools/plugin-c4dab69e83c305806965c9b31f0ea987b2e2a82a7cb893376775e06cf233a59c.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":41850,"digest":"c4dab69e83c305806965c9b31f0ea987b2e2a82a7cb893376775e06cf233a59c","integrity":"sha256-xNq2noPDBYBpZcmzHw6ph7LiqCp8uJM3Z3XgbPIzpZw="},"tinymce/plugins/importcss/plugin-cbf47759816f889168075dc99299a2c0913572f8edcc2e1ef4b994b9b61cae30.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4619,"digest":"cbf47759816f889168075dc99299a2c0913572f8edcc2e1ef4b994b9b61cae30","integrity":"sha256-y/R3WYFviJFoB13JkpmiwJE1cvjtzC4e9LmUubYcrjA="},"tinymce/plugins/insertdatetime/plugin-75e743483171dc0dc5b35e040cd1ff5d6ef7d4e2d609dc1ce68589420ccc07c2.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4725,"digest":"75e743483171dc0dc5b35e040cd1ff5d6ef7d4e2d609dc1ce68589420ccc07c2","integrity":"sha256-dedDSDFx3A3Fs14EDNH/XW731OLWCdwc5oWJQgzMB8I="},"tinymce/plugins/legacyoutput/plugin-46d0010c4bcbf3c9f0a737f16a659768461a617884441096dae0102a2654a089.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4352,"digest":"46d0010c4bcbf3c9f0a737f16a659768461a617884441096dae0102a2654a089","integrity":"sha256-RtABDEvL88nwpzfxamWXaEYaYXiERBCW2uAQKiZUoIk="},"tinymce/plugins/link/plugin-bc112313d4019d56fc62bf3d7feac911b1eb5e8b1272256e8e926380f098599e.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":11480,"digest":"bc112313d4019d56fc62bf3d7feac911b1eb5e8b1272256e8e926380f098599e","integrity":"sha256-vBEjE9QBnVb8Yr89f+rJEbHrXosSciVujpJjgPCYWZ4="},"tinymce/plugins/lists/plugin-52d9f2d934ac50304bdd9159bd3982ca5b39afdc23aaae86d1ac47ccf559c025.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":17665,"digest":"52d9f2d934ac50304bdd9159bd3982ca5b39afdc23aaae86d1ac47ccf559c025","integrity":"sha256-Utny2TSsUDBL3ZFZvTmCyls5r9wjqq6G0axHzPVZwCU="},"tinymce/plugins/media/plugin-49171347d2bc7f405eacee0b753912075a966708924af29ca75007f0c0b532a2.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":18047,"digest":"49171347d2bc7f405eacee0b753912075a966708924af29ca75007f0c0b532a2","integrity":"sha256-SRcTR9K8f0BerO4LdTkSB1qWZwiSSvKcp1AH8MC1MqI="},"tinymce/plugins/nonbreaking/plugin-a63cb86503260a85efe7db0b1521c0d0a80cd27f46706713230938e0c44bd670.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2049,"digest":"a63cb86503260a85efe7db0b1521c0d0a80cd27f46706713230938e0c44bd670","integrity":"sha256-pjy4ZQMmCoXv59sLFSHA0KgM0n9GcGcTIwk44MRL1nA="},"tinymce/plugins/noneditable/plugin-e74020a6f58e8c258309f4536aeea2a896a795cb13d69696c388e4246c54578b.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2610,"digest":"e74020a6f58e8c258309f4536aeea2a896a795cb13d69696c388e4246c54578b","integrity":"sha256-50AgpvWOjCWDCfRTau6iqJanlcsT1paWw4jkJGxUV4s="},"tinymce/plugins/pagebreak/plugin-839ecfcf70f7d0365c2d1e3ef3a55595069b938c19aeede714bc31b61a67026b.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2684,"digest":"839ecfcf70f7d0365c2d1e3ef3a55595069b938c19aeede714bc31b61a67026b","integrity":"sha256-g57Pz3D30DZcLR4+86VVlQabk4wZru3nFLwxthpnAms="},"tinymce/plugins/paste/plugin-931ce6f77c1daecc9e5c613b90cad50d5789099add967b7b13774defbd192b0f.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":24617,"digest":"931ce6f77c1daecc9e5c613b90cad50d5789099add967b7b13774defbd192b0f","integrity":"sha256-kxzm93wdrsyeXGE7kMrVDVeJCZrdlnt7E3dN770ZKw8="},"tinymce/plugins/preview/plugin-41472eb0321860529e83e84e54a86f32c5c0858a16c8e7738b838e31266447bc.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3346,"digest":"41472eb0321860529e83e84e54a86f32c5c0858a16c8e7738b838e31266447bc","integrity":"sha256-QUcusDIYYFKeg+hOVKhvMsXAhYoWyOdzi4OOMSZkR7w="},"tinymce/plugins/print/plugin-a7cd4beef6dde992d25d4d6720a5a2d9d15afca45e037d123a41a82ef431c78f.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":1293,"digest":"a7cd4beef6dde992d25d4d6720a5a2d9d15afca45e037d123a41a82ef431c78f","integrity":"sha256-p81L7vbd6ZLSXU1nIKWi2dFa/KReA30SOkGoLvQxx48="},"tinymce/plugins/save/plugin-e48e177a9505d7a21fb22a62d400fb95c30aa3f9de119f5531eb360f7c52fe7b.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2635,"digest":"e48e177a9505d7a21fb22a62d400fb95c30aa3f9de119f5531eb360f7c52fe7b","integrity":"sha256-5I4XepUF16Ifsipi1AD7lcMKo/neEZ9VMes2D3xS/ns="},"tinymce/plugins/searchreplace/plugin-43e62c6dc566523c4e4bf782d73819568072db159cefa29adddf5f8aa9c2d06b.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":8571,"digest":"43e62c6dc566523c4e4bf782d73819568072db159cefa29adddf5f8aa9c2d06b","integrity":"sha256-Q+YsbcVmUjxOS/eC1zgZVoBy2xWc76Ka3d9fiqnC0Gs="},"tinymce/plugins/spellchecker/plugin-611b439b3cce8c78a716a66500a38fc7be57b09d9cd4bf3f3d72de0fe3a9a4dd.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":12144,"digest":"611b439b3cce8c78a716a66500a38fc7be57b09d9cd4bf3f3d72de0fe3a9a4dd","integrity":"sha256-YRtDmzzOjHinFqZlAKOPx75XsJ2c1L8/PXLeD+OppN0="},"tinymce/plugins/tabfocus/plugin-419ef25b5f1aab6043e496e4f6132d3b0505ffa5398e3b66f7e8a8280268077d.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":2645,"digest":"419ef25b5f1aab6043e496e4f6132d3b0505ffa5398e3b66f7e8a8280268077d","integrity":"sha256-QZ7yW18aq2BD5Jbk9hMtOwUF/6U5jjtm9+ioKAJoB30="},"tinymce/plugins/table/plugin-0d4057859445665d58e85d861f2bbf5f983dfa6014b99b6cca0a6561309deb94.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":159001,"digest":"0d4057859445665d58e85d861f2bbf5f983dfa6014b99b6cca0a6561309deb94","integrity":"sha256-DUBXhZRFZl1Y6F2GHyu/X5g9+mAUuZtsygplYTCd65Q="},"tinymce/plugins/template/plugin-0ea66983b1cfb34cd2ea8e73ec305c1156174ef0e932132bee2dfa4b99cbb4f5.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":7786,"digest":"0ea66983b1cfb34cd2ea8e73ec305c1156174ef0e932132bee2dfa4b99cbb4f5","integrity":"sha256-DqZpg7HPs0zS6o5z7DBcEVYXTvDpMhMr7i36S5nLtPU="},"tinymce/plugins/textcolor/plugin-c8cecbcd75555cc03593b9dedaf2b6ffb78dffc92974d2d1bf7f65b94ab61d30.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":6210,"digest":"c8cecbcd75555cc03593b9dedaf2b6ffb78dffc92974d2d1bf7f65b94ab61d30","integrity":"sha256-yM7LzXVVXMA1k7ne2vK2/7eN/8kpdNLRv39luUq2HTA="},"tinymce/plugins/textpattern/plugin-411ee2dc5fa1d8386fc59eae170f80369ed6d2d2990d609dbcfc656262c6620b.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":5819,"digest":"411ee2dc5fa1d8386fc59eae170f80369ed6d2d2990d609dbcfc656262c6620b","integrity":"sha256-QR7i3F+h2DhvxZ6uFw+ANp7W0tKZDWCdvPxlYmLGYgs="},"tinymce/plugins/toc/plugin-b7f229f800cabbbaea4e36a56981011cbddff446bd383ecbb28ddbd4b9cc55bd.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":4374,"digest":"b7f229f800cabbbaea4e36a56981011cbddff446bd383ecbb28ddbd4b9cc55bd","integrity":"sha256-t/Ip+ADKu7rqTjalaYEBHL3f9Ea9OD7Lso3b1LnMVb0="},"tinymce/plugins/visualblocks/plugin-58fa11272d279775e4b12858c1d2acc2e1b5feebe84b3db3ee7df855665d12e4.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":3095,"digest":"58fa11272d279775e4b12858c1d2acc2e1b5feebe84b3db3ee7df855665d12e4","integrity":"sha256-WPoRJy0nl3XksShYwdKswuG1/uvoSz2z7n34VWZdEuQ="},"tinymce/plugins/visualchars/plugin-9963828126c769478acfc74773441472c043518d458c4777c0e766d3298dbcaf.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":10007,"digest":"9963828126c769478acfc74773441472c043518d458c4777c0e766d3298dbcaf","integrity":"sha256-mWOCgSbHaUeKz8dHc0QUcsBDUY1FjEd3wOdm0ymNvK8="},"tinymce/plugins/wordcount/plugin-049da43cf52b32d85ec1ea85bb6ea65ef08e31ff3a26ceac93885974094db7f1.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2017-12-25T19:51:42+01:00","size":12538,"digest":"049da43cf52b32d85ec1ea85bb6ea65ef08e31ff3a26ceac93885974094db7f1","integrity":"sha256-BJ2kPPUrMtheweqFu26mXvCOMf86Js6sk4hZdAlNt/E="},"tinymce/skins/lightgray/content.inline.min-58c28f0e832b8f0622b03e4d5faaada2cb2c481a1ec171de02de97fe84555b19.css":{"logical_path":"tinymce/skins/lightgray/content.inline.min.css","mtime":"2018-03-01T22:04:07+01:00","size":3327,"digest":"58c28f0e832b8f0622b03e4d5faaada2cb2c481a1ec171de02de97fe84555b19","integrity":"sha256-WMKPDoMrjwYisD5NX6qtosssSBoewXHeAt6X/oRVWxk="},"tinymce/skins/lightgray/content.min-9aaa337dc1206c756b48c9ea0444faac9402206186069dc7423e912a71460055.css":{"logical_path":"tinymce/skins/lightgray/content.min.css","mtime":"2018-03-01T22:04:07+01:00","size":3733,"digest":"9aaa337dc1206c756b48c9ea0444faac9402206186069dc7423e912a71460055","integrity":"sha256-mqozfcEgbHVrSMnqBET6rJQCIGGGBp3HQj6RKnFGAFU="},"tinymce/skins/lightgray/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css":{"logical_path":"tinymce/skins/lightgray/content.mobile.min.css","mtime":"2018-03-01T22:04:07+01:00","size":235,"digest":"230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346","integrity":"sha256-Iwwx9lNWx8sXmSRKNPenIskqbWFOBuWdSNsOvM1/I0Y="},"tinymce/skins/lightgray/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce-mobile.woff","mtime":"2018-03-01T22:04:07+01:00","size":4624,"digest":"e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213","integrity":"sha256-5kvxVqQy1j9bNLRWe1E9wNNRtJFhx/YI+4JXS/3Z0hM="},"tinymce/skins/lightgray/skin.min-0ba2274577ef3fe1e07c73ada6e6e6fb6e6db9dc0e2aeba6053e7395c66215e8.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2017-12-25T19:51:42+01:00","size":43094,"digest":"0ba2274577ef3fe1e07c73ada6e6e6fb6e6db9dc0e2aeba6053e7395c66215e8","integrity":"sha256-C6InRXfvP+HgfHOtpubm+25tudwOKuumBT5zlcZiFeg="},"tinymce/skins/lightgray/skin.mobile.min-fe907c53c1657dd3f3c3cc22926b2f6a342a345d2b2f1a7953e3fdceb2841d4c.css":{"logical_path":"tinymce/skins/lightgray/skin.mobile.min.css","mtime":"2018-03-01T22:04:07+01:00","size":27962,"digest":"fe907c53c1657dd3f3c3cc22926b2f6a342a345d2b2f1a7953e3fdceb2841d4c","integrity":"sha256-/pB8U8FlfdPzw8wikmsvajQqNF0rLxp5U+P9zrKEHUw="},"tinymce/themes/inlite/theme-16e3ffb72e6e35097ba84668d5abd271f62120ba315d95d852f9210621952e54.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2017-12-25T19:51:42+01:00","size":154354,"digest":"16e3ffb72e6e35097ba84668d5abd271f62120ba315d95d852f9210621952e54","integrity":"sha256-FuP/ty5uNQl7qEZo1avScfYhILoxXZXYUvkhBiGVLlQ="},"tinymce/themes/mobile/theme-c3d08a70821c5f901e5b53dbf05548b0c7dc5424c8c42a260b3e5b496fbdb65c.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2017-12-25T19:51:42+01:00","size":231954,"digest":"c3d08a70821c5f901e5b53dbf05548b0c7dc5424c8c42a260b3e5b496fbdb65c","integrity":"sha256-w9CKcIIcX5AeW1Pb8FVIsMfcVCTIxComCz5bSW+9tlw="},"tinymce/themes/modern/theme-c648c4f32163d55e6b2311339a3a1d29e039b7f79ed5271854663cc013e9052c.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2017-12-25T19:51:42+01:00","size":152847,"digest":"c648c4f32163d55e6b2311339a3a1d29e039b7f79ed5271854663cc013e9052c","integrity":"sha256-xkjE8yFj1V5rIxEzmjodKeA5t/ee1ScYVGY8wBPpBSw="},"tinymce/langs/af_ZA-6d5614830d9cc3d504d9922bf5373665246936adc337530a7a672e9bf5fc21ea.js":{"logical_path":"tinymce/langs/af_ZA.js","mtime":"2018-01-05T22:13:22+01:00","size":7669,"digest":"6d5614830d9cc3d504d9922bf5373665246936adc337530a7a672e9bf5fc21ea","integrity":"sha256-bVYUgw2cw9UE2ZIr9Tc2ZSRpNq3DN1MKemcum/X8Ieo="},"tinymce/langs/ar-5a0ab86d268d50c7c9462e0645b96e6c09d928976c0b27007f85f7c5638cbbf8.js":{"logical_path":"tinymce/langs/ar.js","mtime":"2018-01-05T22:13:22+01:00","size":21817,"digest":"5a0ab86d268d50c7c9462e0645b96e6c09d928976c0b27007f85f7c5638cbbf8","integrity":"sha256-Wgq4bSaNUMfJRi4GRblubAnZKJdsCycAf4X3xWOMu/g="},"tinymce/langs/be-2d601b695076754977002cf73d6809919ca8c0758850a45e34a692af7b08fb1d.js":{"logical_path":"tinymce/langs/be.js","mtime":"2018-01-05T22:13:22+01:00","size":22653,"digest":"2d601b695076754977002cf73d6809919ca8c0758850a45e34a692af7b08fb1d","integrity":"sha256-LWAbaVB2dUl3ACz3PWgJkZyowHWIUKReNKaSr3sI+x0="},"tinymce/langs/bg_BG-0272f963807ba8672db0d5f6b8919d2f3aa2f8bb172a17c5f8c2934760ba0dce.js":{"logical_path":"tinymce/langs/bg_BG.js","mtime":"2018-01-05T22:13:22+01:00","size":28023,"digest":"0272f963807ba8672db0d5f6b8919d2f3aa2f8bb172a17c5f8c2934760ba0dce","integrity":"sha256-AnL5Y4B7qGctsNX2uJGdLzqi+LsXKhfF+MKTR2C6Dc4="},"tinymce/langs/ca-e4765b96adf2232248998c6b703730652cd4302035ee39733cd6e5df8d79ee22.js":{"logical_path":"tinymce/langs/ca.js","mtime":"2018-01-05T22:13:22+01:00","size":9647,"digest":"e4765b96adf2232248998c6b703730652cd4302035ee39733cd6e5df8d79ee22","integrity":"sha256-5HZblq3yIyJImYxrcDcwZSzUMCA17jlzPNbl34157iI="},"tinymce/langs/cs-77418e2f6150bfb0391227eeff79499f8654a9fcc5314f30ec88e4684e8e5fa6.js":{"logical_path":"tinymce/langs/cs.js","mtime":"2018-01-05T22:13:22+01:00","size":10817,"digest":"77418e2f6150bfb0391227eeff79499f8654a9fcc5314f30ec88e4684e8e5fa6","integrity":"sha256-d0GOL2FQv7A5Eifu/3lJn4ZUqfzFMU8w7IjkaE6OX6Y="},"tinymce/langs/cy-d337e01ca993cd9fb80ce3fccc39dff7f1dc47021264bf9ec14ac9af2b3d74b5.js":{"logical_path":"tinymce/langs/cy.js","mtime":"2018-01-05T22:13:22+01:00","size":7751,"digest":"d337e01ca993cd9fb80ce3fccc39dff7f1dc47021264bf9ec14ac9af2b3d74b5","integrity":"sha256-0zfgHKmTzZ+4DOP8zDnf9/HcRwISZL+ewUrJrys9dLU="},"tinymce/langs/da-4a040df5d2a225dcd10aa1c7d05ff7f36a854d4834919497812c3ba5aa5b06f4.js":{"logical_path":"tinymce/langs/da.js","mtime":"2018-01-05T22:13:22+01:00","size":9262,"digest":"4a040df5d2a225dcd10aa1c7d05ff7f36a854d4834919497812c3ba5aa5b06f4","integrity":"sha256-SgQN9dKiJdzRCqHH0F/382qFTUg0kZSXgSw7papbBvQ="},"tinymce/langs/de-f9a88202d526e76875d22053cc659e4aabb43fa88411296ba122b8cf4d468eef.js":{"logical_path":"tinymce/langs/de.js","mtime":"2018-01-05T22:13:22+01:00","size":10076,"digest":"f9a88202d526e76875d22053cc659e4aabb43fa88411296ba122b8cf4d468eef","integrity":"sha256-+aiCAtUm52h10iBTzGWeSqu0P6iEESlroSK4z01Gju8="},"tinymce/langs/de_AT-2c6a1926c1cddd2079d27e844db153d797505e21bab6bdab018c2e5d1f0532fb.js":{"logical_path":"tinymce/langs/de_AT.js","mtime":"2018-01-05T22:13:22+01:00","size":10065,"digest":"2c6a1926c1cddd2079d27e844db153d797505e21bab6bdab018c2e5d1f0532fb","integrity":"sha256-LGoZJsHN3SB50n6ETbFT15dQXiG6tr2rAYwuXR8FMvs="},"tinymce/langs/dv-3b3e040a7e24fd18903d4833a8da09f2e2b65fbd1c3ac325a3cd373775f9bd23.js":{"logical_path":"tinymce/langs/dv.js","mtime":"2018-01-05T22:13:22+01:00","size":22234,"digest":"3b3e040a7e24fd18903d4833a8da09f2e2b65fbd1c3ac325a3cd373775f9bd23","integrity":"sha256-Oz4ECn4k/RiQPUgzqNoJ8uK2X70cOsMlo803N3X5vSM="},"tinymce/langs/el-0d51a187db018442cb94826f66155adb3fd805ac792c1110a04a548bc7d5d6c2.js":{"logical_path":"tinymce/langs/el.js","mtime":"2018-01-05T22:13:22+01:00","size":24860,"digest":"0d51a187db018442cb94826f66155adb3fd805ac792c1110a04a548bc7d5d6c2","integrity":"sha256-DVGhh9sBhELLlIJvZhVa2z/YBax5LBEQoEpUi8fV1sI="},"tinymce/langs/en_CA-2c64a16614c895022cc2b6aa4f134f4917ec8dd045c2184672653f3fae158db4.js":{"logical_path":"tinymce/langs/en_CA.js","mtime":"2018-01-05T22:13:22+01:00","size":8530,"digest":"2c64a16614c895022cc2b6aa4f134f4917ec8dd045c2184672653f3fae158db4","integrity":"sha256-LGShZhTIlQIswraqTxNPSRfsjdBFwhhGcmU/P64VjbQ="},"tinymce/langs/en_GB-4eb69d31cb70a3d3c53185883d58027a70524b0f5db82200bfa45b6a8ea22224.js":{"logical_path":"tinymce/langs/en_GB.js","mtime":"2018-01-05T22:13:22+01:00","size":7438,"digest":"4eb69d31cb70a3d3c53185883d58027a70524b0f5db82200bfa45b6a8ea22224","integrity":"sha256-TradMctwo9PFMYWIPVgCenBSSw9duCIAv6Rbao6iIiQ="},"tinymce/langs/es-4fd5fd5b991c2c1e3032a297ae4605088bcd6835a467e64f9568de1b554e559c.js":{"logical_path":"tinymce/langs/es.js","mtime":"2018-01-05T22:13:22+01:00","size":9447,"digest":"4fd5fd5b991c2c1e3032a297ae4605088bcd6835a467e64f9568de1b554e559c","integrity":"sha256-T9X9W5kcLB4wMqKXrkYFCIvNaDWkZ+ZPlWjeG1VOVZw="},"tinymce/langs/es_MX-bc4f779c4782ed7bc7e7c4b7cd9293d7803256660cc529307dca05a40c49b94d.js":{"logical_path":"tinymce/langs/es_MX.js","mtime":"2018-01-05T22:13:22+01:00","size":9555,"digest":"bc4f779c4782ed7bc7e7c4b7cd9293d7803256660cc529307dca05a40c49b94d","integrity":"sha256-vE93nEeC7XvH58S3zZKT14AyVmYMxSkwfcoFpAxJuU0="},"tinymce/langs/et-26b7ced79b21dc8a21fda1dd95247e93c35096461238c8579dea16e48d12b4ef.js":{"logical_path":"tinymce/langs/et.js","mtime":"2018-01-05T22:13:22+01:00","size":8364,"digest":"26b7ced79b21dc8a21fda1dd95247e93c35096461238c8579dea16e48d12b4ef","integrity":"sha256-JrfO15sh3Ioh/aHdlSR+k8NQlkYSOMhXneoW5I0StO8="},"tinymce/langs/fa_IR-4103bdacd3e4b53f30b27019dc9cdbc6402e3345331a93a5768900d591633201.js":{"logical_path":"tinymce/langs/fa_IR.js","mtime":"2018-01-05T22:13:22+01:00","size":22191,"digest":"4103bdacd3e4b53f30b27019dc9cdbc6402e3345331a93a5768900d591633201","integrity":"sha256-QQO9rNPktT8wsnAZ3JzbxkAuM0UzGpOldokA1ZFjMgE="},"tinymce/langs/fr_FR-c7b4bea9c3f186767ffee3f06d12830574620a5f58c4f76dede76d311be2a9c6.js":{"logical_path":"tinymce/langs/fr_FR.js","mtime":"2018-01-05T22:13:22+01:00","size":9839,"digest":"c7b4bea9c3f186767ffee3f06d12830574620a5f58c4f76dede76d311be2a9c6","integrity":"sha256-x7S+qcPxhnZ//uPwbRKDBXRiCl9YxPdt7edtMRviqcY="},"tinymce/langs/ga-7c1e918737301e611973d91e10c27930873e97dd690f7d10862d0cd40e639055.js":{"logical_path":"tinymce/langs/ga.js","mtime":"2018-01-05T22:13:22+01:00","size":10477,"digest":"7c1e918737301e611973d91e10c27930873e97dd690f7d10862d0cd40e639055","integrity":"sha256-fB6RhzcwHmEZc9keEMJ5MIc+l91pD30Qhi0M1A5jkFU="},"tinymce/langs/gl-f6ec1cbe13f00683a8fceb6e73a353dfced77ab3f63d99fa2ae7c40bd6b3a64c.js":{"logical_path":"tinymce/langs/gl.js","mtime":"2018-01-05T22:13:22+01:00","size":9315,"digest":"f6ec1cbe13f00683a8fceb6e73a353dfced77ab3f63d99fa2ae7c40bd6b3a64c","integrity":"sha256-9uwcvhPwBoOo/Otuc6NT387XerP2PZn6KufEC9azpkw="},"tinymce/langs/he_IL-74b957588e5998649fde6c6f3686bb74790d7173d0f31c90a4272a4596b16b32.js":{"logical_path":"tinymce/langs/he_IL.js","mtime":"2018-01-05T22:13:22+01:00","size":17345,"digest":"74b957588e5998649fde6c6f3686bb74790d7173d0f31c90a4272a4596b16b32","integrity":"sha256-dLlXWI5ZmGSf3mxvNoa7dHkNcXPQ8xyQpCcqRZaxazI="},"tinymce/langs/hr-1dda1c40a40645a936a214478697c44137c805bf8b9c9e4485a0fb142e4ffe18.js":{"logical_path":"tinymce/langs/hr.js","mtime":"2018-01-05T22:13:22+01:00","size":9037,"digest":"1dda1c40a40645a936a214478697c44137c805bf8b9c9e4485a0fb142e4ffe18","integrity":"sha256-HdocQKQGRak2ohRHhpfEQTfIBb+LnJ5EhaD7FC5P/hg="},"tinymce/langs/hu_HU-9e74f5ada14970f167ee2ec1f46c8fd41d8bb98f9f5f5df9b4ad041cdaa81fd7.js":{"logical_path":"tinymce/langs/hu_HU.js","mtime":"2018-01-05T22:13:22+01:00","size":11691,"digest":"9e74f5ada14970f167ee2ec1f46c8fd41d8bb98f9f5f5df9b4ad041cdaa81fd7","integrity":"sha256-nnT1raFJcPFn7i7B9GyP1B2LuY+fX135tK0EHNqoH9c="},"tinymce/langs/it-c4549598b4e13df2201efb7f5b971e5bc55a731b25dd9ac7adb5f75780fe5f34.js":{"logical_path":"tinymce/langs/it.js","mtime":"2018-01-05T22:13:22+01:00","size":9264,"digest":"c4549598b4e13df2201efb7f5b971e5bc55a731b25dd9ac7adb5f75780fe5f34","integrity":"sha256-xFSVmLThPfIgHvt/W5ceW8Vacxsl3ZrHrbX3V4D+XzQ="},"tinymce/langs/ja-da6414959d66a9b0cb46078592bd018bc8dc6707588d5ab911ebd09e589f92f6.js":{"logical_path":"tinymce/langs/ja.js","mtime":"2018-01-05T22:13:22+01:00","size":15243,"digest":"da6414959d66a9b0cb46078592bd018bc8dc6707588d5ab911ebd09e589f92f6","integrity":"sha256-2mQUlZ1mqbDLRgeFkr0Bi8jcZwdYjVq5EevQnlifkvY="},"tinymce/langs/ka_GE-480559d4cffe96c5cae5e41f9ffd06f979785b3ce93e547462fbabc5cc1a88fb.js":{"logical_path":"tinymce/langs/ka_GE.js","mtime":"2018-01-05T22:13:22+01:00","size":22807,"digest":"480559d4cffe96c5cae5e41f9ffd06f979785b3ce93e547462fbabc5cc1a88fb","integrity":"sha256-SAVZ1M/+lsXK5eQfn/0G+Xl4WzzpPlR0YvurxcwaiPs="},"tinymce/langs/kab-dc638a064c01cae2218d445beec60da010ee8dee8524f245ae3b99c8c5b3567c.js":{"logical_path":"tinymce/langs/kab.js","mtime":"2018-01-05T22:13:22+01:00","size":7904,"digest":"dc638a064c01cae2218d445beec60da010ee8dee8524f245ae3b99c8c5b3567c","integrity":"sha256-3GOKBkwByuIhjURb7sYNoBDuje6FJPJFrjuZyMWzVnw="},"tinymce/langs/kk-282b790d721dcaf6b44d930f70825e06969602572e477b7ef73766360eefdbaf.js":{"logical_path":"tinymce/langs/kk.js","mtime":"2018-01-05T22:13:22+01:00","size":21706,"digest":"282b790d721dcaf6b44d930f70825e06969602572e477b7ef73766360eefdbaf","integrity":"sha256-KCt5DXIdyva0TZMPcIJeBpaWAlcuR3t+9zdmNg7v268="},"tinymce/langs/km_KH-dddeacc3c7112c6f230c4746d0fc9e9de1a3f53e419524ce03f483a35a49aaad.js":{"logical_path":"tinymce/langs/km_KH.js","mtime":"2018-01-05T22:13:22+01:00","size":25877,"digest":"dddeacc3c7112c6f230c4746d0fc9e9de1a3f53e419524ce03f483a35a49aaad","integrity":"sha256-3d6sw8cRLG8jDEdG0PyeneGj9T5BlSTOA/SDo1pJqq0="},"tinymce/langs/ko_KR-90aae14954461fa073104c36c0f2d7d2c95bbbf0e41be4ef4f04ac402ab8d0a8.js":{"logical_path":"tinymce/langs/ko_KR.js","mtime":"2018-01-05T22:13:22+01:00","size":12447,"digest":"90aae14954461fa073104c36c0f2d7d2c95bbbf0e41be4ef4f04ac402ab8d0a8","integrity":"sha256-kKrhSVRGH6BzEEw2wPLX0slbu/DkG+TvTwSsQCq40Kg="},"tinymce/langs/lv-6c706e8dbf25774d07fea54cc1cbfaaf60c205c95392eee90ae55ac9cae74768.js":{"logical_path":"tinymce/langs/lv.js","mtime":"2018-01-05T22:13:22+01:00","size":11056,"digest":"6c706e8dbf25774d07fea54cc1cbfaaf60c205c95392eee90ae55ac9cae74768","integrity":"sha256-bHBujb8ld00H/qVMwcv6r2DCBclTku7pCuVaycrnR2g="},"tinymce/langs/nb_NO-8bd2c254b03046ae60710293e7485d4c5cf9fdc3cbce52f97f0bf682ee44e1f8.js":{"logical_path":"tinymce/langs/nb_NO.js","mtime":"2018-01-05T22:13:22+01:00","size":9248,"digest":"8bd2c254b03046ae60710293e7485d4c5cf9fdc3cbce52f97f0bf682ee44e1f8","integrity":"sha256-i9LCVLAwRq5gcQKT50hdTFz5/cPLzlL5fwv2gu5E4fg="},"tinymce/langs/nl-0436131db0f369f1d07ce9a27f61cd351d8b2a441d352f8261cde3990f7b59d8.js":{"logical_path":"tinymce/langs/nl.js","mtime":"2018-01-05T22:13:22+01:00","size":8979,"digest":"0436131db0f369f1d07ce9a27f61cd351d8b2a441d352f8261cde3990f7b59d8","integrity":"sha256-BDYTHbDzafHQfOmif2HNNR2LKkQdNS+CYc3jmQ97Wdg="},"tinymce/langs/pl-eaf96c2c80d9268c2477628c1d23f947391de01553ef43bb488ee88d7bb3b8e6.js":{"logical_path":"tinymce/langs/pl.js","mtime":"2018-01-05T22:13:22+01:00","size":10178,"digest":"eaf96c2c80d9268c2477628c1d23f947391de01553ef43bb488ee88d7bb3b8e6","integrity":"sha256-6vlsLIDZJowkd2KMHSP5Rzkd4BVT70O7SI7ojXuzuOY="},"tinymce/langs/pt_BR-32ccbdf38597b6d0239e8ba70d73ab75de0661bb06c86fc9a90d1c0a890bc31e.js":{"logical_path":"tinymce/langs/pt_BR.js","mtime":"2018-01-05T22:13:22+01:00","size":9820,"digest":"32ccbdf38597b6d0239e8ba70d73ab75de0661bb06c86fc9a90d1c0a890bc31e","integrity":"sha256-Msy984WXttAjnounDXOrdd4GYbsGyG/JqQ0cCokLwx4="},"tinymce/langs/pt_PT-a364a3ca02a98259f33046338ab1bdd32dd4ebf24fa56e88d2578066bc7f0597.js":{"logical_path":"tinymce/langs/pt_PT.js","mtime":"2018-01-05T22:13:22+01:00","size":10011,"digest":"a364a3ca02a98259f33046338ab1bdd32dd4ebf24fa56e88d2578066bc7f0597","integrity":"sha256-o2SjygKpglnzMEYzirG90y3U6/JPpW6I0leAZrx/BZc="},"tinymce/langs/ro-83fd95a929d491cbfbfac83f132bdc41c956a7f4b0459c243fd92613c9c841ef.js":{"logical_path":"tinymce/langs/ro.js","mtime":"2018-01-05T22:13:22+01:00","size":8848,"digest":"83fd95a929d491cbfbfac83f132bdc41c956a7f4b0459c243fd92613c9c841ef","integrity":"sha256-g/2VqSnUkcv7+sg/EyvcQclWp/SwRZwkP9kmE8nIQe8="},"tinymce/langs/ru-2566ddc510b999f19c499a9838d7b987d5a8332b5802f2211beb4274ae2cd563.js":{"logical_path":"tinymce/langs/ru.js","mtime":"2018-01-05T22:13:22+01:00","size":27189,"digest":"2566ddc510b999f19c499a9838d7b987d5a8332b5802f2211beb4274ae2cd563","integrity":"sha256-JWbdxRC5mfGcSZqYONe5h9WoMytYAvIhG+tCdK4s1WM="},"tinymce/langs/sk-01d012310139d40e606a633db845a03fe285c32cb47043d6d9d761afa0cc3530.js":{"logical_path":"tinymce/langs/sk.js","mtime":"2018-01-05T22:13:22+01:00","size":10588,"digest":"01d012310139d40e606a633db845a03fe285c32cb47043d6d9d761afa0cc3530","integrity":"sha256-AdASMQE51A5gamM9uEWgP+KFwyy0cEPW2ddhr6DMNTA="},"tinymce/langs/sl_SI-ea499e07b7f4c9430bb15f34f6278f7248334c2553a544e240a21a84195d9582.js":{"logical_path":"tinymce/langs/sl_SI.js","mtime":"2018-01-05T22:13:22+01:00","size":8219,"digest":"ea499e07b7f4c9430bb15f34f6278f7248334c2553a544e240a21a84195d9582","integrity":"sha256-6kmeB7f0yUMLsV809iePckgzTCVTpUTiQKIahBldlYI="},"tinymce/langs/sv_SE-7af54d4c82419671562478bf4a66d185be79406f3287628df0d2ad8ac044a485.js":{"logical_path":"tinymce/langs/sv_SE.js","mtime":"2018-01-05T22:13:22+01:00","size":9334,"digest":"7af54d4c82419671562478bf4a66d185be79406f3287628df0d2ad8ac044a485","integrity":"sha256-evVNTIJBlnFWJHi/SmbRhb55QG8yh2KN8NKtisBEpIU="},"tinymce/langs/ta-3b428d97786e6eded1c4973fef3fb487786a79f1eee59f15483bd02b96c76239.js":{"logical_path":"tinymce/langs/ta.js","mtime":"2018-01-05T22:13:22+01:00","size":28524,"digest":"3b428d97786e6eded1c4973fef3fb487786a79f1eee59f15483bd02b96c76239","integrity":"sha256-O0KNl3hubt7RxJc/7z+0h3hqefHu5Z8VSDvQK5bHYjk="},"tinymce/langs/ta_IN-44bf4b6c5e4de01a2c7f2ccc69b6dd561b8afce86397229a9ff27efaf0600812.js":{"logical_path":"tinymce/langs/ta_IN.js","mtime":"2018-01-05T22:13:22+01:00","size":28527,"digest":"44bf4b6c5e4de01a2c7f2ccc69b6dd561b8afce86397229a9ff27efaf0600812","integrity":"sha256-RL9LbF5N4BosfyzMabbdVhuK/OhjlyKan/J++vBgCBI="},"tinymce/langs/th_TH-5869e7cc393913371f3314057c1691e6e0fa296b496cf2d5c465276c31645479.js":{"logical_path":"tinymce/langs/th_TH.js","mtime":"2018-01-05T22:13:22+01:00","size":20172,"digest":"5869e7cc393913371f3314057c1691e6e0fa296b496cf2d5c465276c31645479","integrity":"sha256-WGnnzDk5EzcfMxQFfBaR5uD6KWtJbPLVxGUnbDFkVHk="},"tinymce/langs/tr-6a58fb650e940025d957945ae4850f6fbb8446c5f092a661063af9606afc1db8.js":{"logical_path":"tinymce/langs/tr.js","mtime":"2018-01-05T22:13:22+01:00","size":10454,"digest":"6a58fb650e940025d957945ae4850f6fbb8446c5f092a661063af9606afc1db8","integrity":"sha256-alj7ZQ6UACXZV5Ra5IUPb7uERsXwkqZhBjr5YGr8Hbg="},"tinymce/langs/tr_TR-d97de581e91c05fc4f3d9fe1419ad201e227bcd0ff3f036f7b59519395f4dcc2.js":{"logical_path":"tinymce/langs/tr_TR.js","mtime":"2018-01-05T22:13:22+01:00","size":10598,"digest":"d97de581e91c05fc4f3d9fe1419ad201e227bcd0ff3f036f7b59519395f4dcc2","integrity":"sha256-2X3lgekcBfxPPZ/hQZrSAeInvND/PwNve1lRk5X03MI="},"tinymce/langs/uk-00866ab0fe7746d258b215475089740306b790d572d081b7f53ce65ec313f413.js":{"logical_path":"tinymce/langs/uk.js","mtime":"2018-01-05T22:13:22+01:00","size":26089,"digest":"00866ab0fe7746d258b215475089740306b790d572d081b7f53ce65ec313f413","integrity":"sha256-AIZqsP53RtJYshVHUIl0Awa3kNVy0IG39TzmXsMT9BM="},"tinymce/langs/uk_UA-52b101eeb7079c629edbe4615e64018757791541930fd2733957810a37197356.js":{"logical_path":"tinymce/langs/uk_UA.js","mtime":"2018-01-05T22:13:22+01:00","size":26018,"digest":"52b101eeb7079c629edbe4615e64018757791541930fd2733957810a37197356","integrity":"sha256-UrEB7rcHnGKe2+RhXmQBh1d5FUGTD9JzOVeBCjcZc1Y="},"tinymce/langs/uz-d6923a3190a76dc149ccb2893574e981250344a6c4f6dcaf458df1cce2ea3b30.js":{"logical_path":"tinymce/langs/uz.js","mtime":"2018-01-05T22:13:22+01:00","size":9696,"digest":"d6923a3190a76dc149ccb2893574e981250344a6c4f6dcaf458df1cce2ea3b30","integrity":"sha256-1pI6MZCnbcFJzLKJNXTpgSUDRKbE9tyvRY3xzOLqOzA="},"tinymce/langs/vi_VN-54d1da8a0ca8d0242457ddab5e0230c2cca140d3e480bfd55b9dfbaec7868baa.js":{"logical_path":"tinymce/langs/vi_VN.js","mtime":"2018-01-05T22:13:22+01:00","size":10769,"digest":"54d1da8a0ca8d0242457ddab5e0230c2cca140d3e480bfd55b9dfbaec7868baa","integrity":"sha256-VNHaigyo0CQkV92rXgIwwsyhQNPkgL/VW537rseGi6o="},"tinymce/langs/zh_CN-07499e6b0821cb49c5e16efbe4a68a4d843b4d6939a45866aabe6f9ad7fc805d.js":{"logical_path":"tinymce/langs/zh_CN.js","mtime":"2018-01-05T22:13:22+01:00","size":11103,"digest":"07499e6b0821cb49c5e16efbe4a68a4d843b4d6939a45866aabe6f9ad7fc805d","integrity":"sha256-B0meawghy0nF4W775KaKTYQ7TWk5pFhmqr5vmtf8gF0="},"tinymce/langs/zh_TW-c00c3a6539c0e1696436182c935a0a5929ab09ae7bdc43ca9c4ad21098079d53.js":{"logical_path":"tinymce/langs/zh_TW.js","mtime":"2018-01-05T22:13:22+01:00","size":11059,"digest":"c00c3a6539c0e1696436182c935a0a5929ab09ae7bdc43ca9c4ad21098079d53","integrity":"sha256-wAw6ZTnA4WlkNhgsk1oKWSmrCa573EPKnErSEJgHnVM="},"active_admin-a549f8566590a3123aa09ad8f48b7dd17381809637e5449e19a6fc2080ce3df2.js":{"logical_path":"active_admin.js","mtime":"2018-03-01T22:04:07+01:00","size":963601,"digest":"a549f8566590a3123aa09ad8f48b7dd17381809637e5449e19a6fc2080ce3df2","integrity":"sha256-pUn4VmWQoxI6oJrY9It90XOBgJY35USeGab8IIDOPfI="},"application-8f40af718b20db7831056787bcba5ae1d42bd2264bf324e572fa5011f2aca28c.js":{"logical_path":"application.js","mtime":"2018-01-18T21:11:12+01:00","size":2468449,"digest":"8f40af718b20db7831056787bcba5ae1d42bd2264bf324e572fa5011f2aca28c","integrity":"sha256-j0CvcYsg23gxBWeHvLpa4dQr0iZL8yTlcvpQEfKsoow="},"application-032a199f608e3991aa236ac1783bbc89359d0768f2a24a048f9dfc989b6654bd.css":{"logical_path":"application.css","mtime":"2018-01-18T21:11:10+01:00","size":230083,"digest":"032a199f608e3991aa236ac1783bbc89359d0768f2a24a048f9dfc989b6654bd","integrity":"sha256-AyoZn2COOZGqI2rBeDu8iTWdB2jyokoEj538mJtmVL0="},"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png":{"logical_path":"leaflet/dist/images/marker-icon-2x.png","mtime":"2018-01-18T21:11:10+01:00","size":2464,"digest":"00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528","integrity":"sha256-ABecTB7oMNOhCEEq4NKU9Vd2z+sIXGASmjmqb8SuJSg="},"application-ef040b61ba411c860ed1293a206809e55bc8b8fcee8e1baec5fa5ab463c14751.js":{"logical_path":"application.js","mtime":"2018-01-21T22:44:12+01:00","size":2469363,"digest":"ef040b61ba411c860ed1293a206809e55bc8b8fcee8e1baec5fa5ab463c14751","integrity":"sha256-7wQLYbpBHIYO0Sk6IGgJ5VvIuPzujhuuxfpatGPBR1E="},"application-29647b725b38d1cf416b2f90617f3dca7c1e430031114339a3d48192fd144aeb.css":{"logical_path":"application.css","mtime":"2018-01-21T22:44:12+01:00","size":230804,"digest":"29647b725b38d1cf416b2f90617f3dca7c1e430031114339a3d48192fd144aeb","integrity":"sha256-KWR7cls40c9Bay+QYX89ynweQwAxEUM5o9SBkv0USus="},"application-ae068d71021183c80c2f16b13ee9b17d82feba3e3271c288ea70ee0a7952a7c3.js":{"logical_path":"application.js","mtime":"2018-01-21T23:02:13+01:00","size":2469363,"digest":"ae068d71021183c80c2f16b13ee9b17d82feba3e3271c288ea70ee0a7952a7c3","integrity":"sha256-rgaNcQIRg8gMLxaxPumxfYL+uj4yccKI6nDuCnlSp8M="},"application-87229b76277b030b739df163bc3519082f03f59eb4e813071fd62dcb2e80f5ff.css":{"logical_path":"application.css","mtime":"2018-01-21T23:02:13+01:00","size":230805,"digest":"87229b76277b030b739df163bc3519082f03f59eb4e813071fd62dcb2e80f5ff","integrity":"sha256-hyKbdid7AwtznfFjvDUZCC8D9Z606BMHH9Ytyy6A9f8="},"active_admin-239ee5ef976e38d5766b52051668ca0b0a9479f925267e881ab2d9f8ccefc0c8.css":{"logical_path":"active_admin.css","mtime":"2018-02-11T13:11:31+01:00","size":85443,"digest":"239ee5ef976e38d5766b52051668ca0b0a9479f925267e881ab2d9f8ccefc0c8","integrity":"sha256-I57l75duONV2a1IFFmjKCwqUefklJn6IGrLZ+MzvwMg="},"tinymce-52b30e4ce8f5860a0bb16ef4f9b794dd301229f550a0ab70f442becdbeed0906.js":{"logical_path":"tinymce.js","mtime":"2018-02-10T17:19:41+01:00","size":880846,"digest":"52b30e4ce8f5860a0bb16ef4f9b794dd301229f550a0ab70f442becdbeed0906","integrity":"sha256-UrMOTOj1hgoLsW70+beU3TASKfVQoKtw9EK+zb7tCQY="},"font-awesome/fa-brands-400-75a8d21d405fc02922bf4e5910c02da8c69e1422c54eace016902f8d13f24cc3.eot":{"logical_path":"font-awesome/fa-brands-400.eot","mtime":"2018-02-11T13:11:31+01:00","size":98620,"digest":"75a8d21d405fc02922bf4e5910c02da8c69e1422c54eace016902f8d13f24cc3","integrity":"sha256-dajSHUBfwCkiv05ZEMAtqMaeFCLFTqzgFpAvjRPyTMM="},"font-awesome/fa-regular-400-e73d73f67b277568ab01d56322d1a01d66409a8f947735dd738fe2dcb6bb0c58.eot":{"logical_path":"font-awesome/fa-regular-400.eot","mtime":"2018-02-11T13:11:31+01:00","size":31156,"digest":"e73d73f67b277568ab01d56322d1a01d66409a8f947735dd738fe2dcb6bb0c58","integrity":"sha256-5z1z9nsndWirAdVjItGgHWZAmo+UdzXdc4/i3La7DFg="},"font-awesome/fa-solid-900-f5d00bfd4457c03601f28e200ed5db6e5bf58b332164a1e630fa6aafcfab6bcb.eot":{"logical_path":"font-awesome/fa-solid-900.eot","mtime":"2018-02-11T13:11:31+01:00","size":102152,"digest":"f5d00bfd4457c03601f28e200ed5db6e5bf58b332164a1e630fa6aafcfab6bcb","integrity":"sha256-9dAL/URXwDYB8o4gDtXbblv1izMhZKHmMPpqr8+ra8s="},"font-awesome/fa-brands-400-981c7b389bbd9de156f6b92bb4f65f4e66d329b9d3503277d4fe6eef1008f3f4.svg":{"logical_path":"font-awesome/fa-brands-400.svg","mtime":"2018-02-11T13:11:31+01:00","size":507478,"digest":"981c7b389bbd9de156f6b92bb4f65f4e66d329b9d3503277d4fe6eef1008f3f4","integrity":"sha256-mBx7OJu9neFW9rkrtPZfTmbTKbnTUDJ31P5u7xAI8/Q="},"font-awesome/fa-regular-400-42e44be1cfd7bfab3031546e1f656418e9c835230a2f69b7a34594815d0e0a80.svg":{"logical_path":"font-awesome/fa-regular-400.svg","mtime":"2018-02-11T13:11:31+01:00","size":107199,"digest":"42e44be1cfd7bfab3031546e1f656418e9c835230a2f69b7a34594815d0e0a80","integrity":"sha256-QuRL4c/Xv6swMVRuH2VkGOnINSMKL2m3o0WUgV0OCoA="},"font-awesome/fa-solid-900-b0f3ece320e40f6c55b19378e123f198a3ef5f2e8fbd9ab7906ce04198770fdf.svg":{"logical_path":"font-awesome/fa-solid-900.svg","mtime":"2018-02-11T13:11:31+01:00","size":378215,"digest":"b0f3ece320e40f6c55b19378e123f198a3ef5f2e8fbd9ab7906ce04198770fdf","integrity":"sha256-sPPs4yDkD2xVsZN44SPxmKPvXy6PvZq3kGzgQZh3D98="},"font-awesome/fa-brands-400-345def96ebbc01d79e677848420a94ca0653961c03b30977714fa62395553569.ttf":{"logical_path":"font-awesome/fa-brands-400.ttf","mtime":"2018-02-11T13:11:31+01:00","size":98384,"digest":"345def96ebbc01d79e677848420a94ca0653961c03b30977714fa62395553569","integrity":"sha256-NF3vluu8AdeeZ3hIQgqUygZTlhwDswl3cU+mI5VVNWk="},"font-awesome/fa-regular-400-8721a523848f5d583c554552d6daeaaacefc8eb9239ba0c998a09492667f5c75.ttf":{"logical_path":"font-awesome/fa-regular-400.ttf","mtime":"2018-02-11T13:11:31+01:00","size":30928,"digest":"8721a523848f5d583c554552d6daeaaacefc8eb9239ba0c998a09492667f5c75","integrity":"sha256-hyGlI4SPXVg8VUVS1trqqs78jrkjm6DJmKCUkmZ/XHU="},"font-awesome/fa-solid-900-9ae2e3bc1545ee5fd1f72e0f4d0656f8054d1ead2e51c28f8f0730f85f688bed.ttf":{"logical_path":"font-awesome/fa-solid-900.ttf","mtime":"2018-02-11T13:11:31+01:00","size":101932,"digest":"9ae2e3bc1545ee5fd1f72e0f4d0656f8054d1ead2e51c28f8f0730f85f688bed","integrity":"sha256-muLjvBVF7l/R9y4PTQZW+AVNHq0uUcKPjwcw+F9oi+0="},"font-awesome/fa-brands-400-0d9317d5559d4091516c1e240689589122ad9b101f030ef7aee8c01a9fc5a78c.woff":{"logical_path":"font-awesome/fa-brands-400.woff","mtime":"2018-02-11T13:11:31+01:00","size":63712,"digest":"0d9317d5559d4091516c1e240689589122ad9b101f030ef7aee8c01a9fc5a78c","integrity":"sha256-DZMX1VWdQJFRbB4kBolYkSKtmxAfAw73rujAGp/Fp4w="},"font-awesome/fa-regular-400-4773adbb080c5189d52e31d83658b6d9743bdf7337e53bb8a4706de8dc116ffd.woff":{"logical_path":"font-awesome/fa-regular-400.woff","mtime":"2018-02-11T13:11:31+01:00","size":14712,"digest":"4773adbb080c5189d52e31d83658b6d9743bdf7337e53bb8a4706de8dc116ffd","integrity":"sha256-R3OtuwgMUYnVLjHYNli22XQ733M35Tu4pHBt6NwRb/0="},"font-awesome/fa-solid-900-6f43ff9f2fb98cc65e18f73ee16951bacfb055f76e68e06f7d91989fd770fa71.woff":{"logical_path":"font-awesome/fa-solid-900.woff","mtime":"2018-02-11T13:11:31+01:00","size":48704,"digest":"6f43ff9f2fb98cc65e18f73ee16951bacfb055f76e68e06f7d91989fd770fa71","integrity":"sha256-b0P/ny+5jMZeGPc+4WlRus+wVfduaOBvfZGYn9dw+nE="},"font-awesome/fa-brands-400-155963e3fb06f13011705c65bc52ed31f9989b87309c945948a76b35f8e7da67.woff2":{"logical_path":"font-awesome/fa-brands-400.woff2","mtime":"2018-02-11T13:11:31+01:00","size":54420,"digest":"155963e3fb06f13011705c65bc52ed31f9989b87309c945948a76b35f8e7da67","integrity":"sha256-FVlj4/sG8TARcFxlvFLtMfmYm4cwnJRZSKdrNfjn2mc="},"font-awesome/fa-regular-400-a36d4f83add2176a3c6243bd57a32a387a1906227e286689530ff878de1994eb.woff2":{"logical_path":"font-awesome/fa-regular-400.woff2","mtime":"2018-02-11T13:11:31+01:00","size":12220,"digest":"a36d4f83add2176a3c6243bd57a32a387a1906227e286689530ff878de1994eb","integrity":"sha256-o21Pg63SF2o8YkO9V6MqOHoZBiJ+KGaJUw/4eN4ZlOs="},"font-awesome/fa-solid-900-62554277d07b20c6bfae7c6267b3198b4846f604a37d4085bf9f54c392210b56.woff2":{"logical_path":"font-awesome/fa-solid-900.woff2","mtime":"2018-02-11T13:11:31+01:00","size":38784,"digest":"62554277d07b20c6bfae7c6267b3198b4846f604a37d4085bf9f54c392210b56","integrity":"sha256-YlVCd9B7IMa/rnxiZ7MZi0hG9gSjfUCFv59Uw5IhC1Y="},"application-86f61941a505bfd27dfa53a248ee83b55ab49c5964d5e662f6eba77d1a483d33.js":{"logical_path":"application.js","mtime":"2018-02-11T15:39:34+01:00","size":1979201,"digest":"86f61941a505bfd27dfa53a248ee83b55ab49c5964d5e662f6eba77d1a483d33","integrity":"sha256-hvYZQaUFv9J9+lOiSO6DtVq0nFlk1eZi9uunfRpIPTM="},"application-7cd0f0eae223ed9993d260ffb9cc57f9b91262b0dc28620d3e7d0ff37a4f4ecf.css":{"logical_path":"application.css","mtime":"2018-02-11T15:39:34+01:00","size":247942,"digest":"7cd0f0eae223ed9993d260ffb9cc57f9b91262b0dc28620d3e7d0ff37a4f4ecf","integrity":"sha256-fNDw6uIj7ZmT0mD/ucxX+bkSYrDcKGINPn0P83pPTs8="},"tinymce/tinymce-6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de.js":{"logical_path":"tinymce/tinymce.js","mtime":"2018-02-10T17:19:41+01:00","size":879416,"digest":"6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de","integrity":"sha256-bVHUCItJ0WV3s4lQCM2ORAzWDKSfetScTR8cwhalht4="},"tinymce/jquery.tinymce-694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2018-02-10T17:19:41+01:00","size":3562,"digest":"694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53","integrity":"sha256-aUJjyuaBtYNfVPLa92mjaH/tWPr8g5sLRuG8oeJTzFM="},"tinymce/plugins/advlist/plugin-60a942b0fac99b527d6f729af8f6f8a5a618b7c40eb2770fb08a6ca81c4ec392.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2227,"digest":"60a942b0fac99b527d6f729af8f6f8a5a618b7c40eb2770fb08a6ca81c4ec392","integrity":"sha256-YKlCsPrJm1J9b3Ka+Pb4paYYt8QOsncPsIpsqBxOw5I="},"tinymce/plugins/anchor/plugin-152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1423,"digest":"152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec","integrity":"sha256-FSrsnQAOISw61v7u4iVdaGodsIzoTcvmBggZa/Ipg+w="},"tinymce/plugins/autolink/plugin-39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2143,"digest":"39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a","integrity":"sha256-Of1fBqEQWXL1F+ZI/n2JQULyBJZ8DhlBvE08Trb0yBo="},"tinymce/plugins/autoresize/plugin-57c70eb3721f88c5cae4d08038a85724d9285db0caec92dd8c223440fea6a11a.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2075,"digest":"57c70eb3721f88c5cae4d08038a85724d9285db0caec92dd8c223440fea6a11a","integrity":"sha256-V8cOs3IfiMXK5NCAOKhXJNkoXbDK7JLdjCI0QP6moRo="},"tinymce/plugins/autosave/plugin-c161b003d4e2500c076f4824c9abe2922848d86b1acf31e949d21bf42da04d98.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":3084,"digest":"c161b003d4e2500c076f4824c9abe2922848d86b1acf31e949d21bf42da04d98","integrity":"sha256-wWGwA9TiUAwHb0gkyavikihI2GsazzHpSdIb9C2gTZg="},"tinymce/plugins/bbcode/plugin-2a039df18058fc9956c15762e63a65e837c7f6ec185e768bcb7560c69d5a5945.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2851,"digest":"2a039df18058fc9956c15762e63a65e837c7f6ec185e768bcb7560c69d5a5945","integrity":"sha256-KgOd8YBY/JlWwVdi5jpl6DfH9uwYXnaLy3Vgxp1aWUU="},"tinymce/plugins/charmap/plugin-5a75321ddb2d6e17b8c9f5950179406d7ff56f73c5423564209432d84490dd9b.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":8602,"digest":"5a75321ddb2d6e17b8c9f5950179406d7ff56f73c5423564209432d84490dd9b","integrity":"sha256-WnUyHdstbhe4yfWVAXlAbX/1b3PFQjVkIJQy2ESQ3Zs="},"tinymce/plugins/code/plugin-c6f671d9656f81a0f87a80eb3178519971665855f1764cacc22c97a0c7c93c2a.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1025,"digest":"c6f671d9656f81a0f87a80eb3178519971665855f1764cacc22c97a0c7c93c2a","integrity":"sha256-xvZx2WVvgaD4eoDrMXhRmXFmWFXxdkyswiyXoMfJPCo="},"tinymce/plugins/codesample/plugin-e2213dfdea0b7c2137c835bdc1b49c5867640389d8acdc7edfd32c296eb6b378.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":19436,"digest":"e2213dfdea0b7c2137c835bdc1b49c5867640389d8acdc7edfd32c296eb6b378","integrity":"sha256-4iE9/eoLfCE3yDW9wbScWGdkA4nYrNx+39MsKW62s3g="},"tinymce/plugins/colorpicker/plugin-af8dd454fc58e491381ef90794ca49d7a477aa009b3845f2b9256ef1923a9744.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1350,"digest":"af8dd454fc58e491381ef90794ca49d7a477aa009b3845f2b9256ef1923a9744","integrity":"sha256-r43UVPxY5JE4HvkHlMpJ16R3qgCbOEXyuSVu8ZI6l0Q="},"tinymce/plugins/contextmenu/plugin-e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":1813,"digest":"e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027","integrity":"sha256-5ahJFDVQgb1i3tMq2itkOhFwITs1VmuwIKgbXXqRACc="},"tinymce/plugins/directionality/plugin-432c5483de964fff4110fca8bb9da15562a108aef57f0f9f29bc64125d1ed25f.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":858,"digest":"432c5483de964fff4110fca8bb9da15562a108aef57f0f9f29bc64125d1ed25f","integrity":"sha256-QyxUg96WT/9BEPyou52hVWKhCK71fw+fKbxkEl0e0l8="},"tinymce/plugins/emoticons/plugin-05910f1a564221738a73275cf2c3a16aab7164f6977eb7506780d0689155c32f.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1072,"digest":"05910f1a564221738a73275cf2c3a16aab7164f6977eb7506780d0689155c32f","integrity":"sha256-BZEPGlZCIXOKcydc8sOhaqtxZPaXfrdQZ4DQaJFVwy8="},"tinymce/plugins/fullpage/plugin-7ec780fd59484ab244de2ff81a9ff0402733d7e1a27e6d0899f3fbb03bdddd5c.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":7169,"digest":"7ec780fd59484ab244de2ff81a9ff0402733d7e1a27e6d0899f3fbb03bdddd5c","integrity":"sha256-fseA/VlISrJE3i/4Gp/wQCcz1+Gifm0ImfP7sDvd3Vw="},"tinymce/plugins/fullscreen/plugin-cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2137,"digest":"cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d","integrity":"sha256-y0jTAMNuP6hG9bdrvIp1MgOJmhKrDLksPaBfCj1LOT0="},"tinymce/plugins/help/plugin-3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":9208,"digest":"3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c","integrity":"sha256-Os3giYy57VSruVVUb18970zRk9V4O3F54BgpiYasS5w="},"tinymce/plugins/hr/plugin-25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":425,"digest":"25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23","integrity":"sha256-Jf3k4uf6Gh04yBrADHTZCTzIN1Xl8Fd9UiLy0DHE7CM="},"tinymce/plugins/image/plugin-f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":13416,"digest":"f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd","integrity":"sha256-94TyIpm423wzJgCuGuLq8Ek3HXQLSqvROqCGs7DKc/0="},"tinymce/plugins/imagetools/plugin-07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":35560,"digest":"07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a","integrity":"sha256-ByAOxoO+uoP3A/s4XlRRpOn0rrGYwwsM8QGDw2nJdmo="},"tinymce/plugins/importcss/plugin-f708109b89ae545b36f60d0f2685647587380549b58f5de55f9f6f1957240704.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":3168,"digest":"f708109b89ae545b36f60d0f2685647587380549b58f5de55f9f6f1957240704","integrity":"sha256-9wgQm4muVFs29g0PJoVkdYc4BUm1j13lX59vGVckBwQ="},"tinymce/plugins/insertdatetime/plugin-fffab6ada7fc05ebf0a2a321fff64266ad1e5a73699b03ce48c26811116d657c.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2634,"digest":"fffab6ada7fc05ebf0a2a321fff64266ad1e5a73699b03ce48c26811116d657c","integrity":"sha256-//q2raf8BevwoqMh//ZCZq0eWnNpmwPOSMJoERFtZXw="},"tinymce/plugins/legacyoutput/plugin-ac93d67c9c8683752126c590a2abbe1a0f08ad23e2d931f57fd104f8d99e6a86.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":3403,"digest":"ac93d67c9c8683752126c590a2abbe1a0f08ad23e2d931f57fd104f8d99e6a86","integrity":"sha256-rJPWfJyGg3UhJsWQoqu+Gg8IrSPi2TH1f9EE+NmeaoY="},"tinymce/plugins/link/plugin-f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":8820,"digest":"f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524","integrity":"sha256-+I1W6hmwZBBhiLzcXXfs3Int69Gfbz2Ghl/SQ8l19SQ="},"tinymce/plugins/lists/plugin-6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":14038,"digest":"6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd","integrity":"sha256-bChjAgliANSBPgrqacb23sLIqyREVedkkejYwc6yKP0="},"tinymce/plugins/media/plugin-f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":14834,"digest":"f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934","integrity":"sha256-9q9x0DuCshpcxrk4iyovqG3bWj3Sh980+koxcRVEuTQ="},"tinymce/plugins/nonbreaking/plugin-f818f5747c3bd123dbdc6b0e24a20c5e332e572b3ef6047a44e83da8a86471dc.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":994,"digest":"f818f5747c3bd123dbdc6b0e24a20c5e332e572b3ef6047a44e83da8a86471dc","integrity":"sha256-+Bj1dHw70SPb3GsOJKIMXjMuVys+9gR6ROg9qKhkcdw="},"tinymce/plugins/noneditable/plugin-abb398069609339149f11fdb3f2d77ba34c1dfaf7c4bd4406abd2389cdbfaf58.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1541,"digest":"abb398069609339149f11fdb3f2d77ba34c1dfaf7c4bd4406abd2389cdbfaf58","integrity":"sha256-q7OYBpYJM5FJ8R/bPy13ujTB3698S9RAar0jic2/r1g="},"tinymce/plugins/pagebreak/plugin-498022b2b73a3c1c3e332a913306eafb6fd2c3a75793319d49865ab7420dbce7.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1437,"digest":"498022b2b73a3c1c3e332a913306eafb6fd2c3a75793319d49865ab7420dbce7","integrity":"sha256-SYAisrc6PBw+MyqRMwbq+2/Sw6dXkzGdSYZat0INvOc="},"tinymce/plugins/paste/plugin-fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":21334,"digest":"fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6","integrity":"sha256-/QWkJpzoeRW6L5YMGfWp6LbyOsTr1DZYrrLzCLIxjdY="},"tinymce/plugins/preview/plugin-12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":2060,"digest":"12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e","integrity":"sha256-EkI9X3kVY+pIGYenK1mYbmpAfmjFVWwSp9OomJHGrD4="},"tinymce/plugins/print/plugin-984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":363,"digest":"984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab","integrity":"sha256-mEp6O0tSwku0tOqPxGcij/E8F54EHAmptP8w2XHWRqs="},"tinymce/plugins/save/plugin-c925a1d1c20280b230018ead32c271d98e36fa21f91701f28653b44def6b2bf4.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1427,"digest":"c925a1d1c20280b230018ead32c271d98e36fa21f91701f28653b44def6b2bf4","integrity":"sha256-ySWh0cICgLIwAY6tMsJx2Y42+iH5FwHyhlO0Te9rK/Q="},"tinymce/plugins/searchreplace/plugin-d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":7367,"digest":"d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2","integrity":"sha256-1KTBDfkAyZQH18Zg2mcBesjYVx+Ze9SmbvK+vZtoA+I="},"tinymce/plugins/spellchecker/plugin-c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":10146,"digest":"c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e","integrity":"sha256-yIF1JkiaUEbrwjVerwqd0nF12f7q+dLiBSkcgeq27B4="},"tinymce/plugins/tabfocus/plugin-1f6e19bc145d6dbc89b62278eebbe6fae6f61f6225eaa8fefc59fe5cdcc7716b.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1632,"digest":"1f6e19bc145d6dbc89b62278eebbe6fae6f61f6225eaa8fefc59fe5cdcc7716b","integrity":"sha256-H24ZvBRdbbyJtiJ47rvm+ub2H2Il6qj+/Fn+XNzHcWs="},"tinymce/plugins/table/plugin-26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":134942,"digest":"26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5","integrity":"sha256-JtRLo8t7GbzchcyxwZJWIVC0qhS9xX6QgCqjhDd+H6U="},"tinymce/plugins/template/plugin-1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2018-02-10T17:19:41+01:00","size":5297,"digest":"1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313","integrity":"sha256-HtiQ7/SrL6mtrM/HoGrAxL26QtEmR6q5gMgcH9FGkxM="},"tinymce/plugins/textcolor/plugin-1afa99da003eb9003f9071d086eb025b8a50a00386bd76e73428807d49c6c94f.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":4920,"digest":"1afa99da003eb9003f9071d086eb025b8a50a00386bd76e73428807d49c6c94f","integrity":"sha256-GvqZ2gA+uQA/kHHQhusCW4pQoAOGvXbnNCiAfUnGyU8="},"tinymce/plugins/textpattern/plugin-46aa72bd72de63931af55b83037436672ee1ec8221959cd4f866b40a743cc7e8.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":4413,"digest":"46aa72bd72de63931af55b83037436672ee1ec8221959cd4f866b40a743cc7e8","integrity":"sha256-RqpyvXLeY5Ma9VuDA3Q2Zy7h7IIhlZzU+Ga0CnQ8x+g="},"tinymce/plugins/toc/plugin-e29ac010fcea309e07d328d306acd4213966a8923e3d1241dc633d66e9510af1.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2942,"digest":"e29ac010fcea309e07d328d306acd4213966a8923e3d1241dc633d66e9510af1","integrity":"sha256-4prAEPzqMJ4H0yjTBqzUITlmqJI+PRJB3GM9ZulRCvE="},"tinymce/plugins/visualblocks/plugin-4ded681bb50f7f23fd3543501704fbcdcc267e47f4acae1d69ee75354c722612.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1692,"digest":"4ded681bb50f7f23fd3543501704fbcdcc267e47f4acae1d69ee75354c722612","integrity":"sha256-Te1oG7UPfyP9NUNQFwT7zcwmfkf0rK4dae51NUxyJhI="},"tinymce/plugins/visualchars/plugin-0582c576749e7736722a3c8034b00c08446345533144e652da3ad44b3f06cdc9.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":5509,"digest":"0582c576749e7736722a3c8034b00c08446345533144e652da3ad44b3f06cdc9","integrity":"sha256-BYLFdnSedzZyKjyANLAMCERjRVMxROZS2jrUSz8Gzck="},"tinymce/plugins/wordcount/plugin-004fce15072e9ae2f16d4abb5ba9fb94e6d50d95e5e593727ab690c58a0eefca.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":10940,"digest":"004fce15072e9ae2f16d4abb5ba9fb94e6d50d95e5e593727ab690c58a0eefca","integrity":"sha256-AE/OFQcumuLxbUq7W6n7lObVDZXl5ZNyeraQxYoO78o="},"tinymce/skins/lightgray/fonts/tinymce-9f5f4d62ce9ad4bf25c73cb80920c490cc361bf35dd47dcb3ce2ed767be7404d.eot":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.eot","mtime":"2018-03-01T22:04:07+01:00","size":18808,"digest":"9f5f4d62ce9ad4bf25c73cb80920c490cc361bf35dd47dcb3ce2ed767be7404d","integrity":"sha256-n19NYs6a1L8lxzy4CSDEkMw2G/Nd1H3LPOLtdnvnQE0="},"tinymce/skins/lightgray/fonts/tinymce-9b9369e35660db34db422aafd93cd8a68e638c486c107130e75e36c98d2e9a1f.svg":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.svg","mtime":"2018-03-01T22:04:07+01:00","size":45989,"digest":"9b9369e35660db34db422aafd93cd8a68e638c486c107130e75e36c98d2e9a1f","integrity":"sha256-m5Np41Zg2zTbQiqv2TzYpo5jjEhsEHEw5142yY0umh8="},"tinymce/skins/lightgray/fonts/tinymce-aad8f3f45064995545e9efd9c4bf10cb4967469aec14a475f648db771d25b6f9.ttf":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.ttf","mtime":"2018-03-01T22:04:07+01:00","size":18644,"digest":"aad8f3f45064995545e9efd9c4bf10cb4967469aec14a475f648db771d25b6f9","integrity":"sha256-qtjz9FBkmVVF6e/ZxL8Qy0lnRprsFKR19kjbdx0ltvk="},"tinymce/skins/lightgray/fonts/tinymce-e378406db7a120c29069a998f7fdd2d4d1867185b360c36767137dbbab5cf83e.woff":{"logical_path":"tinymce/skins/lightgray/fonts/tinymce.woff","mtime":"2018-03-01T22:04:07+01:00","size":18720,"digest":"e378406db7a120c29069a998f7fdd2d4d1867185b360c36767137dbbab5cf83e","integrity":"sha256-43hAbbehIMKQaamY9/3S1NGGcYWzYMNnZxN9u6tc+D4="},"tinymce/skins/lightgray/skin.min-9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2018-02-10T17:19:41+01:00","size":43244,"digest":"9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e","integrity":"sha256-nfGsRz9Pw3+VGnPpeIOn/VPK5uEsUNsmxD9AcLzeZo4="},"tinymce/themes/inlite/theme-b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2018-02-10T17:19:41+01:00","size":136470,"digest":"b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c","integrity":"sha256-simn0TPprGANa7q6LtkAQ2bUT/STaREAqf+R5YTl+pw="},"tinymce/themes/mobile/theme-d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2018-02-10T17:19:41+01:00","size":185625,"digest":"d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514","integrity":"sha256-2OpxKP3yFVk61uH9UR/BrBljJAhPsxx0600AeLmTVRQ="},"tinymce/themes/modern/theme-1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2018-02-10T17:19:41+01:00","size":134683,"digest":"1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e","integrity":"sha256-EmSk9/piwRThhs7+jPBNYakiqYNhXiwZGXpg9KWewk4="},"active_admin-e5a87292d40df3f628baf260ba62d1fe0a98b3a7380569b20323670a16b70db6.css":{"logical_path":"active_admin.css","mtime":"2018-03-01T21:32:00+01:00","size":85439,"digest":"e5a87292d40df3f628baf260ba62d1fe0a98b3a7380569b20323670a16b70db6","integrity":"sha256-5ahyktQN8/YouvJgumLR/gqYs6c4BWmyAyNnCha3DbY="},"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png":{"logical_path":"baby_gnu_adl.png","mtime":"2018-03-01T20:52:43+01:00","size":7411,"digest":"463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc","integrity":"sha256-RjqBggqi1P/Y5yENvOGhn/ysZ+82KqewkigMb5XJA/w="},"lef-small-4b9a75b5a328a7a3a78fd8b8e1b4545e1df777ad3a003ad29b875e7b486b2650.png":{"logical_path":"lef-small.png","mtime":"2018-03-01T20:52:43+01:00","size":1059,"digest":"4b9a75b5a328a7a3a78fd8b8e1b4545e1df777ad3a003ad29b875e7b486b2650","integrity":"sha256-S5p1taMop6Onj9i44bRUXh33d606ADrSm4dee0hrJlA="},"lef-3d58e14b026b795b3e71c551d85e63e6e45fc4e6960acc7dec27cdb79abffe75.png":{"logical_path":"lef.png","mtime":"2018-03-01T20:51:49+01:00","size":7377,"digest":"3d58e14b026b795b3e71c551d85e63e6e45fc4e6960acc7dec27cdb79abffe75","integrity":"sha256-PVjhSwJreVs+ccVR2F5j5uRfxOaWCsx97CfNt5q//nU="},"application-7c7206927ff58ad77ed458c5e2fba9abeaeb1f690fa9c68d44f964780cc5ffa2.js":{"logical_path":"application.js","mtime":"2018-03-01T21:32:00+01:00","size":1979201,"digest":"7c7206927ff58ad77ed458c5e2fba9abeaeb1f690fa9c68d44f964780cc5ffa2","integrity":"sha256-fHIGkn/1itd+1FjF4vupq+rrH2kPqcaNRPlkeAzF/6I="},"application-ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf.css":{"logical_path":"application.css","mtime":"2018-03-01T22:04:07+01:00","size":247938,"digest":"ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf","integrity":"sha256-3dUcdZteMkbJ9PEWqGoUcc7dfkswaGyQotCl8CJPpc8="},"tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js":{"logical_path":"tinymce.js","mtime":"2018-03-01T22:04:07+01:00","size":892930,"digest":"1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5","integrity":"sha256-EETKoReL1teqHNPX2jEHDNRDtMPnjWBVhnUgwOVhFLU="},"agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png":{"logical_path":"agendadescommuns.png","mtime":"2018-03-01T22:17:10+01:00","size":2760,"digest":"0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33","integrity":"sha256-ABe+9T9iYcs7+VLUt4DGQwc2lxSy4eLU659p39mGqzM="},"communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png":{"logical_path":"communs.png","mtime":"2018-03-01T22:17:10+01:00","size":2760,"digest":"0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33","integrity":"sha256-ABe+9T9iYcs7+VLUt4DGQwc2lxSy4eLU659p39mGqzM="},"lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png":{"logical_path":"lef-small.png","mtime":"2018-03-01T22:17:10+01:00","size":1059,"digest":"93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e","integrity":"sha256-kyhdUxr0Y/h3lR1j/oRKbpYAt4LCyB94cjtzAHL6lC4="},"lef-15f93c1dccd4849a5e30613a3303013292a76cc4997877e626f123fe9afc2f75.png":{"logical_path":"lef.png","mtime":"2018-03-01T22:17:10+01:00","size":7377,"digest":"15f93c1dccd4849a5e30613a3303013292a76cc4997877e626f123fe9afc2f75","integrity":"sha256-Ffk8HczUhJpeMGE6MwMBMpKnbMSZeHfmJvEj/pr8L3U="},"team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png":{"logical_path":"team.png","mtime":"2018-03-01T22:17:10+01:00","size":3586,"digest":"65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa","integrity":"sha256-ZchgIc+KEVRJNmQJSur8vj5aoT3GdbuO80siBIHbmPo="},"application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js":{"logical_path":"application.js","mtime":"2018-03-01T22:04:07+01:00","size":1991285,"digest":"72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0","integrity":"sha256-ctMamPdj+NfGTrOppWIW21bGg8Mrl/FKwh1ZXE7uo7A="},"tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js":{"logical_path":"tinymce/tinymce.js","mtime":"2018-03-01T22:04:07+01:00","size":891500,"digest":"a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a","integrity":"sha256-oVwU23jaXGkRnl2c1LNpAjDnksBIiJALCBsR9U4wJXo="},"tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2018-03-01T22:04:07+01:00","size":3562,"digest":"3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120","integrity":"sha256-NCLOgwHUIA3aMb6f7Ef2yvA0UDE8//ISncXbkKmo8SA="},"tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1427,"digest":"ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3","integrity":"sha256-6nNDWapmcyi+5QVY/kmAIDYdo3I4bizuFEfXOZMJAsM="},"tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2139,"digest":"07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3","integrity":"sha256-B9iAgHf2heOAeRcJfGeG9dALmG6zK4xF0hEeqaT7NNM="},"tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":1825,"digest":"35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b","integrity":"sha256-Ncw2tdFSMgnUt7alOA05IAcpB64seCzzp9oj+OIz/ls="},"tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2166,"digest":"fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711","integrity":"sha256-/STaSOycHmjDqzAqc3TiOPV/eKx3RQFbQ+kzdjfQ9xE="},"tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":9208,"digest":"1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8","integrity":"sha256-Gj6TwaI2c1QqJCvmZgCx2Bl4f/X85UJffAEUh4IhJ6g="},"tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":429,"digest":"7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622","integrity":"sha256-fvru6PofcXRdVyYgW7tP2MD066Ht8rr1oxo7WbtndiI="},"tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":13945,"digest":"34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25","integrity":"sha256-NM8zHxCxLMBMrBFVu5kJihfcrsYRXIECiKF3qOIGXyU="},"tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":35723,"digest":"a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc","integrity":"sha256-oF43F+8MU4QeAf5h3NMNqWnfiZyFt+2BsLh1Ej0JO/w="},"tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":8824,"digest":"31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3","integrity":"sha256-Mcx34VNw2jGsPz5mSZvQDJ6ccaREDpuHQ21rum883uM="},"tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":14273,"digest":"b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215","integrity":"sha256-sJoQgeWiB/BEyQEvYgYgByQBgUAgPvLzdU/+9lnh4hU="},"tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":14875,"digest":"63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94","integrity":"sha256-YzOaHocpW8K6+7hPrjVcGo2NVm8sM5P73Pj0fWGzb5Q="},"tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":21492,"digest":"9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e","integrity":"sha256-nznxfszLeYpqb/TiJ1RsjJ1j8zGzOt0ht8aebbfQm44="},"tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":2045,"digest":"ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28","integrity":"sha256-rndJKm1v8uQuEhsJgthTwwmnMtvLAXYlCGl5W0T6myg="},"tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":367,"digest":"1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26","integrity":"sha256-G6iMMU+kwMR6sK8KqQjAPXkGp3/vajGaMC//9ECZ/iY="},"tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":7364,"digest":"2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89","integrity":"sha256-L+3P9GbbnAzMgQ+f8BdjpDqpXxAR5tNVWLQOF4+7P4k="},"tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":10177,"digest":"eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07","integrity":"sha256-60JYcMKNLLBN9/ZcE8ZLKiAzZwLGr8RMum0eJfXfSgc="},"tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":135685,"digest":"304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04","integrity":"sha256-ME4bc7AwU162ljT5lh32GbUEoEqRCZpRrowhcR3IrgQ="},"tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2018-03-01T22:04:07+01:00","size":5297,"digest":"f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d","integrity":"sha256-8B5ufWc6UNdh0WMnwH35nqeWINKz0Q2DIMtcqLSczy0="},"tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css":{"logical_path":"tinymce/skins/lightgray/skin.min.css","mtime":"2018-03-01T22:04:07+01:00","size":43318,"digest":"8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d","integrity":"sha256-jKg+U6yVEb2DiRoV+Af9GEsCBQ+mpgFojdNODe5tx50="},"tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js":{"logical_path":"tinymce/themes/inlite/theme.js","mtime":"2018-03-01T22:04:07+01:00","size":136941,"digest":"85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110","integrity":"sha256-hSALUcM9otolTEYPKYAAbF80VZ+gZLAJHlvCpNp3ERA="},"tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2018-03-01T22:04:07+01:00","size":186491,"digest":"a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796","integrity":"sha256-oRWeDJplc/SYcJn00S6OtBrAblCTgsG/GUkdgiLFZ5Y="},"tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js":{"logical_path":"tinymce/themes/modern/theme.js","mtime":"2018-03-01T22:04:07+01:00","size":135741,"digest":"356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2","integrity":"sha256-NWohXRFjJFpd66QQvL+a8rYqGWApikU7sdl07TJPEfI="}},"assets":{"active_admin.css":"active_admin-e5a87292d40df3f628baf260ba62d1fe0a98b3a7380569b20323670a16b70db6.css","active_admin/nested_menu_arrow.gif":"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif","active_admin/nested_menu_arrow_dark.gif":"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif","active_admin/orderable.png":"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png","active_admin/print.css":"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css","active_admin.js":"active_admin-a549f8566590a3123aa09ad8f48b7dd17381809637e5449e19a6fc2080ce3df2.js","tinymce.js":"tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js","application.css":"application-ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf.css","jquery-ui/ui-icons_444444_256x240.png":"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png","jquery-ui/ui-icons_555555_256x240.png":"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png","jquery-ui/ui-icons_ffffff_256x240.png":"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png","jquery-ui/ui-icons_777620_256x240.png":"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png","jquery-ui/ui-icons_cc0000_256x240.png":"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png","jquery-ui/ui-icons_777777_256x240.png":"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png","flags/4x3/ad.svg":"flags/4x3/ad-3fc30cc000942b4f3369bdf6ccb85b16f59f4e78f9c53d73252ab529da35ba0a.svg","flags/1x1/ad.svg":"flags/1x1/ad-db2c38d603b8eecc9085d6ac1261bbefd3bcd852d44bec476e5e115914bcb2fd.svg","flags/4x3/ae.svg":"flags/4x3/ae-7f41692ef179841ca6e9cae42c704113274707228ff3d2b1ee5169916db15b1e.svg","flags/1x1/ae.svg":"flags/1x1/ae-8c9b9b1f108511722e1f1b0f9a029edf808ff285406545f24e327052e0efa780.svg","flags/4x3/af.svg":"flags/4x3/af-e271fd8f2fcdd0adda22a0e699173ff4e4cc65adfe7f05652cb77375eea99a93.svg","flags/1x1/af.svg":"flags/1x1/af-2629bc2e10edd54c384650f9aab1c6dfaf7101fda43ba3af627f0ec226db5892.svg","flags/4x3/ag.svg":"flags/4x3/ag-91fee45d7e1bab658f840a721364dd6eff0b67f9135dc8445a1b3554c347c2e9.svg","flags/1x1/ag.svg":"flags/1x1/ag-476bf833d4e0789f71d7b0d24164734ed97627f36edd09cc75991bcfbb2aa7af.svg","flags/4x3/ai.svg":"flags/4x3/ai-0106851bba5120a0f2bca5e6187ea65c9846e696f5ca57631aa89371cdf98871.svg","flags/1x1/ai.svg":"flags/1x1/ai-50a3279d492c2932919c02880b69da7bb7948ce96988d8ccc9b16357f006165c.svg","flags/4x3/al.svg":"flags/4x3/al-f8bc9837446a4880d29088f18bfc014b4cde95d8edda1241be22b5724a74ea8d.svg","flags/1x1/al.svg":"flags/1x1/al-fb2c4d723ddbfb2c659ee2b3052d33347c130fb1024e2cb0ddd17f25b082542c.svg","flags/4x3/am.svg":"flags/4x3/am-aeabb81fbe6ac768ba7b95bb22e5a1791eb35ff83d0b5d6785c88ddc6835444e.svg","flags/1x1/am.svg":"flags/1x1/am-6fc2c9fb24a6a079960d619cc1fdaeee31cdb52d27c75bb9b065d9664d853c11.svg","flags/4x3/ao.svg":"flags/4x3/ao-34ea70b51c9069ef1a859935f07a64cfffab4e08438a9c746898da56b495d127.svg","flags/1x1/ao.svg":"flags/1x1/ao-1240d65f5dd9d8945701ed46611bd97f53f2cecf15b435cc54604eb79f4b97a8.svg","flags/4x3/aq.svg":"flags/4x3/aq-6e2cee0eae620cd3f1fe6be665fd216f9a54a2afe215441005904dfeca24c169.svg","flags/1x1/aq.svg":"flags/1x1/aq-73c87173b09f476af2367895c76cf65d159c0a0b2ec292c1f1f5b08b2e78f829.svg","flags/4x3/ar.svg":"flags/4x3/ar-71eca3c44a303392f2c8db443add184c4c79d9fa8a3e729be2528c8db53790b6.svg","flags/1x1/ar.svg":"flags/1x1/ar-0f75960e9ea2b2533e9112d4fc02154182f72460720c5a7d4dc21ef47758c369.svg","flags/4x3/as.svg":"flags/4x3/as-29ac7248b1c428a68d0e2b1cfca4fade7b0fcb38151bf980d35c3b0be63d3d91.svg","flags/1x1/as.svg":"flags/1x1/as-f516550a6b6cf7e277a1877cad9afe10f694ac32c92df7709690913fd59ecf20.svg","flags/4x3/at.svg":"flags/4x3/at-e6517cfc6605c0ffa13da8db795d6e4cd353f72434f8fe38a2ebab7ba685081b.svg","flags/1x1/at.svg":"flags/1x1/at-b9f9e8349460db6d35662b445a8a5fff96fccd904fff3411b711d31b2d7b7f16.svg","flags/4x3/au.svg":"flags/4x3/au-c929c02559051c3f51c0d93dd9df0d886b6c1efa083c0f101d2b3fd39706726e.svg","flags/1x1/au.svg":"flags/1x1/au-96828c63a52eff55282096c045a3822cde99a00bf20528810d31f27b27208593.svg","flags/4x3/aw.svg":"flags/4x3/aw-44597b0ede9ff7df0e659c464a51fdbc1a7f5cc5cd621d281302843c23a905bf.svg","flags/1x1/aw.svg":"flags/1x1/aw-2bd4b1890e233baeae0bcaaf1841803de35dd9c422f486588e48bf3506d69ae0.svg","flags/4x3/ax.svg":"flags/4x3/ax-95093e740b0b492f7cd96fe370fa2478f0d0148b89b424cd8436807234ade9dd.svg","flags/1x1/ax.svg":"flags/1x1/ax-99af962543005067e7239903eb6bc23226d30ce14a7c6408693dc9641193ddc3.svg","flags/4x3/az.svg":"flags/4x3/az-c0959e214bf9a3e94993cfc03f4884b15f6d8c4dd20842a5052a29a8495fd431.svg","flags/1x1/az.svg":"flags/1x1/az-3db731c28289795dc3bda91b3bab129d994a09b8ee0959d34f21a1f840f894de.svg","flags/4x3/ba.svg":"flags/4x3/ba-388ea99507a04cc5d4768bd708d984714aeebbe4177a1cf8ffe0b8331dd856d9.svg","flags/1x1/ba.svg":"flags/1x1/ba-b7d7ab49229704dff0192935c9fb7fb4ea6ba989ce4fee832a738a5d78b39d71.svg","flags/4x3/bb.svg":"flags/4x3/bb-6df74e1044b7f42c2c3b1082d46eb0198aa65a180459fdd950838cd2e6c00ee1.svg","flags/1x1/bb.svg":"flags/1x1/bb-eb10f33cbde25ab6ccaa49cbe3976b4f5ece2fa1d3d485394caa158f10b8b8c9.svg","flags/4x3/bd.svg":"flags/4x3/bd-6cc222c4343f0027697ddd9e8d48f2cf93d3f677b6460b530eabefd2410cfef3.svg","flags/1x1/bd.svg":"flags/1x1/bd-2dc72311aca457668c8bce4f3a22c1b76320e00be50a58fb4001ea39caf6725c.svg","flags/4x3/be.svg":"flags/4x3/be-2b7e73068f4f120ed0ccc3a9fbb8566c9574b206afd8373ed9050e2a971c4f99.svg","flags/1x1/be.svg":"flags/1x1/be-c4c9351d83a4db1f8c7c73dd6476569f0dfd82290ffd20275b7372908c2f2a7e.svg","flags/4x3/bf.svg":"flags/4x3/bf-56669967fef6bb607ea2fd26d32d922cf78f176115287e37e9cf0b8bbec677f0.svg","flags/1x1/bf.svg":"flags/1x1/bf-ffc3651e87b9ccc9374d5bc95617aad474bcaa35871c83ae91fa71eb8b46bab3.svg","flags/4x3/bg.svg":"flags/4x3/bg-ad796782d048f6ddc6715f7ea915a2c86716753579735ec071a106a7f3fc13b6.svg","flags/1x1/bg.svg":"flags/1x1/bg-962bd196cc8e4b702757e17a9002e867843c16415a47a52ecd97459278e5fa1f.svg","flags/4x3/bh.svg":"flags/4x3/bh-aeff05c6dfa41e89db539312faedc41198ba2f2d9bf5ad9f22992a0a5a4151e8.svg","flags/1x1/bh.svg":"flags/1x1/bh-12da0d548841b860a7aedbbc858df1278a4f56105ae643f9379f5c2a3caa294a.svg","flags/4x3/bi.svg":"flags/4x3/bi-7f43c6407a6f007fd70e7b43f9b34e870cc757736a9e2399c46381c8434d238f.svg","flags/1x1/bi.svg":"flags/1x1/bi-454adb690bfce8243896377b9c314ef8f447ec4d85dc677860f521a6c30c896e.svg","flags/4x3/bj.svg":"flags/4x3/bj-85ecb891b5ebbe5802bd23d41fa44f1c1dbf047aceba991e6006e377c53fa263.svg","flags/1x1/bj.svg":"flags/1x1/bj-861b63ba692ecf3e1705296e51ef4f80da47a2eff5cfa29a787bcbc4fc989a53.svg","flags/4x3/bl.svg":"flags/4x3/bl-2c832da5dfab278f90dcfd6265c08211802e94d9b6a5634df6dacdb750723312.svg","flags/1x1/bl.svg":"flags/1x1/bl-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/bm.svg":"flags/4x3/bm-05e6a9d863d77266cc3e2a74fddea640757e09b54d3032711f0d1890b5b61d3d.svg","flags/1x1/bm.svg":"flags/1x1/bm-0a16d9ab856676f9511627004ba4ee08ebe041533a33046c3f732ffb2793cf8a.svg","flags/4x3/bn.svg":"flags/4x3/bn-1560949666220d88ee037b03ce1ac0b95c1b91667f05cf2b8b06a043efb01253.svg","flags/1x1/bn.svg":"flags/1x1/bn-387ebb4b9e1b3796c94edd61402851eafb8b185d7061671b832c1879db69d6eb.svg","flags/4x3/bo.svg":"flags/4x3/bo-96c7f8e64029f530108baee22d8a07cad2787f41eeed0b647f800bb533c39c63.svg","flags/1x1/bo.svg":"flags/1x1/bo-ef679f07e201a91bc3e2152310eb597f731f7133d58be7fc0b1bbb3d8538c666.svg","flags/4x3/bq.svg":"flags/4x3/bq-687781ca2bff027ee1c2bf587d45147cbe81af412d8a4c52e89673535bfa6a6c.svg","flags/1x1/bq.svg":"flags/1x1/bq-4c8a202ed7a99c1515fad01c0b79234163b42cfdc813aee71c0d277b49aadaa5.svg","flags/4x3/br.svg":"flags/4x3/br-8370504ef87598decf706a50bc8b5deecfa80f965b4c3642d2207c9e0804be3a.svg","flags/1x1/br.svg":"flags/1x1/br-cce00e29adbdf110d4155153c8f21e36c46c34847baffafc33b806e121e320d7.svg","flags/4x3/bs.svg":"flags/4x3/bs-80764fdde4884571c2ce5c348231dfe2c57c9e81d4d0d8722ae649ef37a9888c.svg","flags/1x1/bs.svg":"flags/1x1/bs-0a06f669be5ce81e27f5d9ace25e2254113cad9c2964208b5cd136e8b173b6e8.svg","flags/4x3/bt.svg":"flags/4x3/bt-9d00de93c399a0ed1118946c0d662d997847480445bfbbba259e42f80b170be6.svg","flags/1x1/bt.svg":"flags/1x1/bt-32fb8022976e00163073b1f3ff2f62dda6915dd4270d2e09ae51babe67d2ce32.svg","flags/4x3/bv.svg":"flags/4x3/bv-e0fd8f945e245badbcc8deedd6c139e2e19d26b3aea7bf1b9714595a2b08def1.svg","flags/1x1/bv.svg":"flags/1x1/bv-dceefec7161747877af75d9c4b5bd8c53bfeb5cbbe94b41de9a2201321673653.svg","flags/4x3/bw.svg":"flags/4x3/bw-b5231bca6e8f2dd2371e3b4f776cb33af3889d2ad41c3791feb7cba3afe12992.svg","flags/1x1/bw.svg":"flags/1x1/bw-35bd0c7c542ab29aa65df0322f37befe54917cde0ec29a6358a8cbfcd3eb78a2.svg","flags/4x3/by.svg":"flags/4x3/by-0111fe7946228bd49fa5ffc1d04e1dbea12bb0483cee4bf146e23fcb5d7bd829.svg","flags/1x1/by.svg":"flags/1x1/by-3a64902f39b8bac7c042cadcd2ace69975498cc6254f60f31829ebbfe31c2ef5.svg","flags/4x3/bz.svg":"flags/4x3/bz-f6761e8e1132b192c6c2dddcb1d0239ed14e801b8902a7ee8fb0cb869a517eab.svg","flags/1x1/bz.svg":"flags/1x1/bz-2d1e5ec107a277b8e97fede80f512c23ebbf9c225a2c5450dc51c5fb03c9571b.svg","flags/4x3/ca.svg":"flags/4x3/ca-cf63f34a0cef8ed56b4cf1ba24fecc20cea252a9eb9e2c16acccf4eb80b32f49.svg","flags/1x1/ca.svg":"flags/1x1/ca-5c78fbcd8924e8f76111f1cc50317decd6b7c1761e57f19ad33f0b295d002138.svg","flags/4x3/cc.svg":"flags/4x3/cc-f5d8e042b0f7ee2be5ed555b4ea6a0586e69eeb9230701967903364c19e49006.svg","flags/1x1/cc.svg":"flags/1x1/cc-7dc42986b5859331d9f6c96ae7a97b378ff38e4480072cbecceae78e338891a0.svg","flags/4x3/cd.svg":"flags/4x3/cd-9d7d8b11e63073792e3d5e0327cc673101c65ae7545d721b8b1504c31a0c0078.svg","flags/1x1/cd.svg":"flags/1x1/cd-f42723b2e3b7815b2a4b970c5d8a8abea987cf16ff26dbab0c1a78f3ffa3d1fd.svg","flags/4x3/cf.svg":"flags/4x3/cf-902b209a0eaeb8f41f529b5c98240d4fa94dffd58ac3bdc2b6c574125897bb8c.svg","flags/1x1/cf.svg":"flags/1x1/cf-f9b65e234b309ba4f3b2261dcb605b257bd941a308d208b1eaa89af874c779ec.svg","flags/4x3/cg.svg":"flags/4x3/cg-f62e43d08581b8665ab9a7e61ab62cc6b3dd8e6fd0722c7d45c6ddc3f46ec5ab.svg","flags/1x1/cg.svg":"flags/1x1/cg-f2fbf08b1f5fd7e097600a9399d467cb9af8d24fd103a3eeb99f5cf58e6fc0b6.svg","flags/4x3/ch.svg":"flags/4x3/ch-830fe6654b170d461a76a7932b39d352ec30895d512c009a5c193c5a28289158.svg","flags/1x1/ch.svg":"flags/1x1/ch-9f95a95e181489d64144d4502991c00823cf19fefc029cb639199cb100863a0a.svg","flags/4x3/ci.svg":"flags/4x3/ci-3e6b86d6fc1a24b5635c258bbde180f8638e114be354d7379406d5718e46b70b.svg","flags/1x1/ci.svg":"flags/1x1/ci-816edfc3bfc44353f99572310ba67643f979b1681c2643ecc34255df1dbee05e.svg","flags/4x3/ck.svg":"flags/4x3/ck-cadf8156d64ddcff3d60079d017b12bb4e25867e58fa2618f42defa4f7bc8587.svg","flags/1x1/ck.svg":"flags/1x1/ck-450d3b83c32f220510bdbab3ec0fca14edf895e53db9e26e4cd00a3edfb3e224.svg","flags/4x3/cl.svg":"flags/4x3/cl-28ce953691b1c4b0c6d562370913b3ad645e29e56296c16762992e3c30f2a4a8.svg","flags/1x1/cl.svg":"flags/1x1/cl-ed5421f0ff3ba05785268eed2abd3abf76125ec832e519bc10a30db278c23662.svg","flags/4x3/cm.svg":"flags/4x3/cm-d22cb6519bfbf9fbae46b283f6d882f8d46713f18ba59969ae45c542ba2bc621.svg","flags/1x1/cm.svg":"flags/1x1/cm-4619b0400d175f6c0f686526cfdbfcc6f7c2fc7587449e05ab0385cc7d4e8bd4.svg","flags/4x3/cn.svg":"flags/4x3/cn-7af9da3dd810174340b79e6fe636bec183c71d7ce314ac4a5a815bfd388dea54.svg","flags/1x1/cn.svg":"flags/1x1/cn-22e04d44d7f85e6f5800bddc6a497e5722de8db2ad74c6c525c392bd7b8c6e09.svg","flags/4x3/co.svg":"flags/4x3/co-ef2a3c7e495d85d7df1b9bda27023cd558abe89402cad0ff42428c2c5b877551.svg","flags/1x1/co.svg":"flags/1x1/co-42915db89e2fa2f9f97c09ecafc188eb2ec4e51efa87685a01c25d2f0afddf45.svg","flags/4x3/cr.svg":"flags/4x3/cr-7853ef9dbb5832a6d2738b44afdecfcdaa80c56cb66c448b8a8657e236854c8d.svg","flags/1x1/cr.svg":"flags/1x1/cr-b86f916cc80cc14db90b66c652a2919a26baf2864451685af9c34d6310c3f8c6.svg","flags/4x3/cu.svg":"flags/4x3/cu-e3a3afa4a5c661ad431dc45eb501d7e1280b4a397bafa3956a9fc5bab8735f45.svg","flags/1x1/cu.svg":"flags/1x1/cu-9563bc3aa0b1ac659dddaa2534c37d338e1da3dfd3726a717fc85ca8449c83da.svg","flags/4x3/cv.svg":"flags/4x3/cv-d39c3ae09026623cebad38bbe41231aea9b9afacf7eca1d0abf6666e91dd8bbc.svg","flags/1x1/cv.svg":"flags/1x1/cv-78857e96ac5b49478a49578f422abe217af9ed7d90fa2d08ae72a67de4f6999e.svg","flags/4x3/cw.svg":"flags/4x3/cw-c65dd455b3c113d9088e563033c5f1ed3945d6dd88c8f13317fe297fd2291776.svg","flags/1x1/cw.svg":"flags/1x1/cw-61f38f9076443eb7ca682abc21e6ea5f170bd855813d7297d85602b76ca36171.svg","flags/4x3/cx.svg":"flags/4x3/cx-aecc7a8b4b84b9f00a63154b027cb8ec78bebcec33e756b5e95151efb43420f7.svg","flags/1x1/cx.svg":"flags/1x1/cx-c052a0033a120d56c108dc0a919c3fccb9d01a4b78f1f778e3f2973e96197868.svg","flags/4x3/cy.svg":"flags/4x3/cy-b8e0d56b75e0954429cb2253aaf289a83e3c72abd52b4132bdd4016f2bbd43c9.svg","flags/1x1/cy.svg":"flags/1x1/cy-34aa50b77e1b86f5305beec283996cabc45fef1950582b868addc40fd9a8438f.svg","flags/4x3/cz.svg":"flags/4x3/cz-c2a15f3c50b7920c7d82fd9fb21f77c44fb3883f0e34dcf197a23d92d9212290.svg","flags/1x1/cz.svg":"flags/1x1/cz-487367824632a5097e16d7ed1ffc7fe8e233f9e1af45522571e1d4da10de92c7.svg","flags/4x3/de.svg":"flags/4x3/de-32f54fb46c7fcaf2dfcf9172273456ea57f975efb228860def92481efe51c506.svg","flags/1x1/de.svg":"flags/1x1/de-2c94f333afeb14810030d786620fc32e65ba79af53b1037192383823996bb77f.svg","flags/4x3/dj.svg":"flags/4x3/dj-d84d938856e7b6bdf8d38413c84a6968f94dc2adb218f2a9fab3d703341efc33.svg","flags/1x1/dj.svg":"flags/1x1/dj-6960cafac7e0d593152b60988fd12f5d1bb95068bf055c638cb999459f932692.svg","flags/4x3/dk.svg":"flags/4x3/dk-fdd09296ac803a8cf4066ff5488821458a9788985e3cc09356d4c4ef81959ecf.svg","flags/1x1/dk.svg":"flags/1x1/dk-87924239a5ff1605582e1736f5ef17c9bd9d580d796d94b05ff668e2a52a223e.svg","flags/4x3/dm.svg":"flags/4x3/dm-dc3b5c9634f0751ebfec181b12a7c530673ced1001b62a9126ed5ae39ba57203.svg","flags/1x1/dm.svg":"flags/1x1/dm-c8018ea775b0add069f676bbf4b446ed19886c192aa742bb6a61c3602ca63211.svg","flags/4x3/do.svg":"flags/4x3/do-5e2d6816118f78fa4a362ee6a276dac655a4c99d57a9e53a52198f1624ed186a.svg","flags/1x1/do.svg":"flags/1x1/do-f9862ff8016b35d30d5c37ac2c585cdddf235e56ac9a7ae31a90c96963865f57.svg","flags/4x3/dz.svg":"flags/4x3/dz-8a14ddcb20a69c3265924fe2af141ea78c0af47ea07a88707c392a2793092cd4.svg","flags/1x1/dz.svg":"flags/1x1/dz-0e2ada15ba7882343f7512929d3cf981a23a91817fdda0be1ed6a093161b649e.svg","flags/4x3/ec.svg":"flags/4x3/ec-a4c3c62b4272f5000e1c8f563c45ce8305ec71f4e4e49ac477d81b5cb692d7e6.svg","flags/1x1/ec.svg":"flags/1x1/ec-c42aa1de56f2933fc6703e7a59ebc8b424c66f190697ee66814a137b56fa6969.svg","flags/4x3/ee.svg":"flags/4x3/ee-6148aad79adb1c847fedb9da5a7e9c9d47e99ef4c8f4853bb9800e738bddb19d.svg","flags/1x1/ee.svg":"flags/1x1/ee-9a87370a85922c5d103d9d21fe3e778b801a62cf40e1f0efe8d708c5fe3b3ac4.svg","flags/4x3/eg.svg":"flags/4x3/eg-3b2f122e512f0fc470666b35af4f677404d4b811cd795d5cf4e44a72ffd01285.svg","flags/1x1/eg.svg":"flags/1x1/eg-a050fc5953113bfa5e12867313b321df472eb86ad1e3d5362ebb27ac2edbd28b.svg","flags/4x3/eh.svg":"flags/4x3/eh-fea043048f74c728961fe981d7e5d50e286fef39f3e68659b699c6c357c202dd.svg","flags/1x1/eh.svg":"flags/1x1/eh-8ea23a1b6813465e739d6f5e2ca6727331fae96cd32c86041a1ba48926a14cfd.svg","flags/4x3/er.svg":"flags/4x3/er-b24dc54f7e94d0934d05faa7944e6039a56de8a5e4779a399046f047dbd1b949.svg","flags/1x1/er.svg":"flags/1x1/er-6921f9776ece4a1b1ec594ec5665076462cef2d0b41eba83a7bc840ecf88287d.svg","flags/4x3/es.svg":"flags/4x3/es-e36093927dc1fa109e4ddcd4baa65d53d233c23bcdd32796b96409b52c5adbc0.svg","flags/1x1/es.svg":"flags/1x1/es-16a6c048523ee57edd91e60e87aae136a96893b48828d932a24436bb219c00b9.svg","flags/4x3/et.svg":"flags/4x3/et-a3ef36d217667b7e8ebe910469c2eeef563f03d3ea5628ec7fea0f72650db28e.svg","flags/1x1/et.svg":"flags/1x1/et-f66f415e5d5b8b697ed7bb85f4ae3408f9cefaeed7ff0136c4c03da5c3601340.svg","flags/4x3/fi.svg":"flags/4x3/fi-a94779c54a538d2f57a421e6beb619f07cc9c2bda40817d236b686deb8eb3b4c.svg","flags/1x1/fi.svg":"flags/1x1/fi-865b1ae3ed34a0cf0928c6289411569add2065c7ea4fa6897f971c322d955b16.svg","flags/4x3/fj.svg":"flags/4x3/fj-97dd8f9b0d9df1cd965c8a85ecb6feb538acc83b470596ccd199f71dc3d2eff9.svg","flags/1x1/fj.svg":"flags/1x1/fj-f772a5a860faef823adad1b0dc8e848349d094f4fa3b37e48c87382bd443c861.svg","flags/4x3/fk.svg":"flags/4x3/fk-788901bf125ceebc6c23fa03c801420c787bbc4ce6aa4511ccaaba301e379886.svg","flags/1x1/fk.svg":"flags/1x1/fk-5d8df0034167cc75863d02bfdb6147da3a694102f7eea0d92e717a048437fc0f.svg","flags/4x3/fm.svg":"flags/4x3/fm-7167ec387c426a817bccbfec86c8f815b82b36504e1d480f4f9fa04177bdcba0.svg","flags/1x1/fm.svg":"flags/1x1/fm-d08e5959b5e3866cdf814f8d6ab594cb3ca84f0887a3adad3bff824ea0aca70a.svg","flags/4x3/fo.svg":"flags/4x3/fo-af6148d661d02a6580e8714a6271776b4b8bf3b656bfd5fd88acdd1aa170366a.svg","flags/1x1/fo.svg":"flags/1x1/fo-26d5af2770c46935170988cbad16ef9aad9be34b38ea92847e6646a516878598.svg","flags/4x3/fr.svg":"flags/4x3/fr-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg","flags/1x1/fr.svg":"flags/1x1/fr-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/ga.svg":"flags/4x3/ga-80f90062ef9aa4d236c81ec6c6c6e08058750794014bb93d8dbdc8e1684ca4fa.svg","flags/1x1/ga.svg":"flags/1x1/ga-a66094862d24f29704c190fe42ff50820923f3940ff417f3e1623e9089b57eb9.svg","flags/4x3/gb.svg":"flags/4x3/gb-d85f0f149b4390bed6624bc30ca2cbfa37d394f14474fcf81d63363ad363e284.svg","flags/1x1/gb.svg":"flags/1x1/gb-2f0cc6ed1e8e9a7e56cafd3500585d685ae0c51abacddc52f750fb4d23f60b04.svg","flags/4x3/gd.svg":"flags/4x3/gd-51a8d53466df4426bec5fb202dd8f35239324b9c8b5256d38fe411c4b79945cb.svg","flags/1x1/gd.svg":"flags/1x1/gd-9156f824a83004691a7a354e925bc1680b5cffe663bbfa37aa4609ff28148218.svg","flags/4x3/ge.svg":"flags/4x3/ge-4ef2c8e6f371a711c61ac54d8d201a80aab53767cacc5322fb848cd3e38b00e7.svg","flags/1x1/ge.svg":"flags/1x1/ge-a3af8272a5fb63372705825519543e53269282c4800b70e6a93ba69674524eee.svg","flags/4x3/gf.svg":"flags/4x3/gf-c7d5ee882949b708641f99ec02edcc6b3b2362d393cc3869342442225be7cd3d.svg","flags/1x1/gf.svg":"flags/1x1/gf-b297e376fc00d3d7bfafd081766dafc4590f4ac4b71f53bc2bbdf2c028547920.svg","flags/4x3/gg.svg":"flags/4x3/gg-e99b36723ffe04d7be392d612c76ef44e82bc84823d71793eb38e338116f0ee0.svg","flags/1x1/gg.svg":"flags/1x1/gg-3f764a4568626d43f89b2b200dcbfe68de3093be418716549ab7c5c33f433d37.svg","flags/4x3/gh.svg":"flags/4x3/gh-817c2eb8b3f7190647510371b2d38ad8e28e1348cb657e34778f970af5ca3868.svg","flags/1x1/gh.svg":"flags/1x1/gh-87a6486910cb62e58439da330c4270d1e2a0fd8e1ace80987c295971d15f9af3.svg","flags/4x3/gi.svg":"flags/4x3/gi-52bfb6cd7cbebf1da96dfc6bf708d3b7239984d36400181ca4ac020081ae41b5.svg","flags/1x1/gi.svg":"flags/1x1/gi-f7ebd8d36a5cb260392a92f10d8bc8d7cf11433fdce9474e08cc52a07dcd5258.svg","flags/4x3/gl.svg":"flags/4x3/gl-e031a722ec76e8262439e50a0dbba62f7b7bea020361f2bf4a9a49d6b59954a5.svg","flags/1x1/gl.svg":"flags/1x1/gl-847b3362e50c1d74aeb01a5ea55cfa2950597cbbfa2377bd7cb70e273d4c57fb.svg","flags/4x3/gm.svg":"flags/4x3/gm-a13d89d1cd66c77706dbaa380370ce3d62c0cf3219c287008759e823fd42a27c.svg","flags/1x1/gm.svg":"flags/1x1/gm-4a4490e2aea203b32862d6e58bd02efc45d07a401684795ecae68ddb97756387.svg","flags/4x3/gn.svg":"flags/4x3/gn-cfa24192de905cc4a07dffb54ea252304bcffd387ce2d6dedae89b654486f286.svg","flags/1x1/gn.svg":"flags/1x1/gn-b50eaffe8a6fd16c9cf2c2d51adea53250b089f04ea701b8d5d812877de6d084.svg","flags/4x3/gp.svg":"flags/4x3/gp-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg","flags/1x1/gp.svg":"flags/1x1/gp-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/gq.svg":"flags/4x3/gq-548afdaa6c448c6bec87c1e2148831c41f9a2f4f83922cf32e5a3904679d889d.svg","flags/1x1/gq.svg":"flags/1x1/gq-28c6e2820b326370a489d4f9efaf258432fdabecb67e610ddd752ed0f0e8a8ce.svg","flags/4x3/gr.svg":"flags/4x3/gr-e2aa8c913feebbed26a8fa0de5ac4aeb51545a4c0dee9bfda4ec5d9673f96386.svg","flags/1x1/gr.svg":"flags/1x1/gr-64dc4363c7c3b827adaa7cd51bb8a0f30bd0a547e86772c473d433b1a6033e2f.svg","flags/4x3/gs.svg":"flags/4x3/gs-83141fac364fa2871379c6b1cb8da9935a185bf9b0e5dafc6b6458fa13359589.svg","flags/1x1/gs.svg":"flags/1x1/gs-31c9e0016c7bd2cfed68cc4e6c2ca73123ce9391e8a50804e5c74101b72e07cc.svg","flags/4x3/gt.svg":"flags/4x3/gt-b4ca8c4ed71131c43ba14f3631a0ee92dababef325bd698ee0bac0da84980c85.svg","flags/1x1/gt.svg":"flags/1x1/gt-a7ce73eaabe1b659b733691076f8455051951432a1fac682f5896f8c4af6ff69.svg","flags/4x3/gu.svg":"flags/4x3/gu-a71a2e02c06f22984e424d15a410d9261ec9ddeeb3df112d5f46b66a09f5bd9a.svg","flags/1x1/gu.svg":"flags/1x1/gu-2156b3d721b79189d40c7f5b5de9e219f83a40b69e0a3855514a097fcdc2f2d2.svg","flags/4x3/gw.svg":"flags/4x3/gw-9eba06bd7c024dbd764b1bc1360120ed8a280d59075f81a50994930534cc42f2.svg","flags/1x1/gw.svg":"flags/1x1/gw-6c4ca99e9871a9cde81966aaf02aac0106e2210f9c64e94bdb5168c7abbbc0e6.svg","flags/4x3/gy.svg":"flags/4x3/gy-b6f25e30b463f760ea01c81ff88a3932bf6812e6b626fd7fbe711a4cbac246c6.svg","flags/1x1/gy.svg":"flags/1x1/gy-d82b2a81ce6cca3e7c5854a5bc1198224b6455eab7adf06d69822a3cf433a1d2.svg","flags/4x3/hk.svg":"flags/4x3/hk-b69c165653e2d112296b963d3369a7d8f656e77432c6c1c5ac1485db077c80a0.svg","flags/1x1/hk.svg":"flags/1x1/hk-09c50dc6f3b0d5bffbc85a2998c5c86da531a939cf48c07ddb644061ab0b2222.svg","flags/4x3/hm.svg":"flags/4x3/hm-faf74b1cde15843a42becf5d05a373f9af8d867d68c824e80d2c41b48c23ea57.svg","flags/1x1/hm.svg":"flags/1x1/hm-6cc1243d9638246c1bac7e52287dcfc6f9b00d142105fcfc9e8b7b3405d4852f.svg","flags/4x3/hn.svg":"flags/4x3/hn-3ad02422915a4ac6a81c3249610cbd42638ebe27d412a2d490bc63e75e1028ea.svg","flags/1x1/hn.svg":"flags/1x1/hn-f0be4d00b892418864d0e4cd3000ee2dc519dbb96d424cb42f55707f8999d44a.svg","flags/4x3/hr.svg":"flags/4x3/hr-6671992f1644503121dce7774bf2f7e2ab65da14124251d80b024d78fb34f6f0.svg","flags/1x1/hr.svg":"flags/1x1/hr-f086b6932d53408f2b57db5e038dc7b508af60a49670e187eed42714f1115b49.svg","flags/4x3/ht.svg":"flags/4x3/ht-0c3452573c61366d1e9d647d61675d2e9a309312e63c649f98d73fe37d2aab4f.svg","flags/1x1/ht.svg":"flags/1x1/ht-80c212d49effab9e944de758c08cc296833bc2a04b3098e8ee58266657522fdc.svg","flags/4x3/hu.svg":"flags/4x3/hu-b48c8253bec6b4e08f8954a2955fdbc2311d254b51358770d3eaec5fe0875965.svg","flags/1x1/hu.svg":"flags/1x1/hu-af59966ca652f5ba1d081af0c1c2343acb479d1a06e03d248bde266cb29aa931.svg","flags/4x3/id.svg":"flags/4x3/id-e02525ae7152d4bd10dcad2ffdf0bf5d08c6c67d3142bc78a7cdbcaf1fcd4a4a.svg","flags/1x1/id.svg":"flags/1x1/id-5b846f6ce4715ea50d4068d9941290229c1be67d619a978096eab2c612e9b297.svg","flags/4x3/ie.svg":"flags/4x3/ie-0e75a4c4027484997f14bd4c2529384ef6c621591908473ccbeda20381c05c93.svg","flags/1x1/ie.svg":"flags/1x1/ie-6446113a9abff1feba085706937ff83d73ba310c78153e8da3ca2d6f0c529510.svg","flags/4x3/il.svg":"flags/4x3/il-98c3c0d9628008ac3a947d8f10fcb01d8e2545dfb265e94e6a29910e1ba57a2d.svg","flags/1x1/il.svg":"flags/1x1/il-0f95bc7892bcf9eb3b6af9bf930e803b5121c45fa7261874ab4d7a8542c20c45.svg","flags/4x3/im.svg":"flags/4x3/im-0c402e364a705500028c46ccbd78a29944e91103b490607b366ae1d4f221ffc0.svg","flags/1x1/im.svg":"flags/1x1/im-718f45e1c60fd42db2a814bfaaa3a9be828f4dd0e4a4aea49e021f066087dece.svg","flags/4x3/in.svg":"flags/4x3/in-a6c958c4b5cb12e2392d81b11dd0fed5fd5d0a66c7decb3ad3c8d27175854d3c.svg","flags/1x1/in.svg":"flags/1x1/in-b4163420567e8e04fa58b79688af8d7bacf32ddf0e2b63ae2f1c5f0aacaaa696.svg","flags/4x3/io.svg":"flags/4x3/io-b951cf1fa71ddae941ee31dd018d2593bb8621ff92508bb311c7362c537a474c.svg","flags/1x1/io.svg":"flags/1x1/io-d9dfc871f0bca35430b17de2e55394b0145334aa2080e07856e21d6d2e007d8d.svg","flags/4x3/iq.svg":"flags/4x3/iq-6a74e49d2c3d0ff072086fba1a2fc8b948ca34891a3aca960f9daacec107bcc6.svg","flags/1x1/iq.svg":"flags/1x1/iq-95f5be79b6ab86e6338abd39ef8499af1517dba8ec3b266ea8e3c954601f0bbb.svg","flags/4x3/ir.svg":"flags/4x3/ir-5f9fdfd2d4cad535338f6de7927cc8094d02eaf06dd5122d3cba9e859c9ec4df.svg","flags/1x1/ir.svg":"flags/1x1/ir-f5367274525b1f050dfae895943620a2e711f63a5726b273b488721a4501465d.svg","flags/4x3/is.svg":"flags/4x3/is-15409efb6cec16b490b4abbbc03db415ef3448cb8cb281dd7cd1b2ba496d534d.svg","flags/1x1/is.svg":"flags/1x1/is-500c3ef83fe917ab9cad59b7e8e6d693d9e78876febc1882c4bb06c8876b7357.svg","flags/4x3/it.svg":"flags/4x3/it-a285a0e341ba9492a2b7478e8a7a13f7c76d3c6a581aafb965ea26e1c554f0f3.svg","flags/1x1/it.svg":"flags/1x1/it-eeb47e346a5f6124b34f8428c97fc7dab2726f8d36d62dec08df3ec7171353cd.svg","flags/4x3/je.svg":"flags/4x3/je-b611f3e0fb7a94f85fa7d5f6f7a7db839381d054eb92abe0856dda8218c40687.svg","flags/1x1/je.svg":"flags/1x1/je-39c0c1482c1c533366153edc873f5eae266fdbf591e2022a7f82c17ce2d676ef.svg","flags/4x3/jm.svg":"flags/4x3/jm-62fcbb8ed5b923b6aafe3990a24ad571485b4ac8db1bd7ed7b200cfadeeb8d7f.svg","flags/1x1/jm.svg":"flags/1x1/jm-b57cb61fb8eb67f0887afb7c779d6033e1c4c10242662093df69496aa58cc464.svg","flags/4x3/jo.svg":"flags/4x3/jo-8e1174e66beeec19016b2754e8bdae987f420fa937ba78efecd61c177d9d40dc.svg","flags/1x1/jo.svg":"flags/1x1/jo-47d2fc18e8af9194bcb249161a10383f89c11a73148b6dc77f4ab47a90294ae1.svg","flags/4x3/jp.svg":"flags/4x3/jp-1785964f1f3a4346ab8e1cbdc211399c5ced34a566c4725f3d23e8105413d6f4.svg","flags/1x1/jp.svg":"flags/1x1/jp-a71cace9d237527635ee960b4df645f202d630c46458cf7e7a7ac09659e4404f.svg","flags/4x3/ke.svg":"flags/4x3/ke-680e981e37f7f0497e148043390987748a5bc78f4c3af09cf58c61d42b2a4a24.svg","flags/1x1/ke.svg":"flags/1x1/ke-60ff7f8bf6b5da9182867b8200475cb0a87f80cc960643ee15c99bcdcf200654.svg","flags/4x3/kg.svg":"flags/4x3/kg-3a93d17f0ed778664ae760032710fd7235bc43090de3543ec50fb8d2dfd9b595.svg","flags/1x1/kg.svg":"flags/1x1/kg-165c50f348fe0d4d8f0bc9cbf2666acde0f3a81dfed3398b8a7db5a51e3348aa.svg","flags/4x3/kh.svg":"flags/4x3/kh-6f3eb3cb44cd8124f4b7cb0d9230ddab4f782ad10746c2e1fa73f54ca2fe4446.svg","flags/1x1/kh.svg":"flags/1x1/kh-9541bd094c9e79e8ebb77a8ba94b22ed079b0502b2d70769b89ac9d19d16781b.svg","flags/4x3/ki.svg":"flags/4x3/ki-a1b39a59ce5be52e1c6ca618ccc97f47d2a7b0d652bc2e5814c30a13d03842b8.svg","flags/1x1/ki.svg":"flags/1x1/ki-e9e5127171d893619b247b605865507b61019dee9e6ea589c5cd0c0e7d513f22.svg","flags/4x3/km.svg":"flags/4x3/km-2ad8132e636de92218e06cad237154128fd1e84dbed82610e138ea148a53c01a.svg","flags/1x1/km.svg":"flags/1x1/km-d9d978cca1790b3165a0d18e159a536b4a2405f12b0200b03cf721042d326089.svg","flags/4x3/kn.svg":"flags/4x3/kn-08b7f26ac06f65c797de647f61bb738a4212cfc9ceb53ef11d8db093b58386d1.svg","flags/1x1/kn.svg":"flags/1x1/kn-e632854084c163a1752b53117eb4f773e57eef231917db846fc8009541cfe4b9.svg","flags/4x3/kp.svg":"flags/4x3/kp-f073e224e1faff5a0bbcb51cd05288d1b13cb607dda42fc7702afe8cfb01d0b3.svg","flags/1x1/kp.svg":"flags/1x1/kp-504fc83119f2a2c34ac75051d3ce15edee6f93555d729d759ef15f5f5caab3d3.svg","flags/4x3/kr.svg":"flags/4x3/kr-dbe4354aefeb100e561ee6f6ea6cc46551c1722d1b75fc164b60b0592d9dc30d.svg","flags/1x1/kr.svg":"flags/1x1/kr-3aefdef6c6b72177aea924981a673bcc58c24b8c98cb00960e23250c07766b63.svg","flags/4x3/kw.svg":"flags/4x3/kw-fc682de5f565e3a918a9cce44a87a0cd8a40b93a555be3dc7c381ced74853021.svg","flags/1x1/kw.svg":"flags/1x1/kw-63c2078d09713c30c0b917fdaac63a1fdb9161ec4b8cf1e91d4a9a8730a5cb65.svg","flags/4x3/ky.svg":"flags/4x3/ky-77da018be33fa8aec69147e6107ff363bfc467ba857e7d47bd383984305cebab.svg","flags/1x1/ky.svg":"flags/1x1/ky-4a6b098e38d727959969a977668aefbdf6b9adcaef4cd922aac232d64a8a9d75.svg","flags/4x3/kz.svg":"flags/4x3/kz-ce3998065f1b6242d0a1755ffb590f15b2ff477b594b26b9a497f7181304bbe3.svg","flags/1x1/kz.svg":"flags/1x1/kz-795fd9bf32b68805f9e80f120db569eacbd5727fc523d7ff89943bdf9ef5b1e9.svg","flags/4x3/la.svg":"flags/4x3/la-dd2ead7123a2c4d2fda71d8a462319d30c6ff8e83c72cfd888230f6a670fdff4.svg","flags/1x1/la.svg":"flags/1x1/la-7ebc9f64aad0049a8167272ce06a7c1512c7d14080ff93a88e6b28e4050f33d3.svg","flags/4x3/lb.svg":"flags/4x3/lb-7afb0e27b8cec77e2c65c3467b68ab24d49879a4739ab4780154a7db4358f6fc.svg","flags/1x1/lb.svg":"flags/1x1/lb-6f50829425260779f08ad80ac9430796e64901b0dd74d010bdf2336f541eb47d.svg","flags/4x3/lc.svg":"flags/4x3/lc-9efcb3c88f9ff13bedcbd0c7f48c7fab604d3842ee559be3a11c6bc64e31a53c.svg","flags/1x1/lc.svg":"flags/1x1/lc-31d72d1034bf031934561da9615fc3db916bb08a210f434a981e053a7edfa339.svg","flags/4x3/li.svg":"flags/4x3/li-9eed98d7d4e07cba0a2aae80e31add4bbe663e959df8cafd607cef17daf4351a.svg","flags/1x1/li.svg":"flags/1x1/li-f655bf461c1690078c846528eb6d3ebe8d594b2539e3cc37f89204a754424c81.svg","flags/4x3/lk.svg":"flags/4x3/lk-3471b0585fb1e0ee350d6fe87e55ef07eef01e99444263b86ff005156dea1b73.svg","flags/1x1/lk.svg":"flags/1x1/lk-d3bb56415e6e2095a470cf4e2ed455c57cde204aa79362786aca785db35ecff8.svg","flags/4x3/lr.svg":"flags/4x3/lr-a39f30a6169c4a3f3ff8e0eb04862e7f941c5d7c8e489ff5e7e4cd8cd436f5e2.svg","flags/1x1/lr.svg":"flags/1x1/lr-731191ad65bf784386cabac12693722d16aeb2e97d6456cc33488f805067aca8.svg","flags/4x3/ls.svg":"flags/4x3/ls-1e4f7ec2600e30b515cd12b509c376c3014d760731d89f87ae9a962fe249b3d4.svg","flags/1x1/ls.svg":"flags/1x1/ls-ba2a8327ab9b0e74f4f411ab989980cde309e86395736a1f77e17a0eefc85266.svg","flags/4x3/lt.svg":"flags/4x3/lt-d6a367644254244a8219c2eaa525b43d261f5da4fb074b0e08cedeb343f737a1.svg","flags/1x1/lt.svg":"flags/1x1/lt-933670ec7627a78f72b60cfe7f49cd09b4afa58fb341857f76a5b7b612c12c97.svg","flags/4x3/lu.svg":"flags/4x3/lu-949c9e81217b58fe622d4d4d00903499b3e2249aa3f688401b78bd3ad977c740.svg","flags/1x1/lu.svg":"flags/1x1/lu-ab39ab3ddef396fcd816d4170f3f73ed89465ed37a180685c68b3833aa3f01a9.svg","flags/4x3/lv.svg":"flags/4x3/lv-b672e3ee7e344abaaf9128111a6543ad7897aa92084b74c42a2877aa1b8cf7a8.svg","flags/1x1/lv.svg":"flags/1x1/lv-55fc46607d153eb1d40d1b478ab6448117b79cdc3d9d973ea2beb44ee4d77316.svg","flags/4x3/ly.svg":"flags/4x3/ly-6f996771734c3f63c65d925a3d991f7d238734cc10e56b3160841fac2939e21a.svg","flags/1x1/ly.svg":"flags/1x1/ly-4e0bf9ff6856dcbba708b4fb176abd44cd385274badbb6e609b596a660109191.svg","flags/4x3/ma.svg":"flags/4x3/ma-70b305040cec175c749a22e6d1e0c1c96bd2164768f208a34d6c8a7ed5caa0ae.svg","flags/1x1/ma.svg":"flags/1x1/ma-919d8fa71ed3a3cadabade682f5326334f11d659245d51b31b40880689cbe275.svg","flags/4x3/mc.svg":"flags/4x3/mc-f0bd30faa57995276026f00e97f6d4ffd3c151e6d2c3d440331ac739965f3bc9.svg","flags/1x1/mc.svg":"flags/1x1/mc-6fcd8ec0404ec1e02e8f38934202004b443c39ffa369be045872c4c89b0674b3.svg","flags/4x3/md.svg":"flags/4x3/md-4bb12bafd1cae33ea4d420dc80301e573d39247323d0eca7c343650a414931ad.svg","flags/1x1/md.svg":"flags/1x1/md-76e3c791e11574492239b07821b43d8f5308e8b7b9ed7d72a5b189f06bb0a81d.svg","flags/4x3/me.svg":"flags/4x3/me-096ce4c309762cde78cb1fec7f1d9ab7c38e6270ddb5aaaf9d29ec63a160e276.svg","flags/1x1/me.svg":"flags/1x1/me-9f8dc8f8e7b38bfc2edd5a35d13818544d304c7834a315ffbfcccecf7a9e6ba6.svg","flags/4x3/mf.svg":"flags/4x3/mf-4e8c446e032572a2e74d1fdccec9a3ae93d66dc24952ed2f1fe5bdab6fef5702.svg","flags/1x1/mf.svg":"flags/1x1/mf-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/mg.svg":"flags/4x3/mg-f8afb0a551765b27b0c173a623e30af523e907e665858c401e8246b2fa5c2052.svg","flags/1x1/mg.svg":"flags/1x1/mg-d5527653deeb8cd3c7d24082dab7c9dcd8218dd9c9043c832cb1436f1d8090ae.svg","flags/4x3/mh.svg":"flags/4x3/mh-4edc79226b41a72a4f0a8ca6d4f7f8f73e92972ae6b30c96a9dab4274a046165.svg","flags/1x1/mh.svg":"flags/1x1/mh-1bd8a38684a5d55aea8319d106fdc1e62a91424e36a8fb5a27f215cfadb98707.svg","flags/4x3/mk.svg":"flags/4x3/mk-2098f24dab54b22fbc7aff34c15009b4ae7012a6848cede09d6db9ed5caaffec.svg","flags/1x1/mk.svg":"flags/1x1/mk-1b083e708a18b40383921595134b167e0fa84a6f233934668481b902b518f089.svg","flags/4x3/ml.svg":"flags/4x3/ml-5cb117165c5ebebb07725430dce0fbd0bce2ad618967354eda44d9229e16c676.svg","flags/1x1/ml.svg":"flags/1x1/ml-cf94ba5bc9f5b9f3b15c187243a5fc60dd80a43715da7ae005dc13321f0d411b.svg","flags/4x3/mm.svg":"flags/4x3/mm-987d96563a6517ba568b2ad3e8dbcd77c01c0a6114b8497b214cf3e967ce27d1.svg","flags/1x1/mm.svg":"flags/1x1/mm-a78cffaf229320ef1cc28570ec3e91e9e188d8cff8cc01f14423b9c5383e87d2.svg","flags/4x3/mn.svg":"flags/4x3/mn-a3dc85a21b868793f084dd954c31e13c0cf993eef59102a102406c95d99e243d.svg","flags/1x1/mn.svg":"flags/1x1/mn-141a15f289b3e49d8e0c1a21b9015f14ebb9e55660ebc23deefa55a3fa6fc9b5.svg","flags/4x3/mo.svg":"flags/4x3/mo-f58284a9e6021d88f7756d6cbe408f79789a30113084ef6bbd8541e15008d684.svg","flags/1x1/mo.svg":"flags/1x1/mo-b871b2e0087b09318060384476b25c28de16acac946f5ecbb4e162660e6486c1.svg","flags/4x3/mp.svg":"flags/4x3/mp-d9f8b726babd7cba9e128eb81ce7e7d9adb81945f056072aaa3b5540c8299f9d.svg","flags/1x1/mp.svg":"flags/1x1/mp-41d27c2d802f8487a3343a962c11711e9ebf682bda766cceb72ccac2b37dbda0.svg","flags/4x3/mq.svg":"flags/4x3/mq-21e70a8c243dc97f486dadf01f0b3300a8310c719d5a650fe4d7512e7ee8169d.svg","flags/1x1/mq.svg":"flags/1x1/mq-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/mr.svg":"flags/4x3/mr-76898913a879ac1eadb03f5950843ea63fd9a0a998d1b9113c386012cf1c80e6.svg","flags/1x1/mr.svg":"flags/1x1/mr-5288f91d4c12b6fdca7129a8564638991028f730a170bb72be9fee1ac8d8f206.svg","flags/4x3/ms.svg":"flags/4x3/ms-add4964ba7fa5a4440d40902dabd49345476d13ddf6e20e7b06834ab30721b79.svg","flags/1x1/ms.svg":"flags/1x1/ms-47f49520f4ba965587509e45980be0ef29792830738cdae717e52616a11bc00b.svg","flags/4x3/mt.svg":"flags/4x3/mt-55b5c69335d7e2691e50443b34fc5b708309c99326fea6233dd3575c3402043a.svg","flags/1x1/mt.svg":"flags/1x1/mt-bbdc4f8e3dc66dc066d8ad0a264d751090794c53eee6be34f8df84ab389988a0.svg","flags/4x3/mu.svg":"flags/4x3/mu-d0d2fd85209d5ca5b9f90da3947f3142b96ae688536ed796f2bc912aef84c333.svg","flags/1x1/mu.svg":"flags/1x1/mu-3e18fa9a066e02636f5a119d445b4f0439c8b75bae4e2999c17a6105bb95bd5a.svg","flags/4x3/mv.svg":"flags/4x3/mv-595fccd022d985bf319bfee09ded164593e8206c364adc1fa3abbc68450c516a.svg","flags/1x1/mv.svg":"flags/1x1/mv-ba59c37e1fcf099ca68e7fa68fc30d5e75c4171aad18be54126fd214a0b0b6b5.svg","flags/4x3/mw.svg":"flags/4x3/mw-67c2a39590afb916054063262e67293e303a264b9f9219767c13feb988f47212.svg","flags/1x1/mw.svg":"flags/1x1/mw-b82e28e3e51b467c8db86b1dd9cae837204255320928eb5e5f6b8536c7b1b28e.svg","flags/4x3/mx.svg":"flags/4x3/mx-416fe6de02b7d9dfc0e479454d06fa7701631bf848c888365bc56978ea524bc5.svg","flags/1x1/mx.svg":"flags/1x1/mx-b9461685b2714abb039fbd65510729f7ab324940045465b1c74666721d721f7d.svg","flags/4x3/my.svg":"flags/4x3/my-c0f21e9c6679e1ae455392ded0b9e5d8aad5f5ee79589634ac89d88f0c548060.svg","flags/1x1/my.svg":"flags/1x1/my-868a1feec94ccf789db1040a953f25d3982056514195dcd961ff2d6b51b04431.svg","flags/4x3/mz.svg":"flags/4x3/mz-0c06b80f82ab675854d23444740910298f4b8e82b929112dbec4e1927342120f.svg","flags/1x1/mz.svg":"flags/1x1/mz-09a8632f1d20d400401b944af3c4b13e5d64052466bf9a59f6d2927d188150da.svg","flags/4x3/na.svg":"flags/4x3/na-43a5f5934fc004e64eadcfb7675114ed1eab3b7f1e9153886edb0b69e7581ce2.svg","flags/1x1/na.svg":"flags/1x1/na-549c5971f5c2a771c83113a4f9b7a9b5e69546d855e92559b49d6772ff6d3e82.svg","flags/4x3/nc.svg":"flags/4x3/nc-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/nc.svg":"flags/1x1/nc-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/ne.svg":"flags/4x3/ne-3be65335a772b7ba2c8916d0d60f12ed4cc2aebc302151ea23ced9c9a3c38ed4.svg","flags/1x1/ne.svg":"flags/1x1/ne-783c25c63f68afe3c462b326b7faec7cc1493f6a4c140bc62fd524604de09d27.svg","flags/4x3/nf.svg":"flags/4x3/nf-6ff37be9a0581fec55eef9e9871aa0d76d61c44007445184712ec6df3a04208a.svg","flags/1x1/nf.svg":"flags/1x1/nf-2f25b6485f62ce38b25bc9f6428d3e0dc0043d71221eac1f4c3d71bca91c2ea6.svg","flags/4x3/ng.svg":"flags/4x3/ng-22aaf5a93f277f26cbfb21f7b141476fc8853298cf423fe5c849f87c2813d4e1.svg","flags/1x1/ng.svg":"flags/1x1/ng-8753476807ab9e0c201397dbe6a884155d97e8766667d10071650d64fe277fb0.svg","flags/4x3/ni.svg":"flags/4x3/ni-295d07e91f9417b2ca8c7c918481874a7da7f9ac25035edf3a8d1d79b1230e32.svg","flags/1x1/ni.svg":"flags/1x1/ni-6786ef719864e51745934adc319ed0ed95fca75687ee6050d580435ee3f2b236.svg","flags/4x3/nl.svg":"flags/4x3/nl-8f7bff63589346e93733c01f1f18c5a11e8c94911253bcf852f173a933cd928e.svg","flags/1x1/nl.svg":"flags/1x1/nl-f46400354e3d489228eca5944d9e181114fe1f748fa22ac0a70fd06c557bec92.svg","flags/4x3/no.svg":"flags/4x3/no-ecdb24f870c1e6777529ec85e3ea8d989a75b5874ecde94fead0218f7c1b5605.svg","flags/1x1/no.svg":"flags/1x1/no-47a12b11ae8b0aca7f7e3d9084e9d3a6c0ef1ad979d22ba9258e6f9ddc3ab16a.svg","flags/4x3/np.svg":"flags/4x3/np-b32c3bad572c4f27b5eee9c1ca97a5f2ca1c2a5b720b67fd636c91064e5fbdd9.svg","flags/1x1/np.svg":"flags/1x1/np-1279e1d699c05de413b30172b7ed97c13bfaa2069abe788ecf8b127210778354.svg","flags/4x3/nr.svg":"flags/4x3/nr-3818437e2251e1f7310734098d13e2eee69a6b9cc310918d3287b345618e6fef.svg","flags/1x1/nr.svg":"flags/1x1/nr-9b9edbaf4e09989f53511c969520cc2c10f3a693cdb80441b2aeabff30ebb381.svg","flags/4x3/nu.svg":"flags/4x3/nu-3b27eef18754c7fb8def8deadc730f074b090c8b6e9101d008d529c1d8784e5e.svg","flags/1x1/nu.svg":"flags/1x1/nu-9f6f9a41e36004711e3ad2e31e3d0425ca698bf242a62b9665b6f41eeb999ac7.svg","flags/4x3/nz.svg":"flags/4x3/nz-9690c3a7cdea4d5d6b88546ad69244a772fd0649e75f6334695fce89f5c4f076.svg","flags/1x1/nz.svg":"flags/1x1/nz-e848215aaf4f9d5738b886ded97ff13b69c752888a27d1ac430116f7133a1c0e.svg","flags/4x3/om.svg":"flags/4x3/om-7b9135ecdcf42a3bb69c5bf685930d32f9be7c6daaf58d5a8d154e22b6079347.svg","flags/1x1/om.svg":"flags/1x1/om-665da86c6b715f3d5f36bba0e01539e574d7871437b03ecbe29a92e5e703e09a.svg","flags/4x3/pa.svg":"flags/4x3/pa-a5b55e50a411899195a8f2bf8f37bddd94a4436582568c9ddfbddc2c99d1ae2d.svg","flags/1x1/pa.svg":"flags/1x1/pa-6c5566a7ace4125d958ec45ade8ce61e2fc065bb7fdd99cf1d6988a01b6fa73a.svg","flags/4x3/pe.svg":"flags/4x3/pe-12966232fe9a3dcc296389dea282cc8aa400327298d25f2f01c4963d1b900d13.svg","flags/1x1/pe.svg":"flags/1x1/pe-449b3363ff9efe701e1f662ae71c31bb4b5952710b73346e2ae090a90c79488d.svg","flags/4x3/pf.svg":"flags/4x3/pf-db568d96a25e93ea2d51edb9ccb8a0ba15bbe46e1241e1bb4376a856290de4e8.svg","flags/1x1/pf.svg":"flags/1x1/pf-d6aacd56a7243b922bbbd26c94696f19a3dd242df5e5ede999e0319930bf8d64.svg","flags/4x3/pg.svg":"flags/4x3/pg-def242bd4b12703b11ddc016962c0ab5ac2252e6afb53647281af0ddf72b08b2.svg","flags/1x1/pg.svg":"flags/1x1/pg-0f89210b4effa3e2f248e9d22710191ec8a5f8cc00e24e7a493fcf6013af6985.svg","flags/4x3/ph.svg":"flags/4x3/ph-76da2cb2822b71a1e7f182cfe2b8744af8704640feceb476aadf1753611c124c.svg","flags/1x1/ph.svg":"flags/1x1/ph-896fe211ebf65c4aec42a1f115ad43894870bc661eb9f32fd97962f0c6a8b666.svg","flags/4x3/pk.svg":"flags/4x3/pk-d0f9243f586c99692f7d7d18a648095badef0c11bd98645924771c71283f6a51.svg","flags/1x1/pk.svg":"flags/1x1/pk-c32541b10dabe01538a811d9e1b600b91b1724239fe99325bc1156c4183127d9.svg","flags/4x3/pl.svg":"flags/4x3/pl-0fc0d2ef9f5b48e43bd93818263cc504c825346f09a73d22c6f84dcde8d651af.svg","flags/1x1/pl.svg":"flags/1x1/pl-44281da3343d3308aaa29a9e7d060a24b8d5bb949d07197e3771aa30793f5ffe.svg","flags/4x3/pm.svg":"flags/4x3/pm-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/pm.svg":"flags/1x1/pm-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/pn.svg":"flags/4x3/pn-b9639507463a2e238b7d0f4cd976455ad4108594cc526882ed83807c321ca6b8.svg","flags/1x1/pn.svg":"flags/1x1/pn-23189e2aa8792ba5d7bbfba6f21467ec9516f9b366ddddce193a7f26ddc18030.svg","flags/4x3/pr.svg":"flags/4x3/pr-3194786def8e2510554b4d46d2ac49a10bfd1fb26f0d6803864b5982b36c12bb.svg","flags/1x1/pr.svg":"flags/1x1/pr-fb6e6e3064fc00cb41a3752358ba09e006375d6139ed63a13e6b81b4c8c53511.svg","flags/4x3/ps.svg":"flags/4x3/ps-e75b0d2d81c169c45624faf1f51ed1b9bf9b7945d71ceddac505c464f47c639a.svg","flags/1x1/ps.svg":"flags/1x1/ps-5e45e6b195fa5aa5b3c8bdff0824ef3fb354d4f1d5a1a5c4d92a9d67a568db3b.svg","flags/4x3/pt.svg":"flags/4x3/pt-7056421a09bf65c1e96a0891db8b1d37b9ece7b39a7a8ecdfcbc837d0f773cfa.svg","flags/1x1/pt.svg":"flags/1x1/pt-4f2b0e37162ed4d197eb28886933009600109e827ac83664f57f3683adc9617a.svg","flags/4x3/pw.svg":"flags/4x3/pw-8991b8ae2bef2f0e81e79442947f1c68f843be48f652a4c3a2af5dab84d73170.svg","flags/1x1/pw.svg":"flags/1x1/pw-4c45576b7f0be5b37d463d126410bfbca0f9dcdd1539fc6866f9fc116baa3437.svg","flags/4x3/py.svg":"flags/4x3/py-c416c19abcc7629572203f00253c9272876e59a88eafa893fa4a534ed8977776.svg","flags/1x1/py.svg":"flags/1x1/py-adb6cfc575e9626cd8284964929c88830d0d6f7e5b0c135649eceb8bd9de1368.svg","flags/4x3/qa.svg":"flags/4x3/qa-821f667f3f99992cf08b05498cc1a0769dee9c4e36d2a2561d6cf7827255af1b.svg","flags/1x1/qa.svg":"flags/1x1/qa-b05242965c0835a82add68dbcfb4523bc5e53e191803eab2c0c8c8762f2fce80.svg","flags/4x3/re.svg":"flags/4x3/re-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/re.svg":"flags/1x1/re-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/ro.svg":"flags/4x3/ro-63c55736a245e5fa5e0484b4693d43e171941143fcbdb34d3aa8d4cfd6160c9d.svg","flags/1x1/ro.svg":"flags/1x1/ro-f5c83b26832bb94b4320340ada4351a695bff66bb1410f6007c87e8395290380.svg","flags/4x3/rs.svg":"flags/4x3/rs-a1bff9944ac65bce131f42964a45cfce50e334c6d52eeeea65f5f6179f8acf4d.svg","flags/1x1/rs.svg":"flags/1x1/rs-6af7605aa8aee1da6e0a75c750964b21b404011cd00f2df43ae55a827952251a.svg","flags/4x3/ru.svg":"flags/4x3/ru-2ba8996aa53f5eca5d1b0ea1a67d6d469659ac2523d1b394e3d6e25913bbbc15.svg","flags/1x1/ru.svg":"flags/1x1/ru-c8ecec77af983cd6ca10baaf2fa8f3dd67a6fa84f80cabdee10858910fdcc233.svg","flags/4x3/rw.svg":"flags/4x3/rw-0fa2c78359e9603d1cf21e4bb9355414ac3eed3635a25ba8f653d0498d61bd16.svg","flags/1x1/rw.svg":"flags/1x1/rw-61cce3e871326334478d73a379b202fc8548581abc02e39a898bc4fd16b2e0eb.svg","flags/4x3/sa.svg":"flags/4x3/sa-5aec890788f78356a42e38fe6ea2c30c4c82c99a3f05f654faae5918aae804c4.svg","flags/1x1/sa.svg":"flags/1x1/sa-57bf549298c1c3cb533120975d49b6cdb9c839addf278497d133236e666239f4.svg","flags/4x3/sb.svg":"flags/4x3/sb-3433de16f2b3f2a8373de87f879dd3b31ec8369256e23193947318976b51a182.svg","flags/1x1/sb.svg":"flags/1x1/sb-e5352ddacf8edb727ef8f68dbb0951f00ae84b96e9b3b224cdf0c3ee2d33e8db.svg","flags/4x3/sc.svg":"flags/4x3/sc-9c1764a913e0577cadb24d11b883978389a818e94b39f6ac5cf4993dd041d501.svg","flags/1x1/sc.svg":"flags/1x1/sc-c1abe18095ce0b84c2b21aa2453b916e00d8c0fd72fd5161f212e6bcf9c8ccd8.svg","flags/4x3/sd.svg":"flags/4x3/sd-df15037b269e643062988e5273f3cd5a379b18d0ff496bdac97e840deb0793bc.svg","flags/1x1/sd.svg":"flags/1x1/sd-baedc80da37d70ce8fa4d5619d85b4823435180311f0c2995717116e681c20d3.svg","flags/4x3/se.svg":"flags/4x3/se-73964261d5ec45c856c9f7b57f1be90f60c5e748596e494aafa5facd817c7118.svg","flags/1x1/se.svg":"flags/1x1/se-ea6d6caac7db4cfc8d68548f70afbf6ddbf072993e655bdb0b0860f724202e2b.svg","flags/4x3/sg.svg":"flags/4x3/sg-2c8851a3c456051d7510b78da650054ee411ecdb01508ab3aa8ddac220de984a.svg","flags/1x1/sg.svg":"flags/1x1/sg-81517add5de364935b2173fd1ed3db2fefc22e07a072d03fd4f91e8543ffcb22.svg","flags/4x3/sh.svg":"flags/4x3/sh-cdfa61ab262caf8d6b13cc66f1d0e1e935dadb144d93ad28fcd850e9164c33d9.svg","flags/1x1/sh.svg":"flags/1x1/sh-763ae01f8c0189641321a0de1085f0d1ceeb962d94bb989c6255dae4616fd14f.svg","flags/4x3/si.svg":"flags/4x3/si-81f600f18fae95b3e2a6813cc012e94bdfd67965eb7ce1676780bc7d04f4f203.svg","flags/1x1/si.svg":"flags/1x1/si-6481bc748939a46efccac3df22ccc34341cc006d871a7ff521769c562a5325df.svg","flags/4x3/sj.svg":"flags/4x3/sj-8c78bb614796386f416c677e7ee2984c9997d0789306a9861e0d3f85edf62608.svg","flags/1x1/sj.svg":"flags/1x1/sj-15448521086e54b5dc1b51bce3e8424a3282aaa539514a8d63fae537d400bc08.svg","flags/4x3/sk.svg":"flags/4x3/sk-271dd9219a226c5e9768072c3d0512b9ab07d1af59a3a5642eba620e3f53ea2c.svg","flags/1x1/sk.svg":"flags/1x1/sk-4ee51ed995ad80a8f9a335b5f36b00a830da6e7065ecda1e84e427cf19dda736.svg","flags/4x3/sl.svg":"flags/4x3/sl-3fd8765025c44c215906c9d33be69326118f5025b35a93636df059926053c84c.svg","flags/1x1/sl.svg":"flags/1x1/sl-ffbed472a2b3677e9339adfd150ffc76bbae85071cbf1b14f75c67b03fff29d8.svg","flags/4x3/sm.svg":"flags/4x3/sm-72df25d7ba785caa3201dc9ea30349a5bd3891de99e6d818bff2f34914264654.svg","flags/1x1/sm.svg":"flags/1x1/sm-afa36059e43d3014dfc9088d30e86449b8463d282611b99f8d496aca155075c2.svg","flags/4x3/sn.svg":"flags/4x3/sn-3465e8417cd4bd6d948ab2311442757688af8516c6aa7c4f73c48a9447087b8c.svg","flags/1x1/sn.svg":"flags/1x1/sn-dfbe30abf15b2937f1b2de375b832ef3fe11e78f3536df35232b2f7265c00d9e.svg","flags/4x3/so.svg":"flags/4x3/so-16f7af15587913f17fd988f914c55de175ed1d4b2282ba2fa52b414c7359b440.svg","flags/1x1/so.svg":"flags/1x1/so-bbf08e60fbda4e45791d985450f6dbcd9ea779f93c818973271845dd01fc8df6.svg","flags/4x3/sr.svg":"flags/4x3/sr-7718ec6fbe85ea55c72189bf0dc94b10f20a7948ab913903e5b8050af20e4f6f.svg","flags/1x1/sr.svg":"flags/1x1/sr-692dfcca46c35b618f0358ef0cc9b2ee7c27c839f98b12134318804f6498ceee.svg","flags/4x3/ss.svg":"flags/4x3/ss-aebe3fc1b10d93add9906690e262b1baf5338529a832ff954e329c897e014e9c.svg","flags/1x1/ss.svg":"flags/1x1/ss-1d0ebcb31f2c0fe874bd046253de4eec410239c2e0f41eb1cea1f312b51bc8a8.svg","flags/4x3/st.svg":"flags/4x3/st-b24fa19cb51844a3187239e3cbacf828f02e7b8ddf4b01e9ec3366e75966c5d6.svg","flags/1x1/st.svg":"flags/1x1/st-d4d96bc9009e10cec6a00ce0d6fae3746ddefce867f63503595110b2fd539d17.svg","flags/4x3/sv.svg":"flags/4x3/sv-cd0c1acd571abd1756fc4e7eea2369c0466265b1d170a7a3618a66800ddbb4c2.svg","flags/1x1/sv.svg":"flags/1x1/sv-e86857616aaa7fc022b68dafd4a58d4be7ddfcc6d5b2c3d5dad67b457d1e75c9.svg","flags/4x3/sx.svg":"flags/4x3/sx-7ed9e6d8c02b265181248986ccd927f6540a7d55b4ec82b60baef06face66ee1.svg","flags/1x1/sx.svg":"flags/1x1/sx-09ab7415791d37231c9fb79b51fc52583407d7721e6f401cc98fc1ab12d2b62d.svg","flags/4x3/sy.svg":"flags/4x3/sy-49bb1803affb9e4ee070fb6e333a445f6df15ac11db6abe0a62f1aa922fe3c16.svg","flags/1x1/sy.svg":"flags/1x1/sy-b52b5ed6037c8e0e0a3ecd13006b79027d5fac2059fdd54109b591e5c5ada752.svg","flags/4x3/sz.svg":"flags/4x3/sz-a545e703e03ec7f9e108fa348d9e222aba1d7514bad2786f9ca8c6c3063a0e68.svg","flags/1x1/sz.svg":"flags/1x1/sz-784ee11c6629bc411d3e274eea68a3739ddfaa4c3bd18e46e62262518ae0b93e.svg","flags/4x3/tc.svg":"flags/4x3/tc-a20d2d87632b3c19e16a599dd45f3918a5f2db3025867c5f1b279050af68f637.svg","flags/1x1/tc.svg":"flags/1x1/tc-4c7c0e4227d06fb697b8c5ec5f95382b1549342013ea80211f2942f81d472d5a.svg","flags/4x3/td.svg":"flags/4x3/td-1b92327abb7d3ba9b54361f6a38018979e57d5083990af57adac25102146b939.svg","flags/1x1/td.svg":"flags/1x1/td-977813c5dfc3b6b640d1390c04c469cf92e84827ca06ed7f4984a58782a059c5.svg","flags/4x3/tf.svg":"flags/4x3/tf-f45e133cfa8a01239d65e1693492ca1de1949f3660de77d802b41c9a9fc662e8.svg","flags/1x1/tf.svg":"flags/1x1/tf-53581d6af7751cf4c126459a2226fd19cd10040d25e33d1653ece9e57a1a0e2b.svg","flags/4x3/tg.svg":"flags/4x3/tg-de9fe13020d702ce964ff7d712c6b6a3a57c3933f56fbd0c783fe0309f0dbae3.svg","flags/1x1/tg.svg":"flags/1x1/tg-92f575529494b0ba885e47302167a14343c1fd78fef5008ec3aacde7f840fd23.svg","flags/4x3/th.svg":"flags/4x3/th-6211c6caabbc4fdd4ff054cb689406bc9cc7816c01d482a6222e873b0e8fc9b0.svg","flags/1x1/th.svg":"flags/1x1/th-b8a0cf7c820f9010ce12333bfa7f8713358dee291bc955fa7e5333fcf5fc8a07.svg","flags/4x3/tj.svg":"flags/4x3/tj-4bf387aa434be996fc00be6dbb457282e311ff6c7538a484f5cb4d99e45b0747.svg","flags/1x1/tj.svg":"flags/1x1/tj-b371ab0647e7dfba73251169fe1e3180058d6556aa7293b7b573eaf43add617d.svg","flags/4x3/tk.svg":"flags/4x3/tk-cef6e368398b0cbaa4ee0b943d02155c51f9e8ab5ba27b9562ccd629f9a72183.svg","flags/1x1/tk.svg":"flags/1x1/tk-1544aef42090102ba2e154b48f8c059dfddd5789fc5f12aa859939c41673a661.svg","flags/4x3/tl.svg":"flags/4x3/tl-cd74f59871cf5453b4e9454a4820e683c06dc8c9c84dae4c47af9264bed7ab22.svg","flags/1x1/tl.svg":"flags/1x1/tl-a7cd9977244579380914f288bf358ec8b1b0abec6b8dc99e65cc35afe41bc405.svg","flags/4x3/tm.svg":"flags/4x3/tm-3db83810be6239a1c7e594a0b11a4847a7d300cc54e12e4cf4c8a9558520dd67.svg","flags/1x1/tm.svg":"flags/1x1/tm-ade1696d2299d73cc6fa06304144055f9a02c1800846516c4e21baba2a05d4cf.svg","flags/4x3/tn.svg":"flags/4x3/tn-17e7bc4e9dad2da8f12c95c56de46b21890b9d1c725ba400fa7d8df17d59fd4d.svg","flags/1x1/tn.svg":"flags/1x1/tn-55604ef719cd538ba0e2541667d4c52b08f18efe91bb52ad0954802d38ea12f7.svg","flags/4x3/to.svg":"flags/4x3/to-db07012009b9d6ac0c8eca209a68c310d9371771cca8c6c4c2022b3db1ba39d9.svg","flags/1x1/to.svg":"flags/1x1/to-1ed20c5d05424776b5d3cc17487ed8311998cb69db89109a380d59722d4bc2bc.svg","flags/4x3/tr.svg":"flags/4x3/tr-b8b3b6850c4c0ffa840db30c814dce6cb86e00e78138bafe8c2c58d263fb4503.svg","flags/1x1/tr.svg":"flags/1x1/tr-be0c612d78c2662c4e9c0dc836b63c8a7a5cfff48afc533f81c2ba2423542f5e.svg","flags/4x3/tt.svg":"flags/4x3/tt-05d9799b6519267990dccbc997c620c6478e00a96a79841494707cc3d036a381.svg","flags/1x1/tt.svg":"flags/1x1/tt-4ab2fff1efee93f41060975098c5c11e043dc0853456c8c0c70cacd4ba92e8ed.svg","flags/4x3/tv.svg":"flags/4x3/tv-14be4bb5a1fe44a8d3d58bde3dca6c63ed2974554c2008b4a2441a096c9f1fea.svg","flags/1x1/tv.svg":"flags/1x1/tv-71e98b9502d12d655a169e8c89de6d5b2fcc957d67d0b7e93dd2be8ff9e6f2a8.svg","flags/4x3/tw.svg":"flags/4x3/tw-3b699e4e60f9765601c0f84bbf3f16f953f5a454a0cf62487a0eef358f456e66.svg","flags/1x1/tw.svg":"flags/1x1/tw-62cd36c5fc2aff70bbd11312601821ca09729e9e246e32d895e0f4a2017ac0b6.svg","flags/4x3/tz.svg":"flags/4x3/tz-f219bcd0e3536ea3653178e0281620ebfe4c5b3b461c2c79fdf2b2a852de372e.svg","flags/1x1/tz.svg":"flags/1x1/tz-2829d5fc4fcdf2e6a149f63ea6b5a5f1af7b6b08fec523ec217ab5a6d9fb7e77.svg","flags/4x3/ua.svg":"flags/4x3/ua-07199c03990a6b4f285e421d928ab4dba2dfdfdb3e40dd9bfa207c86bc0f3c9d.svg","flags/1x1/ua.svg":"flags/1x1/ua-7c939efc452c13b0f8f489f3dfd37d3eba97c0f577c97f0b6673968af62a3207.svg","flags/4x3/ug.svg":"flags/4x3/ug-48c6cbeae1a865915dd5a06f56bdd576e9ed9ce5085b627ef31f3757c0937a5d.svg","flags/1x1/ug.svg":"flags/1x1/ug-da6257aa7e40121a6e8e574bf201701910bbd838cbc8d76030397c0f34ae906b.svg","flags/4x3/um.svg":"flags/4x3/um-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg","flags/1x1/um.svg":"flags/1x1/um-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg","flags/4x3/us.svg":"flags/4x3/us-6d053f4d6e1412745749fc8d981833d6d7f8f19b72042d1a65e3356ca29a7ef7.svg","flags/1x1/us.svg":"flags/1x1/us-5bcf5d41aa6d5fdbfc920a014fc77d6cdbdf37bdb4e67dbfe68ed161bae4a435.svg","flags/4x3/uy.svg":"flags/4x3/uy-3fc569672f687b4f08581179bea609b616d4b5c7d9524df918134fbcdfce6f9f.svg","flags/1x1/uy.svg":"flags/1x1/uy-90def9dd4890c96d1b6355d0bbcebe2a6f25e2bb3bbdc29c4fbba8a5fc601254.svg","flags/4x3/uz.svg":"flags/4x3/uz-e3f628aff038df64725d75a863bc636ae9da4a16f58850ad86470cc012e3a40f.svg","flags/1x1/uz.svg":"flags/1x1/uz-db8cba32635e9c36565f28fbd6b17e1e5afe26ce0af8560eeda3f9d815ecc749.svg","flags/4x3/va.svg":"flags/4x3/va-c8b81b061cbe7a9b0b5f376e10f1a863b4609c742dbb5663ef923b80d43984a2.svg","flags/1x1/va.svg":"flags/1x1/va-d267dbb1213d75780a8d41a34f9eba098a66973c1c2e7d974257f24b4be9df1c.svg","flags/4x3/vc.svg":"flags/4x3/vc-a578edb2904169d050107b4c02051531e4164120c4ac0ad19faabd41fccdd821.svg","flags/1x1/vc.svg":"flags/1x1/vc-85bbaa2c82ed6a9e077e73501bbf071956c761a897d1c4e1bbe061ad5ca9c0ed.svg","flags/4x3/ve.svg":"flags/4x3/ve-77718854ace7f0a8d8a087e331112e4b20f76e9ca7eeb9af41bacccef09bc9b4.svg","flags/1x1/ve.svg":"flags/1x1/ve-27cf5f75e9b842c417f62e3c3c502acafb67db674d5a1eba8709371c186f0fe9.svg","flags/4x3/vg.svg":"flags/4x3/vg-cefdd08a49ab6cf0ce32bf42cb7a72513dfd0a1619bac86ebedee3a86fa35c80.svg","flags/1x1/vg.svg":"flags/1x1/vg-45357a28f1dc16c13df5cfc44454ff28f082b90a4747898d27575650bc93cb1e.svg","flags/4x3/vi.svg":"flags/4x3/vi-a83bcb200832191afa4091bf2c275289aa37f664027dfce6db6b0f7109fe3b6a.svg","flags/1x1/vi.svg":"flags/1x1/vi-cf017aea4123b31f1cf60087c4742b6d57a4213bece5b3f760e16a84a811a74c.svg","flags/4x3/vn.svg":"flags/4x3/vn-16730ca8238b081b7376fc3829eaac4ddd61a5b423c24c9f07c9a02848c4827f.svg","flags/1x1/vn.svg":"flags/1x1/vn-fa15ba0b7d997046ffb7f2469f1254f7119503f2e95b35467151a947ff9b45d6.svg","flags/4x3/vu.svg":"flags/4x3/vu-4e084d69e403d0af11dfc47f622fb2ba88649b17b2038f6ebf533ce3c9907404.svg","flags/1x1/vu.svg":"flags/1x1/vu-3c93d045c0ec3c08c0e9af785016995cbd7a28ddf08ec9abfce0e39c4e842058.svg","flags/4x3/wf.svg":"flags/4x3/wf-039b39c2ab1d92470427e12e2310b2ad9d8a97a36a064b197858a083f5d7fd23.svg","flags/1x1/wf.svg":"flags/1x1/wf-94672c2e6f10547f0023b9f0fff3adfda4d60f91340f287767f1ce68e5a57a12.svg","flags/4x3/ws.svg":"flags/4x3/ws-f91aa288555a505b3e965c781de8207e2cb6e1d165603c80c54cfb111d277874.svg","flags/1x1/ws.svg":"flags/1x1/ws-e6b2a35c9702941a1fe9d84ab2bf8b28b4931b6fce24efb4ce63d3a8fb8c3b90.svg","flags/4x3/ye.svg":"flags/4x3/ye-f3c80f7f99e1f12a079fe0d96830005657aff1687da92391c0acb882b014ff8c.svg","flags/1x1/ye.svg":"flags/1x1/ye-a9b9b54ec295aed99c5439093242110193626524d336cc3115864e5ec0b787da.svg","flags/4x3/yt.svg":"flags/4x3/yt-6f91d266c0c965f2340ea49a958bfc7445d76dd9abf7095091543cd8dafe0554.svg","flags/1x1/yt.svg":"flags/1x1/yt-ffec76f7c40ad72aa9f7d2ebbaabeb8eaf85984528d988b016c7224db8522da9.svg","flags/4x3/za.svg":"flags/4x3/za-57f1167ce07b3f345798c69ca8f159cb159f5dccb3c101616cc007ef1f2663d6.svg","flags/1x1/za.svg":"flags/1x1/za-79fe7bd792f8b520caaa2c3db12ab5138cf24867d344a38167580ab6243322b1.svg","flags/4x3/zm.svg":"flags/4x3/zm-9a1622c4151a7379ecc32434948be48ba5af564e136232d1eb6e2a4dfec3baa9.svg","flags/1x1/zm.svg":"flags/1x1/zm-7bc0c09a0b3fd9f0dd01481080be99465d71218ac0679fbb077086f24835433e.svg","flags/4x3/zw.svg":"flags/4x3/zw-2576570465c39038f092c242d89e300a0943c50c090c922bc3bd9c8af9161478.svg","flags/1x1/zw.svg":"flags/1x1/zw-4ee873fa4e174f8d150c672917c8f506b530edcca86288e4b7942c7c74a63caf.svg","flags/4x3/eu.svg":"flags/4x3/eu-ca89dc2597154e6887930fd8bdf47636f82dc13c02d9610a3da2d156f09265d0.svg","flags/1x1/eu.svg":"flags/1x1/eu-73d6f1f646500e1dc04ca798c0d192f9174268e3480a8b1d742004919b7463f9.svg","flags/4x3/gb-eng.svg":"flags/4x3/gb-eng-ec744a15618e0a99abee9e53b70985e4cbf2fc2b7051cf239d6dd19b302e4ae9.svg","flags/1x1/gb-eng.svg":"flags/1x1/gb-eng-b1650bba14f5fa14df73f964c3b3dfeca8e1d48c19f1f9b3fded729cc96cf39d.svg","flags/4x3/gb-nir.svg":"flags/4x3/gb-nir-0a09e794313d063a01d817f3ae931054dc9baddd38cfb9a0e4b3c9fa5852bc41.svg","flags/1x1/gb-nir.svg":"flags/1x1/gb-nir-c54214991841f1e32a4aaee502c6a7bde3ec3b43c0e74886d9bc7112f652035a.svg","flags/4x3/gb-sct.svg":"flags/4x3/gb-sct-c78f4e58aa162732c0a401eebe714a632ed03c5171a13bb98eb67365b338a0ab.svg","flags/1x1/gb-sct.svg":"flags/1x1/gb-sct-4983d57dfd37f55b40b22dddfeefef38d2113818914755ee830c61b97549aaf3.svg","flags/4x3/gb-wls.svg":"flags/4x3/gb-wls-963f0b8dfe114a50032ae1db25542a12d2032a30d88bbfd4698e30f50e752e31.svg","flags/1x1/gb-wls.svg":"flags/1x1/gb-wls-7d5a4120e3e0f7618bde0d4270b0c097f18472e6b1a285918d11538fb001cb60.svg","flags/4x3/un.svg":"flags/4x3/un-c75bef804cdbe6617032bfb0332f009c144b1317cb073e71deb5619fbedefcdb.svg","flags/1x1/un.svg":"flags/1x1/un-ccaaa4bfae7e430b8bd72ddfa6fb07f167c1001490fd247a37898f4632803b1e.svg","font-awesome/fontawesome-webfont.eot":"font-awesome/fontawesome-webfont-7bfcab6db99d5cfbf1705ca0536ddc78585432cc5fa41bbd7ad0f009033b2979.eot","font-awesome/fontawesome-webfont.woff2":"font-awesome/fontawesome-webfont-2adefcbc041e7d18fcf2d417879dc5a09997aa64d675b7a3c4b6ce33da13f3fe.woff2","font-awesome/fontawesome-webfont.woff":"font-awesome/fontawesome-webfont-ba0c59deb5450f5cb41b3f93609ee2d0d995415877ddfa223e8a8a7533474f07.woff","font-awesome/fontawesome-webfont.ttf":"font-awesome/fontawesome-webfont-aa58f33f239a0fb02f5c7a6c45c043d7a9ac9a093335806694ecd6d4edc0d6a8.ttf","font-awesome/fontawesome-webfont.svg":"font-awesome/fontawesome-webfont-ad6157926c1622ba4e1d03d478f1541368524bfc46f51e42fe0d945f7ef323e4.svg","markers-soft.png":"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png","markers-shadow.png":"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png","markers-soft@2x.png":"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png","markers-shadow@2x.png":"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png","leaflet/dist/images/layers.png":"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png","leaflet/dist/images/layers-2x.png":"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png","leaflet/dist/images/marker-icon.png":"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png","regions/CA-QC.png":"regions/CA-QC-776d563b6a4ac4312cae9f0bfe630c20711346e8dbddd41040998eba79f4b588.png","modernizr.js":"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js","agendadescommuns.png":"agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png","alert.png":"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png","baby_gnu_adl.png":"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png","baby_gnu_adl.svg":"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg","communs.png":"communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png","lef-small.png":"lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png","lef.png":"lef-15f93c1dccd4849a5e30613a3303013292a76cc4997877e626f123fe9afc2f75.png","priorite-logiciel-libre-je-soutiens-april_2_m.png":"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png","team.png":"team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png","application.js":"application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js","markers-matte.png":"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png","markers-matte@2x.png":"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png","markers-plain.png":"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png","leaflet/dist/images/marker-icon-2x.png":"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png","leaflet/dist/images/marker-shadow.png":"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png","tinymce/langs/ar.js":"tinymce/langs/ar-5a0ab86d268d50c7c9462e0645b96e6c09d928976c0b27007f85f7c5638cbbf8.js","tinymce/langs/ar_SA.js":"tinymce/langs/ar_SA-24b62c76e99e114ae44480a67edbacf74f9fed0ff7afbeacce4966f1bc80333b.js","tinymce/langs/az.js":"tinymce/langs/az-d40cecd6eb423f910f528ae98dcdaba4c2449802621759437174cf8c8c0d5b25.js","tinymce/langs/be.js":"tinymce/langs/be-2d601b695076754977002cf73d6809919ca8c0758850a45e34a692af7b08fb1d.js","tinymce/langs/bg_BG.js":"tinymce/langs/bg_BG-0272f963807ba8672db0d5f6b8919d2f3aa2f8bb172a17c5f8c2934760ba0dce.js","tinymce/langs/bn_BD.js":"tinymce/langs/bn_BD-ef48a9094445dfa624af0c35902f60b7949b30585b5e9bc760a225fe2c07cbd3.js","tinymce/langs/bs.js":"tinymce/langs/bs-eb66c6d6910a30b950d7a0e784027ed288e6e5a2c6db7741da3359f2067e2e0e.js","tinymce/langs/ca.js":"tinymce/langs/ca-e4765b96adf2232248998c6b703730652cd4302035ee39733cd6e5df8d79ee22.js","tinymce/langs/cs.js":"tinymce/langs/cs-77418e2f6150bfb0391227eeff79499f8654a9fcc5314f30ec88e4684e8e5fa6.js","tinymce/langs/cs_CZ.js":"tinymce/langs/cs_CZ-4b0778d233e200dea350f8361129da2844e23d1c0f2d524aeffa6d34e581368d.js","tinymce/langs/cy.js":"tinymce/langs/cy-d337e01ca993cd9fb80ce3fccc39dff7f1dc47021264bf9ec14ac9af2b3d74b5.js","tinymce/langs/da.js":"tinymce/langs/da-4a040df5d2a225dcd10aa1c7d05ff7f36a854d4834919497812c3ba5aa5b06f4.js","tinymce/langs/de.js":"tinymce/langs/de-f9a88202d526e76875d22053cc659e4aabb43fa88411296ba122b8cf4d468eef.js","tinymce/langs/de_AT.js":"tinymce/langs/de_AT-2c6a1926c1cddd2079d27e844db153d797505e21bab6bdab018c2e5d1f0532fb.js","tinymce/langs/dv.js":"tinymce/langs/dv-3b3e040a7e24fd18903d4833a8da09f2e2b65fbd1c3ac325a3cd373775f9bd23.js","tinymce/langs/el.js":"tinymce/langs/el-0d51a187db018442cb94826f66155adb3fd805ac792c1110a04a548bc7d5d6c2.js","tinymce/langs/en_CA.js":"tinymce/langs/en_CA-2c64a16614c895022cc2b6aa4f134f4917ec8dd045c2184672653f3fae158db4.js","tinymce/langs/en_GB.js":"tinymce/langs/en_GB-4eb69d31cb70a3d3c53185883d58027a70524b0f5db82200bfa45b6a8ea22224.js","tinymce/langs/eo.js":"tinymce/langs/eo-cbac4d7ebcb0679845b852d9354e74586e78cf13eef82de1400cf6b465e203cd.js","tinymce/langs/es.js":"tinymce/langs/es-4fd5fd5b991c2c1e3032a297ae4605088bcd6835a467e64f9568de1b554e559c.js","tinymce/langs/es_MX.js":"tinymce/langs/es_MX-bc4f779c4782ed7bc7e7c4b7cd9293d7803256660cc529307dca05a40c49b94d.js","tinymce/langs/et.js":"tinymce/langs/et-26b7ced79b21dc8a21fda1dd95247e93c35096461238c8579dea16e48d12b4ef.js","tinymce/langs/eu.js":"tinymce/langs/eu-8698ae4de236fcd490d0f45d485dbd33d8e9de6eb3db51191e1b4f8ea96a4d06.js","tinymce/langs/fa.js":"tinymce/langs/fa-7eff96595e93d4b0df484dd90c14b7b412966157ed8293f54429e9418882bdb2.js","tinymce/langs/fa_IR.js":"tinymce/langs/fa_IR-4103bdacd3e4b53f30b27019dc9cdbc6402e3345331a93a5768900d591633201.js","tinymce/langs/fi.js":"tinymce/langs/fi-6ca2a93d045067a86e8ea973d0b89368054b15eb9b9625bf1ca871608a5cb77c.js","tinymce/langs/fo.js":"tinymce/langs/fo-340609cecd5571e4eacb8fe7bd1343c8553d96d12610fb77d9a812dc6d3635fd.js","tinymce/langs/fr_CH.js":"tinymce/langs/fr_CH-e0f43c0f20727368ff0767f3bf099bc23eed9fe3e81f8bbe514381e786526928.js","tinymce/langs/fr_FR.js":"tinymce/langs/fr_FR-c7b4bea9c3f186767ffee3f06d12830574620a5f58c4f76dede76d311be2a9c6.js","tinymce/langs/ga.js":"tinymce/langs/ga-7c1e918737301e611973d91e10c27930873e97dd690f7d10862d0cd40e639055.js","tinymce/langs/gd.js":"tinymce/langs/gd-0453e8b97bf3b6cca4065712ec59f20343ad6131735b38547e865177a1c1c490.js","tinymce/langs/gl.js":"tinymce/langs/gl-f6ec1cbe13f00683a8fceb6e73a353dfced77ab3f63d99fa2ae7c40bd6b3a64c.js","tinymce/langs/he_IL.js":"tinymce/langs/he_IL-74b957588e5998649fde6c6f3686bb74790d7173d0f31c90a4272a4596b16b32.js","tinymce/langs/hi_IN.js":"tinymce/langs/hi_IN-695e0cdc22974fe45e0f35289f0249ddab87245165c9df765ec1b885ec55f0be.js","tinymce/langs/hr.js":"tinymce/langs/hr-1dda1c40a40645a936a214478697c44137c805bf8b9c9e4485a0fb142e4ffe18.js","tinymce/langs/hu_HU.js":"tinymce/langs/hu_HU-9e74f5ada14970f167ee2ec1f46c8fd41d8bb98f9f5f5df9b4ad041cdaa81fd7.js","tinymce/langs/hy.js":"tinymce/langs/hy-0d384f3f82cd76793d3e7428a2140ea97f40a943f25ef99a2e3709a3e02b0930.js","tinymce/langs/id.js":"tinymce/langs/id-e9fd018be745b5f14f4af47887420f98c590c607e01d57aca77ef5affe188523.js","tinymce/langs/is_IS.js":"tinymce/langs/is_IS-c6e8c3e7b0e6b447faec3d8d258928f97c84558b29882c056513fb71cf237bfa.js","tinymce/langs/it.js":"tinymce/langs/it-c4549598b4e13df2201efb7f5b971e5bc55a731b25dd9ac7adb5f75780fe5f34.js","tinymce/langs/ja.js":"tinymce/langs/ja-da6414959d66a9b0cb46078592bd018bc8dc6707588d5ab911ebd09e589f92f6.js","tinymce/langs/ka_GE.js":"tinymce/langs/ka_GE-480559d4cffe96c5cae5e41f9ffd06f979785b3ce93e547462fbabc5cc1a88fb.js","tinymce/langs/kab.js":"tinymce/langs/kab-dc638a064c01cae2218d445beec60da010ee8dee8524f245ae3b99c8c5b3567c.js","tinymce/langs/kk.js":"tinymce/langs/kk-282b790d721dcaf6b44d930f70825e06969602572e477b7ef73766360eefdbaf.js","tinymce/langs/km_KH.js":"tinymce/langs/km_KH-dddeacc3c7112c6f230c4746d0fc9e9de1a3f53e419524ce03f483a35a49aaad.js","tinymce/langs/ko.js":"tinymce/langs/ko-ca535bfa388701fb020d24bdfb3f1e3aab127005b54e943cb1bd60b723c8194d.js","tinymce/langs/ko_KR.js":"tinymce/langs/ko_KR-90aae14954461fa073104c36c0f2d7d2c95bbbf0e41be4ef4f04ac402ab8d0a8.js","tinymce/langs/ku.js":"tinymce/langs/ku-95e2ffe4f0112df658f10327c26f2cdddedc2e2ed769767366ae22a465c14725.js","tinymce/langs/ku_IQ.js":"tinymce/langs/ku_IQ-a212e8d41695989e56834facf72474e1934ef166c3fcaf7e255ef573a3c6e76c.js","tinymce/langs/lb.js":"tinymce/langs/lb-94992279091f1a0be927d5d858d3724037d8d81ee6b63cc9ddde84af6124cc04.js","tinymce/langs/lt.js":"tinymce/langs/lt-ae7cefbe2cb5420770b31eabf92605728135ab5d6a2d2cfca2d19809be67e6a8.js","tinymce/langs/lv.js":"tinymce/langs/lv-6c706e8dbf25774d07fea54cc1cbfaaf60c205c95392eee90ae55ac9cae74768.js","tinymce/langs/mk_MK.js":"tinymce/langs/mk_MK-55aadb5d7c82c940cfcf42f24423ef0471294c9b02994a6b22e1b4173baa7ec6.js","tinymce/langs/ml.js":"tinymce/langs/ml-685de0808683c02274dcbe9f8de023a4d72a49b040e7526a99e3d5c786ff71ae.js","tinymce/langs/ml_IN.js":"tinymce/langs/ml_IN-1ab433621d6257c7632718048bacc5ed98a302d33cf0438bbbb4200914e01aac.js","tinymce/langs/mn_MN.js":"tinymce/langs/mn_MN-b89f88cb9b0dd7c879e27532b2979c421c1e69648f65a4108a56060f1e1cb009.js","tinymce/langs/nb_NO.js":"tinymce/langs/nb_NO-8bd2c254b03046ae60710293e7485d4c5cf9fdc3cbce52f97f0bf682ee44e1f8.js","tinymce/langs/nl.js":"tinymce/langs/nl-0436131db0f369f1d07ce9a27f61cd351d8b2a441d352f8261cde3990f7b59d8.js","tinymce/langs/pl.js":"tinymce/langs/pl-eaf96c2c80d9268c2477628c1d23f947391de01553ef43bb488ee88d7bb3b8e6.js","tinymce/langs/pt_BR.js":"tinymce/langs/pt_BR-32ccbdf38597b6d0239e8ba70d73ab75de0661bb06c86fc9a90d1c0a890bc31e.js","tinymce/langs/pt_PT.js":"tinymce/langs/pt_PT-a364a3ca02a98259f33046338ab1bdd32dd4ebf24fa56e88d2578066bc7f0597.js","tinymce/langs/ro.js":"tinymce/langs/ro-83fd95a929d491cbfbfac83f132bdc41c956a7f4b0459c243fd92613c9c841ef.js","tinymce/langs/ru.js":"tinymce/langs/ru-2566ddc510b999f19c499a9838d7b987d5a8332b5802f2211beb4274ae2cd563.js","tinymce/langs/ru_RU.js":"tinymce/langs/ru_RU-9f18ef14f3493cc586cc0b4827fd9e1c2ed3d5790ce536d94f87e2d6aac2a688.js","tinymce/langs/si_LK.js":"tinymce/langs/si_LK-5bfefe9b2fe82574d8ed839df18fd8ff65f1e1cd458b0a843cf1aadd1be704ea.js","tinymce/langs/sk.js":"tinymce/langs/sk-01d012310139d40e606a633db845a03fe285c32cb47043d6d9d761afa0cc3530.js","tinymce/langs/sl_SI.js":"tinymce/langs/sl_SI-ea499e07b7f4c9430bb15f34f6278f7248334c2553a544e240a21a84195d9582.js","tinymce/langs/sr.js":"tinymce/langs/sr-e0b97453a0c1000b19f7ce37fcf86bcacbf9125d81076f60a77686820c7925c6.js","tinymce/langs/sv_SE.js":"tinymce/langs/sv_SE-7af54d4c82419671562478bf4a66d185be79406f3287628df0d2ad8ac044a485.js","tinymce/langs/ta.js":"tinymce/langs/ta-3b428d97786e6eded1c4973fef3fb487786a79f1eee59f15483bd02b96c76239.js","tinymce/langs/ta_IN.js":"tinymce/langs/ta_IN-44bf4b6c5e4de01a2c7f2ccc69b6dd561b8afce86397229a9ff27efaf0600812.js","tinymce/langs/tg.js":"tinymce/langs/tg-1618248bf0aeda614a37ced9fd28b6623ae24f8453368bfb8c483ce820a3cb34.js","tinymce/langs/th_TH.js":"tinymce/langs/th_TH-5869e7cc393913371f3314057c1691e6e0fa296b496cf2d5c465276c31645479.js","tinymce/langs/tr.js":"tinymce/langs/tr-6a58fb650e940025d957945ae4850f6fbb8446c5f092a661063af9606afc1db8.js","tinymce/langs/tr_TR.js":"tinymce/langs/tr_TR-d97de581e91c05fc4f3d9fe1419ad201e227bcd0ff3f036f7b59519395f4dcc2.js","tinymce/langs/tt.js":"tinymce/langs/tt-22e302672df0a77de14688f58dbedf82de7a26e9089c9535a2a3cd1c0ccd7903.js","tinymce/langs/ug.js":"tinymce/langs/ug-50232038bf7262c90be4f2919c74ff93792cdb82e6064d0f5c86f885b93271c5.js","tinymce/langs/uk.js":"tinymce/langs/uk-00866ab0fe7746d258b215475089740306b790d572d081b7f53ce65ec313f413.js","tinymce/langs/uk_UA.js":"tinymce/langs/uk_UA-52b101eeb7079c629edbe4615e64018757791541930fd2733957810a37197356.js","tinymce/langs/vi.js":"tinymce/langs/vi-6aa451047e4df911c92e10178e6a70147534e438c64df7a88eee37b4a440726e.js","tinymce/langs/vi_VN.js":"tinymce/langs/vi_VN-54d1da8a0ca8d0242457ddab5e0230c2cca140d3e480bfd55b9dfbaec7868baa.js","tinymce/langs/zh_CN.js":"tinymce/langs/zh_CN-07499e6b0821cb49c5e16efbe4a68a4d843b4d6939a45866aabe6f9ad7fc805d.js","tinymce/langs/zh_TW.js":"tinymce/langs/zh_TW-c00c3a6539c0e1696436182c935a0a5929ab09ae7bdc43ca9c4ad21098079d53.js","tinymce/preinit.js":"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js","tinymce/tinymce.js":"tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js","tinymce/jquery.tinymce.js":"tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js","tinymce/langs/readme.md":"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md","tinymce/license.txt":"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt","tinymce/plugins/advlist/plugin.js":"tinymce/plugins/advlist/plugin-60a942b0fac99b527d6f729af8f6f8a5a618b7c40eb2770fb08a6ca81c4ec392.js","tinymce/plugins/anchor/plugin.js":"tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js","tinymce/plugins/autolink/plugin.js":"tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js","tinymce/plugins/autoresize/plugin.js":"tinymce/plugins/autoresize/plugin-57c70eb3721f88c5cae4d08038a85724d9285db0caec92dd8c223440fea6a11a.js","tinymce/plugins/autosave/plugin.js":"tinymce/plugins/autosave/plugin-c161b003d4e2500c076f4824c9abe2922848d86b1acf31e949d21bf42da04d98.js","tinymce/plugins/bbcode/plugin.js":"tinymce/plugins/bbcode/plugin-2a039df18058fc9956c15762e63a65e837c7f6ec185e768bcb7560c69d5a5945.js","tinymce/plugins/charmap/plugin.js":"tinymce/plugins/charmap/plugin-5a75321ddb2d6e17b8c9f5950179406d7ff56f73c5423564209432d84490dd9b.js","tinymce/plugins/code/plugin.js":"tinymce/plugins/code/plugin-c6f671d9656f81a0f87a80eb3178519971665855f1764cacc22c97a0c7c93c2a.js","tinymce/plugins/codesample/css/prism.css":"tinymce/plugins/codesample/css/prism-1988b66704b4d23e78c6c20c38a6856cbc1f0be96d6d60a3a0b12f4408f1057e.css","tinymce/plugins/codesample/plugin.js":"tinymce/plugins/codesample/plugin-e2213dfdea0b7c2137c835bdc1b49c5867640389d8acdc7edfd32c296eb6b378.js","tinymce/plugins/colorpicker/plugin.js":"tinymce/plugins/colorpicker/plugin-af8dd454fc58e491381ef90794ca49d7a477aa009b3845f2b9256ef1923a9744.js","tinymce/plugins/contextmenu/plugin.js":"tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js","tinymce/plugins/directionality/plugin.js":"tinymce/plugins/directionality/plugin-432c5483de964fff4110fca8bb9da15562a108aef57f0f9f29bc64125d1ed25f.js","tinymce/plugins/emoticons/img/smiley-cool.gif":"tinymce/plugins/emoticons/img/smiley-cool-bb0e93a050a32df7913e4026b3c88a176998e0e3e073ba06e9b73f6c24227c9c.gif","tinymce/plugins/emoticons/img/smiley-cry.gif":"tinymce/plugins/emoticons/img/smiley-cry-a0c5f3e7a682449c973c9d9f7c46342081c46920686d2353f57aff91ab907f68.gif","tinymce/plugins/emoticons/img/smiley-embarassed.gif":"tinymce/plugins/emoticons/img/smiley-embarassed-d3cafcb50b335672cb5e9f4600ea9ea261dac7828dd28844d4927c393a25618f.gif","tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif":"tinymce/plugins/emoticons/img/smiley-foot-in-mouth-03fe04d3ed533423ac81f05146584b0c451be3d4a30e76687ceef283ed07071f.gif","tinymce/plugins/emoticons/img/smiley-frown.gif":"tinymce/plugins/emoticons/img/smiley-frown-1b984bf98931dd1debb54461eb9d83e985f2b2999fe14bcb556d6c0921bc83b0.gif","tinymce/plugins/emoticons/img/smiley-innocent.gif":"tinymce/plugins/emoticons/img/smiley-innocent-8db353ef102196f2c6ddf5c4666446de955d7b14fc0957c806c9dbfb48fb0c29.gif","tinymce/plugins/emoticons/img/smiley-kiss.gif":"tinymce/plugins/emoticons/img/smiley-kiss-3154c3665356c13ab10fefdbac1fe187fff978a0052037c99cdc4a97103413f2.gif","tinymce/plugins/emoticons/img/smiley-laughing.gif":"tinymce/plugins/emoticons/img/smiley-laughing-8f6adedcd091975ffead171867a6304d908bb6541a6ccb4919286ec6b7d4551e.gif","tinymce/plugins/emoticons/img/smiley-money-mouth.gif":"tinymce/plugins/emoticons/img/smiley-money-mouth-f0b9f4f22e237f5dbc851f900fed8d7eca4c954ae6fbc606c0cd8be431d0ac80.gif","tinymce/plugins/emoticons/img/smiley-sealed.gif":"tinymce/plugins/emoticons/img/smiley-sealed-9933b442636b6e537df7b564e2c3f7a2873526eea6b022a98eb1e468e5204c32.gif","tinymce/plugins/emoticons/img/smiley-smile.gif":"tinymce/plugins/emoticons/img/smiley-smile-fd89cd460ffcacb7e725e00c0275ef5b3924ce468248e5ff4fb43545571cfa65.gif","tinymce/plugins/emoticons/img/smiley-surprised.gif":"tinymce/plugins/emoticons/img/smiley-surprised-3871f356cb41976d7ae8a5f005e8739e4d014352a8adef9b33f773d81b6e6c01.gif","tinymce/plugins/emoticons/img/smiley-tongue-out.gif":"tinymce/plugins/emoticons/img/smiley-tongue-out-5843c85667a8226dc43be83749fd9fbbc5d20b1577de2b763915d99815d37d47.gif","tinymce/plugins/emoticons/img/smiley-undecided.gif":"tinymce/plugins/emoticons/img/smiley-undecided-d8b9bcbb433951ff3c4ca8dd959ac3844239b98e6d52218833e1485a91f67347.gif","tinymce/plugins/emoticons/img/smiley-wink.gif":"tinymce/plugins/emoticons/img/smiley-wink-2af75ad7b1c08488505513503e34b15f40005e04a2a9568f698f0945d2d8ba1f.gif","tinymce/plugins/emoticons/img/smiley-yell.gif":"tinymce/plugins/emoticons/img/smiley-yell-bba903fbcb46fce8c68b9e01863fd095b3b1d0e6aa72161f3a88d762a5f90a79.gif","tinymce/plugins/emoticons/plugin.js":"tinymce/plugins/emoticons/plugin-05910f1a564221738a73275cf2c3a16aab7164f6977eb7506780d0689155c32f.js","tinymce/plugins/fullpage/plugin.js":"tinymce/plugins/fullpage/plugin-7ec780fd59484ab244de2ff81a9ff0402733d7e1a27e6d0899f3fbb03bdddd5c.js","tinymce/plugins/fullscreen/plugin.js":"tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js","tinymce/plugins/help/img/logo.png":"tinymce/plugins/help/img/logo-95b06f8538b11c4c30170075a09f93cf5871f74dd2541e95ad3d9da31976fcac.png","tinymce/plugins/help/plugin.js":"tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js","tinymce/plugins/hr/plugin.js":"tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js","tinymce/plugins/image/plugin.js":"tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js","tinymce/plugins/imagetools/plugin.js":"tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js","tinymce/plugins/importcss/plugin.js":"tinymce/plugins/importcss/plugin-f708109b89ae545b36f60d0f2685647587380549b58f5de55f9f6f1957240704.js","tinymce/plugins/insertdatetime/plugin.js":"tinymce/plugins/insertdatetime/plugin-fffab6ada7fc05ebf0a2a321fff64266ad1e5a73699b03ce48c26811116d657c.js","tinymce/plugins/legacyoutput/plugin.js":"tinymce/plugins/legacyoutput/plugin-ac93d67c9c8683752126c590a2abbe1a0f08ad23e2d931f57fd104f8d99e6a86.js","tinymce/plugins/link/plugin.js":"tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js","tinymce/plugins/lists/plugin.js":"tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js","tinymce/plugins/media/plugin.js":"tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js","tinymce/plugins/nonbreaking/plugin.js":"tinymce/plugins/nonbreaking/plugin-f818f5747c3bd123dbdc6b0e24a20c5e332e572b3ef6047a44e83da8a86471dc.js","tinymce/plugins/noneditable/plugin.js":"tinymce/plugins/noneditable/plugin-abb398069609339149f11fdb3f2d77ba34c1dfaf7c4bd4406abd2389cdbfaf58.js","tinymce/plugins/pagebreak/plugin.js":"tinymce/plugins/pagebreak/plugin-498022b2b73a3c1c3e332a913306eafb6fd2c3a75793319d49865ab7420dbce7.js","tinymce/plugins/paste/plugin.js":"tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js","tinymce/plugins/preview/plugin.js":"tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js","tinymce/plugins/print/plugin.js":"tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js","tinymce/plugins/save/plugin.js":"tinymce/plugins/save/plugin-c925a1d1c20280b230018ead32c271d98e36fa21f91701f28653b44def6b2bf4.js","tinymce/plugins/searchreplace/plugin.js":"tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js","tinymce/plugins/spellchecker/plugin.js":"tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js","tinymce/plugins/tabfocus/plugin.js":"tinymce/plugins/tabfocus/plugin-1f6e19bc145d6dbc89b62278eebbe6fae6f61f6225eaa8fefc59fe5cdcc7716b.js","tinymce/plugins/table/plugin.js":"tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js","tinymce/plugins/template/plugin.js":"tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js","tinymce/plugins/textcolor/plugin.js":"tinymce/plugins/textcolor/plugin-1afa99da003eb9003f9071d086eb025b8a50a00386bd76e73428807d49c6c94f.js","tinymce/plugins/textpattern/plugin.js":"tinymce/plugins/textpattern/plugin-46aa72bd72de63931af55b83037436672ee1ec8221959cd4f866b40a743cc7e8.js","tinymce/plugins/toc/plugin.js":"tinymce/plugins/toc/plugin-e29ac010fcea309e07d328d306acd4213966a8923e3d1241dc633d66e9510af1.js","tinymce/plugins/visualblocks/css/visualblocks.css":"tinymce/plugins/visualblocks/css/visualblocks-859e261c1d940c90994673ce593b60946710cc4f71371164db4ea695035ea593.css","tinymce/plugins/visualblocks/plugin.js":"tinymce/plugins/visualblocks/plugin-4ded681bb50f7f23fd3543501704fbcdcc267e47f4acae1d69ee75354c722612.js","tinymce/plugins/visualchars/plugin.js":"tinymce/plugins/visualchars/plugin-0582c576749e7736722a3c8034b00c08446345533144e652da3ad44b3f06cdc9.js","tinymce/plugins/wordcount/plugin.js":"tinymce/plugins/wordcount/plugin-004fce15072e9ae2f16d4abb5ba9fb94e6d50d95e5e593727ab690c58a0eefca.js","tinymce/skins/lightgray/content.inline.min.css":"tinymce/skins/lightgray/content.inline.min-58c28f0e832b8f0622b03e4d5faaada2cb2c481a1ec171de02de97fe84555b19.css","tinymce/skins/lightgray/content.min.css":"tinymce/skins/lightgray/content.min-9aaa337dc1206c756b48c9ea0444faac9402206186069dc7423e912a71460055.css","tinymce/skins/lightgray/fonts/tinymce-small.eot":"tinymce/skins/lightgray/fonts/tinymce-small-a10fc4343d95b716c16d77463d475be5c079599ea67e1cd2bd3a94d5e7f508f9.eot","tinymce/skins/lightgray/fonts/tinymce-small.svg":"tinymce/skins/lightgray/fonts/tinymce-small-e7773001446ab937e1d8d4bd5e8dbd9b31d112037353a14b319e36dd010ed8ee.svg","tinymce/skins/lightgray/fonts/tinymce-small.ttf":"tinymce/skins/lightgray/fonts/tinymce-small-2f657502906d6f5c3fc8df3a82969114ebe030addfdc061c60c974b0f515fd09.ttf","tinymce/skins/lightgray/fonts/tinymce-small.woff":"tinymce/skins/lightgray/fonts/tinymce-small-d3efbb678ca6de5632902bd93772746ba2f8e4e2322b953936e12694a183aa31.woff","tinymce/skins/lightgray/fonts/tinymce.eot":"tinymce/skins/lightgray/fonts/tinymce-9f5f4d62ce9ad4bf25c73cb80920c490cc361bf35dd47dcb3ce2ed767be7404d.eot","tinymce/skins/lightgray/fonts/tinymce.svg":"tinymce/skins/lightgray/fonts/tinymce-9b9369e35660db34db422aafd93cd8a68e638c486c107130e75e36c98d2e9a1f.svg","tinymce/skins/lightgray/fonts/tinymce.ttf":"tinymce/skins/lightgray/fonts/tinymce-aad8f3f45064995545e9efd9c4bf10cb4967469aec14a475f648db771d25b6f9.ttf","tinymce/skins/lightgray/fonts/tinymce.woff":"tinymce/skins/lightgray/fonts/tinymce-e378406db7a120c29069a998f7fdd2d4d1867185b360c36767137dbbab5cf83e.woff","tinymce/skins/lightgray/img/anchor.gif":"tinymce/skins/lightgray/img/anchor-2861666fd107d278d4449970615136d06d7f746be9bb19072cf9c8f30e565e1e.gif","tinymce/skins/lightgray/img/loader.gif":"tinymce/skins/lightgray/img/loader-eb7cfd3d959b2e09c170f532e29f8b825f9bc770b2279fde58e595617753e244.gif","tinymce/skins/lightgray/img/object.gif":"tinymce/skins/lightgray/img/object-e6a15e52bc4a17b085073ba8debd4708ead6ae3d4cbeb3880c65cb7afc489777.gif","tinymce/skins/lightgray/img/trans.gif":"tinymce/skins/lightgray/img/trans-9cf020d7c3bba7f5ab10cda54aabef934f906d4f9a3acf99e9e7dc6c98579635.gif","tinymce/skins/lightgray/skin.min.css":"tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css","tinymce/themes/inlite/theme.js":"tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js","tinymce/themes/modern/theme.js":"tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js","tinymce/rails.js":"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js","tinymce/skins/lightgray/content.mobile.min.css":"tinymce/skins/lightgray/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css","tinymce/skins/lightgray/fonts/tinymce-mobile.woff":"tinymce/skins/lightgray/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff","tinymce/skins/lightgray/skin.mobile.min.css":"tinymce/skins/lightgray/skin.mobile.min-fe907c53c1657dd3f3c3cc22926b2f6a342a345d2b2f1a7953e3fdceb2841d4c.css","tinymce/themes/mobile/theme.js":"tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js","tinymce/langs/af_ZA.js":"tinymce/langs/af_ZA-6d5614830d9cc3d504d9922bf5373665246936adc337530a7a672e9bf5fc21ea.js","tinymce/langs/uz.js":"tinymce/langs/uz-d6923a3190a76dc149ccb2893574e981250344a6c4f6dcaf458df1cce2ea3b30.js","font-awesome/fa-brands-400.eot":"font-awesome/fa-brands-400-75a8d21d405fc02922bf4e5910c02da8c69e1422c54eace016902f8d13f24cc3.eot","font-awesome/fa-regular-400.eot":"font-awesome/fa-regular-400-e73d73f67b277568ab01d56322d1a01d66409a8f947735dd738fe2dcb6bb0c58.eot","font-awesome/fa-solid-900.eot":"font-awesome/fa-solid-900-f5d00bfd4457c03601f28e200ed5db6e5bf58b332164a1e630fa6aafcfab6bcb.eot","font-awesome/fa-brands-400.svg":"font-awesome/fa-brands-400-981c7b389bbd9de156f6b92bb4f65f4e66d329b9d3503277d4fe6eef1008f3f4.svg","font-awesome/fa-regular-400.svg":"font-awesome/fa-regular-400-42e44be1cfd7bfab3031546e1f656418e9c835230a2f69b7a34594815d0e0a80.svg","font-awesome/fa-solid-900.svg":"font-awesome/fa-solid-900-b0f3ece320e40f6c55b19378e123f198a3ef5f2e8fbd9ab7906ce04198770fdf.svg","font-awesome/fa-brands-400.ttf":"font-awesome/fa-brands-400-345def96ebbc01d79e677848420a94ca0653961c03b30977714fa62395553569.ttf","font-awesome/fa-regular-400.ttf":"font-awesome/fa-regular-400-8721a523848f5d583c554552d6daeaaacefc8eb9239ba0c998a09492667f5c75.ttf","font-awesome/fa-solid-900.ttf":"font-awesome/fa-solid-900-9ae2e3bc1545ee5fd1f72e0f4d0656f8054d1ead2e51c28f8f0730f85f688bed.ttf","font-awesome/fa-brands-400.woff":"font-awesome/fa-brands-400-0d9317d5559d4091516c1e240689589122ad9b101f030ef7aee8c01a9fc5a78c.woff","font-awesome/fa-regular-400.woff":"font-awesome/fa-regular-400-4773adbb080c5189d52e31d83658b6d9743bdf7337e53bb8a4706de8dc116ffd.woff","font-awesome/fa-solid-900.woff":"font-awesome/fa-solid-900-6f43ff9f2fb98cc65e18f73ee16951bacfb055f76e68e06f7d91989fd770fa71.woff","font-awesome/fa-brands-400.woff2":"font-awesome/fa-brands-400-155963e3fb06f13011705c65bc52ed31f9989b87309c945948a76b35f8e7da67.woff2","font-awesome/fa-regular-400.woff2":"font-awesome/fa-regular-400-a36d4f83add2176a3c6243bd57a32a387a1906227e286689530ff878de1994eb.woff2","font-awesome/fa-solid-900.woff2":"font-awesome/fa-solid-900-62554277d07b20c6bfae7c6267b3198b4846f604a37d4085bf9f54c392210b56.woff2"}} \ No newline at end of file diff --git a/public/assets/agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png b/public/assets/agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png new file mode 100644 index 0000000000000000000000000000000000000000..d7efd7497697d8794831be04696626492652c9b3 GIT binary patch literal 2760 zcmV;(3ODtMP)<h;3K|Lk000e1NJLTq003?P002A)0{{R3u)}{f00004XF*Lt006JZ zHwB9600093P)t-sxwf+1-Q45i;nmT`xwy4pYk!lOq_VTKZg`8Lp`MYDi(F`ZuC1$h zfs(4Jsi>x+-Pp>2f{u%fm7<@OrKF(F%E5Mchp?}#+0?{rcZssDq3Gh$ot>U?b%m^} zsLsf_WN(6VeU4>tg0!=+nwO3L|No|?qNb>-eTJ3s^7hKbw&2^#c7T$xu&$Sxn_z5! zqot>tprw<RncCLKnVO!yy}7lsu5NLHq@$o}bcV&jx~{FNtg5ATevhlJvU-7!u&=A; z;LzmW&YGU3nxLzuq@j9zik_dLXmf^*kCu>;m~nfJj+2>yhmyRvs%LS8_V@RVj+UmT zqo}8(et?X;xwV0cmb0;}(apor%)Mf5frf^I)z#F6iITv(t@--;l9ryDo0?;8fp&h1 zwzROKqM)m(qp+~Anw*`ktf-))r;U@I#=*12#KNnpr?s)As-~K%sitsxh--C-bAFMw zwX=(knysv<Xls08Zh?`MnWLknsHmlfjh369sf~<>gMxmirl+y6t-`;#l$M*Vshot0 zmEzpYdxVvAcZTHO(Bj?Bv$3z>+s(JNt$Bl#ZFPmu&Bo>6(0qiEwY0L*&cug~oT{v@ zcYlq#xwpT%th2DGudb`SySaFKh^eTfr>3K&q@l61wwRrwzPz`Nl$?WwkCvC5Yi@vv zj+BConzFUEfs2^R$iRMxn7+Qer>d`ki=C^htmx?IqoSYV-p`nuqR7a`%g4XKzPEdW zkbHiNrKYE+rlF;zrf+hBT4#K%tg7hZ(Wa%Q#J{nrsHN4<z|_ygsHdpIzOdok&E??F zUu%D#pPYb)mVJbcwX?8yd549Emg(ctdW4g)v%JH_%%7j5hl-7okcY<0($(4C*VM?b zu)1Jvfn#lfx3#i@hmeSjlZKF>=i$+im!h}0xUa3KuCK1<>FT?^#eaT$u&t+wij=3Q zr*?pld4P<ww6j-bdy9~oijbYJtDmK&rHGE2xVN;Wr?GQ;iPF%<$HcqC!M|{GgX-kd z-~QFn0000PbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU(PDw;TR9M69 znSE4K=N-qRyoHfBEc6;l;!UzVFeOA0@P>e(2nJ%!+!bT5Wra&rsw{eq7{Sq&=s@&# zSj8$f%Duis=_*<pwZ(Q6Fyc#4T->@Br&wURt*dUGD|0UN=D2g_@uk~|H~iJ#IrpC@ z=eeJJ^Zb6#?<Jg(Q8muDxY58(=G1g|ch}U^2n0N}vcK@d^!p#gE)oR^CrUYW`GM`- zyEiZI)Tss0(a}!l+2G)|6!@NKyrAH`{f~j_`xp3p`ELXTH*4GjhEyu8e_+q^x<1W2 z6cQX)S#;SCbFOcL)O}_%XPCn|FmpuI6D-dxl=^8sqZJ5e8Jv_HwYW=R#6|BIHJm>T z{&IfQaDK<kAN<Ch+m8G-{=~t9#rxx%LfF6+eAB+z_!SG^xgs|hxQxm7zq$F@adA)G z^{=UXgTb)cDi&+GT4Qb1oW{QUlb-=MpTUhg{**n(kKGpg%_xSg)=F+QxY<Ms-Py6; zXL6OIr`-NKhOAn#R&2E5Vm(})B9RR@S!kJsvTT?Ygg}T5uimA_teCO(vyCZbvf+L; z&t{`sgbt-RTLQ#&Gq}9;Cw+3&vaE1fek~uKn`SZ}=u_J(&`3lEp$MuYz=17+;moHx zd{Xn15|g>PnI!x7#7`+K?5t^&HM`t)8X$z4qA8u5_;7PTxb*P)4&TooUmx56KqnO` zb9`<xZCrg%wmu&PkPZQe%noQ;&`74o1%eBCwf3;D>anltjny$uK?5@B(v52U-;5T4 z;*jviB+BU1K`s}RDnmm8%6Fg6UgwKm^yu<56Ckn~DcMz@zy`PyOK!um2n2E<03Z&C zRJuE<v~2<4x&*)Xbw~vdt!$ol<N)uG^K!HVrR{EHm*TbpuQa}k-5_Gzq#Mc2xOG%b zBNiFh5lF4F;g`Qy=d17TIe%WXD82t|%6w<u<$7ty^y!E5mJoJ;_GZap9FA(3i%`G? zwOPm<Ip2{BXdTLl3jilNHe(&*oX;<a&SMG)>3>U>=^aVgI+_yBHQ?7ZTR$=bfXd=$ z$G2-d_>^oH?bd-e0>E_%{<L=8qt#J|UtLF%lAzJvb~z4fioTe!T&Xm@khoTX<L$Oa z8qf|pHjp|q<ixMm9`1M)#|RzQ*`(9ev?mT^@;4<U3~{R?_T5qBlw!sLnzSLb1>G4? z6}@5kKc&<EQ}gYOc8)8M6ci;(=JZ<n_K@V4+;;~ITrKQr(9C{W^*jEFxj2q*triGD zZrh5$dV~*BoC}=uH%e;A!t~gy=i^3}<-eU~YtC&pEiJ*KteKuL497BC|EN-_emk@g z#_><Ct$(HWW`rTYmc-i=+ar1?jB-|^5RFEDSzLDK+I8*~9EagbF(Xc;`hNHo9LAzb zJ8x#UEfllV0figqm=IaAoNL5jjd&9i2w0dV{Cf;eH6Xv{(UeL!shldzz!GlgdQ}>d zQ6%ST7?3r==<&c?SBH=Bt2_AB_Djh;PH2-%VwJOmo9d~x)5INv0fu2rn_$$oltd!x z;rCUlmwIItWT?`HCY5Crv88UGrX7kQ3iw<<PS4MhEJcNYB&e~fG4{}ZccQ|Qd)#&; zGLt3T(TgkWE@9+CE{5Y6+>jy!Gyv*h+gO$AM@R*r(3U8JHA%wOk9h=9rmCS=iW7}` zt=9O~Eq@MZ3{90Wr#Ci6NdOeNXB8KfCa{DPSx|=sA|qxeFxLtH)l@rVa|4P*{LZom zve6V;lu&F`<gkQ`E2JDTu1JEc(qo#aVzbMI&@@F_{J60Y4*`_RRHko;U~BRaLi5}- z_(9|6EgH<&T}U%WM^g~w$Ei;GONfujuMD?C*urhIyJgHvNm&V#$y<gACW!;uR>4HV z%kQ6rA`vugCm-HF$l6>b1lRzRO`$RcuEBD$WBfRx>7_9zhf%lEZSVi$B4#|o-WX?_ z+2W>YqOVtvDWVcOQ9sU7fx3Eo0htP!BnC0Od?t%iqpNBeLL-gtQjfyJ4Hq^8ked-| zvDitwx)H5XXvJ9pRbo#~68DEm3*}I@c>K5K_T+yErc6C{OGi*KHs}U+T`Yc+-I>^N zXqg>S9~Ct4`TU_)d8R=RC#HPNh~(8)!g}r>*dD=6+rLDJbn>*7iZJ<YjRwOt{Eviy zidnJi1}y)Xmu=jLC}+-6a8~Srabv5V$*`X74gfMfyO>;>8Sy_myZ{D_oA=F7Rxv47 z;YrM_WN<H#F+z|vbn&g!Ak8y>x@39l8aONr-=xssVOh$XZ|4lWbL?u+#;2mYC4V1i z;OY}wnVy+HBX#G(U$69zu#WQ%){Q^&;>1a3#-D!fHRmq*n)lvY!{uID{GAEoN4mPa zY~#A>&XmtvdG{x)R!vwrVbynETm0wOUtj#2=kD$<FP}K=0{iMNh|Wx$RDSM<yXVc@ zeeT@p)67#|K8djx$JY&dgK&1<!I`t_>Lx#Ib+axEcKu&R_wD}(Y}(hVb+#!SqqY73 O0000<MNUMnLSTX-*2ne$ literal 0 HcmV?d00001 diff --git a/public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js b/public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js new file mode 100644 index 000000000..7c5abf083 --- /dev/null +++ b/public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js @@ -0,0 +1,62321 @@ +/*! + * jQuery JavaScript Library v1.12.4 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-05-20T17:17Z + */ + + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +//"use strict"; +var deletedIds = []; + +var document = window.document; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.12.4", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type( obj ) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( !support.ownFirst ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[ j ] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" + + "<select id='" + expando + "-\r\\' msallowcapture=''>" + + "<option selected=''></option></select>"; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = "<a href='#'></a>"; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = "<input/>"; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // init accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt( 0 ) === "<" && + selector.charAt( selector.length - 1 ) === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[ 2 ] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof root.ready !== "undefined" ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[ 0 ], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.uniqueSort( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = true; + if ( !memory ) { + self.disable(); + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +} ); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +} ); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || + window.event.type === "load" || + document.readyState === "complete" ) { + + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE6-10 + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + + // If IE event model is used + } else { + + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch ( e ) {} + + if ( top && top.doScroll ) { + ( function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll( "left" ); + } catch ( e ) { + return window.setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + } )(); + } + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownFirst = i === "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery( function() { + + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== "undefined" ) { + + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +} ); + + +( function() { + var div = document.createElement( "div" ); + + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch ( e ) { + support.deleteExpando = false; + } + + // Null elements to avoid leaks in IE. + div = null; +} )(); +var acceptData = function( elem ) { + var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute( "classid" ) === noData; +}; + + + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && + data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } else { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[ i ] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, undefined + } else { + cache[ id ] = undefined; + } +} + +jQuery.extend( { + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + jQuery.data( this, key ); + } ); + } + + return arguments.length > 1 ? + + // Sets one value + this.each( function() { + jQuery.data( this, key, value ); + } ) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each( function() { + jQuery.removeData( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, + // or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); + + +( function() { + var shrinkWrapBlocksVal; + + support.shrinkWrapBlocks = function() { + if ( shrinkWrapBlocksVal != null ) { + return shrinkWrapBlocksVal; + } + + // Will be changed later if needed. + shrinkWrapBlocksVal = false; + + // Minified: var b,c,d + var div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + + // Test fired too early or in an unsupported environment, exit. + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + if ( typeof div.style.zoom !== "undefined" ) { + + // Reset CSS: box-sizing; display; margin; border + div.style.cssText = + + // Support: Firefox<29, Android 2.3 + // Vendor-prefix box-sizing + "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + "box-sizing:content-box;display:block;margin:0;border:0;" + + "padding:1px;width:1px;zoom:1"; + div.appendChild( document.createElement( "div" ) ).style.width = "5px"; + shrinkWrapBlocksVal = div.offsetWidth !== 3; + } + + body.removeChild( container ); + + return shrinkWrapBlocksVal; + }; + +} )(); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( + elems[ i ], + key, + raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[ 0 ], key ) : emptyGet; +}; +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + +var rleadingWhitespace = ( /^\s+/ ); + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + + +( function() { + var div = document.createElement( "div" ), + fragment = document.createDocumentFragment(), + input = document.createElement( "input" ); + + // Setup + div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = "<textarea>x</textarea>"; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input = document.createElement( "input" ); + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ + support.noCloneEvent = !!div.addEventListener; + + // Support: IE<9 + // Since attributes and properties are the same in IE, + // cleanData must set properties to undefined rather than use removeAttribute + div[ jQuery.expando ] = 1; + support.attributes = !div.getAttribute( jQuery.expando ); +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + option: [ 1, "<select multiple='multiple'>", "</select>" ], + legend: [ 1, "<fieldset>", "</fieldset>" ], + area: [ 1, "<map>", "</map>" ], + + // Support: IE8 + param: [ 1, "<object>", "</object>" ], + thead: [ 1, "<table>", "</table>" ], + tr: [ 2, "<table><tbody>", "</tbody></table>" ], + col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ], + td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ] +}; + +// Support: IE8-IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; + ( elem = elems[ i ] ) != null; + i++ + ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; ( elem = elems[ i ] ) != null; i++ ) { + jQuery._data( + elem, + "globalEval", + !refElements || jQuery._data( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/, + rtbody = /<tbody/i; + +function fixDefaultChecked( elem ) { + if ( rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +function buildFragment( elems, context, scripts, selection, ignored ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement( "div" ) ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; + + // Descend through wrappers to the right content + j = wrap[ 0 ]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[ 0 ] ) ); + } + + // Remove IE's autoinserted <tbody> from table fragments + if ( !support.tbody ) { + + // String was a <table>, *may* have spurious <tbody> + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare <thead> or <tfoot> + wrap[ 1 ] === "<table>" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && + !tbody.childNodes.length ) { + + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; +} + + +( function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) + for ( i in { submit: true, change: true, focusin: true } ) { + eventName = "on" + i; + + if ( !( support[ i ] = eventName in window ) ) { + + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +} )(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && + ( !e || jQuery.event.triggered !== e.type ) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + + // Add elem as a property of the handle fn to prevent a memory leak + // with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && + jQuery._data( cur, "handle" ); + + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( + ( !special._default || + special._default.apply( eventPath.pop(), data ) === false + ) && acceptData( elem ) + ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG <use> instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Safari 6-8+ + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY fromElement offsetX offsetY " + + "pageX pageY screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? + original.toElement : + fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + // Piggyback on a donor event to simulate a different one + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + + // Previously, `originalEvent: {}` was set here, so stopPropagation call + // would not be triggered on donor event, since in our own + // jQuery.event.stopPropagation function we had a check for existence of + // originalEvent.stopPropagation method, so, consequently it would be a noop. + // + // Guard for simulated events was moved to jQuery.event.stopPropagation function + // since `originalEvent` should point to the original event for the + // constancy with other events and for more focused logic + } + ); + + jQuery.event.trigger( e, null, elem ); + + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, + // to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( !e || this.isSimulated ) { + return; + } + + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +// IE submit delegation +if ( !support.submit ) { + + jQuery.event.special.submit = { + setup: function() { + + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? + + // Support: IE <=8 + // We use jQuery.prop instead of elem.form + // to allow fixing the IE8 delegated submit issue (gh-2332) + // by 3rd party polyfills/workarounds. + jQuery.prop( elem, "form" ) : + undefined; + + if ( form && !jQuery._data( form, "submit" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submitBubble = true; + } ); + jQuery._data( form, "submit", true ); + } + } ); + + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + + // If form was submitted by the user, bubble the event up the tree + if ( event._submitBubble ) { + delete event._submitBubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event ); + } + } + }, + + teardown: function() { + + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.change ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._justChanged = true; + } + } ); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._justChanged && !event.isTrigger ) { + this._justChanged = false; + } + + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event ); + } ); + } + return false; + } + + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event ); + } + } ); + jQuery._data( elem, "change", true ); + } + } ); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || + ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { + + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Support: Firefox +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome, Safari +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + } ); +} + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + }, + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /<script|<style|<link/i, + + // checked="checked" or checked + rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, + rscriptTypeMasked = /^true\/(.*)/, + rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName( "tbody" )[ 0 ] || + elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + return elem; +} + +function cloneCopyEvent( src, dest ) { + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( + ( node.text || node.textContent || node.innerHTML || "" ) + .replace( rcleanScript, "" ) + ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + elems = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = elems[ i ] ) != null; i++ ) { + + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1></$2>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc( elem ) || + !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( ( !support.noCloneEvent || !support.noCloneChecked ) && + ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { + + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[ i ] ) { + fixCloneNodeIssues( node, destElements[ i ] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { + cloneCopyEvent( node, destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + cleanData: function( elems, /* internal */ forceAcceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + attributes = support.attributes, + special = jQuery.event.special; + + for ( ; ( elem = elems[ i ] ) != null; i++ ) { + if ( forceAcceptData || acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // Support: IE<9 + // IE does not allow us to delete expando properties from nodes + // IE creates expando attributes along with the property + // IE does not have a removeAttribute function on Document nodes + if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { + elem.removeAttribute( internalKey ); + + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + } else { + elem[ internalKey ] = undefined; + } + + deletedIds.push( id ); + } + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( + ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) + ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + + // Remove element nodes and prevent memory leaks + elem = this[ i ] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); + + +var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" ) ) + .appendTo( doc.documentElement ); + + // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse + doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document; + + // Support: IE + doc.write(); + doc.close(); + + display = actualDisplay( nodeName, doc ); + iframe.detach(); + } + + // Store the correct default display + elemdisplay[ nodeName ] = display; + } + + return display; +} +var rmargin = ( /^margin/ ); + +var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); + +var swap = function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + +var documentElement = document.documentElement; + + + +( function() { + var pixelPositionVal, pixelMarginRightVal, boxSizingReliableVal, + reliableHiddenOffsetsVal, reliableMarginRightVal, reliableMarginLeftVal, + container = document.createElement( "div" ), + div = document.createElement( "div" ); + + // Finish early in limited (non-browser) environments + if ( !div.style ) { + return; + } + + div.style.cssText = "float:left;opacity:.5"; + + // Support: IE<9 + // Make sure that element opacity exists (as opposed to filter) + support.opacity = div.style.opacity === "0.5"; + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!div.style.cssFloat; + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + container = document.createElement( "div" ); + container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" + + "padding:0;margin-top:1px;position:absolute"; + div.innerHTML = ""; + container.appendChild( div ); + + // Support: Firefox<29, Android 2.3 + // Vendor-prefix box-sizing + support.boxSizing = div.style.boxSizing === "" || div.style.MozBoxSizing === "" || + div.style.WebkitBoxSizing === ""; + + jQuery.extend( support, { + reliableHiddenOffsets: function() { + if ( pixelPositionVal == null ) { + computeStyleTests(); + } + return reliableHiddenOffsetsVal; + }, + + boxSizingReliable: function() { + + // We're checking for pixelPositionVal here instead of boxSizingReliableVal + // since that compresses better and they're computed together anyway. + if ( pixelPositionVal == null ) { + computeStyleTests(); + } + return boxSizingReliableVal; + }, + + pixelMarginRight: function() { + + // Support: Android 4.0-4.3 + if ( pixelPositionVal == null ) { + computeStyleTests(); + } + return pixelMarginRightVal; + }, + + pixelPosition: function() { + if ( pixelPositionVal == null ) { + computeStyleTests(); + } + return pixelPositionVal; + }, + + reliableMarginRight: function() { + + // Support: Android 2.3 + if ( pixelPositionVal == null ) { + computeStyleTests(); + } + return reliableMarginRightVal; + }, + + reliableMarginLeft: function() { + + // Support: IE <=8 only, Android 4.0 - 4.3 only, Firefox <=3 - 37 + if ( pixelPositionVal == null ) { + computeStyleTests(); + } + return reliableMarginLeftVal; + } + } ); + + function computeStyleTests() { + var contents, divStyle, + documentElement = document.documentElement; + + // Setup + documentElement.appendChild( container ); + + div.style.cssText = + + // Support: Android 2.3 + // Vendor-prefix box-sizing + "-webkit-box-sizing:border-box;box-sizing:border-box;" + + "position:relative;display:block;" + + "margin:auto;border:1px;padding:1px;" + + "top:1%;width:50%"; + + // Support: IE<9 + // Assume reasonable values in the absence of getComputedStyle + pixelPositionVal = boxSizingReliableVal = reliableMarginLeftVal = false; + pixelMarginRightVal = reliableMarginRightVal = true; + + // Check for getComputedStyle so that this code is not run in IE<9. + if ( window.getComputedStyle ) { + divStyle = window.getComputedStyle( div ); + pixelPositionVal = ( divStyle || {} ).top !== "1%"; + reliableMarginLeftVal = ( divStyle || {} ).marginLeft === "2px"; + boxSizingReliableVal = ( divStyle || { width: "4px" } ).width === "4px"; + + // Support: Android 4.0 - 4.3 only + // Some styles come back with percentage values, even though they shouldn't + div.style.marginRight = "50%"; + pixelMarginRightVal = ( divStyle || { marginRight: "4px" } ).marginRight === "4px"; + + // Support: Android 2.3 only + // Div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container (#3333) + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + contents = div.appendChild( document.createElement( "div" ) ); + + // Reset CSS: box-sizing; display; margin; border; padding + contents.style.cssText = div.style.cssText = + + // Support: Android 2.3 + // Vendor-prefix box-sizing + "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + "box-sizing:content-box;display:block;margin:0;border:0;padding:0"; + contents.style.marginRight = contents.style.width = "0"; + div.style.width = "1px"; + + reliableMarginRightVal = + !parseFloat( ( window.getComputedStyle( contents ) || {} ).marginRight ); + + div.removeChild( contents ); + } + + // Support: IE6-8 + // First check that getClientRects works as expected + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.style.display = "none"; + reliableHiddenOffsetsVal = div.getClientRects().length === 0; + if ( reliableHiddenOffsetsVal ) { + div.style.display = ""; + div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>"; + div.childNodes[ 0 ].style.borderCollapse = "separate"; + contents = div.getElementsByTagName( "td" ); + contents[ 0 ].style.cssText = "margin:0;border:0;padding:0;display:none"; + reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0; + if ( reliableHiddenOffsetsVal ) { + contents[ 0 ].style.display = ""; + contents[ 1 ].style.display = "none"; + reliableHiddenOffsetsVal = contents[ 0 ].offsetHeight === 0; + } + } + + // Teardown + documentElement.removeChild( container ); + } + +} )(); + + +var getStyles, curCSS, + rposition = /^(top|right|bottom|left)$/; + +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + + // Support: IE<=11+, Firefox<=30+ (#15098, #14150) + // IE throws on elements created in popups + // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" + var view = elem.ownerDocument.defaultView; + + if ( !view || !view.opener ) { + view = window; + } + + return view.getComputedStyle( elem ); + }; + + curCSS = function( elem, name, computed ) { + var width, minWidth, maxWidth, ret, + style = elem.style; + + computed = computed || getStyles( elem ); + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined; + + // Support: Opera 12.1x only + // Fall back to style even without computed + // computed is undefined for elems on document fragments + if ( ( ret === "" || ret === undefined ) && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + if ( computed ) { + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" + // instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, + // but width seems to be reliably pixels + // this is against the CSSOM draft spec: + // http://dev.w3.org/csswg/cssom/#resolved-values + if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + // Support: IE + // IE returns zIndex value as an integer. + return ret === undefined ? + ret : + ret + ""; + }; +} else if ( documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, computed ) { + var left, rs, rsLeft, ret, + style = elem.style; + + computed = computed || getStyles( elem ); + ret = computed ? computed[ name ] : undefined; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are + // proportional to the parent element instead + // and we can't measure the parent instead because it + // might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + // Support: IE + // IE returns zIndex value as an integer. + return ret === undefined ? + ret : + ret + "" || "auto"; + }; +} + + + + +function addGetHookIf( conditionFn, hookFn ) { + + // Define the hook, we'll check on the first run if it's really needed. + return { + get: function() { + if ( conditionFn() ) { + + // Hook not needed (or it's not possible to use it due + // to missing dependency), remove it. + delete this.get; + return; + } + + // Hook needed; redefine it so that the support test is not executed again. + return ( this.get = hookFn ).apply( this, arguments ); + } + }; +} + + +var + + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/i, + + // swappable if display is none or starts with table except + // "table", "table-cell", or "table-caption" + // see here for display values: + // https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ), + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }, + + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style; + + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( name ) { + + // shortcut for names that are not vendor prefixed + if ( name in emptyStyle ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt( 0 ).toUpperCase() + name.slice( 1 ), + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in emptyStyle ) { + return name; + } + } +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = + jQuery._data( elem, "olddisplay", defaultDisplay( elem.nodeName ) ); + } + } else { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( + elem, + "olddisplay", + hidden ? display : jQuery.css( elem, "display" ) + ); + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + + // If we already have the right measurement, avoid augmentation + 4 : + + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = support.boxSizing && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test( val ) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && + ( support.boxSizingReliable() || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +jQuery.extend( { + + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "animationIterationCount": true, + "columnCount": true, + "fillOpacity": true, + "flexGrow": true, + "flexShrink": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + + // normalize float css property + "float": support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || + ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // Convert "+=" or "-=" to relative numbers (#7345) + if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { + value = adjustCSS( elem, name, ret ); + + // Fixes bug #9237 + type = "number"; + } + + // Make sure that null and NaN values aren't set. See: #7116 + if ( value == null || value !== value ) { + return; + } + + // If a number was passed in, add the unit (except for certain CSS properties) + if ( type === "number" ) { + value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight + // (for every problematic property) identical functions + if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !( "set" in hooks ) || + ( value = hooks.set( elem, value, extra ) ) !== undefined ) { + + // Support: IE + // Swallow errors from 'invalid' CSS values (#5509) + try { + style[ name ] = value; + } catch ( e ) {} + } + + } else { + + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && + ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { + + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || + ( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || isFinite( num ) ? num || 0 : val; + } + return val; + } +} ); + +jQuery.each( [ "height", "width" ], function( i, name ) { + jQuery.cssHooks[ name ] = { + get: function( elem, computed, extra ) { + if ( computed ) { + + // certain elements can have dimension info if we invisibly show them + // however, it must have a current display style that would benefit from this + return rdisplayswap.test( jQuery.css( elem, "display" ) ) && + elem.offsetWidth === 0 ? + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, name, extra ); + } ) : + getWidthOrHeight( elem, name, extra ); + } + }, + + set: function( elem, value, extra ) { + var styles = extra && getStyles( elem ); + return setPositiveNumber( elem, value, extra ? + augmentWidthOrHeight( + elem, + name, + extra, + support.boxSizing && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + styles + ) : 0 + ); + } + }; +} ); + +if ( !support.opacity ) { + jQuery.cssHooks.opacity = { + get: function( elem, computed ) { + + // IE uses filters for opacity + return ropacity.test( ( computed && elem.currentStyle ? + elem.currentStyle.filter : + elem.style.filter ) || "" ) ? + ( 0.01 * parseFloat( RegExp.$1 ) ) + "" : + computed ? "1" : ""; + }, + + set: function( elem, value ) { + var style = elem.style, + currentStyle = elem.currentStyle, + opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "", + filter = currentStyle && currentStyle.filter || style.filter || ""; + + // IE has trouble with opacity if it does not have layout + // Force it by setting the zoom level + style.zoom = 1; + + // if setting opacity to 1, and no other filters exist - + // attempt to remove filter attribute #6652 + // if value === "", then remove inline opacity #12685 + if ( ( value >= 1 || value === "" ) && + jQuery.trim( filter.replace( ralpha, "" ) ) === "" && + style.removeAttribute ) { + + // Setting style.filter to null, "" & " " still leave "filter:" in the cssText + // if "filter:" is present at all, clearType is disabled, we want to avoid this + // style.removeAttribute is IE Only, but so apparently is this code path... + style.removeAttribute( "filter" ); + + // if there is no filter style applied in a css rule + // or unset inline opacity, we are done + if ( value === "" || currentStyle && !currentStyle.filter ) { + return; + } + } + + // otherwise, set new filter values + style.filter = ralpha.test( filter ) ? + filter.replace( ralpha, opacity ) : + filter + " " + opacity; + } + }; +} + +jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight, + function( elem, computed ) { + if ( computed ) { + return swap( elem, { "display": "inline-block" }, + curCSS, [ elem, "marginRight" ] ); + } + } +); + +jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, + function( elem, computed ) { + if ( computed ) { + return ( + parseFloat( curCSS( elem, "marginLeft" ) ) || + + // Support: IE<=11+ + // Running getBoundingClientRect on a disconnected node in IE throws an error + // Support: IE8 only + // getClientRects() errors on disconnected elems + ( jQuery.contains( elem.ownerDocument, elem ) ? + elem.getBoundingClientRect().left - + swap( elem, { marginLeft: 0 }, function() { + return elem.getBoundingClientRect().left; + } ) : + 0 + ) + ) + "px"; + } + } +); + +// These hooks are used by animate to expand properties +jQuery.each( { + margin: "", + padding: "", + border: "Width" +}, function( prefix, suffix ) { + jQuery.cssHooks[ prefix + suffix ] = { + expand: function( value ) { + var i = 0, + expanded = {}, + + // assumes a single number if not a string + parts = typeof value === "string" ? value.split( " " ) : [ value ]; + + for ( ; i < 4; i++ ) { + expanded[ prefix + cssExpand[ i ] + suffix ] = + parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; + } + + return expanded; + } + }; + + if ( !rmargin.test( prefix ) ) { + jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; + } +} ); + +jQuery.fn.extend( { + css: function( name, value ) { + return access( this, function( elem, name, value ) { + var styles, len, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each( function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + } ); + } +} ); + + +function Tween( elem, options, prop, end, easing ) { + return new Tween.prototype.init( elem, options, prop, end, easing ); +} +jQuery.Tween = Tween; + +Tween.prototype = { + constructor: Tween, + init: function( elem, options, prop, end, easing, unit ) { + this.elem = elem; + this.prop = prop; + this.easing = easing || jQuery.easing._default; + this.options = options; + this.start = this.now = this.cur(); + this.end = end; + this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); + }, + cur: function() { + var hooks = Tween.propHooks[ this.prop ]; + + return hooks && hooks.get ? + hooks.get( this ) : + Tween.propHooks._default.get( this ); + }, + run: function( percent ) { + var eased, + hooks = Tween.propHooks[ this.prop ]; + + if ( this.options.duration ) { + this.pos = eased = jQuery.easing[ this.easing ]( + percent, this.options.duration * percent, 0, 1, this.options.duration + ); + } else { + this.pos = eased = percent; + } + this.now = ( this.end - this.start ) * eased + this.start; + + if ( this.options.step ) { + this.options.step.call( this.elem, this.now, this ); + } + + if ( hooks && hooks.set ) { + hooks.set( this ); + } else { + Tween.propHooks._default.set( this ); + } + return this; + } +}; + +Tween.prototype.init.prototype = Tween.prototype; + +Tween.propHooks = { + _default: { + get: function( tween ) { + var result; + + // Use a property on the element directly when it is not a DOM element, + // or when there is no matching style property that exists. + if ( tween.elem.nodeType !== 1 || + tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { + return tween.elem[ tween.prop ]; + } + + // passing an empty string as a 3rd parameter to .css will automatically + // attempt a parseFloat and fallback to a string if the parse fails + // so, simple values such as "10px" are parsed to Float. + // complex values such as "rotate(1rad)" are returned as is. + result = jQuery.css( tween.elem, tween.prop, "" ); + + // Empty strings, null, undefined and "auto" are converted to 0. + return !result || result === "auto" ? 0 : result; + }, + set: function( tween ) { + + // use step hook for back compat - use cssHook if its there - use .style if its + // available and use plain properties where available + if ( jQuery.fx.step[ tween.prop ] ) { + jQuery.fx.step[ tween.prop ]( tween ); + } else if ( tween.elem.nodeType === 1 && + ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || + jQuery.cssHooks[ tween.prop ] ) ) { + jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); + } else { + tween.elem[ tween.prop ] = tween.now; + } + } + } +}; + +// Support: IE <=9 +// Panic based approach to setting things on disconnected nodes + +Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { + set: function( tween ) { + if ( tween.elem.nodeType && tween.elem.parentNode ) { + tween.elem[ tween.prop ] = tween.now; + } + } +}; + +jQuery.easing = { + linear: function( p ) { + return p; + }, + swing: function( p ) { + return 0.5 - Math.cos( p * Math.PI ) / 2; + }, + _default: "swing" +}; + +jQuery.fx = Tween.prototype.init; + +// Back Compat <1.8 extension point +jQuery.fx.step = {}; + + + + +var + fxNow, timerId, + rfxtypes = /^(?:toggle|show|hide)$/, + rrun = /queueHooks$/; + +// Animations created synchronously will run synchronously +function createFxNow() { + window.setTimeout( function() { + fxNow = undefined; + } ); + return ( fxNow = jQuery.now() ); +} + +// Generate parameters to create a standard animation +function genFx( type, includeWidth ) { + var which, + attrs = { height: type }, + i = 0; + + // if we include width, step value is 1 to do all cssExpand values, + // if we don't include width, step value is 2 to skip over Left and Right + includeWidth = includeWidth ? 1 : 0; + for ( ; i < 4 ; i += 2 - includeWidth ) { + which = cssExpand[ i ]; + attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; + } + + if ( includeWidth ) { + attrs.opacity = attrs.width = type; + } + + return attrs; +} + +function createTween( value, prop, animation ) { + var tween, + collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), + index = 0, + length = collection.length; + for ( ; index < length; index++ ) { + if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { + + // we're done with this property + return tween; + } + } +} + +function defaultPrefilter( elem, props, opts ) { + /* jshint validthis: true */ + var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay, + anim = this, + orig = {}, + style = elem.style, + hidden = elem.nodeType && isHidden( elem ), + dataShow = jQuery._data( elem, "fxshow" ); + + // handle queue: false promises + if ( !opts.queue ) { + hooks = jQuery._queueHooks( elem, "fx" ); + if ( hooks.unqueued == null ) { + hooks.unqueued = 0; + oldfire = hooks.empty.fire; + hooks.empty.fire = function() { + if ( !hooks.unqueued ) { + oldfire(); + } + }; + } + hooks.unqueued++; + + anim.always( function() { + + // doing this makes sure that the complete handler will be called + // before this completes + anim.always( function() { + hooks.unqueued--; + if ( !jQuery.queue( elem, "fx" ).length ) { + hooks.empty.fire(); + } + } ); + } ); + } + + // height/width overflow pass + if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) { + + // Make sure that nothing sneaks out + // Record all 3 overflow attributes because IE does not + // change the overflow attribute when overflowX and + // overflowY are set to the same value + opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; + + // Set display property to inline-block for height/width + // animations on inline elements that are having width/height animated + display = jQuery.css( elem, "display" ); + + // Test default display if display is currently "none" + checkDisplay = display === "none" ? + jQuery._data( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display; + + if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) { + + // inline-level elements accept inline-block; + // block-level elements need to be inline with layout + if ( !support.inlineBlockNeedsLayout || defaultDisplay( elem.nodeName ) === "inline" ) { + style.display = "inline-block"; + } else { + style.zoom = 1; + } + } + } + + if ( opts.overflow ) { + style.overflow = "hidden"; + if ( !support.shrinkWrapBlocks() ) { + anim.always( function() { + style.overflow = opts.overflow[ 0 ]; + style.overflowX = opts.overflow[ 1 ]; + style.overflowY = opts.overflow[ 2 ]; + } ); + } + } + + // show/hide pass + for ( prop in props ) { + value = props[ prop ]; + if ( rfxtypes.exec( value ) ) { + delete props[ prop ]; + toggle = toggle || value === "toggle"; + if ( value === ( hidden ? "hide" : "show" ) ) { + + // If there is dataShow left over from a stopped hide or show + // and we are going to proceed with show, we should pretend to be hidden + if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { + hidden = true; + } else { + continue; + } + } + orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); + + // Any non-fx value stops us from restoring the original display value + } else { + display = undefined; + } + } + + if ( !jQuery.isEmptyObject( orig ) ) { + if ( dataShow ) { + if ( "hidden" in dataShow ) { + hidden = dataShow.hidden; + } + } else { + dataShow = jQuery._data( elem, "fxshow", {} ); + } + + // store state if its toggle - enables .stop().toggle() to "reverse" + if ( toggle ) { + dataShow.hidden = !hidden; + } + if ( hidden ) { + jQuery( elem ).show(); + } else { + anim.done( function() { + jQuery( elem ).hide(); + } ); + } + anim.done( function() { + var prop; + jQuery._removeData( elem, "fxshow" ); + for ( prop in orig ) { + jQuery.style( elem, prop, orig[ prop ] ); + } + } ); + for ( prop in orig ) { + tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); + + if ( !( prop in dataShow ) ) { + dataShow[ prop ] = tween.start; + if ( hidden ) { + tween.end = tween.start; + tween.start = prop === "width" || prop === "height" ? 1 : 0; + } + } + } + + // If this is a noop like .hide().hide(), restore an overwritten display value + } else if ( ( display === "none" ? defaultDisplay( elem.nodeName ) : display ) === "inline" ) { + style.display = display; + } +} + +function propFilter( props, specialEasing ) { + var index, name, easing, value, hooks; + + // camelCase, specialEasing and expand cssHook pass + for ( index in props ) { + name = jQuery.camelCase( index ); + easing = specialEasing[ name ]; + value = props[ index ]; + if ( jQuery.isArray( value ) ) { + easing = value[ 1 ]; + value = props[ index ] = value[ 0 ]; + } + + if ( index !== name ) { + props[ name ] = value; + delete props[ index ]; + } + + hooks = jQuery.cssHooks[ name ]; + if ( hooks && "expand" in hooks ) { + value = hooks.expand( value ); + delete props[ name ]; + + // not quite $.extend, this wont overwrite keys already present. + // also - reusing 'index' from above because we have the correct "name" + for ( index in value ) { + if ( !( index in props ) ) { + props[ index ] = value[ index ]; + specialEasing[ index ] = easing; + } + } + } else { + specialEasing[ name ] = easing; + } + } +} + +function Animation( elem, properties, options ) { + var result, + stopped, + index = 0, + length = Animation.prefilters.length, + deferred = jQuery.Deferred().always( function() { + + // don't match elem in the :animated selector + delete tick.elem; + } ), + tick = function() { + if ( stopped ) { + return false; + } + var currentTime = fxNow || createFxNow(), + remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), + + // Support: Android 2.3 + // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) + temp = remaining / animation.duration || 0, + percent = 1 - temp, + index = 0, + length = animation.tweens.length; + + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( percent ); + } + + deferred.notifyWith( elem, [ animation, percent, remaining ] ); + + if ( percent < 1 && length ) { + return remaining; + } else { + deferred.resolveWith( elem, [ animation ] ); + return false; + } + }, + animation = deferred.promise( { + elem: elem, + props: jQuery.extend( {}, properties ), + opts: jQuery.extend( true, { + specialEasing: {}, + easing: jQuery.easing._default + }, options ), + originalProperties: properties, + originalOptions: options, + startTime: fxNow || createFxNow(), + duration: options.duration, + tweens: [], + createTween: function( prop, end ) { + var tween = jQuery.Tween( elem, animation.opts, prop, end, + animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.tweens.push( tween ); + return tween; + }, + stop: function( gotoEnd ) { + var index = 0, + + // if we are going to the end, we want to run all the tweens + // otherwise we skip this part + length = gotoEnd ? animation.tweens.length : 0; + if ( stopped ) { + return this; + } + stopped = true; + for ( ; index < length ; index++ ) { + animation.tweens[ index ].run( 1 ); + } + + // resolve when we played the last frame + // otherwise, reject + if ( gotoEnd ) { + deferred.notifyWith( elem, [ animation, 1, 0 ] ); + deferred.resolveWith( elem, [ animation, gotoEnd ] ); + } else { + deferred.rejectWith( elem, [ animation, gotoEnd ] ); + } + return this; + } + } ), + props = animation.props; + + propFilter( props, animation.opts.specialEasing ); + + for ( ; index < length ; index++ ) { + result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); + if ( result ) { + if ( jQuery.isFunction( result.stop ) ) { + jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = + jQuery.proxy( result.stop, result ); + } + return result; + } + } + + jQuery.map( props, createTween, animation ); + + if ( jQuery.isFunction( animation.opts.start ) ) { + animation.opts.start.call( elem, animation ); + } + + jQuery.fx.timer( + jQuery.extend( tick, { + elem: elem, + anim: animation, + queue: animation.opts.queue + } ) + ); + + // attach callbacks from options + return animation.progress( animation.opts.progress ) + .done( animation.opts.done, animation.opts.complete ) + .fail( animation.opts.fail ) + .always( animation.opts.always ); +} + +jQuery.Animation = jQuery.extend( Animation, { + + tweeners: { + "*": [ function( prop, value ) { + var tween = this.createTween( prop, value ); + adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); + return tween; + } ] + }, + + tweener: function( props, callback ) { + if ( jQuery.isFunction( props ) ) { + callback = props; + props = [ "*" ]; + } else { + props = props.match( rnotwhite ); + } + + var prop, + index = 0, + length = props.length; + + for ( ; index < length ; index++ ) { + prop = props[ index ]; + Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; + Animation.tweeners[ prop ].unshift( callback ); + } + }, + + prefilters: [ defaultPrefilter ], + + prefilter: function( callback, prepend ) { + if ( prepend ) { + Animation.prefilters.unshift( callback ); + } else { + Animation.prefilters.push( callback ); + } + } +} ); + +jQuery.speed = function( speed, easing, fn ) { + var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { + complete: fn || !fn && easing || + jQuery.isFunction( speed ) && speed, + duration: speed, + easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing + }; + + opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : + opt.duration in jQuery.fx.speeds ? + jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default; + + // normalize opt.queue - true/undefined/null -> "fx" + if ( opt.queue == null || opt.queue === true ) { + opt.queue = "fx"; + } + + // Queueing + opt.old = opt.complete; + + opt.complete = function() { + if ( jQuery.isFunction( opt.old ) ) { + opt.old.call( this ); + } + + if ( opt.queue ) { + jQuery.dequeue( this, opt.queue ); + } + }; + + return opt; +}; + +jQuery.fn.extend( { + fadeTo: function( speed, to, easing, callback ) { + + // show any hidden elements after setting opacity to 0 + return this.filter( isHidden ).css( "opacity", 0 ).show() + + // animate to the value specified + .end().animate( { opacity: to }, speed, easing, callback ); + }, + animate: function( prop, speed, easing, callback ) { + var empty = jQuery.isEmptyObject( prop ), + optall = jQuery.speed( speed, easing, callback ), + doAnimation = function() { + + // Operate on a copy of prop so per-property easing won't be lost + var anim = Animation( this, jQuery.extend( {}, prop ), optall ); + + // Empty animations, or finishing resolves immediately + if ( empty || jQuery._data( this, "finish" ) ) { + anim.stop( true ); + } + }; + doAnimation.finish = doAnimation; + + return empty || optall.queue === false ? + this.each( doAnimation ) : + this.queue( optall.queue, doAnimation ); + }, + stop: function( type, clearQueue, gotoEnd ) { + var stopQueue = function( hooks ) { + var stop = hooks.stop; + delete hooks.stop; + stop( gotoEnd ); + }; + + if ( typeof type !== "string" ) { + gotoEnd = clearQueue; + clearQueue = type; + type = undefined; + } + if ( clearQueue && type !== false ) { + this.queue( type || "fx", [] ); + } + + return this.each( function() { + var dequeue = true, + index = type != null && type + "queueHooks", + timers = jQuery.timers, + data = jQuery._data( this ); + + if ( index ) { + if ( data[ index ] && data[ index ].stop ) { + stopQueue( data[ index ] ); + } + } else { + for ( index in data ) { + if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { + stopQueue( data[ index ] ); + } + } + } + + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && + ( type == null || timers[ index ].queue === type ) ) { + + timers[ index ].anim.stop( gotoEnd ); + dequeue = false; + timers.splice( index, 1 ); + } + } + + // start the next in the queue if the last step wasn't forced + // timers currently will call their complete callbacks, which will dequeue + // but only if they were gotoEnd + if ( dequeue || !gotoEnd ) { + jQuery.dequeue( this, type ); + } + } ); + }, + finish: function( type ) { + if ( type !== false ) { + type = type || "fx"; + } + return this.each( function() { + var index, + data = jQuery._data( this ), + queue = data[ type + "queue" ], + hooks = data[ type + "queueHooks" ], + timers = jQuery.timers, + length = queue ? queue.length : 0; + + // enable finishing flag on private data + data.finish = true; + + // empty the queue first + jQuery.queue( this, type, [] ); + + if ( hooks && hooks.stop ) { + hooks.stop.call( this, true ); + } + + // look for any active animations, and finish them + for ( index = timers.length; index--; ) { + if ( timers[ index ].elem === this && timers[ index ].queue === type ) { + timers[ index ].anim.stop( true ); + timers.splice( index, 1 ); + } + } + + // look for any animations in the old queue and finish them + for ( index = 0; index < length; index++ ) { + if ( queue[ index ] && queue[ index ].finish ) { + queue[ index ].finish.call( this ); + } + } + + // turn off finishing flag + delete data.finish; + } ); + } +} ); + +jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { + var cssFn = jQuery.fn[ name ]; + jQuery.fn[ name ] = function( speed, easing, callback ) { + return speed == null || typeof speed === "boolean" ? + cssFn.apply( this, arguments ) : + this.animate( genFx( name, true ), speed, easing, callback ); + }; +} ); + +// Generate shortcuts for custom animations +jQuery.each( { + slideDown: genFx( "show" ), + slideUp: genFx( "hide" ), + slideToggle: genFx( "toggle" ), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" } +}, function( name, props ) { + jQuery.fn[ name ] = function( speed, easing, callback ) { + return this.animate( props, speed, easing, callback ); + }; +} ); + +jQuery.timers = []; +jQuery.fx.tick = function() { + var timer, + timers = jQuery.timers, + i = 0; + + fxNow = jQuery.now(); + + for ( ; i < timers.length; i++ ) { + timer = timers[ i ]; + + // Checks the timer has not already been removed + if ( !timer() && timers[ i ] === timer ) { + timers.splice( i--, 1 ); + } + } + + if ( !timers.length ) { + jQuery.fx.stop(); + } + fxNow = undefined; +}; + +jQuery.fx.timer = function( timer ) { + jQuery.timers.push( timer ); + if ( timer() ) { + jQuery.fx.start(); + } else { + jQuery.timers.pop(); + } +}; + +jQuery.fx.interval = 13; + +jQuery.fx.start = function() { + if ( !timerId ) { + timerId = window.setInterval( jQuery.fx.tick, jQuery.fx.interval ); + } +}; + +jQuery.fx.stop = function() { + window.clearInterval( timerId ); + timerId = null; +}; + +jQuery.fx.speeds = { + slow: 600, + fast: 200, + + // Default speed + _default: 400 +}; + + +// Based off of the plugin by Clint Helfers, with permission. +// http://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/ +jQuery.fn.delay = function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = window.setTimeout( next, time ); + hooks.stop = function() { + window.clearTimeout( timeout ); + }; + } ); +}; + + +( function() { + var a, + input = document.createElement( "input" ), + div = document.createElement( "div" ), + select = document.createElement( "select" ), + opt = select.appendChild( document.createElement( "option" ) ); + + // Setup + div = document.createElement( "div" ); + div.setAttribute( "className", "t" ); + div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>"; + a = div.getElementsByTagName( "a" )[ 0 ]; + + // Support: Windows Web Apps (WWA) + // `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "checkbox" ); + div.appendChild( input ); + + a = div.getElementsByTagName( "a" )[ 0 ]; + + // First batch of tests. + a.style.cssText = "top:1px"; + + // Test setAttribute on camelCase class. + // If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute( "style" ) ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute( "href" ) === "/a"; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement( "form" ).enctype; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE8 only + // Check if we can trust getAttribute("value") + input = document.createElement( "input" ); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; +} )(); + + +var rreturn = /\r/g, + rspaces = /[\x20\t\r\n\f]+/g; + +jQuery.fn.extend( { + val: function( value ) { + var hooks, ret, isFunction, + elem = this[ 0 ]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || + jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( + hooks && + "get" in hooks && + ( ret = hooks.get( elem, "value" ) ) !== undefined + ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + + // handle most common string cases + ret.replace( rreturn, "" ) : + + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each( function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map( val, function( value ) { + return value == null ? "" : value + ""; + } ); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + } ); + } +} ); + +jQuery.extend( { + valHooks: { + option: { + get: function( elem ) { + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + + // Support: IE10-11+ + // option.text throws exceptions (#14686, #14858) + // Strip and collapse whitespace + // https://html.spec.whatwg.org/#strip-and-collapse-whitespace + jQuery.trim( jQuery.text( elem ) ).replace( rspaces, " " ); + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + + // Don't return options that are disabled or in a disabled optgroup + ( support.optDisabled ? + !option.disabled : + option.getAttribute( "disabled" ) === null ) && + ( !option.parentNode.disabled || + !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + + if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 ) { + + // Support: IE6 + // When new option element is added to select box we need to + // force reflow of newly added node in order to workaround delay + // of initialization properties + try { + option.selected = optionSet = true; + + } catch ( _ ) { + + // Will be executed only in IE6 + option.scrollHeight; + } + + } else { + option.selected = false; + } + } + + // Force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + + return options; + } + } + } +} ); + +// Radios and checkboxes getter/setter +jQuery.each( [ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); + } + } + }; + if ( !support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + return elem.getAttribute( "value" ) === null ? "on" : elem.value; + }; + } +} ); + + + + +var nodeHook, boolHook, + attrHandle = jQuery.expr.attrHandle, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = support.getSetAttribute, + getSetInput = support.input; + +jQuery.fn.extend( { + attr: function( name, value ) { + return access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each( function() { + jQuery.removeAttr( this, name ); + } ); + } +} ); + +jQuery.extend( { + attr: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set attributes on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === "undefined" ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + if ( value === null ) { + jQuery.removeAttr( elem, name ); + return; + } + + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + elem.setAttribute( name, value + "" ); + return value; + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? undefined : ret; + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !support.radioValue && value === "radio" && + jQuery.nodeName( elem, "input" ) ) { + + // Setting the type on a radio button after the value resets the value in IE8-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( ( name = attrNames[ i++ ] ) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + } +} ); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + } else { + + // Support: IE<9 + // Use defaultChecked and defaultSelected for oldIE + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + return name; + } +}; + +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = attrHandle[ name ] || jQuery.find.attr; + + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + attrHandle[ name ] = function( elem, name, isXML ) { + var ret, handle; + if ( !isXML ) { + + // Avoid an infinite loop by temporarily removing this function from the getter + handle = attrHandle[ name ]; + attrHandle[ name ] = ret; + ret = getter( elem, name, isXML ) != null ? + name.toLowerCase() : + null; + attrHandle[ name ] = handle; + } + return ret; + }; + } else { + attrHandle[ name ] = function( elem, name, isXML ) { + if ( !isXML ) { + return elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + } + }; + } +} ); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + ( ret = elem.ownerDocument.createAttribute( name ) ) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + if ( name === "value" || value === elem.getAttribute( name ) ) { + return value; + } + } + }; + + // Some attributes are constructed with empty-string values when not defined + attrHandle.id = attrHandle.name = attrHandle.coords = + function( elem, name, isXML ) { + var ret; + if ( !isXML ) { + return ( ret = elem.getAttributeNode( name ) ) && ret.value !== "" ? + ret.value : + null; + } + }; + + // Fixing value retrieval on a button requires this module + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + if ( ret && ret.specified ) { + return ret.value; + } + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each( [ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + } ); +} + +if ( !support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case sensitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + + + + +var rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i; + +jQuery.fn.extend( { + prop: function( name, value ) { + return access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each( function() { + + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch ( e ) {} + } ); + } +} ); + +jQuery.extend( { + prop: function( elem, name, value ) { + var ret, hooks, + nType = elem.nodeType; + + // Don't get/set properties on text, comment and attribute nodes + if ( nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + if ( hooks && "set" in hooks && + ( ret = hooks.set( elem, value, name ) ) !== undefined ) { + return ret; + } + + return ( elem[ name ] = value ); + } + + if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { + return ret; + } + + return elem[ name ]; + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + + // elem.tabIndex doesn't always return the + // correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || + rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + } +} ); + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !support.hrefNormalized ) { + + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each( [ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + } ); +} + +// Support: Safari, IE9+ +// Accessing the selectedIndex property +// forces the browser to respect setting selected +// on the option +// The getter ensures a default option is selected +// when in an optgroup +if ( !support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + }, + set: function( elem ) { + var parent = elem.parentNode; + if ( parent ) { + parent.selectedIndex; + + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + } + }; +} + +jQuery.each( [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +} ); + +// IE6/7 call enctype encoding +if ( !support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + + + + +var rclass = /[\t\r\n\f]/g; + +function getClass( elem ) { + return jQuery.attr( elem, "class" ) || ""; +} + +jQuery.fn.extend( { + addClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnotwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + cur = elem.nodeType === 1 && + ( " " + curValue + " " ).replace( rclass, " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + + // only assign if different to avoid unneeded rendering. + finalValue = jQuery.trim( cur ); + if ( curValue !== finalValue ) { + jQuery.attr( elem, "class", finalValue ); + } + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, curValue, clazz, j, finalValue, + i = 0; + + if ( jQuery.isFunction( value ) ) { + return this.each( function( j ) { + jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); + } ); + } + + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnotwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { + curValue = getClass( elem ); + + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && + ( " " + curValue + " " ).replace( rclass, " " ); + + if ( cur ) { + j = 0; + while ( ( clazz = classes[ j++ ] ) ) { + + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) > -1 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + + // Only assign if different to avoid unneeded rendering. + finalValue = jQuery.trim( cur ); + if ( curValue !== finalValue ) { + jQuery.attr( elem, "class", finalValue ); + } + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each( function( i ) { + jQuery( this ).toggleClass( + value.call( this, i, getClass( this ), stateVal ), + stateVal + ); + } ); + } + + return this.each( function() { + var className, i, self, classNames; + + if ( type === "string" ) { + + // Toggle individual class names + i = 0; + self = jQuery( this ); + classNames = value.match( rnotwhite ) || []; + + while ( ( className = classNames[ i++ ] ) ) { + + // Check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( value === undefined || type === "boolean" ) { + className = getClass( this ); + if ( className ) { + + // store className if set + jQuery._data( this, "__className__", className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + jQuery.attr( this, "class", + className || value === false ? + "" : + jQuery._data( this, "__className__" ) || "" + ); + } + } ); + }, + + hasClass: function( selector ) { + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + getClass( elem ) + " " ).replace( rclass, " " ) + .indexOf( className ) > -1 + ) { + return true; + } + } + + return false; + } +} ); + + + + +// Return jQuery for attributes-only inclusion + + +jQuery.each( ( "blur focus focusin focusout load resize scroll unload click dblclick " + + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + + "change select submit keydown keypress keyup error contextmenu" ).split( " " ), + function( i, name ) { + + // Handle event binding + jQuery.fn[ name ] = function( data, fn ) { + return arguments.length > 0 ? + this.on( name, null, data, fn ) : + this.trigger( name ); + }; +} ); + +jQuery.fn.extend( { + hover: function( fnOver, fnOut ) { + return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); + } +} ); + + +var location = window.location; + +var nonce = jQuery.now(); + +var rquery = ( /\?/ ); + + + +var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g; + +jQuery.parseJSON = function( data ) { + + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + + // Support: Android 2.3 + // Workaround failure to string-cast null input + return window.JSON.parse( data + "" ); + } + + var requireNonComma, + depth = null, + str = jQuery.trim( data + "" ); + + // Guard against invalid (and possibly dangerous) input by ensuring that nothing remains + // after removing valid tokens + return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) { + + // Force termination if we see a misplaced comma + if ( requireNonComma && comma ) { + depth = 0; + } + + // Perform no more replacements after returning to outermost depth + if ( depth === 0 ) { + return token; + } + + // Commas must not follow "[", "{", or "," + requireNonComma = open || comma; + + // Determine new depth + // array/object open ("[" or "{"): depth += true - false (increment) + // array/object close ("]" or "}"): depth += false - true (decrement) + // other cases ("," or primitive): depth += true - true (numeric cast) + depth += !close - !open; + + // Remove this token + return ""; + } ) ) ? + ( Function( "return " + str ) )() : + jQuery.error( "Invalid JSON: " + data ); +}; + + +// Cross-browser xml parsing +jQuery.parseXML = function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new window.DOMParser(); + xml = tmp.parseFromString( data, "text/xml" ); + } else { // IE + xml = new window.ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch ( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; +}; + + +var + rhash = /#.*$/, + rts = /([?&])_=[^&]*/, + + // IE leaves an \r character at EOL + rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, + + // #7653, #8125, #8152: local protocol detection + rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, + rnoContent = /^(?:GET|HEAD)$/, + rprotocol = /^\/\//, + rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/, + + /* Prefilters + * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) + * 2) These are called: + * - BEFORE asking for a transport + * - AFTER param serialization (s.data is a string if s.processData is true) + * 3) key is the dataType + * 4) the catchall symbol "*" can be used + * 5) execution will start with transport dataType and THEN continue down to "*" if needed + */ + prefilters = {}, + + /* Transports bindings + * 1) key is the dataType + * 2) the catchall symbol "*" can be used + * 3) selection will start with transport dataType and THEN go to "*" if needed + */ + transports = {}, + + // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression + allTypes = "*/".concat( "*" ), + + // Document location + ajaxLocation = location.href, + + // Segment location into parts + ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || []; + +// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport +function addToPrefiltersOrTransports( structure ) { + + // dataTypeExpression is optional and defaults to "*" + return function( dataTypeExpression, func ) { + + if ( typeof dataTypeExpression !== "string" ) { + func = dataTypeExpression; + dataTypeExpression = "*"; + } + + var dataType, + i = 0, + dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || []; + + if ( jQuery.isFunction( func ) ) { + + // For each dataType in the dataTypeExpression + while ( ( dataType = dataTypes[ i++ ] ) ) { + + // Prepend if requested + if ( dataType.charAt( 0 ) === "+" ) { + dataType = dataType.slice( 1 ) || "*"; + ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); + + // Otherwise append + } else { + ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); + } + } + } + }; +} + +// Base inspection function for prefilters and transports +function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { + + var inspected = {}, + seekingTransport = ( structure === transports ); + + function inspect( dataType ) { + var selected; + inspected[ dataType ] = true; + jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { + var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); + if ( typeof dataTypeOrTransport === "string" && + !seekingTransport && !inspected[ dataTypeOrTransport ] ) { + + options.dataTypes.unshift( dataTypeOrTransport ); + inspect( dataTypeOrTransport ); + return false; + } else if ( seekingTransport ) { + return !( selected = dataTypeOrTransport ); + } + } ); + return selected; + } + + return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); +} + +// A special extend for ajax options +// that takes "flat" options (not to be deep extended) +// Fixes #9887 +function ajaxExtend( target, src ) { + var deep, key, + flatOptions = jQuery.ajaxSettings.flatOptions || {}; + + for ( key in src ) { + if ( src[ key ] !== undefined ) { + ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; + } + } + if ( deep ) { + jQuery.extend( true, target, deep ); + } + + return target; +} + +/* Handles responses to an ajax request: + * - finds the right dataType (mediates between content-type and expected dataType) + * - returns the corresponding response + */ +function ajaxHandleResponses( s, jqXHR, responses ) { + var firstDataType, ct, finalDataType, type, + contents = s.contents, + dataTypes = s.dataTypes; + + // Remove auto dataType and get content-type in the process + while ( dataTypes[ 0 ] === "*" ) { + dataTypes.shift(); + if ( ct === undefined ) { + ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); + } + } + + // Check if we're dealing with a known content-type + if ( ct ) { + for ( type in contents ) { + if ( contents[ type ] && contents[ type ].test( ct ) ) { + dataTypes.unshift( type ); + break; + } + } + } + + // Check to see if we have a response for the expected dataType + if ( dataTypes[ 0 ] in responses ) { + finalDataType = dataTypes[ 0 ]; + } else { + + // Try convertible dataTypes + for ( type in responses ) { + if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { + finalDataType = type; + break; + } + if ( !firstDataType ) { + firstDataType = type; + } + } + + // Or just use first one + finalDataType = finalDataType || firstDataType; + } + + // If we found a dataType + // We add the dataType to the list if needed + // and return the corresponding response + if ( finalDataType ) { + if ( finalDataType !== dataTypes[ 0 ] ) { + dataTypes.unshift( finalDataType ); + } + return responses[ finalDataType ]; + } +} + +/* Chain conversions given the request and the original response + * Also sets the responseXXX fields on the jqXHR instance + */ +function ajaxConvert( s, response, jqXHR, isSuccess ) { + var conv2, current, conv, tmp, prev, + converters = {}, + + // Work with a copy of dataTypes in case we need to modify it for conversion + dataTypes = s.dataTypes.slice(); + + // Create converters map with lowercased keys + if ( dataTypes[ 1 ] ) { + for ( conv in s.converters ) { + converters[ conv.toLowerCase() ] = s.converters[ conv ]; + } + } + + current = dataTypes.shift(); + + // Convert to each sequential dataType + while ( current ) { + + if ( s.responseFields[ current ] ) { + jqXHR[ s.responseFields[ current ] ] = response; + } + + // Apply the dataFilter if provided + if ( !prev && isSuccess && s.dataFilter ) { + response = s.dataFilter( response, s.dataType ); + } + + prev = current; + current = dataTypes.shift(); + + if ( current ) { + + // There's only work to do if current dataType is non-auto + if ( current === "*" ) { + + current = prev; + + // Convert response if prev dataType is non-auto and differs from current + } else if ( prev !== "*" && prev !== current ) { + + // Seek a direct converter + conv = converters[ prev + " " + current ] || converters[ "* " + current ]; + + // If none found, seek a pair + if ( !conv ) { + for ( conv2 in converters ) { + + // If conv2 outputs current + tmp = conv2.split( " " ); + if ( tmp[ 1 ] === current ) { + + // If prev can be converted to accepted input + conv = converters[ prev + " " + tmp[ 0 ] ] || + converters[ "* " + tmp[ 0 ] ]; + if ( conv ) { + + // Condense equivalence converters + if ( conv === true ) { + conv = converters[ conv2 ]; + + // Otherwise, insert the intermediate dataType + } else if ( converters[ conv2 ] !== true ) { + current = tmp[ 0 ]; + dataTypes.unshift( tmp[ 1 ] ); + } + break; + } + } + } + } + + // Apply converter (if not an equivalence) + if ( conv !== true ) { + + // Unless errors are allowed to bubble, catch and return them + if ( conv && s[ "throws" ] ) { // jscs:ignore requireDotNotation + response = conv( response ); + } else { + try { + response = conv( response ); + } catch ( e ) { + return { + state: "parsererror", + error: conv ? e : "No conversion from " + prev + " to " + current + }; + } + } + } + } + } + } + + return { state: "success", data: response }; +} + +jQuery.extend( { + + // Counter for holding the number of active queries + active: 0, + + // Last-Modified header cache for next request + lastModified: {}, + etag: {}, + + ajaxSettings: { + url: ajaxLocation, + type: "GET", + isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ), + global: true, + processData: true, + async: true, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + /* + timeout: 0, + data: null, + dataType: null, + username: null, + password: null, + cache: null, + throws: false, + traditional: false, + headers: {}, + */ + + accepts: { + "*": allTypes, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + + // Data converters + // Keys separate source (or catchall "*") and destination types with a single space + converters: { + + // Convert anything to text + "* text": String, + + // Text to html (true = no transformation) + "text html": true, + + // Evaluate text as a json expression + "text json": jQuery.parseJSON, + + // Parse text as xml + "text xml": jQuery.parseXML + }, + + // For options that shouldn't be deep extended: + // you can add your own custom options here if + // and when you create one that shouldn't be + // deep extended (see ajaxExtend) + flatOptions: { + url: true, + context: true + } + }, + + // Creates a full fledged settings object into target + // with both ajaxSettings and settings fields. + // If target is omitted, writes into ajaxSettings. + ajaxSetup: function( target, settings ) { + return settings ? + + // Building a settings object + ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : + + // Extending ajaxSettings + ajaxExtend( jQuery.ajaxSettings, target ); + }, + + ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), + ajaxTransport: addToPrefiltersOrTransports( transports ), + + // Main method + ajax: function( url, options ) { + + // If url is an object, simulate pre-1.5 signature + if ( typeof url === "object" ) { + options = url; + url = undefined; + } + + // Force options to be an object + options = options || {}; + + var + + // Cross-domain detection vars + parts, + + // Loop variable + i, + + // URL without anti-cache param + cacheURL, + + // Response headers as string + responseHeadersString, + + // timeout handle + timeoutTimer, + + // To know if global events are to be dispatched + fireGlobals, + + transport, + + // Response headers + responseHeaders, + + // Create the final options object + s = jQuery.ajaxSetup( {}, options ), + + // Callbacks context + callbackContext = s.context || s, + + // Context for global events is callbackContext if it is a DOM node or jQuery collection + globalEventContext = s.context && + ( callbackContext.nodeType || callbackContext.jquery ) ? + jQuery( callbackContext ) : + jQuery.event, + + // Deferreds + deferred = jQuery.Deferred(), + completeDeferred = jQuery.Callbacks( "once memory" ), + + // Status-dependent callbacks + statusCode = s.statusCode || {}, + + // Headers (they are sent all at once) + requestHeaders = {}, + requestHeadersNames = {}, + + // The jqXHR state + state = 0, + + // Default abort message + strAbort = "canceled", + + // Fake xhr + jqXHR = { + readyState: 0, + + // Builds headers hashtable if needed + getResponseHeader: function( key ) { + var match; + if ( state === 2 ) { + if ( !responseHeaders ) { + responseHeaders = {}; + while ( ( match = rheaders.exec( responseHeadersString ) ) ) { + responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + } + } + match = responseHeaders[ key.toLowerCase() ]; + } + return match == null ? null : match; + }, + + // Raw string + getAllResponseHeaders: function() { + return state === 2 ? responseHeadersString : null; + }, + + // Caches the header + setRequestHeader: function( name, value ) { + var lname = name.toLowerCase(); + if ( !state ) { + name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; + requestHeaders[ name ] = value; + } + return this; + }, + + // Overrides response content-type header + overrideMimeType: function( type ) { + if ( !state ) { + s.mimeType = type; + } + return this; + }, + + // Status-dependent callbacks + statusCode: function( map ) { + var code; + if ( map ) { + if ( state < 2 ) { + for ( code in map ) { + + // Lazy-add the new callback in a way that preserves old ones + statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; + } + } else { + + // Execute the appropriate callbacks + jqXHR.always( map[ jqXHR.status ] ); + } + } + return this; + }, + + // Cancel the request + abort: function( statusText ) { + var finalText = statusText || strAbort; + if ( transport ) { + transport.abort( finalText ); + } + done( 0, finalText ); + return this; + } + }; + + // Attach deferreds + deferred.promise( jqXHR ).complete = completeDeferred.add; + jqXHR.success = jqXHR.done; + jqXHR.error = jqXHR.fail; + + // Remove hash character (#7531: and string promotion) + // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) + // Handle falsy url in the settings object (#10093: consistency with old signature) + // We also use the url parameter if available + s.url = ( ( url || s.url || ajaxLocation ) + "" ) + .replace( rhash, "" ) + .replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); + + // Alias method option to type as per ticket #12004 + s.type = options.method || options.type || s.method || s.type; + + // Extract dataTypes list + s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ]; + + // A cross-domain request is in order when we have a protocol:host:port mismatch + if ( s.crossDomain == null ) { + parts = rurl.exec( s.url.toLowerCase() ); + s.crossDomain = !!( parts && + ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] || + ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !== + ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) ) + ); + } + + // Convert data if not already a string + if ( s.data && s.processData && typeof s.data !== "string" ) { + s.data = jQuery.param( s.data, s.traditional ); + } + + // Apply prefilters + inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); + + // If request was aborted inside a prefilter, stop there + if ( state === 2 ) { + return jqXHR; + } + + // We can fire global events as of now if asked to + // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) + fireGlobals = jQuery.event && s.global; + + // Watch for a new set of requests + if ( fireGlobals && jQuery.active++ === 0 ) { + jQuery.event.trigger( "ajaxStart" ); + } + + // Uppercase the type + s.type = s.type.toUpperCase(); + + // Determine if request has content + s.hasContent = !rnoContent.test( s.type ); + + // Save the URL in case we're toying with the If-Modified-Since + // and/or If-None-Match header later on + cacheURL = s.url; + + // More options handling for requests with no content + if ( !s.hasContent ) { + + // If data is available, append data to url + if ( s.data ) { + cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data ); + + // #9682: remove data so that it's not used in an eventual retry + delete s.data; + } + + // Add anti-cache in url if needed + if ( s.cache === false ) { + s.url = rts.test( cacheURL ) ? + + // If there is already a '_' parameter, set its value + cacheURL.replace( rts, "$1_=" + nonce++ ) : + + // Otherwise add one to the end + cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++; + } + } + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + if ( jQuery.lastModified[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); + } + if ( jQuery.etag[ cacheURL ] ) { + jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); + } + } + + // Set the correct header, if data is being sent + if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { + jqXHR.setRequestHeader( "Content-Type", s.contentType ); + } + + // Set the Accepts header for the server, depending on the dataType + jqXHR.setRequestHeader( + "Accept", + s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? + s.accepts[ s.dataTypes[ 0 ] ] + + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : + s.accepts[ "*" ] + ); + + // Check for headers option + for ( i in s.headers ) { + jqXHR.setRequestHeader( i, s.headers[ i ] ); + } + + // Allow custom headers/mimetypes and early abort + if ( s.beforeSend && + ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { + + // Abort if not done already and return + return jqXHR.abort(); + } + + // aborting is no longer a cancellation + strAbort = "abort"; + + // Install callbacks on deferreds + for ( i in { success: 1, error: 1, complete: 1 } ) { + jqXHR[ i ]( s[ i ] ); + } + + // Get transport + transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); + + // If no transport, we auto-abort + if ( !transport ) { + done( -1, "No Transport" ); + } else { + jqXHR.readyState = 1; + + // Send global event + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); + } + + // If request was aborted inside ajaxSend, stop there + if ( state === 2 ) { + return jqXHR; + } + + // Timeout + if ( s.async && s.timeout > 0 ) { + timeoutTimer = window.setTimeout( function() { + jqXHR.abort( "timeout" ); + }, s.timeout ); + } + + try { + state = 1; + transport.send( requestHeaders, done ); + } catch ( e ) { + + // Propagate exception as error if not done + if ( state < 2 ) { + done( -1, e ); + + // Simply rethrow otherwise + } else { + throw e; + } + } + } + + // Callback for when everything is done + function done( status, nativeStatusText, responses, headers ) { + var isSuccess, success, error, response, modified, + statusText = nativeStatusText; + + // Called once + if ( state === 2 ) { + return; + } + + // State is "done" now + state = 2; + + // Clear timeout if it exists + if ( timeoutTimer ) { + window.clearTimeout( timeoutTimer ); + } + + // Dereference transport for early garbage collection + // (no matter how long the jqXHR object will be used) + transport = undefined; + + // Cache response headers + responseHeadersString = headers || ""; + + // Set readyState + jqXHR.readyState = status > 0 ? 4 : 0; + + // Determine if successful + isSuccess = status >= 200 && status < 300 || status === 304; + + // Get response data + if ( responses ) { + response = ajaxHandleResponses( s, jqXHR, responses ); + } + + // Convert no matter what (that way responseXXX fields are always set) + response = ajaxConvert( s, response, jqXHR, isSuccess ); + + // If successful, handle type chaining + if ( isSuccess ) { + + // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. + if ( s.ifModified ) { + modified = jqXHR.getResponseHeader( "Last-Modified" ); + if ( modified ) { + jQuery.lastModified[ cacheURL ] = modified; + } + modified = jqXHR.getResponseHeader( "etag" ); + if ( modified ) { + jQuery.etag[ cacheURL ] = modified; + } + } + + // if no content + if ( status === 204 || s.type === "HEAD" ) { + statusText = "nocontent"; + + // if not modified + } else if ( status === 304 ) { + statusText = "notmodified"; + + // If we have data, let's convert it + } else { + statusText = response.state; + success = response.data; + error = response.error; + isSuccess = !error; + } + } else { + + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if ( status || !statusText ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } + } + + // Set data for the fake xhr object + jqXHR.status = status; + jqXHR.statusText = ( nativeStatusText || statusText ) + ""; + + // Success/Error + if ( isSuccess ) { + deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); + } else { + deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); + } + + // Status-dependent callbacks + jqXHR.statusCode( statusCode ); + statusCode = undefined; + + if ( fireGlobals ) { + globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", + [ jqXHR, s, isSuccess ? success : error ] ); + } + + // Complete + completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); + + if ( fireGlobals ) { + globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); + + // Handle the global AJAX counter + if ( !( --jQuery.active ) ) { + jQuery.event.trigger( "ajaxStop" ); + } + } + } + + return jqXHR; + }, + + getJSON: function( url, data, callback ) { + return jQuery.get( url, data, callback, "json" ); + }, + + getScript: function( url, callback ) { + return jQuery.get( url, undefined, callback, "script" ); + } +} ); + +jQuery.each( [ "get", "post" ], function( i, method ) { + jQuery[ method ] = function( url, data, callback, type ) { + + // shift arguments if data argument was omitted + if ( jQuery.isFunction( data ) ) { + type = type || callback; + callback = data; + data = undefined; + } + + // The url can be an options object (which then must have .url) + return jQuery.ajax( jQuery.extend( { + url: url, + type: method, + dataType: type, + data: data, + success: callback + }, jQuery.isPlainObject( url ) && url ) ); + }; +} ); + + +jQuery._evalUrl = function( url ) { + return jQuery.ajax( { + url: url, + + // Make this explicit, since user can override this through ajaxSetup (#11264) + type: "GET", + dataType: "script", + cache: true, + async: false, + global: false, + "throws": true + } ); +}; + + +jQuery.fn.extend( { + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapAll( html.call( this, i ) ); + } ); + } + + if ( this[ 0 ] ) { + + // The elements to wrap the target around + var wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); + + if ( this[ 0 ].parentNode ) { + wrap.insertBefore( this[ 0 ] ); + } + + wrap.map( function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + } ).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each( function( i ) { + jQuery( this ).wrapInner( html.call( this, i ) ); + } ); + } + + return this.each( function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + } ); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each( function( i ) { + jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html ); + } ); + }, + + unwrap: function() { + return this.parent().each( function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + } ).end(); + } +} ); + + +function getDisplay( elem ) { + return elem.style && elem.style.display || jQuery.css( elem, "display" ); +} + +function filterHidden( elem ) { + + // Disconnected elements are considered hidden + if ( !jQuery.contains( elem.ownerDocument || document, elem ) ) { + return true; + } + while ( elem && elem.nodeType === 1 ) { + if ( getDisplay( elem ) === "none" || elem.type === "hidden" ) { + return true; + } + elem = elem.parentNode; + } + return false; +} + +jQuery.expr.filters.hidden = function( elem ) { + + // Support: Opera <= 12.12 + // Opera reports offsetWidths and offsetHeights less than zero on some elements + return support.reliableHiddenOffsets() ? + ( elem.offsetWidth <= 0 && elem.offsetHeight <= 0 && + !elem.getClientRects().length ) : + filterHidden( elem ); +}; + +jQuery.expr.filters.visible = function( elem ) { + return !jQuery.expr.filters.hidden( elem ); +}; + + + + +var r20 = /%20/g, + rbracket = /\[\]$/, + rCRLF = /\r?\n/g, + rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, + rsubmittable = /^(?:input|select|textarea|keygen)/i; + +function buildParams( prefix, obj, traditional, add ) { + var name; + + if ( jQuery.isArray( obj ) ) { + + // Serialize array item. + jQuery.each( obj, function( i, v ) { + if ( traditional || rbracket.test( prefix ) ) { + + // Treat each array item as a scalar. + add( prefix, v ); + + } else { + + // Item is non-scalar (array or object), encode its numeric index. + buildParams( + prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", + v, + traditional, + add + ); + } + } ); + + } else if ( !traditional && jQuery.type( obj ) === "object" ) { + + // Serialize object item. + for ( name in obj ) { + buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); + } + + } else { + + // Serialize scalar item. + add( prefix, obj ); + } +} + +// Serialize an array of form elements or a set of +// key/values into a query string +jQuery.param = function( a, traditional ) { + var prefix, + s = [], + add = function( key, value ) { + + // If value is a function, invoke it and return its value + value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value ); + s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); + }; + + // Set traditional to true for jQuery <= 1.3.2 behavior. + if ( traditional === undefined ) { + traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional; + } + + // If an array was passed in, assume that it is an array of form elements. + if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { + + // Serialize the form elements + jQuery.each( a, function() { + add( this.name, this.value ); + } ); + + } else { + + // If traditional, encode the "old" way (the way 1.3.2 or older + // did it), otherwise encode params recursively. + for ( prefix in a ) { + buildParams( prefix, a[ prefix ], traditional, add ); + } + } + + // Return the resulting serialization + return s.join( "&" ).replace( r20, "+" ); +}; + +jQuery.fn.extend( { + serialize: function() { + return jQuery.param( this.serializeArray() ); + }, + serializeArray: function() { + return this.map( function() { + + // Can add propHook for "elements" to filter or add form elements + var elements = jQuery.prop( this, "elements" ); + return elements ? jQuery.makeArray( elements ) : this; + } ) + .filter( function() { + var type = this.type; + + // Use .is(":disabled") so that fieldset[disabled] works + return this.name && !jQuery( this ).is( ":disabled" ) && + rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && + ( this.checked || !rcheckableType.test( type ) ); + } ) + .map( function( i, elem ) { + var val = jQuery( this ).val(); + + return val == null ? + null : + jQuery.isArray( val ) ? + jQuery.map( val, function( val ) { + return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ) : + { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; + } ).get(); + } +} ); + + +// Create the request object +// (This is still attached to ajaxSettings for backward compatibility) +jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ? + + // Support: IE6-IE8 + function() { + + // XHR cannot access local files, always use ActiveX for that case + if ( this.isLocal ) { + return createActiveXHR(); + } + + // Support: IE 9-11 + // IE seems to error on cross-domain PATCH requests when ActiveX XHR + // is used. In IE 9+ always use the native XHR. + // Note: this condition won't catch Edge as it doesn't define + // document.documentMode but it also doesn't support ActiveX so it won't + // reach this code. + if ( document.documentMode > 8 ) { + return createStandardXHR(); + } + + // Support: IE<9 + // oldIE XHR does not support non-RFC2616 methods (#13240) + // See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx + // and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9 + // Although this check for six methods instead of eight + // since IE also does not support "trace" and "connect" + return /^(get|post|head|put|delete|options)$/i.test( this.type ) && + createStandardXHR() || createActiveXHR(); + } : + + // For all other browsers, use the standard XMLHttpRequest object + createStandardXHR; + +var xhrId = 0, + xhrCallbacks = {}, + xhrSupported = jQuery.ajaxSettings.xhr(); + +// Support: IE<10 +// Open requests must be manually aborted on unload (#5280) +// See https://support.microsoft.com/kb/2856746 for more info +if ( window.attachEvent ) { + window.attachEvent( "onunload", function() { + for ( var key in xhrCallbacks ) { + xhrCallbacks[ key ]( undefined, true ); + } + } ); +} + +// Determine support properties +support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); +xhrSupported = support.ajax = !!xhrSupported; + +// Create transport if the browser can provide an xhr +if ( xhrSupported ) { + + jQuery.ajaxTransport( function( options ) { + + // Cross domain only allowed if supported through XMLHttpRequest + if ( !options.crossDomain || support.cors ) { + + var callback; + + return { + send: function( headers, complete ) { + var i, + xhr = options.xhr(), + id = ++xhrId; + + // Open the socket + xhr.open( + options.type, + options.url, + options.async, + options.username, + options.password + ); + + // Apply custom fields if provided + if ( options.xhrFields ) { + for ( i in options.xhrFields ) { + xhr[ i ] = options.xhrFields[ i ]; + } + } + + // Override mime type if needed + if ( options.mimeType && xhr.overrideMimeType ) { + xhr.overrideMimeType( options.mimeType ); + } + + // X-Requested-With header + // For cross-domain requests, seeing as conditions for a preflight are + // akin to a jigsaw puzzle, we simply never set it to be sure. + // (it can always be set on a per-request basis or even using ajaxSetup) + // For same-domain requests, won't change header if already provided. + if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { + headers[ "X-Requested-With" ] = "XMLHttpRequest"; + } + + // Set headers + for ( i in headers ) { + + // Support: IE<9 + // IE's ActiveXObject throws a 'Type Mismatch' exception when setting + // request header to a null-value. + // + // To keep consistent with other XHR implementations, cast the value + // to string and ignore `undefined`. + if ( headers[ i ] !== undefined ) { + xhr.setRequestHeader( i, headers[ i ] + "" ); + } + } + + // Do send the request + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( options.hasContent && options.data ) || null ); + + // Listener + callback = function( _, isAbort ) { + var status, statusText, responses; + + // Was never called and is aborted or complete + if ( callback && ( isAbort || xhr.readyState === 4 ) ) { + + // Clean up + delete xhrCallbacks[ id ]; + callback = undefined; + xhr.onreadystatechange = jQuery.noop; + + // Abort manually if needed + if ( isAbort ) { + if ( xhr.readyState !== 4 ) { + xhr.abort(); + } + } else { + responses = {}; + status = xhr.status; + + // Support: IE<10 + // Accessing binary-data responseText throws an exception + // (#11426) + if ( typeof xhr.responseText === "string" ) { + responses.text = xhr.responseText; + } + + // Firefox throws an exception when accessing + // statusText for faulty cross-domain requests + try { + statusText = xhr.statusText; + } catch ( e ) { + + // We normalize with Webkit giving an empty statusText + statusText = ""; + } + + // Filter status for non standard behaviors + + // If the request is local and we have data: assume a success + // (success with no data won't get notified, that's the best we + // can do given current implementations) + if ( !status && options.isLocal && !options.crossDomain ) { + status = responses.text ? 200 : 404; + + // IE - #1450: sometimes returns 1223 when it should be 204 + } else if ( status === 1223 ) { + status = 204; + } + } + } + + // Call complete if needed + if ( responses ) { + complete( status, statusText, responses, xhr.getAllResponseHeaders() ); + } + }; + + // Do send the request + // `xhr.send` may raise an exception, but it will be + // handled in jQuery.ajax (so no try/catch here) + if ( !options.async ) { + + // If we're in sync mode we fire the callback + callback(); + } else if ( xhr.readyState === 4 ) { + + // (IE6 & IE7) if it's in cache and has been + // retrieved directly we need to fire the callback + window.setTimeout( callback ); + } else { + + // Register the callback, but delay it in case `xhr.send` throws + // Add to the list of active xhr callbacks + xhr.onreadystatechange = xhrCallbacks[ id ] = callback; + } + }, + + abort: function() { + if ( callback ) { + callback( undefined, true ); + } + } + }; + } + } ); +} + +// Functions to create xhrs +function createStandardXHR() { + try { + return new window.XMLHttpRequest(); + } catch ( e ) {} +} + +function createActiveXHR() { + try { + return new window.ActiveXObject( "Microsoft.XMLHTTP" ); + } catch ( e ) {} +} + + + + +// Install script dataType +jQuery.ajaxSetup( { + accepts: { + script: "text/javascript, application/javascript, " + + "application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function( text ) { + jQuery.globalEval( text ); + return text; + } + } +} ); + +// Handle cache's special case and global +jQuery.ajaxPrefilter( "script", function( s ) { + if ( s.cache === undefined ) { + s.cache = false; + } + if ( s.crossDomain ) { + s.type = "GET"; + s.global = false; + } +} ); + +// Bind script tag hack transport +jQuery.ajaxTransport( "script", function( s ) { + + // This transport only deals with cross domain requests + if ( s.crossDomain ) { + + var script, + head = document.head || jQuery( "head" )[ 0 ] || document.documentElement; + + return { + + send: function( _, callback ) { + + script = document.createElement( "script" ); + + script.async = true; + + if ( s.scriptCharset ) { + script.charset = s.scriptCharset; + } + + script.src = s.url; + + // Attach handlers for all browsers + script.onload = script.onreadystatechange = function( _, isAbort ) { + + if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) { + + // Handle memory leak in IE + script.onload = script.onreadystatechange = null; + + // Remove the script + if ( script.parentNode ) { + script.parentNode.removeChild( script ); + } + + // Dereference the script + script = null; + + // Callback if not abort + if ( !isAbort ) { + callback( 200, "success" ); + } + } + }; + + // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending + // Use native DOM manipulation to avoid our domManip AJAX trickery + head.insertBefore( script, head.firstChild ); + }, + + abort: function() { + if ( script ) { + script.onload( undefined, true ); + } + } + }; + } +} ); + + + + +var oldCallbacks = [], + rjsonp = /(=)\?(?=&|$)|\?\?/; + +// Default jsonp settings +jQuery.ajaxSetup( { + jsonp: "callback", + jsonpCallback: function() { + var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) ); + this[ callback ] = true; + return callback; + } +} ); + +// Detect, normalize options and install callbacks for jsonp requests +jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { + + var callbackName, overwritten, responseContainer, + jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? + "url" : + typeof s.data === "string" && + ( s.contentType || "" ) + .indexOf( "application/x-www-form-urlencoded" ) === 0 && + rjsonp.test( s.data ) && "data" + ); + + // Handle iff the expected data type is "jsonp" or we have a parameter to set + if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { + + // Get callback name, remembering preexisting value associated with it + callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ? + s.jsonpCallback() : + s.jsonpCallback; + + // Insert callback into url or form data + if ( jsonProp ) { + s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); + } else if ( s.jsonp !== false ) { + s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; + } + + // Use data converter to retrieve json after script execution + s.converters[ "script json" ] = function() { + if ( !responseContainer ) { + jQuery.error( callbackName + " was not called" ); + } + return responseContainer[ 0 ]; + }; + + // force json dataType + s.dataTypes[ 0 ] = "json"; + + // Install callback + overwritten = window[ callbackName ]; + window[ callbackName ] = function() { + responseContainer = arguments; + }; + + // Clean-up function (fires after converters) + jqXHR.always( function() { + + // If previous value didn't exist - remove it + if ( overwritten === undefined ) { + jQuery( window ).removeProp( callbackName ); + + // Otherwise restore preexisting value + } else { + window[ callbackName ] = overwritten; + } + + // Save back as free + if ( s[ callbackName ] ) { + + // make sure that re-using the options doesn't screw things around + s.jsonpCallback = originalSettings.jsonpCallback; + + // save the callback name for future use + oldCallbacks.push( callbackName ); + } + + // Call if it was a function and we have a response + if ( responseContainer && jQuery.isFunction( overwritten ) ) { + overwritten( responseContainer[ 0 ] ); + } + + responseContainer = overwritten = undefined; + } ); + + // Delegate to script + return "script"; + } +} ); + + + + +// data: string of html +// context (optional): If specified, the fragment will be created in this context, +// defaults to document +// keepScripts (optional): If true, will include scripts passed in the html string +jQuery.parseHTML = function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[ 1 ] ) ]; + } + + parsed = buildFragment( [ data ], context, scripts ); + + if ( scripts && scripts.length ) { + jQuery( scripts ).remove(); + } + + return jQuery.merge( [], parsed.childNodes ); +}; + + +// Keep a copy of the old load method +var _load = jQuery.fn.load; + +/** + * Load a url into a page + */ +jQuery.fn.load = function( url, params, callback ) { + if ( typeof url !== "string" && _load ) { + return _load.apply( this, arguments ); + } + + var selector, type, response, + self = this, + off = url.indexOf( " " ); + + if ( off > -1 ) { + selector = jQuery.trim( url.slice( off, url.length ) ); + url = url.slice( 0, off ); + } + + // If it's a function + if ( jQuery.isFunction( params ) ) { + + // We assume that it's the callback + callback = params; + params = undefined; + + // Otherwise, build a param string + } else if ( params && typeof params === "object" ) { + type = "POST"; + } + + // If we have elements to modify, make the request + if ( self.length > 0 ) { + jQuery.ajax( { + url: url, + + // If "type" variable is undefined, then "GET" method will be used. + // Make value of this field explicit since + // user can override it through ajaxSetup method + type: type || "GET", + dataType: "html", + data: params + } ).done( function( responseText ) { + + // Save response for use in complete callback + response = arguments; + + self.html( selector ? + + // If a selector was specified, locate the right elements in a dummy div + // Exclude scripts to avoid IE 'Permission Denied' errors + jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : + + // Otherwise use the full result + responseText ); + + // If the request succeeds, this function gets "data", "status", "jqXHR" + // but they are ignored because response was set above. + // If it fails, this function gets "jqXHR", "status", "error" + } ).always( callback && function( jqXHR, status ) { + self.each( function() { + callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); + } ); + } ); + } + + return this; +}; + + + + +// Attach a bunch of functions for handling common AJAX events +jQuery.each( [ + "ajaxStart", + "ajaxStop", + "ajaxComplete", + "ajaxError", + "ajaxSuccess", + "ajaxSend" +], function( i, type ) { + jQuery.fn[ type ] = function( fn ) { + return this.on( type, fn ); + }; +} ); + + + + +jQuery.expr.filters.animated = function( elem ) { + return jQuery.grep( jQuery.timers, function( fn ) { + return elem === fn.elem; + } ).length; +}; + + + + + +/** + * Gets a window from an element + */ +function getWindow( elem ) { + return jQuery.isWindow( elem ) ? + elem : + elem.nodeType === 9 ? + elem.defaultView || elem.parentWindow : + false; +} + +jQuery.offset = { + setOffset: function( elem, options, i ) { + var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, + position = jQuery.css( elem, "position" ), + curElem = jQuery( elem ), + props = {}; + + // set position first, in-case top/left are set even on static elem + if ( position === "static" ) { + elem.style.position = "relative"; + } + + curOffset = curElem.offset(); + curCSSTop = jQuery.css( elem, "top" ); + curCSSLeft = jQuery.css( elem, "left" ); + calculatePosition = ( position === "absolute" || position === "fixed" ) && + jQuery.inArray( "auto", [ curCSSTop, curCSSLeft ] ) > -1; + + // need to be able to calculate position if either top or left + // is auto and position is either absolute or fixed + if ( calculatePosition ) { + curPosition = curElem.position(); + curTop = curPosition.top; + curLeft = curPosition.left; + } else { + curTop = parseFloat( curCSSTop ) || 0; + curLeft = parseFloat( curCSSLeft ) || 0; + } + + if ( jQuery.isFunction( options ) ) { + + // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) + options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); + } + + if ( options.top != null ) { + props.top = ( options.top - curOffset.top ) + curTop; + } + if ( options.left != null ) { + props.left = ( options.left - curOffset.left ) + curLeft; + } + + if ( "using" in options ) { + options.using.call( elem, props ); + } else { + curElem.css( props ); + } + } +}; + +jQuery.fn.extend( { + offset: function( options ) { + if ( arguments.length ) { + return options === undefined ? + this : + this.each( function( i ) { + jQuery.offset.setOffset( this, options, i ); + } ); + } + + var docElem, win, + box = { top: 0, left: 0 }, + elem = this[ 0 ], + doc = elem && elem.ownerDocument; + + if ( !doc ) { + return; + } + + docElem = doc.documentElement; + + // Make sure it's not a disconnected DOM node + if ( !jQuery.contains( docElem, elem ) ) { + return box; + } + + // If we don't have gBCR, just use 0,0 rather than error + // BlackBerry 5, iOS 3 (original iPhone) + if ( typeof elem.getBoundingClientRect !== "undefined" ) { + box = elem.getBoundingClientRect(); + } + win = getWindow( doc ); + return { + top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ), + left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 ) + }; + }, + + position: function() { + if ( !this[ 0 ] ) { + return; + } + + var offsetParent, offset, + parentOffset = { top: 0, left: 0 }, + elem = this[ 0 ]; + + // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, + // because it is its only offset parent + if ( jQuery.css( elem, "position" ) === "fixed" ) { + + // we assume that getBoundingClientRect is available when computed position is fixed + offset = elem.getBoundingClientRect(); + } else { + + // Get *real* offsetParent + offsetParent = this.offsetParent(); + + // Get correct offsets + offset = this.offset(); + if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) { + parentOffset = offsetParent.offset(); + } + + // Add offsetParent borders + parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ); + parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true ); + } + + // Subtract parent offsets and element margins + // note: when an element has margin: auto the offsetLeft and marginLeft + // are the same in Safari causing offset.left to incorrectly be 0 + return { + top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), + left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) + }; + }, + + offsetParent: function() { + return this.map( function() { + var offsetParent = this.offsetParent; + + while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && + jQuery.css( offsetParent, "position" ) === "static" ) ) { + offsetParent = offsetParent.offsetParent; + } + return offsetParent || documentElement; + } ); + } +} ); + +// Create scrollLeft and scrollTop methods +jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { + var top = /Y/.test( prop ); + + jQuery.fn[ method ] = function( val ) { + return access( this, function( elem, method, val ) { + var win = getWindow( elem ); + + if ( val === undefined ) { + return win ? ( prop in win ) ? win[ prop ] : + win.document.documentElement[ method ] : + elem[ method ]; + } + + if ( win ) { + win.scrollTo( + !top ? val : jQuery( win ).scrollLeft(), + top ? val : jQuery( win ).scrollTop() + ); + + } else { + elem[ method ] = val; + } + }, method, val, arguments.length, null ); + }; +} ); + +// Support: Safari<7-8+, Chrome<37-44+ +// Add the top/left cssHooks using jQuery.fn.position +// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 +// getComputedStyle returns percent when specified for top/left/bottom/right +// rather than make the css module depend on the offset module, we just check for it here +jQuery.each( [ "top", "left" ], function( i, prop ) { + jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, + function( elem, computed ) { + if ( computed ) { + computed = curCSS( elem, prop ); + + // if curCSS returns percentage, fallback to offset + return rnumnonpx.test( computed ) ? + jQuery( elem ).position()[ prop ] + "px" : + computed; + } + } + ); +} ); + + +// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods +jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { + jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, + function( defaultExtra, funcName ) { + + // margin is only for outerHeight, outerWidth + jQuery.fn[ funcName ] = function( margin, value ) { + var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), + extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); + + return access( this, function( elem, type, value ) { + var doc; + + if ( jQuery.isWindow( elem ) ) { + + // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there + // isn't a whole lot we can do. See pull request at this URL for discussion: + // https://github.com/jquery/jquery/pull/764 + return elem.document.documentElement[ "client" + name ]; + } + + // Get document width or height + if ( elem.nodeType === 9 ) { + doc = elem.documentElement; + + // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], + // whichever is greatest + // unfortunately, this causes bug #3838 in IE6/8 only, + // but there is currently no good, small way to fix it. + return Math.max( + elem.body[ "scroll" + name ], doc[ "scroll" + name ], + elem.body[ "offset" + name ], doc[ "offset" + name ], + doc[ "client" + name ] + ); + } + + return value === undefined ? + + // Get width or height on the element, requesting but not forcing parseFloat + jQuery.css( elem, type, extra ) : + + // Set width or height on the element + jQuery.style( elem, type, value, extra ); + }, type, chainable ? margin : undefined, chainable, null ); + }; + } ); +} ); + + +jQuery.fn.extend( { + + bind: function( types, data, fn ) { + return this.on( types, null, data, fn ); + }, + unbind: function( types, fn ) { + return this.off( types, null, fn ); + }, + + delegate: function( selector, types, data, fn ) { + return this.on( types, selector, data, fn ); + }, + undelegate: function( selector, types, fn ) { + + // ( namespace ) or ( selector, types [, fn] ) + return arguments.length === 1 ? + this.off( selector, "**" ) : + this.off( types, selector || "**", fn ); + } +} ); + +// The number of elements contained in the matched element set +jQuery.fn.size = function() { + return this.length; +}; + +jQuery.fn.andSelf = jQuery.fn.addBack; + + + + +// Register as a named AMD module, since jQuery can be concatenated with other +// files that may use define, but not via a proper concatenation script that +// understands anonymous AMD modules. A named AMD is safest and most robust +// way to register. Lowercase jquery is used because AMD module names are +// derived from file names, and jQuery is normally delivered in a lowercase +// file name. Do this after creating the global so that if an AMD module wants +// to call noConflict to hide this version of jQuery, it will work. + +// Note that for maximum portability, libraries that are not jQuery should +// declare themselves as anonymous modules, and avoid setting a global if an +// AMD loader is present. jQuery is a special case. For more information, see +// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon + +if ( typeof define === "function" && define.amd ) { + define( "jquery", [], function() { + return jQuery; + } ); +} + + + +var + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$; + +jQuery.noConflict = function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; +}; + +// Expose jQuery and $ identifiers, even in +// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557) +// and CommonJS for browser emulators (#13566) +if ( !noGlobal ) { + window.jQuery = window.$ = jQuery; +} + +return jQuery; +})); +(function($, undefined) { + +/** + * Unobtrusive scripting adapter for jQuery + * https://github.com/rails/jquery-ujs + * + * Requires jQuery 1.8.0 or later. + * + * Released under the MIT license + * + */ + + // Cut down on the number of issues from people inadvertently including jquery_ujs twice + // by detecting and raising an error when it happens. + 'use strict'; + + if ( $.rails !== undefined ) { + $.error('jquery-ujs has already been loaded!'); + } + + // Shorthand to make it a little easier to call public rails functions from within rails.js + var rails; + var $document = $(document); + + $.rails = rails = { + // Link elements bound by jquery-ujs + linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]', + + // Button elements bound by jquery-ujs + buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)', + + // Select elements bound by jquery-ujs + inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]', + + // Form elements bound by jquery-ujs + formSubmitSelector: 'form', + + // Form input elements bound by jquery-ujs + formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])', + + // Form input elements disabled during form submission + disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled', + + // Form input elements re-enabled after form submission + enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled', + + // Form required input elements + requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])', + + // Form file input elements + fileInputSelector: 'input[name][type=file]:not([disabled])', + + // Link onClick disable selector with possible reenable after remote submission + linkDisableSelector: 'a[data-disable-with], a[data-disable]', + + // Button onClick disable selector with possible reenable after remote submission + buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]', + + // Up-to-date Cross-Site Request Forgery token + csrfToken: function() { + return $('meta[name=csrf-token]').attr('content'); + }, + + // URL param that must contain the CSRF token + csrfParam: function() { + return $('meta[name=csrf-param]').attr('content'); + }, + + // Make sure that every Ajax request sends the CSRF token + CSRFProtection: function(xhr) { + var token = rails.csrfToken(); + if (token) xhr.setRequestHeader('X-CSRF-Token', token); + }, + + // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones) + refreshCSRFTokens: function(){ + $('form input[name="' + rails.csrfParam() + '"]').val(rails.csrfToken()); + }, + + // Triggers an event on an element and returns false if the event result is false + fire: function(obj, name, data) { + var event = $.Event(name); + obj.trigger(event, data); + return event.result !== false; + }, + + // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm + confirm: function(message) { + return confirm(message); + }, + + // Default ajax function, may be overridden with custom function in $.rails.ajax + ajax: function(options) { + return $.ajax(options); + }, + + // Default way to get an element's href. May be overridden at $.rails.href. + href: function(element) { + return element[0].href; + }, + + // Checks "data-remote" if true to handle the request through a XHR request. + isRemote: function(element) { + return element.data('remote') !== undefined && element.data('remote') !== false; + }, + + // Submits "remote" forms and links with ajax + handleRemote: function(element) { + var method, url, data, withCredentials, dataType, options; + + if (rails.fire(element, 'ajax:before')) { + withCredentials = element.data('with-credentials') || null; + dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType); + + if (element.is('form')) { + method = element.data('ujs:submit-button-formmethod') || element.attr('method'); + url = element.data('ujs:submit-button-formaction') || element.attr('action'); + data = $(element[0]).serializeArray(); + // memoized value from clicked submit button + var button = element.data('ujs:submit-button'); + if (button) { + data.push(button); + element.data('ujs:submit-button', null); + } + element.data('ujs:submit-button-formmethod', null); + element.data('ujs:submit-button-formaction', null); + } else if (element.is(rails.inputChangeSelector)) { + method = element.data('method'); + url = element.data('url'); + data = element.serialize(); + if (element.data('params')) data = data + '&' + element.data('params'); + } else if (element.is(rails.buttonClickSelector)) { + method = element.data('method') || 'get'; + url = element.data('url'); + data = element.serialize(); + if (element.data('params')) data = data + '&' + element.data('params'); + } else { + method = element.data('method'); + url = rails.href(element); + data = element.data('params') || null; + } + + options = { + type: method || 'GET', data: data, dataType: dataType, + // stopping the "ajax:beforeSend" event will cancel the ajax request + beforeSend: function(xhr, settings) { + if (settings.dataType === undefined) { + xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script); + } + if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) { + element.trigger('ajax:send', xhr); + } else { + return false; + } + }, + success: function(data, status, xhr) { + element.trigger('ajax:success', [data, status, xhr]); + }, + complete: function(xhr, status) { + element.trigger('ajax:complete', [xhr, status]); + }, + error: function(xhr, status, error) { + element.trigger('ajax:error', [xhr, status, error]); + }, + crossDomain: rails.isCrossDomain(url) + }; + + // There is no withCredentials for IE6-8 when + // "Enable native XMLHTTP support" is disabled + if (withCredentials) { + options.xhrFields = { + withCredentials: withCredentials + }; + } + + // Only pass url to `ajax` options if not blank + if (url) { options.url = url; } + + return rails.ajax(options); + } else { + return false; + } + }, + + // Determines if the request is a cross domain request. + isCrossDomain: function(url) { + var originAnchor = document.createElement('a'); + originAnchor.href = location.href; + var urlAnchor = document.createElement('a'); + + try { + urlAnchor.href = url; + // This is a workaround to a IE bug. + urlAnchor.href = urlAnchor.href; + + // If URL protocol is false or is a string containing a single colon + // *and* host are false, assume it is not a cross-domain request + // (should only be the case for IE7 and IE compatibility mode). + // Otherwise, evaluate protocol and host of the URL against the origin + // protocol and host. + return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || + (originAnchor.protocol + '//' + originAnchor.host === + urlAnchor.protocol + '//' + urlAnchor.host)); + } catch (e) { + // If there is an error parsing the URL, assume it is crossDomain. + return true; + } + }, + + // Handles "data-method" on links such as: + // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a> + handleMethod: function(link) { + var href = rails.href(link), + method = link.data('method'), + target = link.attr('target'), + csrfToken = rails.csrfToken(), + csrfParam = rails.csrfParam(), + form = $('<form method="post" action="' + href + '"></form>'), + metadataInput = '<input name="_method" value="' + method + '" type="hidden" />'; + + if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) { + metadataInput += '<input name="' + csrfParam + '" value="' + csrfToken + '" type="hidden" />'; + } + + if (target) { form.attr('target', target); } + + form.hide().append(metadataInput).appendTo('body'); + form.submit(); + }, + + // Helper function that returns form elements that match the specified CSS selector + // If form is actually a "form" element this will return associated elements outside the from that have + // the html form attribute set + formElements: function(form, selector) { + return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector); + }, + + /* Disables form elements: + - Caches element value in 'ujs:enable-with' data store + - Replaces element text with value of 'data-disable-with' attribute + - Sets disabled property to true + */ + disableFormElements: function(form) { + rails.formElements(form, rails.disableSelector).each(function() { + rails.disableFormElement($(this)); + }); + }, + + disableFormElement: function(element) { + var method, replacement; + + method = element.is('button') ? 'html' : 'val'; + replacement = element.data('disable-with'); + + if (replacement !== undefined) { + element.data('ujs:enable-with', element[method]()); + element[method](replacement); + } + + element.prop('disabled', true); + element.data('ujs:disabled', true); + }, + + /* Re-enables disabled form elements: + - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`) + - Sets disabled property to false + */ + enableFormElements: function(form) { + rails.formElements(form, rails.enableSelector).each(function() { + rails.enableFormElement($(this)); + }); + }, + + enableFormElement: function(element) { + var method = element.is('button') ? 'html' : 'val'; + if (element.data('ujs:enable-with') !== undefined) { + element[method](element.data('ujs:enable-with')); + element.removeData('ujs:enable-with'); // clean up cache + } + element.prop('disabled', false); + element.removeData('ujs:disabled'); + }, + + /* For 'data-confirm' attribute: + - Fires `confirm` event + - Shows the confirmation dialog + - Fires the `confirm:complete` event + + Returns `true` if no function stops the chain and user chose yes; `false` otherwise. + Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog. + Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function + return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog. + */ + allowAction: function(element) { + var message = element.data('confirm'), + answer = false, callback; + if (!message) { return true; } + + if (rails.fire(element, 'confirm')) { + try { + answer = rails.confirm(message); + } catch (e) { + (console.error || console.log).call(console, e.stack || e); + } + callback = rails.fire(element, 'confirm:complete', [answer]); + } + return answer && callback; + }, + + // Helper function which checks for blank inputs in a form that match the specified CSS selector + blankInputs: function(form, specifiedSelector, nonBlank) { + var foundInputs = $(), + input, + valueToCheck, + radiosForNameWithNoneSelected, + radioName, + selector = specifiedSelector || 'input,textarea', + requiredInputs = form.find(selector), + checkedRadioButtonNames = {}; + + requiredInputs.each(function() { + input = $(this); + if (input.is('input[type=radio]')) { + + // Don't count unchecked required radio as blank if other radio with same name is checked, + // regardless of whether same-name radio input has required attribute or not. The spec + // states https://www.w3.org/TR/html5/forms.html#the-required-attribute + radioName = input.attr('name'); + + // Skip if we've already seen the radio with this name. + if (!checkedRadioButtonNames[radioName]) { + + // If none checked + if (form.find('input[type=radio]:checked[name="' + radioName + '"]').length === 0) { + radiosForNameWithNoneSelected = form.find( + 'input[type=radio][name="' + radioName + '"]'); + foundInputs = foundInputs.add(radiosForNameWithNoneSelected); + } + + // We only need to check each name once. + checkedRadioButtonNames[radioName] = radioName; + } + } else { + valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val(); + if (valueToCheck === nonBlank) { + foundInputs = foundInputs.add(input); + } + } + }); + return foundInputs.length ? foundInputs : false; + }, + + // Helper function which checks for non-blank inputs in a form that match the specified CSS selector + nonBlankInputs: function(form, specifiedSelector) { + return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank + }, + + // Helper function, needed to provide consistent behavior in IE + stopEverything: function(e) { + $(e.target).trigger('ujs:everythingStopped'); + e.stopImmediatePropagation(); + return false; + }, + + // Replace element's html with the 'data-disable-with' after storing original html + // and prevent clicking on it + disableElement: function(element) { + var replacement = element.data('disable-with'); + + if (replacement !== undefined) { + element.data('ujs:enable-with', element.html()); // store enabled state + element.html(replacement); + } + + element.bind('click.railsDisable', function(e) { // prevent further clicking + return rails.stopEverything(e); + }); + element.data('ujs:disabled', true); + }, + + // Restore element to its original state which was disabled by 'disableElement' above + enableElement: function(element) { + if (element.data('ujs:enable-with') !== undefined) { + element.html(element.data('ujs:enable-with')); // set to old enabled state + element.removeData('ujs:enable-with'); // clean up cache + } + element.unbind('click.railsDisable'); // enable element + element.removeData('ujs:disabled'); + } + }; + + if (rails.fire($document, 'rails:attachBindings')) { + + $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }}); + + // This event works the same as the load event, except that it fires every + // time the page is loaded. + // + // See https://github.com/rails/jquery-ujs/issues/357 + // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching + $(window).on('pageshow.rails', function () { + $($.rails.enableSelector).each(function () { + var element = $(this); + + if (element.data('ujs:disabled')) { + $.rails.enableFormElement(element); + } + }); + + $($.rails.linkDisableSelector).each(function () { + var element = $(this); + + if (element.data('ujs:disabled')) { + $.rails.enableElement(element); + } + }); + }); + + $document.on('ajax:complete', rails.linkDisableSelector, function() { + rails.enableElement($(this)); + }); + + $document.on('ajax:complete', rails.buttonDisableSelector, function() { + rails.enableFormElement($(this)); + }); + + $document.on('click.rails', rails.linkClickSelector, function(e) { + var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey; + if (!rails.allowAction(link)) return rails.stopEverything(e); + + if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link); + + if (rails.isRemote(link)) { + if (metaClick && (!method || method === 'GET') && !data) { return true; } + + var handleRemote = rails.handleRemote(link); + // Response from rails.handleRemote() will either be false or a deferred object promise. + if (handleRemote === false) { + rails.enableElement(link); + } else { + handleRemote.fail( function() { rails.enableElement(link); } ); + } + return false; + + } else if (method) { + rails.handleMethod(link); + return false; + } + }); + + $document.on('click.rails', rails.buttonClickSelector, function(e) { + var button = $(this); + + if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e); + + if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button); + + var handleRemote = rails.handleRemote(button); + // Response from rails.handleRemote() will either be false or a deferred object promise. + if (handleRemote === false) { + rails.enableFormElement(button); + } else { + handleRemote.fail( function() { rails.enableFormElement(button); } ); + } + return false; + }); + + $document.on('change.rails', rails.inputChangeSelector, function(e) { + var link = $(this); + if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e); + + rails.handleRemote(link); + return false; + }); + + $document.on('submit.rails', rails.formSubmitSelector, function(e) { + var form = $(this), + remote = rails.isRemote(form), + blankRequiredInputs, + nonBlankFileInputs; + + if (!rails.allowAction(form)) return rails.stopEverything(e); + + // Skip other logic when required values are missing or file upload is present + if (form.attr('novalidate') === undefined) { + if (form.data('ujs:formnovalidate-button') === undefined) { + blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false); + if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) { + return rails.stopEverything(e); + } + } else { + // Clear the formnovalidate in case the next button click is not on a formnovalidate button + // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain + form.data('ujs:formnovalidate-button', undefined); + } + } + + if (remote) { + nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector); + if (nonBlankFileInputs) { + // Slight timeout so that the submit button gets properly serialized + // (make it easy for event handler to serialize form without disabled values) + setTimeout(function(){ rails.disableFormElements(form); }, 13); + var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]); + + // Re-enable form elements if event bindings return false (canceling normal form submission) + if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); } + + return aborted; + } + + rails.handleRemote(form); + return false; + + } else { + // Slight timeout so that the submit button gets properly serialized + setTimeout(function(){ rails.disableFormElements(form); }, 13); + } + }); + + $document.on('click.rails', rails.formInputClickSelector, function(event) { + var button = $(this); + + if (!rails.allowAction(button)) return rails.stopEverything(event); + + // Register the pressed submit button + var name = button.attr('name'), + data = name ? {name:name, value:button.val()} : null; + + var form = button.closest('form'); + if (form.length === 0) { + form = $('#' + button.attr('form')); + } + form.data('ujs:submit-button', data); + + // Save attributes from button + form.data('ujs:formnovalidate-button', button.attr('formnovalidate')); + form.data('ujs:submit-button-formaction', button.attr('formaction')); + form.data('ujs:submit-button-formmethod', button.attr('formmethod')); + }); + + $document.on('ajax:send.rails', rails.formSubmitSelector, function(event) { + if (this === event.target) rails.disableFormElements($(this)); + }); + + $document.on('ajax:complete.rails', rails.formSubmitSelector, function(event) { + if (this === event.target) rails.enableFormElements($(this)); + }); + + $(function(){ + rails.refreshCSRFTokens(); + }); + } + +})( jQuery ); +/** +* +* jquery.sparkline.js +* +* v2.1.3 +* (c) Splunk, Inc +* Contact: Gareth Watts (gareth@splunk.com) +* http://omnipotent.net/jquery.sparkline/ +* +* Generates inline sparkline charts from data supplied either to the method +* or inline in HTML +* +* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag +* (Firefox 2.0+, Safari, Opera, etc) +* +* License: New BSD License +* +* Copyright (c) 2012, Splunk Inc. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, +* are permitted provided that the following conditions are met: +* +* * Redistributions of source code must retain the above copyright notice, +* this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright notice, +* this list of conditions and the following disclaimer in the documentation +* and/or other materials provided with the distribution. +* * Neither the name of Splunk Inc nor the names of its contributors may +* be used to endorse or promote products derived from this software without +* specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* +* Usage: +* $(selector).sparkline(values, options) +* +* If values is undefined or set to 'html' then the data values are read from the specified tag: +* <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p> +* $('.sparkline').sparkline(); +* There must be no spaces in the enclosed data set +* +* Otherwise values must be an array of numbers or null values +* <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p> +* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5]) +* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5]) +* +* Values can also be specified in an HTML comment, or as a values attribute: +* <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p> +* <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p> +* $('.sparkline').sparkline(); +* +* For line charts, x values can also be specified: +* <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p> +* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ]) +* +* By default, options should be passed in as the second argument to the sparkline function: +* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'}) +* +* Options can also be set by passing them on the tag itself. This feature is disabled by default though +* as there's a slight performance overhead: +* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true}) +* <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p> +* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionsPrefix) +* +* Supported options: +* lineColor - Color of the line used for the chart +* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart +* width - Width of the chart - Defaults to 3 times the number of values in pixels +* height - Height of the chart - Defaults to the height of the containing element +* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied +* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied +* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax +* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied +* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied +* composite - If true then don't erase any existing chart attached to the tag, but draw +* another chart over the top - Note that width and height are ignored if an +* existing chart is detected. +* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values' +* enableTagOptions - Whether to check tags for sparkline options +* tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark' +* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a +* hidden dom element, avoding a browser reflow +* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled, +* making the plugin perform much like it did in 1.x +* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled) +* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled +* defaults to false (highlights enabled) +* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase +* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body +* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied +* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis +* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis +* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip +* callback is given arguments of (sparkline, options, fields) +* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title +* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries) +* to control the format of the tooltip +* tooltipPrefix - A string to prepend to each field displayed in a tooltip +* tooltipSuffix - A string to append to each field displayed in a tooltip +* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true) +* tooltipValueLookups - An object or range map to map field values to tooltip strings +* (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win") +* numberFormatter - Optional callback for formatting numbers in tooltips +* numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to "," +* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "." +* numberDigitGroupCount - Number of digits between group separator - Defaults to 3 +* +* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default), +* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box' +* line - Line chart. Options: +* spotColor - Set to '' to not end each line in a circular spot +* minSpotColor - If set, color of spot at minimum value +* maxSpotColor - If set, color of spot at maximum value +* spotRadius - Radius in pixels +* lineWidth - Width of line in pixels +* normalRangeMin +* normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal" +* or expected range of values +* normalRangeColor - Color to use for the above bar +* drawNormalOnTop - Draw the normal range above the chart fill color if true +* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart +* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable +* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable +* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map +* +* bar - Bar chart. Options: +* barColor - Color of bars for postive values +* negBarColor - Color of bars for negative values +* zeroColor - Color of bars with zero values +* nullColor - Color of bars with null values - Defaults to omitting the bar entirely +* barWidth - Width of bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* barSpacing - Gap between bars in pixels +* zeroAxis - Centers the y-axis around zero if true +* +* tristate - Charts values of win (>0), lose (<0) or draw (=0) +* posBarColor - Color of win values +* negBarColor - Color of lose values +* zeroBarColor - Color of draw values +* barWidth - Width of bars in pixels +* barSpacing - Gap between bars in pixels +* colorMap - Optional mappnig of values to colors to override the *BarColor values above +* can be an Array of values to control the color of individual bars or a range map +* to specify colors for individual ranges of values +* +* discrete - Options: +* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height +* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor +* thresholdColor +* +* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ... +* options: +* targetColor - The color of the vertical target marker +* targetWidth - The width of the target marker in pixels +* performanceColor - The color of the performance measure horizontal bar +* rangeColors - Colors to use for each qualitative range background color +* +* pie - Pie chart. Options: +* sliceColors - An array of colors to use for pie slices +* offset - Angle in degrees to offset the first slice - Try -90 or +90 +* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border) +* borderColor - Color to use for the pie chart border - Defaults to #000 +* +* box - Box plot. Options: +* raw - Set to true to supply pre-computed plot points as values +* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier +* When set to false you can supply any number of values and the box plot will +* be computed for you. Default is false. +* showOutliers - Set to true (default) to display outliers as circles +* outlierIQR - Interquartile range used to determine outliers. Default 1.5 +* boxLineColor - Outline color of the box +* boxFillColor - Fill color for the box +* whiskerColor - Line color used for whiskers +* outlierLineColor - Outline color of outlier circles +* outlierFillColor - Fill color of the outlier circles +* spotRadius - Radius of outlier circles +* medianColor - Line color of the median line +* target - Draw a target cross hair at the supplied value (default undefined) +* +* +* +* Examples: +* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false }); +* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 }); +* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }): +* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' }); +* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' }); +* $('#pie').sparkline([1,1,2], { type:'pie' }); +*/ + +/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */ + + +(function(document, Math, undefined) { // performance/minified-size optimization +(function(factory) { + if(typeof define === 'function' && define.amd) { + define(['jquery'], factory); + } else if (jQuery && !jQuery.fn.sparkline) { + factory(jQuery); + } +} +(function($) { + 'use strict'; + + var UNSET_OPTION = {}, + getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues, + remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap, + MouseHandler, Tooltip, barHighlightMixin, + line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles, + VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0; + + /** + * Default configuration settings + */ + getDefaults = function () { + return { + // Settings common to most/all chart types + common: { + type: 'line', + lineColor: '#00f', + fillColor: '#cdf', + defaultPixelsPerValue: 3, + width: 'auto', + height: 'auto', + composite: false, + tagValuesAttribute: 'values', + tagOptionsPrefix: 'spark', + enableTagOptions: false, + enableHighlight: true, + highlightLighten: 1.4, + tooltipSkipNull: true, + tooltipPrefix: '', + tooltipSuffix: '', + disableHiddenCheck: false, + numberFormatter: false, + numberDigitGroupCount: 3, + numberDigitGroupSep: ',', + numberDecimalMark: '.', + disableTooltips: false, + disableInteraction: false + }, + // Defaults for line charts + line: { + spotColor: '#f80', + highlightSpotColor: '#5f5', + highlightLineColor: '#f22', + spotRadius: 1.5, + minSpotColor: '#f80', + maxSpotColor: '#f80', + lineWidth: 1, + normalRangeMin: undefined, + normalRangeMax: undefined, + normalRangeColor: '#ccc', + drawNormalOnTop: false, + chartRangeMin: undefined, + chartRangeMax: undefined, + chartRangeMinX: undefined, + chartRangeMaxX: undefined, + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{prefix}}{{y}}{{suffix}}') + }, + // Defaults for bar charts + bar: { + barColor: '#3366cc', + negBarColor: '#f44', + stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', + '#dd4477', '#0099c6', '#990099'], + zeroColor: undefined, + nullColor: undefined, + zeroAxis: true, + barWidth: 4, + barSpacing: 1, + chartRangeMax: undefined, + chartRangeMin: undefined, + chartRangeClip: false, + colorMap: undefined, + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{prefix}}{{value}}{{suffix}}') + }, + // Defaults for tristate charts + tristate: { + barWidth: 4, + barSpacing: 1, + posBarColor: '#6f6', + negBarColor: '#f44', + zeroBarColor: '#999', + colorMap: {}, + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{value:map}}'), + tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } } + }, + // Defaults for discrete charts + discrete: { + lineHeight: 'auto', + thresholdColor: undefined, + thresholdValue: 0, + chartRangeMax: undefined, + chartRangeMin: undefined, + chartRangeClip: false, + tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}') + }, + // Defaults for bullet charts + bullet: { + targetColor: '#f33', + targetWidth: 3, // width of the target bar in pixels + performanceColor: '#33f', + rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'], + base: undefined, // set this to a number to change the base start number + tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'), + tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} } + }, + // Defaults for pie charts + pie: { + offset: 0, + sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00', + '#dd4477', '#0099c6', '#990099'], + borderWidth: 0, + borderColor: '#000', + tooltipFormat: new SPFormat('<span style="color: {{color}}">●</span> {{value}} ({{percent.1}}%)') + }, + // Defaults for box plots + box: { + raw: false, + boxLineColor: '#000', + boxFillColor: '#cdf', + whiskerColor: '#000', + outlierLineColor: '#333', + outlierFillColor: '#fff', + medianColor: '#f00', + showOutliers: true, + outlierIQR: 1.5, + spotRadius: 1.5, + target: undefined, + targetColor: '#4a2', + chartRangeMax: undefined, + chartRangeMin: undefined, + tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'), + tooltipFormatFieldlistKey: 'field', + tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median', + uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier', + lw: 'Left Whisker', rw: 'Right Whisker'} } + } + }; + }; + + // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname + defaultStyles = '.jqstooltip { ' + + 'position: absolute;' + + 'left: 0px;' + + 'top: 0px;' + + 'visibility: hidden;' + + 'background: rgb(0, 0, 0) transparent;' + + 'background-color: rgba(0,0,0,0.6);' + + 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' + + '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' + + 'color: white;' + + 'font: 10px arial, san serif;' + + 'text-align: left;' + + 'white-space: nowrap;' + + 'padding: 5px;' + + 'border: 1px solid white;' + + 'box-sizing: content-box;' + + 'z-index: 10000;' + + '}' + + '.jqsfield { ' + + 'color: white;' + + 'font: 10px arial, san serif;' + + 'text-align: left;' + + '}'; + + /** + * Utilities + */ + + createClass = function (/* [baseclass, [mixin, ...]], definition */) { + var Class, args; + Class = function () { + this.init.apply(this, arguments); + }; + if (arguments.length > 1) { + if (arguments[0]) { + Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]); + Class._super = arguments[0].prototype; + } else { + Class.prototype = arguments[arguments.length - 1]; + } + if (arguments.length > 2) { + args = Array.prototype.slice.call(arguments, 1, -1); + args.unshift(Class.prototype); + $.extend.apply($, args); + } + } else { + Class.prototype = arguments[0]; + } + Class.prototype.cls = Class; + return Class; + }; + + /** + * Wraps a format string for tooltips + * {{x}} + * {{x.2} + * {{x:months}} + */ + $.SPFormatClass = SPFormat = createClass({ + fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g, + precre: /(\w+)\.(\d+)/, + + init: function (format, fclass) { + this.format = format; + this.fclass = fclass; + }, + + render: function (fieldset, lookups, options) { + var self = this, + fields = fieldset, + match, token, lookupkey, fieldvalue, prec; + return this.format.replace(this.fre, function () { + var lookup; + token = arguments[1]; + lookupkey = arguments[3]; + match = self.precre.exec(token); + if (match) { + prec = match[2]; + token = match[1]; + } else { + prec = false; + } + fieldvalue = fields[token]; + if (fieldvalue === undefined) { + return ''; + } + if (lookupkey && lookups && lookups[lookupkey]) { + lookup = lookups[lookupkey]; + if (lookup.get) { // RangeMap + return lookups[lookupkey].get(fieldvalue) || fieldvalue; + } else { + return lookups[lookupkey][fieldvalue] || fieldvalue; + } + } + if (isNumber(fieldvalue)) { + if (options.get('numberFormatter')) { + fieldvalue = options.get('numberFormatter')(fieldvalue); + } else { + fieldvalue = formatNumber(fieldvalue, prec, + options.get('numberDigitGroupCount'), + options.get('numberDigitGroupSep'), + options.get('numberDecimalMark')); + } + } + return fieldvalue; + }); + } + }); + + // convience method to avoid needing the new operator + $.spformat = function(format, fclass) { + return new SPFormat(format, fclass); + }; + + clipval = function (val, min, max) { + if (val < min) { + return min; + } + if (val > max) { + return max; + } + return val; + }; + + quartile = function (values, q) { + var vl; + if (q === 2) { + vl = Math.floor(values.length / 2); + return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2; + } else { + if (values.length % 2 ) { // odd + vl = (values.length * q + q) / 4; + return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; + } else { //even + vl = (values.length * q + 2) / 4; + return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1]; + + } + } + }; + + normalizeValue = function (val) { + var nf; + switch (val) { + case 'undefined': + val = undefined; + break; + case 'null': + val = null; + break; + case 'true': + val = true; + break; + case 'false': + val = false; + break; + default: + nf = parseFloat(val); + if (val == nf) { + val = nf; + } + } + return val; + }; + + normalizeValues = function (vals) { + var i, result = []; + for (i = vals.length; i--;) { + result[i] = normalizeValue(vals[i]); + } + return result; + }; + + remove = function (vals, filter) { + var i, vl, result = []; + for (i = 0, vl = vals.length; i < vl; i++) { + if (vals[i] !== filter) { + result.push(vals[i]); + } + } + return result; + }; + + isNumber = function (num) { + return !isNaN(parseFloat(num)) && isFinite(num); + }; + + formatNumber = function (num, prec, groupsize, groupsep, decsep) { + var p, i; + num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split(''); + p = (p = $.inArray('.', num)) < 0 ? num.length : p; + if (p < num.length) { + num[p] = decsep; + } + for (i = p - groupsize; i > 0; i -= groupsize) { + num.splice(i, 0, groupsep); + } + return num.join(''); + }; + + // determine if all values of an array match a value + // returns true if the array is empty + all = function (val, arr, ignoreNull) { + var i; + for (i = arr.length; i--; ) { + if (ignoreNull && arr[i] === null) continue; + if (arr[i] !== val) { + return false; + } + } + return true; + }; + + // sums the numeric values in an array, ignoring other values + sum = function (vals) { + var total = 0, i; + for (i = vals.length; i--;) { + total += typeof vals[i] === 'number' ? vals[i] : 0; + } + return total; + }; + + ensureArray = function (val) { + return $.isArray(val) ? val : [val]; + }; + + // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/ + addCSS = function(css) { + var tag, iefail; + if (document.createStyleSheet) { + try { + document.createStyleSheet().cssText = css; + return; + } catch (e) { + // IE <= 9 maxes out at 31 stylesheets; inject into page instead. + iefail = true; + } + } + tag = document.createElement('style'); + tag.type = 'text/css'; + document.getElementsByTagName('head')[0].appendChild(tag); + if (iefail) { + document.styleSheets[document.styleSheets.length - 1].cssText = css; + } else { + tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css; + } + }; + + // Provide a cross-browser interface to a few simple drawing primitives + $.fn.simpledraw = function (width, height, useExisting, interact) { + var target, mhandler; + if (useExisting && (target = this.data('_jqs_vcanvas'))) { + return target; + } + + if ($.fn.sparkline.canvas === false) { + // We've already determined that neither Canvas nor VML are available + return false; + + } else if ($.fn.sparkline.canvas === undefined) { + // No function defined yet -- need to see if we support Canvas or VML + var el = document.createElement('canvas'); + if (!!(el.getContext && el.getContext('2d'))) { + // Canvas is available + $.fn.sparkline.canvas = function(width, height, target, interact) { + return new VCanvas_canvas(width, height, target, interact); + }; + } else if (document.namespaces && !document.namespaces.v) { + // VML is available + document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML'); + $.fn.sparkline.canvas = function(width, height, target, interact) { + return new VCanvas_vml(width, height, target); + }; + } else { + // Neither Canvas nor VML are available + $.fn.sparkline.canvas = false; + return false; + } + } + + if (width === undefined) { + width = $(this).innerWidth(); + } + if (height === undefined) { + height = $(this).innerHeight(); + } + + target = $.fn.sparkline.canvas(width, height, this, interact); + + mhandler = $(this).data('_jqs_mhandler'); + if (mhandler) { + mhandler.registerCanvas(target); + } + return target; + }; + + $.fn.cleardraw = function () { + var target = this.data('_jqs_vcanvas'); + if (target) { + target.reset(); + } + }; + + $.RangeMapClass = RangeMap = createClass({ + init: function (map) { + var key, range, rangelist = []; + for (key in map) { + if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) { + range = key.split(':'); + range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]); + range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]); + range[2] = map[key]; + rangelist.push(range); + } + } + this.map = map; + this.rangelist = rangelist || false; + }, + + get: function (value) { + var rangelist = this.rangelist, + i, range, result; + if ((result = this.map[value]) !== undefined) { + return result; + } + if (rangelist) { + for (i = rangelist.length; i--;) { + range = rangelist[i]; + if (range[0] <= value && range[1] >= value) { + return range[2]; + } + } + } + return undefined; + } + }); + + // Convenience function + $.range_map = function(map) { + return new RangeMap(map); + }; + + MouseHandler = createClass({ + init: function (el, options) { + var $el = $(el); + this.$el = $el; + this.options = options; + this.currentPageX = 0; + this.currentPageY = 0; + this.el = el; + this.splist = []; + this.tooltip = null; + this.over = false; + this.displayTooltips = !options.get('disableTooltips'); + this.highlightEnabled = !options.get('disableHighlight'); + }, + + registerSparkline: function (sp) { + this.splist.push(sp); + if (this.over) { + this.updateDisplay(); + } + }, + + registerCanvas: function (canvas) { + var $canvas = $(canvas.canvas); + this.canvas = canvas; + this.$canvas = $canvas; + $canvas.mouseenter($.proxy(this.mouseenter, this)); + $canvas.mouseleave($.proxy(this.mouseleave, this)); + $canvas.click($.proxy(this.mouseclick, this)); + }, + + reset: function (removeTooltip) { + this.splist = []; + if (this.tooltip && removeTooltip) { + this.tooltip.remove(); + this.tooltip = undefined; + } + }, + + mouseclick: function (e) { + var clickEvent = $.Event('sparklineClick'); + clickEvent.originalEvent = e; + clickEvent.sparklines = this.splist; + this.$el.trigger(clickEvent); + }, + + mouseenter: function (e) { + $(document.body).unbind('mousemove.jqs'); + $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this)); + this.over = true; + this.currentPageX = e.pageX; + this.currentPageY = e.pageY; + this.currentEl = e.target; + if (!this.tooltip && this.displayTooltips) { + this.tooltip = new Tooltip(this.options); + this.tooltip.updatePosition(e.pageX, e.pageY); + } + this.updateDisplay(); + }, + + mouseleave: function () { + $(document.body).unbind('mousemove.jqs'); + var splist = this.splist, + spcount = splist.length, + needsRefresh = false, + sp, i; + this.over = false; + this.currentEl = null; + + if (this.tooltip) { + this.tooltip.remove(); + this.tooltip = null; + } + + for (i = 0; i < spcount; i++) { + sp = splist[i]; + if (sp.clearRegionHighlight()) { + needsRefresh = true; + } + } + + if (needsRefresh) { + this.canvas.render(); + } + }, + + mousemove: function (e) { + this.currentPageX = e.pageX; + this.currentPageY = e.pageY; + this.currentEl = e.target; + if (this.tooltip) { + this.tooltip.updatePosition(e.pageX, e.pageY); + } + this.updateDisplay(); + }, + + updateDisplay: function () { + var splist = this.splist, + spcount = splist.length, + needsRefresh = false, + offset = this.$canvas.offset(), + localX = this.currentPageX - offset.left, + localY = this.currentPageY - offset.top, + tooltiphtml, sp, i, result, changeEvent; + if (!this.over) { + return; + } + for (i = 0; i < spcount; i++) { + sp = splist[i]; + result = sp.setRegionHighlight(this.currentEl, localX, localY); + if (result) { + needsRefresh = true; + } + } + if (needsRefresh) { + changeEvent = $.Event('sparklineRegionChange'); + changeEvent.sparklines = this.splist; + this.$el.trigger(changeEvent); + if (this.tooltip) { + tooltiphtml = ''; + for (i = 0; i < spcount; i++) { + sp = splist[i]; + tooltiphtml += sp.getCurrentRegionTooltip(); + } + this.tooltip.setContent(tooltiphtml); + } + if (!this.disableHighlight) { + this.canvas.render(); + } + } + if (result === null) { + this.mouseleave(); + } + } + }); + + + Tooltip = createClass({ + sizeStyle: 'position: static !important;' + + 'display: block !important;' + + 'visibility: hidden !important;' + + 'float: left !important;', + + init: function (options) { + var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'), + sizetipStyle = this.sizeStyle, + offset; + this.container = options.get('tooltipContainer') || document.body; + this.tooltipOffsetX = options.get('tooltipOffsetX', 10); + this.tooltipOffsetY = options.get('tooltipOffsetY', 12); + // remove any previous lingering tooltip + $('#jqssizetip').remove(); + $('#jqstooltip').remove(); + this.sizetip = $('<div/>', { + id: 'jqssizetip', + style: sizetipStyle, + 'class': tooltipClassname + }); + this.tooltip = $('<div/>', { + id: 'jqstooltip', + 'class': tooltipClassname + }).appendTo(this.container); + // account for the container's location + offset = this.tooltip.offset(); + this.offsetLeft = offset.left; + this.offsetTop = offset.top; + this.hidden = true; + $(window).unbind('resize.jqs scroll.jqs'); + $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this)); + this.updateWindowDims(); + }, + + updateWindowDims: function () { + this.scrollTop = $(window).scrollTop(); + this.scrollLeft = $(window).scrollLeft(); + this.scrollRight = this.scrollLeft + $(window).width(); + this.updatePosition(); + }, + + getSize: function (content) { + this.sizetip.html(content).appendTo(this.container); + this.width = this.sizetip.width() + 1; + this.height = this.sizetip.height(); + this.sizetip.remove(); + }, + + setContent: function (content) { + if (!content) { + this.tooltip.css('visibility', 'hidden'); + this.hidden = true; + return; + } + this.getSize(content); + this.tooltip.html(content) + .css({ + 'width': this.width, + 'height': this.height, + 'visibility': 'visible' + }); + if (this.hidden) { + this.hidden = false; + this.updatePosition(); + } + }, + + updatePosition: function (x, y) { + if (x === undefined) { + if (this.mousex === undefined) { + return; + } + x = this.mousex - this.offsetLeft; + y = this.mousey - this.offsetTop; + + } else { + this.mousex = x = x - this.offsetLeft; + this.mousey = y = y - this.offsetTop; + } + if (!this.height || !this.width || this.hidden) { + return; + } + + y -= this.height + this.tooltipOffsetY; + x += this.tooltipOffsetX; + + if (y < this.scrollTop) { + y = this.scrollTop; + } + if (x < this.scrollLeft) { + x = this.scrollLeft; + } else if (x + this.width > this.scrollRight) { + x = this.scrollRight - this.width; + } + + this.tooltip.css({ + 'left': x, + 'top': y + }); + }, + + remove: function () { + this.tooltip.remove(); + this.sizetip.remove(); + this.sizetip = this.tooltip = undefined; + $(window).unbind('resize.jqs scroll.jqs'); + } + }); + + initStyles = function() { + addCSS(defaultStyles); + }; + + $(initStyles); + + pending = []; + $.fn.sparkline = function (userValues, userOptions) { + return this.each(function () { + var options = new $.fn.sparkline.options(this, userOptions), + $this = $(this), + render, i; + render = function () { + var values, width, height, tmp, mhandler, sp, vals; + if (userValues === 'html' || userValues === undefined) { + vals = this.getAttribute(options.get('tagValuesAttribute')); + if (vals === undefined || vals === null) { + vals = $this.html(); + } + values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(','); + } else { + values = userValues; + } + + width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width'); + if (options.get('height') === 'auto') { + if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) { + // must be a better way to get the line height + tmp = document.createElement('span'); + tmp.innerHTML = 'a'; + $this.html(tmp); + height = $(tmp).innerHeight() || $(tmp).height(); + $(tmp).remove(); + tmp = null; + } + } else { + height = options.get('height'); + } + + if (!options.get('disableInteraction')) { + mhandler = $.data(this, '_jqs_mhandler'); + if (!mhandler) { + mhandler = new MouseHandler(this, options); + $.data(this, '_jqs_mhandler', mhandler); + } else if (!options.get('composite')) { + mhandler.reset(); + } + } else { + mhandler = false; + } + + if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) { + if (!$.data(this, '_jqs_errnotify')) { + alert('Attempted to attach a composite sparkline to an element with no existing sparkline'); + $.data(this, '_jqs_errnotify', true); + } + return; + } + + sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height); + + sp.render(); + + if (mhandler) { + mhandler.registerSparkline(sp); + } + }; + if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) { + if (!options.get('composite') && $.data(this, '_jqs_pending')) { + // remove any existing references to the element + for (i = pending.length; i; i--) { + if (pending[i - 1][0] == this) { + pending.splice(i - 1, 1); + } + } + } + pending.push([this, render]); + $.data(this, '_jqs_pending', true); + } else { + render.call(this); + } + }); + }; + + $.fn.sparkline.defaults = getDefaults(); + + + $.sparkline_display_visible = function () { + var el, i, pl; + var done = []; + for (i = 0, pl = pending.length; i < pl; i++) { + el = pending[i][0]; + if ($(el).is(':visible') && !$(el).parents().is(':hidden')) { + pending[i][1].call(el); + $.data(pending[i][0], '_jqs_pending', false); + done.push(i); + } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) { + // element has been inserted and removed from the DOM + // If it was not yet inserted into the dom then the .data request + // will return true. + // removing from the dom causes the data to be removed. + $.data(pending[i][0], '_jqs_pending', false); + done.push(i); + } + } + for (i = done.length; i; i--) { + pending.splice(done[i - 1], 1); + } + }; + + + /** + * User option handler + */ + $.fn.sparkline.options = createClass({ + init: function (tag, userOptions) { + var extendedOptions, defaults, base, tagOptionType; + this.userOptions = userOptions = userOptions || {}; + this.tag = tag; + this.tagValCache = {}; + defaults = $.fn.sparkline.defaults; + base = defaults.common; + this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix); + + tagOptionType = this.getTagSetting('type'); + if (tagOptionType === UNSET_OPTION) { + extendedOptions = defaults[userOptions.type || base.type]; + } else { + extendedOptions = defaults[tagOptionType]; + } + this.mergedOptions = $.extend({}, base, extendedOptions, userOptions); + }, + + + getTagSetting: function (key) { + var prefix = this.tagOptionsPrefix, + val, i, pairs, keyval; + if (prefix === false || prefix === undefined) { + return UNSET_OPTION; + } + if (this.tagValCache.hasOwnProperty(key)) { + val = this.tagValCache.key; + } else { + val = this.tag.getAttribute(prefix + key); + if (val === undefined || val === null) { + val = UNSET_OPTION; + } else if (val.substr(0, 1) === '[') { + val = val.substr(1, val.length - 2).split(','); + for (i = val.length; i--;) { + val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, '')); + } + } else if (val.substr(0, 1) === '{') { + pairs = val.substr(1, val.length - 2).split(','); + val = {}; + for (i = pairs.length; i--;) { + keyval = pairs[i].split(':', 2); + val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, '')); + } + } else { + val = normalizeValue(val); + } + this.tagValCache.key = val; + } + return val; + }, + + get: function (key, defaultval) { + var tagOption = this.getTagSetting(key), + result; + if (tagOption !== UNSET_OPTION) { + return tagOption; + } + return (result = this.mergedOptions[key]) === undefined ? defaultval : result; + } + }); + + + $.fn.sparkline._base = createClass({ + disabled: false, + + init: function (el, values, options, width, height) { + this.el = el; + this.$el = $(el); + this.values = values; + this.options = options; + this.width = width; + this.height = height; + this.currentRegion = undefined; + }, + + /** + * Setup the canvas + */ + initTarget: function () { + var interactive = !this.options.get('disableInteraction'); + if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) { + this.disabled = true; + } else { + this.canvasWidth = this.target.pixelWidth; + this.canvasHeight = this.target.pixelHeight; + } + }, + + /** + * Actually render the chart to the canvas + */ + render: function () { + if (this.disabled) { + this.el.innerHTML = ''; + return false; + } + return true; + }, + + /** + * Return a region id for a given x/y co-ordinate + */ + getRegion: function (x, y) { + }, + + /** + * Highlight an item based on the moused-over x,y co-ordinate + */ + setRegionHighlight: function (el, x, y) { + var currentRegion = this.currentRegion, + highlightEnabled = !this.options.get('disableHighlight'), + newRegion; + if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) { + return null; + } + newRegion = this.getRegion(el, x, y); + if (currentRegion !== newRegion) { + if (currentRegion !== undefined && highlightEnabled) { + this.removeHighlight(); + } + this.currentRegion = newRegion; + if (newRegion !== undefined && highlightEnabled) { + this.renderHighlight(); + } + return true; + } + return false; + }, + + /** + * Reset any currently highlighted item + */ + clearRegionHighlight: function () { + if (this.currentRegion !== undefined) { + this.removeHighlight(); + this.currentRegion = undefined; + return true; + } + return false; + }, + + renderHighlight: function () { + this.changeHighlight(true); + }, + + removeHighlight: function () { + this.changeHighlight(false); + }, + + changeHighlight: function (highlight) {}, + + /** + * Fetch the HTML to display as a tooltip + */ + getCurrentRegionTooltip: function () { + var options = this.options, + header = '', + entries = [], + fields, formats, formatlen, fclass, text, i, + showFields, showFieldsKey, newFields, fv, + formatter, format, fieldlen, j; + if (this.currentRegion === undefined) { + return ''; + } + fields = this.getCurrentRegionFields(); + formatter = options.get('tooltipFormatter'); + if (formatter) { + return formatter(this, options, fields); + } + if (options.get('tooltipChartTitle')) { + header += '<div class="jqs jqstitle">' + options.get('tooltipChartTitle') + '</div>\n'; + } + formats = this.options.get('tooltipFormat'); + if (!formats) { + return ''; + } + if (!$.isArray(formats)) { + formats = [formats]; + } + if (!$.isArray(fields)) { + fields = [fields]; + } + showFields = this.options.get('tooltipFormatFieldlist'); + showFieldsKey = this.options.get('tooltipFormatFieldlistKey'); + if (showFields && showFieldsKey) { + // user-selected ordering of fields + newFields = []; + for (i = fields.length; i--;) { + fv = fields[i][showFieldsKey]; + if ((j = $.inArray(fv, showFields)) != -1) { + newFields[j] = fields[i]; + } + } + fields = newFields; + } + formatlen = formats.length; + fieldlen = fields.length; + for (i = 0; i < formatlen; i++) { + format = formats[i]; + if (typeof format === 'string') { + format = new SPFormat(format); + } + fclass = format.fclass || 'jqsfield'; + for (j = 0; j < fieldlen; j++) { + if (!fields[j].isNull || !options.get('tooltipSkipNull')) { + $.extend(fields[j], { + prefix: options.get('tooltipPrefix'), + suffix: options.get('tooltipSuffix') + }); + text = format.render(fields[j], options.get('tooltipValueLookups'), options); + entries.push('<div class="' + fclass + '">' + text + '</div>'); + } + } + } + if (entries.length) { + return header + entries.join('\n'); + } + return ''; + }, + + getCurrentRegionFields: function () {}, + + calcHighlightColor: function (color, options) { + var highlightColor = options.get('highlightColor'), + lighten = options.get('highlightLighten'), + parse, mult, rgbnew, i; + if (highlightColor) { + return highlightColor; + } + if (lighten) { + // extract RGB values + parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color); + if (parse) { + rgbnew = []; + mult = color.length === 4 ? 16 : 1; + for (i = 0; i < 3; i++) { + rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255); + } + return 'rgb(' + rgbnew.join(',') + ')'; + } + + } + return color; + } + + }); + + barHighlightMixin = { + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + target = this.target, + shapeids = this.regionShapes[currentRegion], + newShapes; + // will be null if the region value was null + if (shapeids) { + newShapes = this.renderRegion(currentRegion, highlight); + if ($.isArray(newShapes) || $.isArray(shapeids)) { + target.replaceWithShapes(shapeids, newShapes); + this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) { + return newShape.id; + }); + } else { + target.replaceWithShape(shapeids, newShapes); + this.regionShapes[currentRegion] = newShapes.id; + } + } + }, + + render: function () { + var values = this.values, + target = this.target, + regionShapes = this.regionShapes, + shapes, ids, i, j; + + if (!this.cls._super.render.call(this)) { + return; + } + for (i = values.length; i--;) { + shapes = this.renderRegion(i); + if (shapes) { + if ($.isArray(shapes)) { + ids = []; + for (j = shapes.length; j--;) { + shapes[j].append(); + ids.push(shapes[j].id); + } + regionShapes[i] = ids; + } else { + shapes.append(); + regionShapes[i] = shapes.id; // store just the shapeid + } + } else { + // null value + regionShapes[i] = null; + } + } + target.render(); + } + }; + + /** + * Line charts + */ + $.fn.sparkline.line = line = createClass($.fn.sparkline._base, { + type: 'line', + + init: function (el, values, options, width, height) { + line._super.init.call(this, el, values, options, width, height); + this.vertices = []; + this.regionMap = []; + this.xvalues = []; + this.yvalues = []; + this.yminmax = []; + this.hightlightSpotId = null; + this.lastShapeId = null; + this.initTarget(); + }, + + getRegion: function (el, x, y) { + var i, + regionMap = this.regionMap; // maps regions to value positions + for (i = regionMap.length; i--;) { + if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) { + return regionMap[i][2]; + } + } + return undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.yvalues[currentRegion] === null, + x: this.xvalues[currentRegion], + y: this.yvalues[currentRegion], + color: this.options.get('lineColor'), + fillColor: this.options.get('fillColor'), + offset: currentRegion + }; + }, + + renderHighlight: function () { + var currentRegion = this.currentRegion, + target = this.target, + vertex = this.vertices[currentRegion], + options = this.options, + spotRadius = options.get('spotRadius'), + highlightSpotColor = options.get('highlightSpotColor'), + highlightLineColor = options.get('highlightLineColor'), + highlightSpot, highlightLine; + + if (!vertex) { + return; + } + if (spotRadius && highlightSpotColor) { + highlightSpot = target.drawCircle(vertex[0], vertex[1], + spotRadius, undefined, highlightSpotColor); + this.highlightSpotId = highlightSpot.id; + target.insertAfterShape(this.lastShapeId, highlightSpot); + } + if (highlightLineColor) { + highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0], + this.canvasTop + this.canvasHeight, highlightLineColor); + this.highlightLineId = highlightLine.id; + target.insertAfterShape(this.lastShapeId, highlightLine); + } + }, + + removeHighlight: function () { + var target = this.target; + if (this.highlightSpotId) { + target.removeShapeId(this.highlightSpotId); + this.highlightSpotId = null; + } + if (this.highlightLineId) { + target.removeShapeId(this.highlightLineId); + this.highlightLineId = null; + } + }, + + scanValues: function () { + var values = this.values, + valcount = values.length, + xvalues = this.xvalues, + yvalues = this.yvalues, + yminmax = this.yminmax, + i, val, isStr, isArray, sp; + for (i = 0; i < valcount; i++) { + val = values[i]; + isStr = typeof(values[i]) === 'string'; + isArray = typeof(values[i]) === 'object' && values[i] instanceof Array; + sp = isStr && values[i].split(':'); + if (isStr && sp.length === 2) { // x:y + xvalues.push(Number(sp[0])); + yvalues.push(Number(sp[1])); + yminmax.push(Number(sp[1])); + } else if (isArray) { + xvalues.push(val[0]); + yvalues.push(val[1]); + yminmax.push(val[1]); + } else { + xvalues.push(i); + if (values[i] === null || values[i] === 'null') { + yvalues.push(null); + } else { + yvalues.push(Number(val)); + yminmax.push(Number(val)); + } + } + } + if (this.options.get('xvalues')) { + xvalues = this.options.get('xvalues'); + } + + this.maxy = this.maxyorg = Math.max.apply(Math, yminmax); + this.miny = this.minyorg = Math.min.apply(Math, yminmax); + + this.maxx = Math.max.apply(Math, xvalues); + this.minx = Math.min.apply(Math, xvalues); + + this.xvalues = xvalues; + this.yvalues = yvalues; + this.yminmax = yminmax; + + }, + + processRangeOptions: function () { + var options = this.options, + normalRangeMin = options.get('normalRangeMin'), + normalRangeMax = options.get('normalRangeMax'); + + if (normalRangeMin !== undefined) { + if (normalRangeMin < this.miny) { + this.miny = normalRangeMin; + } + if (normalRangeMax > this.maxy) { + this.maxy = normalRangeMax; + } + } + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) { + this.miny = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) { + this.maxy = options.get('chartRangeMax'); + } + if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) { + this.minx = options.get('chartRangeMinX'); + } + if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) { + this.maxx = options.get('chartRangeMaxX'); + } + + }, + + drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) { + var normalRangeMin = this.options.get('normalRangeMin'), + normalRangeMax = this.options.get('normalRangeMax'), + ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))), + height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey); + this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append(); + }, + + render: function () { + var options = this.options, + target = this.target, + canvasWidth = this.canvasWidth, + canvasHeight = this.canvasHeight, + vertices = this.vertices, + spotRadius = options.get('spotRadius'), + regionMap = this.regionMap, + rangex, rangey, yvallast, + canvasTop, canvasLeft, + vertex, path, paths, x, y, xnext, xpos, xposnext, + last, next, yvalcount, lineShapes, fillShapes, plen, + valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i; + + if (!line._super.render.call(this)) { + return; + } + + this.scanValues(); + this.processRangeOptions(); + + xvalues = this.xvalues; + yvalues = this.yvalues; + + if (!this.yminmax.length || this.yvalues.length < 2) { + // empty or all null valuess + return; + } + + canvasTop = canvasLeft = 0; + + rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx; + rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny; + yvallast = this.yvalues.length - 1; + + if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) { + spotRadius = 0; + } + if (spotRadius) { + // adjust the canvas size as required so that spots will fit + hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction'); + if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) { + canvasHeight -= Math.ceil(spotRadius); + } + if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) { + canvasHeight -= Math.ceil(spotRadius); + canvasTop += Math.ceil(spotRadius); + } + if (hlSpotsEnabled || + ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) { + canvasLeft += Math.ceil(spotRadius); + canvasWidth -= Math.ceil(spotRadius); + } + if (hlSpotsEnabled || options.get('spotColor') || + (options.get('minSpotColor') || options.get('maxSpotColor') && + (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) { + canvasWidth -= Math.ceil(spotRadius); + } + } + + + canvasHeight--; + + if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) { + this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); + } + + path = []; + paths = [path]; + last = next = null; + yvalcount = yvalues.length; + for (i = 0; i < yvalcount; i++) { + x = xvalues[i]; + xnext = xvalues[i + 1]; + y = yvalues[i]; + xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)); + xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth; + next = xpos + ((xposnext - xpos) / 2); + regionMap[i] = [last || 0, next, i]; + last = next; + if (y === null) { + if (i) { + if (yvalues[i - 1] !== null) { + path = []; + paths.push(path); + } + vertices.push(null); + } + } else { + if (y < this.miny) { + y = this.miny; + } + if (y > this.maxy) { + y = this.maxy; + } + if (!path.length) { + // previous value was null + path.push([xpos, canvasTop + canvasHeight]); + } + vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))]; + path.push(vertex); + vertices.push(vertex); + } + } + + lineShapes = []; + fillShapes = []; + plen = paths.length; + for (i = 0; i < plen; i++) { + path = paths[i]; + if (path.length) { + if (options.get('fillColor')) { + path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]); + fillShapes.push(path.slice(0)); + path.pop(); + } + // if there's only a single point in this path, then we want to display it + // as a vertical line which means we keep path[0] as is + if (path.length > 2) { + // else we want the first value + path[0] = [path[0][0], path[1][1]]; + } + lineShapes.push(path); + } + } + + // draw the fill first, then optionally the normal range, then the line on top of that + plen = fillShapes.length; + for (i = 0; i < plen; i++) { + target.drawShape(fillShapes[i], + options.get('fillColor'), options.get('fillColor')).append(); + } + + if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) { + this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey); + } + + plen = lineShapes.length; + for (i = 0; i < plen; i++) { + target.drawShape(lineShapes[i], options.get('lineColor'), undefined, + options.get('lineWidth')).append(); + } + + if (spotRadius && options.get('valueSpots')) { + valueSpots = options.get('valueSpots'); + if (valueSpots.get === undefined) { + valueSpots = new RangeMap(valueSpots); + } + for (i = 0; i < yvalcount; i++) { + color = valueSpots.get(yvalues[i]); + if (color) { + target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))), + spotRadius, undefined, + color).append(); + } + } + + } + if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) { + target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))), + spotRadius, undefined, + options.get('spotColor')).append(); + } + if (this.maxy !== this.minyorg) { + if (spotRadius && options.get('minSpotColor')) { + x = xvalues[$.inArray(this.minyorg, yvalues)]; + target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))), + spotRadius, undefined, + options.get('minSpotColor')).append(); + } + if (spotRadius && options.get('maxSpotColor')) { + x = xvalues[$.inArray(this.maxyorg, yvalues)]; + target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)), + canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))), + spotRadius, undefined, + options.get('maxSpotColor')).append(); + } + } + + this.lastShapeId = target.getLastShapeId(); + this.canvasTop = canvasTop; + target.render(); + } + }); + + /** + * Bar charts + */ + $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'bar', + + init: function (el, values, options, width, height) { + var barWidth = parseInt(options.get('barWidth'), 10), + barSpacing = parseInt(options.get('barSpacing'), 10), + chartRangeMin = options.get('chartRangeMin'), + chartRangeMax = options.get('chartRangeMax'), + chartRangeClip = options.get('chartRangeClip'), + stackMin = Infinity, + stackMax = -Infinity, + isStackString, groupMin, groupMax, stackRanges, + numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax, + stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf; + bar._super.init.call(this, el, values, options, width, height); + + // scan values to determine whether to stack bars + for (i = 0, vlen = values.length; i < vlen; i++) { + val = values[i]; + isStackString = typeof(val) === 'string' && val.indexOf(':') > -1; + if (isStackString || $.isArray(val)) { + stacked = true; + if (isStackString) { + val = values[i] = normalizeValues(val.split(':')); + } + val = remove(val, null); // min/max will treat null as zero + groupMin = Math.min.apply(Math, val); + groupMax = Math.max.apply(Math, val); + if (groupMin < stackMin) { + stackMin = groupMin; + } + if (groupMax > stackMax) { + stackMax = groupMax; + } + } + } + + this.stacked = stacked; + this.regionShapes = {}; + this.barWidth = barWidth; + this.barSpacing = barSpacing; + this.totalBarWidth = barWidth + barSpacing; + this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); + + this.initTarget(); + + if (chartRangeClip) { + clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin; + clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax; + } + + numValues = []; + stackRanges = stacked ? [] : numValues; + var stackTotals = []; + var stackRangesNeg = []; + for (i = 0, vlen = values.length; i < vlen; i++) { + if (stacked) { + vlist = values[i]; + values[i] = svals = []; + stackTotals[i] = 0; + stackRanges[i] = stackRangesNeg[i] = 0; + for (j = 0, slen = vlist.length; j < slen; j++) { + val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j]; + if (val !== null) { + if (val > 0) { + stackTotals[i] += val; + } + if (stackMin < 0 && stackMax > 0) { + if (val < 0) { + stackRangesNeg[i] += Math.abs(val); + } else { + stackRanges[i] += val; + } + } else { + stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin)); + } + numValues.push(val); + } + } + } else { + val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i]; + val = values[i] = normalizeValue(val); + if (val !== null) { + numValues.push(val); + } + } + } + this.max = max = Math.max.apply(Math, numValues); + this.min = min = Math.min.apply(Math, numValues); + this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max; + this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min; + + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) { + min = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) { + max = options.get('chartRangeMax'); + } + + this.zeroAxis = zeroAxis = options.get('zeroAxis', true); + if (min <= 0 && max >= 0 && zeroAxis) { + xaxisOffset = 0; + } else if (zeroAxis == false) { + xaxisOffset = min; + } else if (min > 0) { + xaxisOffset = min; + } else { + xaxisOffset = max; + } + this.xaxisOffset = xaxisOffset; + + range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min; + + // as we plot zero/min values a single pixel line, we add a pixel to all other + // values - Reduce the effective canvas size to suit + this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1; + + if (min < xaxisOffset) { + yMaxCalc = (stacked && max >= 0) ? stackMax : max; + yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight; + if (yoffset !== Math.ceil(yoffset)) { + this.canvasHeightEf -= 2; + yoffset = Math.ceil(yoffset); + } + } else { + yoffset = this.canvasHeight; + } + this.yoffset = yoffset; + + if ($.isArray(options.get('colorMap'))) { + this.colorMapByIndex = options.get('colorMap'); + this.colorMapByValue = null; + } else { + this.colorMapByIndex = null; + this.colorMapByValue = options.get('colorMap'); + if (this.colorMapByValue && this.colorMapByValue.get === undefined) { + this.colorMapByValue = new RangeMap(this.colorMapByValue); + } + } + + this.range = range; + }, + + getRegion: function (el, x, y) { + var result = Math.floor(x / this.totalBarWidth); + return (result < 0 || result >= this.values.length) ? undefined : result; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion, + values = ensureArray(this.values[currentRegion]), + result = [], + value, i; + for (i = values.length; i--;) { + value = values[i]; + result.push({ + isNull: value === null, + value: value, + color: this.calcColor(i, value, currentRegion), + offset: currentRegion + }); + } + return result; + }, + + calcColor: function (stacknum, value, valuenum) { + var colorMapByIndex = this.colorMapByIndex, + colorMapByValue = this.colorMapByValue, + options = this.options, + color, newColor; + if (this.stacked) { + color = options.get('stackedBarColor'); + } else { + color = (value < 0) ? options.get('negBarColor') : options.get('barColor'); + } + if (value === 0 && options.get('zeroColor') !== undefined) { + color = options.get('zeroColor'); + } + if (colorMapByValue && (newColor = colorMapByValue.get(value))) { + color = newColor; + } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { + color = colorMapByIndex[valuenum]; + } + return $.isArray(color) ? color[stacknum % color.length] : color; + }, + + /** + * Render bar(s) for a region + */ + renderRegion: function (valuenum, highlight) { + var vals = this.values[valuenum], + options = this.options, + xaxisOffset = this.xaxisOffset, + result = [], + range = this.range, + stacked = this.stacked, + target = this.target, + x = valuenum * this.totalBarWidth, + canvasHeightEf = this.canvasHeightEf, + yoffset = this.yoffset, + y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin; + + vals = $.isArray(vals) ? vals : [vals]; + valcount = vals.length; + val = vals[0]; + isNull = all(null, vals); + allMin = all(xaxisOffset, vals, true); + + if (isNull) { + if (options.get('nullColor')) { + color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options); + y = (yoffset > 0) ? yoffset - 1 : yoffset; + return target.drawRect(x, y, this.barWidth - 1, 0, color, color); + } else { + return undefined; + } + } + yoffsetNeg = yoffset; + for (i = 0; i < valcount; i++) { + val = vals[i]; + + if (stacked && val === xaxisOffset) { + if (!allMin || minPlotted) { + continue; + } + minPlotted = true; + } + + if (range > 0) { + height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1; + } else { + height = 1; + } + if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) { + y = yoffsetNeg; + yoffsetNeg += height; + } else { + y = yoffset - height; + yoffset -= height; + } + color = this.calcColor(i, val, valuenum); + if (highlight) { + color = this.calcHighlightColor(color, options); + } + result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color)); + } + if (result.length === 1) { + return result[0]; + } + return result; + } + }); + + /** + * Tristate charts + */ + $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'tristate', + + init: function (el, values, options, width, height) { + var barWidth = parseInt(options.get('barWidth'), 10), + barSpacing = parseInt(options.get('barSpacing'), 10); + tristate._super.init.call(this, el, values, options, width, height); + + this.regionShapes = {}; + this.barWidth = barWidth; + this.barSpacing = barSpacing; + this.totalBarWidth = barWidth + barSpacing; + this.values = $.map(values, Number); + this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing); + + if ($.isArray(options.get('colorMap'))) { + this.colorMapByIndex = options.get('colorMap'); + this.colorMapByValue = null; + } else { + this.colorMapByIndex = null; + this.colorMapByValue = options.get('colorMap'); + if (this.colorMapByValue && this.colorMapByValue.get === undefined) { + this.colorMapByValue = new RangeMap(this.colorMapByValue); + } + } + this.initTarget(); + }, + + getRegion: function (el, x, y) { + return Math.floor(x / this.totalBarWidth); + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + color: this.calcColor(this.values[currentRegion], currentRegion), + offset: currentRegion + }; + }, + + calcColor: function (value, valuenum) { + var values = this.values, + options = this.options, + colorMapByIndex = this.colorMapByIndex, + colorMapByValue = this.colorMapByValue, + color, newColor; + + if (colorMapByValue && (newColor = colorMapByValue.get(value))) { + color = newColor; + } else if (colorMapByIndex && colorMapByIndex.length > valuenum) { + color = colorMapByIndex[valuenum]; + } else if (values[valuenum] < 0) { + color = options.get('negBarColor'); + } else if (values[valuenum] > 0) { + color = options.get('posBarColor'); + } else { + color = options.get('zeroBarColor'); + } + return color; + }, + + renderRegion: function (valuenum, highlight) { + var values = this.values, + options = this.options, + target = this.target, + canvasHeight, height, halfHeight, + x, y, color; + + canvasHeight = target.pixelHeight; + halfHeight = Math.round(canvasHeight / 2); + + x = valuenum * this.totalBarWidth; + if (values[valuenum] < 0) { + y = halfHeight; + height = halfHeight - 1; + } else if (values[valuenum] > 0) { + y = 0; + height = halfHeight - 1; + } else { + y = halfHeight - 1; + height = 2; + } + color = this.calcColor(values[valuenum], valuenum); + if (color === null) { + return; + } + if (highlight) { + color = this.calcHighlightColor(color, options); + } + return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color); + } + }); + + /** + * Discrete charts + */ + $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, { + type: 'discrete', + + init: function (el, values, options, width, height) { + discrete._super.init.call(this, el, values, options, width, height); + + this.regionShapes = {}; + this.values = values = $.map(values, Number); + this.min = Math.min.apply(Math, values); + this.max = Math.max.apply(Math, values); + this.range = this.max - this.min; + this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width; + this.interval = Math.floor(width / values.length); + this.itemWidth = width / values.length; + if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) { + this.min = options.get('chartRangeMin'); + } + if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) { + this.max = options.get('chartRangeMax'); + } + this.initTarget(); + if (this.target) { + this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight'); + } + }, + + getRegion: function (el, x, y) { + return Math.floor(x / this.itemWidth); + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + offset: currentRegion + }; + }, + + renderRegion: function (valuenum, highlight) { + var values = this.values, + options = this.options, + min = this.min, + max = this.max, + range = this.range, + interval = this.interval, + target = this.target, + canvasHeight = this.canvasHeight, + lineHeight = this.lineHeight, + pheight = canvasHeight - lineHeight, + ytop, val, color, x; + + val = clipval(values[valuenum], min, max); + x = valuenum * interval; + ytop = Math.round(pheight - pheight * ((val - min) / range)); + color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor'); + if (highlight) { + color = this.calcHighlightColor(color, options); + } + return target.drawLine(x, ytop, x, ytop + lineHeight, color); + } + }); + + /** + * Bullet charts + */ + $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, { + type: 'bullet', + + init: function (el, values, options, width, height) { + var min, max, vals; + bullet._super.init.call(this, el, values, options, width, height); + + // values: target, performance, range1, range2, range3 + this.values = values = normalizeValues(values); + // target or performance could be null + vals = values.slice(); + vals[0] = vals[0] === null ? vals[2] : vals[0]; + vals[1] = values[1] === null ? vals[2] : vals[1]; + min = Math.min.apply(Math, values); + max = Math.max.apply(Math, values); + if (options.get('base') === undefined) { + min = min < 0 ? min : 0; + } else { + min = options.get('base'); + } + this.min = min; + this.max = max; + this.range = max - min; + this.shapes = {}; + this.valueShapes = {}; + this.regiondata = {}; + this.width = width = options.get('width') === 'auto' ? '4.0em' : width; + this.target = this.$el.simpledraw(width, height, options.get('composite')); + if (!values.length) { + this.disabled = true; + } + this.initTarget(); + }, + + getRegion: function (el, x, y) { + var shapeid = this.target.getShapeAt(el, x, y); + return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + fieldkey: currentRegion.substr(0, 1), + value: this.values[currentRegion.substr(1)], + region: currentRegion + }; + }, + + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + shapeid = this.valueShapes[currentRegion], + shape; + delete this.shapes[shapeid]; + switch (currentRegion.substr(0, 1)) { + case 'r': + shape = this.renderRange(currentRegion.substr(1), highlight); + break; + case 'p': + shape = this.renderPerformance(highlight); + break; + case 't': + shape = this.renderTarget(highlight); + break; + } + this.valueShapes[currentRegion] = shape.id; + this.shapes[shape.id] = currentRegion; + this.target.replaceWithShape(shapeid, shape); + }, + + renderRange: function (rn, highlight) { + var rangeval = this.values[rn], + rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)), + color = this.options.get('rangeColors')[rn - 2]; + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color); + }, + + renderPerformance: function (highlight) { + var perfval = this.values[1], + perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)), + color = this.options.get('performanceColor'); + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1, + Math.round(this.canvasHeight * 0.4) - 1, color, color); + }, + + renderTarget: function (highlight) { + var targetval = this.values[0], + x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)), + targettop = Math.round(this.canvasHeight * 0.10), + targetheight = this.canvasHeight - (targettop * 2), + color = this.options.get('targetColor'); + if (highlight) { + color = this.calcHighlightColor(color, this.options); + } + return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color); + }, + + render: function () { + var vlen = this.values.length, + target = this.target, + i, shape; + if (!bullet._super.render.call(this)) { + return; + } + for (i = 2; i < vlen; i++) { + shape = this.renderRange(i).append(); + this.shapes[shape.id] = 'r' + i; + this.valueShapes['r' + i] = shape.id; + } + if (this.values[1] !== null) { + shape = this.renderPerformance().append(); + this.shapes[shape.id] = 'p1'; + this.valueShapes.p1 = shape.id; + } + if (this.values[0] !== null) { + shape = this.renderTarget().append(); + this.shapes[shape.id] = 't0'; + this.valueShapes.t0 = shape.id; + } + target.render(); + } + }); + + /** + * Pie charts + */ + $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, { + type: 'pie', + + init: function (el, values, options, width, height) { + var total = 0, i; + + pie._super.init.call(this, el, values, options, width, height); + + this.shapes = {}; // map shape ids to value offsets + this.valueShapes = {}; // maps value offsets to shape ids + this.values = values = $.map(values, Number); + + if (options.get('width') === 'auto') { + this.width = this.height; + } + + if (values.length > 0) { + for (i = values.length; i--;) { + total += values[i]; + } + } + this.total = total; + this.initTarget(); + this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2); + }, + + getRegion: function (el, x, y) { + var shapeid = this.target.getShapeAt(el, x, y); + return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined; + }, + + getCurrentRegionFields: function () { + var currentRegion = this.currentRegion; + return { + isNull: this.values[currentRegion] === undefined, + value: this.values[currentRegion], + percent: this.values[currentRegion] / this.total * 100, + color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length], + offset: currentRegion + }; + }, + + changeHighlight: function (highlight) { + var currentRegion = this.currentRegion, + newslice = this.renderSlice(currentRegion, highlight), + shapeid = this.valueShapes[currentRegion]; + delete this.shapes[shapeid]; + this.target.replaceWithShape(shapeid, newslice); + this.valueShapes[currentRegion] = newslice.id; + this.shapes[newslice.id] = currentRegion; + }, + + renderSlice: function (valuenum, highlight) { + var target = this.target, + options = this.options, + radius = this.radius, + borderWidth = options.get('borderWidth'), + offset = options.get('offset'), + circle = 2 * Math.PI, + values = this.values, + total = this.total, + next = offset ? (2*Math.PI)*(offset/360) : 0, + start, end, i, vlen, color; + + vlen = values.length; + for (i = 0; i < vlen; i++) { + start = next; + end = next; + if (total > 0) { // avoid divide by zero + end = next + (circle * (values[i] / total)); + } + if (valuenum === i) { + color = options.get('sliceColors')[i % options.get('sliceColors').length]; + if (highlight) { + color = this.calcHighlightColor(color, options); + } + + return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color); + } + next = end; + } + }, + + render: function () { + var target = this.target, + values = this.values, + options = this.options, + radius = this.radius, + borderWidth = options.get('borderWidth'), + shape, i; + + if (!pie._super.render.call(this)) { + return; + } + if (borderWidth) { + target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)), + options.get('borderColor'), undefined, borderWidth).append(); + } + for (i = values.length; i--;) { + if (values[i]) { // don't render zero values + shape = this.renderSlice(i).append(); + this.valueShapes[i] = shape.id; // store just the shapeid + this.shapes[shape.id] = i; + } + } + target.render(); + } + }); + + /** + * Box plots + */ + $.fn.sparkline.box = box = createClass($.fn.sparkline._base, { + type: 'box', + + init: function (el, values, options, width, height) { + box._super.init.call(this, el, values, options, width, height); + this.values = $.map(values, Number); + this.width = options.get('width') === 'auto' ? '4.0em' : width; + this.initTarget(); + if (!this.values.length) { + this.disabled = 1; + } + }, + + /** + * Simulate a single region + */ + getRegion: function () { + return 1; + }, + + getCurrentRegionFields: function () { + var result = [ + { field: 'lq', value: this.quartiles[0] }, + { field: 'med', value: this.quartiles[1] }, + { field: 'uq', value: this.quartiles[2] } + ]; + if (this.loutlier !== undefined) { + result.push({ field: 'lo', value: this.loutlier}); + } + if (this.routlier !== undefined) { + result.push({ field: 'ro', value: this.routlier}); + } + if (this.lwhisker !== undefined) { + result.push({ field: 'lw', value: this.lwhisker}); + } + if (this.rwhisker !== undefined) { + result.push({ field: 'rw', value: this.rwhisker}); + } + return result; + }, + + render: function () { + var target = this.target, + values = this.values, + vlen = values.length, + options = this.options, + canvasWidth = this.canvasWidth, + canvasHeight = this.canvasHeight, + minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'), + maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'), + canvasLeft = 0, + lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i, + size, unitSize; + + if (!box._super.render.call(this)) { + return; + } + + if (options.get('raw')) { + if (options.get('showOutliers') && values.length > 5) { + loutlier = values[0]; + lwhisker = values[1]; + q1 = values[2]; + q2 = values[3]; + q3 = values[4]; + rwhisker = values[5]; + routlier = values[6]; + } else { + lwhisker = values[0]; + q1 = values[1]; + q2 = values[2]; + q3 = values[3]; + rwhisker = values[4]; + } + } else { + values.sort(function (a, b) { return a - b; }); + q1 = quartile(values, 1); + q2 = quartile(values, 2); + q3 = quartile(values, 3); + iqr = q3 - q1; + if (options.get('showOutliers')) { + lwhisker = rwhisker = undefined; + for (i = 0; i < vlen; i++) { + if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) { + lwhisker = values[i]; + } + if (values[i] < q3 + (iqr * options.get('outlierIQR'))) { + rwhisker = values[i]; + } + } + loutlier = values[0]; + routlier = values[vlen - 1]; + } else { + lwhisker = values[0]; + rwhisker = values[vlen - 1]; + } + } + this.quartiles = [q1, q2, q3]; + this.lwhisker = lwhisker; + this.rwhisker = rwhisker; + this.loutlier = loutlier; + this.routlier = routlier; + + unitSize = canvasWidth / (maxValue - minValue + 1); + if (options.get('showOutliers')) { + canvasLeft = Math.ceil(options.get('spotRadius')); + canvasWidth -= 2 * Math.ceil(options.get('spotRadius')); + unitSize = canvasWidth / (maxValue - minValue + 1); + if (loutlier < lwhisker) { + target.drawCircle((loutlier - minValue) * unitSize + canvasLeft, + canvasHeight / 2, + options.get('spotRadius'), + options.get('outlierLineColor'), + options.get('outlierFillColor')).append(); + } + if (routlier > rwhisker) { + target.drawCircle((routlier - minValue) * unitSize + canvasLeft, + canvasHeight / 2, + options.get('spotRadius'), + options.get('outlierLineColor'), + options.get('outlierFillColor')).append(); + } + } + + // box + target.drawRect( + Math.round((q1 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.1), + Math.round((q3 - q1) * unitSize), + Math.round(canvasHeight * 0.8), + options.get('boxLineColor'), + options.get('boxFillColor')).append(); + // left whisker + target.drawLine( + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + Math.round((q1 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + options.get('lineColor')).append(); + target.drawLine( + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 4), + Math.round((lwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight - canvasHeight / 4), + options.get('whiskerColor')).append(); + // right whisker + target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + Math.round((q3 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 2), + options.get('lineColor')).append(); + target.drawLine( + Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight / 4), + Math.round((rwhisker - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight - canvasHeight / 4), + options.get('whiskerColor')).append(); + // median line + target.drawLine( + Math.round((q2 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.1), + Math.round((q2 - minValue) * unitSize + canvasLeft), + Math.round(canvasHeight * 0.9), + options.get('medianColor')).append(); + if (options.get('target')) { + size = Math.ceil(options.get('spotRadius')); + target.drawLine( + Math.round((options.get('target') - minValue) * unitSize + canvasLeft), + Math.round((canvasHeight / 2) - size), + Math.round((options.get('target') - minValue) * unitSize + canvasLeft), + Math.round((canvasHeight / 2) + size), + options.get('targetColor')).append(); + target.drawLine( + Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size), + Math.round(canvasHeight / 2), + Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size), + Math.round(canvasHeight / 2), + options.get('targetColor')).append(); + } + target.render(); + } + }); + + // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier + // This is accessible as $(foo).simpledraw() + + VShape = createClass({ + init: function (target, id, type, args) { + this.target = target; + this.id = id; + this.type = type; + this.args = args; + }, + append: function () { + this.target.appendShape(this); + return this; + } + }); + + VCanvas_base = createClass({ + _pxregex: /(\d+)(px)?\s*$/i, + + init: function (width, height, target) { + if (!width) { + return; + } + this.width = width; + this.height = height; + this.target = target; + this.lastShapeId = null; + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + }, + + drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) { + return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth); + }, + + drawShape: function (path, lineColor, fillColor, lineWidth) { + return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]); + }, + + drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) { + return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]); + }, + + drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) { + return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]); + }, + + drawRect: function (x, y, width, height, lineColor, fillColor) { + return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]); + }, + + getElement: function () { + return this.canvas; + }, + + /** + * Return the most recently inserted shape id + */ + getLastShapeId: function () { + return this.lastShapeId; + }, + + /** + * Clear and reset the canvas + */ + reset: function () { + alert('reset not implemented'); + }, + + _insert: function (el, target) { + $(target).html(el); + }, + + /** + * Calculate the pixel dimensions of the canvas + */ + _calculatePixelDims: function (width, height, canvas) { + // XXX This should probably be a configurable option + var match; + match = this._pxregex.exec(height); + if (match) { + this.pixelHeight = match[1]; + } else { + this.pixelHeight = $(canvas).height(); + } + match = this._pxregex.exec(width); + if (match) { + this.pixelWidth = match[1]; + } else { + this.pixelWidth = $(canvas).width(); + } + }, + + /** + * Generate a shape object and id for later rendering + */ + _genShape: function (shapetype, shapeargs) { + var id = shapeCount++; + shapeargs.unshift(id); + return new VShape(this, id, shapetype, shapeargs); + }, + + /** + * Add a shape to the end of the render queue + */ + appendShape: function (shape) { + alert('appendShape not implemented'); + }, + + /** + * Replace one shape with another + */ + replaceWithShape: function (shapeid, shape) { + alert('replaceWithShape not implemented'); + }, + + /** + * Insert one shape after another in the render queue + */ + insertAfterShape: function (shapeid, shape) { + alert('insertAfterShape not implemented'); + }, + + /** + * Remove a shape from the queue + */ + removeShapeId: function (shapeid) { + alert('removeShapeId not implemented'); + }, + + /** + * Find a shape at the specified x/y co-ordinates + */ + getShapeAt: function (el, x, y) { + alert('getShapeAt not implemented'); + }, + + /** + * Render all queued shapes onto the canvas + */ + render: function () { + alert('render not implemented'); + } + }); + + VCanvas_canvas = createClass(VCanvas_base, { + init: function (width, height, target, interact) { + VCanvas_canvas._super.init.call(this, width, height, target); + this.canvas = document.createElement('canvas'); + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' }); + this._insert(this.canvas, target); + this._calculatePixelDims(width, height, this.canvas); + this.canvas.width = this.pixelWidth; + this.canvas.height = this.pixelHeight; + this.interact = interact; + this.shapes = {}; + this.shapeseq = []; + this.currentTargetShapeId = undefined; + $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight}); + }, + + _getContext: function (lineColor, fillColor, lineWidth) { + var context = this.canvas.getContext('2d'); + if (lineColor !== undefined) { + context.strokeStyle = lineColor; + } + context.lineWidth = lineWidth === undefined ? 1 : lineWidth; + if (fillColor !== undefined) { + context.fillStyle = fillColor; + } + return context; + }, + + reset: function () { + var context = this._getContext(); + context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); + this.shapes = {}; + this.shapeseq = []; + this.currentTargetShapeId = undefined; + }, + + _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { + var context = this._getContext(lineColor, fillColor, lineWidth), + i, plen; + context.beginPath(); + context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5); + for (i = 1, plen = path.length; i < plen; i++) { + context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines + } + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor !== undefined) { + context.fill(); + } + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + }, + + _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { + var context = this._getContext(lineColor, fillColor, lineWidth); + context.beginPath(); + context.arc(x, y, radius, 0, 2 * Math.PI, false); + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor !== undefined) { + context.fill(); + } + }, + + _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { + var context = this._getContext(lineColor, fillColor); + context.beginPath(); + context.moveTo(x, y); + context.arc(x, y, radius, startAngle, endAngle, false); + context.lineTo(x, y); + context.closePath(); + if (lineColor !== undefined) { + context.stroke(); + } + if (fillColor) { + context.fill(); + } + if (this.targetX !== undefined && this.targetY !== undefined && + context.isPointInPath(this.targetX, this.targetY)) { + this.currentTargetShapeId = shapeid; + } + }, + + _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { + return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor); + }, + + appendShape: function (shape) { + this.shapes[shape.id] = shape; + this.shapeseq.push(shape.id); + this.lastShapeId = shape.id; + return shape.id; + }, + + replaceWithShape: function (shapeid, shape) { + var shapeseq = this.shapeseq, + i; + this.shapes[shape.id] = shape; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] == shapeid) { + shapeseq[i] = shape.id; + } + } + delete this.shapes[shapeid]; + }, + + replaceWithShapes: function (shapeids, shapes) { + var shapeseq = this.shapeseq, + shapemap = {}, + sid, i, first; + + for (i = shapeids.length; i--;) { + shapemap[shapeids[i]] = true; + } + for (i = shapeseq.length; i--;) { + sid = shapeseq[i]; + if (shapemap[sid]) { + shapeseq.splice(i, 1); + delete this.shapes[sid]; + first = i; + } + } + for (i = shapes.length; i--;) { + shapeseq.splice(first, 0, shapes[i].id); + this.shapes[shapes[i].id] = shapes[i]; + } + + }, + + insertAfterShape: function (shapeid, shape) { + var shapeseq = this.shapeseq, + i; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] === shapeid) { + shapeseq.splice(i + 1, 0, shape.id); + this.shapes[shape.id] = shape; + return; + } + } + }, + + removeShapeId: function (shapeid) { + var shapeseq = this.shapeseq, + i; + for (i = shapeseq.length; i--;) { + if (shapeseq[i] === shapeid) { + shapeseq.splice(i, 1); + break; + } + } + delete this.shapes[shapeid]; + }, + + getShapeAt: function (el, x, y) { + this.targetX = x; + this.targetY = y; + this.render(); + return this.currentTargetShapeId; + }, + + render: function () { + var shapeseq = this.shapeseq, + shapes = this.shapes, + shapeCount = shapeseq.length, + context = this._getContext(), + shapeid, shape, i; + context.clearRect(0, 0, this.pixelWidth, this.pixelHeight); + for (i = 0; i < shapeCount; i++) { + shapeid = shapeseq[i]; + shape = shapes[shapeid]; + this['_draw' + shape.type].apply(this, shape.args); + } + if (!this.interact) { + // not interactive so no need to keep the shapes array + this.shapes = {}; + this.shapeseq = []; + } + } + + }); + + VCanvas_vml = createClass(VCanvas_base, { + init: function (width, height, target) { + var groupel; + VCanvas_vml._super.init.call(this, width, height, target); + if (target[0]) { + target = target[0]; + } + $.data(target, '_jqs_vcanvas', this); + this.canvas = document.createElement('span'); + $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'}); + this._insert(this.canvas, target); + this._calculatePixelDims(width, height, this.canvas); + this.canvas.width = this.pixelWidth; + this.canvas.height = this.pixelHeight; + groupel = '<v:group coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '"' + + ' style="position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;"></v:group>'; + this.canvas.insertAdjacentHTML('beforeEnd', groupel); + this.group = $(this.canvas).children()[0]; + this.rendered = false; + this.prerender = ''; + }, + + _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) { + var vpath = [], + initial, stroke, fill, closed, vel, plen, i; + for (i = 0, plen = path.length; i < plen; i++) { + vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]); + } + initial = vpath.splice(0, 1); + lineWidth = lineWidth === undefined ? 1 : lineWidth; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : ''; + vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' + + ' id="jqsshape' + shapeid + '" ' + + stroke + + fill + + ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' + + ' path="m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e">' + + ' </v:shape>'; + return vel; + }, + + _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) { + var stroke, fill, vel; + x -= radius; + y -= radius; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + vel = '<v:oval ' + + ' id="jqsshape' + shapeid + '" ' + + stroke + + fill + + ' style="position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px"></v:oval>'; + return vel; + + }, + + _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) { + var vpath, startx, starty, endx, endy, stroke, fill, vel; + if (startAngle === endAngle) { + return ''; // VML seems to have problem when start angle equals end angle. + } + if ((endAngle - startAngle) === (2 * Math.PI)) { + startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0 + endAngle = (2 * Math.PI); + } + + startx = x + Math.round(Math.cos(startAngle) * radius); + starty = y + Math.round(Math.sin(startAngle) * radius); + endx = x + Math.round(Math.cos(endAngle) * radius); + endy = y + Math.round(Math.sin(endAngle) * radius); + + if (startx === endx && starty === endy) { + if ((endAngle - startAngle) < Math.PI) { + // Prevent very small slices from being mistaken as a whole pie + return ''; + } + // essentially going to be the entire circle, so ignore startAngle + startx = endx = x + radius; + starty = endy = y; + } + + if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) { + return ''; + } + + vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy]; + stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" '; + fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" '; + vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' + + ' id="jqsshape' + shapeid + '" ' + + stroke + + fill + + ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' + + ' path="m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e">' + + ' </v:shape>'; + return vel; + }, + + _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) { + return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor); + }, + + reset: function () { + this.group.innerHTML = ''; + }, + + appendShape: function (shape) { + var vel = this['_draw' + shape.type].apply(this, shape.args); + if (this.rendered) { + this.group.insertAdjacentHTML('beforeEnd', vel); + } else { + this.prerender += vel; + } + this.lastShapeId = shape.id; + return shape.id; + }, + + replaceWithShape: function (shapeid, shape) { + var existing = $('#jqsshape' + shapeid), + vel = this['_draw' + shape.type].apply(this, shape.args); + existing[0].outerHTML = vel; + }, + + replaceWithShapes: function (shapeids, shapes) { + // replace the first shapeid with all the new shapes then toast the remaining old shapes + var existing = $('#jqsshape' + shapeids[0]), + replace = '', + slen = shapes.length, + i; + for (i = 0; i < slen; i++) { + replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args); + } + existing[0].outerHTML = replace; + for (i = 1; i < shapeids.length; i++) { + $('#jqsshape' + shapeids[i]).remove(); + } + }, + + insertAfterShape: function (shapeid, shape) { + var existing = $('#jqsshape' + shapeid), + vel = this['_draw' + shape.type].apply(this, shape.args); + existing[0].insertAdjacentHTML('afterEnd', vel); + }, + + removeShapeId: function (shapeid) { + var existing = $('#jqsshape' + shapeid); + this.group.removeChild(existing[0]); + }, + + getShapeAt: function (el, x, y) { + var shapeid = el.id.substr(8); + return shapeid; + }, + + render: function () { + if (!this.rendered) { + // batch the intial render into a single repaint + this.group.innerHTML = this.prerender; + this.rendered = true; + } + } + }); + +}))}(document, Math)); +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} ( function( $ ) { + +$.ui = $.ui || {}; + +return $.ui.version = "1.12.1"; + +} ) ); + + +/*! + * jQuery UI Keycode 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Keycode +//>>group: Core +//>>description: Provide keycodes as keynames +//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} ( function( $ ) { +return $.ui.keyCode = { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 +}; + +} ) ); + + +/*! + * jQuery UI Position 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/position/ + */ + +//>>label: Position +//>>group: Core +//>>description: Positions elements relative to other elements. +//>>docs: http://api.jqueryui.com/position/ +//>>demos: http://jqueryui.com/position/ + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +}( function( $ ) { +( function() { +var cachedScrollbarWidth, + max = Math.max, + abs = Math.abs, + rhorizontal = /left|center|right/, + rvertical = /top|center|bottom/, + roffset = /[\+\-]\d+(\.[\d]+)?%?/, + rposition = /^\w+/, + rpercent = /%$/, + _position = $.fn.position; + +function getOffsets( offsets, width, height ) { + return [ + parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), + parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) + ]; +} + +function parseCss( element, property ) { + return parseInt( $.css( element, property ), 10 ) || 0; +} + +function getDimensions( elem ) { + var raw = elem[ 0 ]; + if ( raw.nodeType === 9 ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: 0, left: 0 } + }; + } + if ( $.isWindow( raw ) ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: elem.scrollTop(), left: elem.scrollLeft() } + }; + } + if ( raw.preventDefault ) { + return { + width: 0, + height: 0, + offset: { top: raw.pageY, left: raw.pageX } + }; + } + return { + width: elem.outerWidth(), + height: elem.outerHeight(), + offset: elem.offset() + }; +} + +$.position = { + scrollbarWidth: function() { + if ( cachedScrollbarWidth !== undefined ) { + return cachedScrollbarWidth; + } + var w1, w2, + div = $( "<div " + + "style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" + + "<div style='height:100px;width:auto;'></div></div>" ), + innerDiv = div.children()[ 0 ]; + + $( "body" ).append( div ); + w1 = innerDiv.offsetWidth; + div.css( "overflow", "scroll" ); + + w2 = innerDiv.offsetWidth; + + if ( w1 === w2 ) { + w2 = div[ 0 ].clientWidth; + } + + div.remove(); + + return ( cachedScrollbarWidth = w1 - w2 ); + }, + getScrollInfo: function( within ) { + var overflowX = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-x" ), + overflowY = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-y" ), + hasOverflowX = overflowX === "scroll" || + ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), + hasOverflowY = overflowY === "scroll" || + ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); + return { + width: hasOverflowY ? $.position.scrollbarWidth() : 0, + height: hasOverflowX ? $.position.scrollbarWidth() : 0 + }; + }, + getWithinInfo: function( element ) { + var withinElement = $( element || window ), + isWindow = $.isWindow( withinElement[ 0 ] ), + isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, + hasOffset = !isWindow && !isDocument; + return { + element: withinElement, + isWindow: isWindow, + isDocument: isDocument, + offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, + scrollLeft: withinElement.scrollLeft(), + scrollTop: withinElement.scrollTop(), + width: withinElement.outerWidth(), + height: withinElement.outerHeight() + }; + } +}; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // Make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, + target = $( options.of ), + within = $.position.getWithinInfo( options.within ), + scrollInfo = $.position.getScrollInfo( within ), + collision = ( options.collision || "flip" ).split( " " ), + offsets = {}; + + dimensions = getDimensions( target ); + if ( target[ 0 ].preventDefault ) { + + // Force left top to allow flipping + options.at = "left top"; + } + targetWidth = dimensions.width; + targetHeight = dimensions.height; + targetOffset = dimensions.offset; + + // Clone to reuse original targetOffset later + basePosition = $.extend( {}, targetOffset ); + + // Force my and at to have valid horizontal and vertical positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[ this ] || "" ).split( " " ), + horizontalOffset, + verticalOffset; + + if ( pos.length === 1 ) { + pos = rhorizontal.test( pos[ 0 ] ) ? + pos.concat( [ "center" ] ) : + rvertical.test( pos[ 0 ] ) ? + [ "center" ].concat( pos ) : + [ "center", "center" ]; + } + pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; + pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; + + // Calculate offsets + horizontalOffset = roffset.exec( pos[ 0 ] ); + verticalOffset = roffset.exec( pos[ 1 ] ); + offsets[ this ] = [ + horizontalOffset ? horizontalOffset[ 0 ] : 0, + verticalOffset ? verticalOffset[ 0 ] : 0 + ]; + + // Reduce to just the positions without the offsets + options[ this ] = [ + rposition.exec( pos[ 0 ] )[ 0 ], + rposition.exec( pos[ 1 ] )[ 0 ] + ]; + } ); + + // Normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + if ( options.at[ 0 ] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[ 0 ] === "center" ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[ 1 ] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[ 1 ] === "center" ) { + basePosition.top += targetHeight / 2; + } + + atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); + basePosition.left += atOffset[ 0 ]; + basePosition.top += atOffset[ 1 ]; + + return this.each( function() { + var collisionPosition, using, + elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseCss( this, "marginLeft" ), + marginTop = parseCss( this, "marginTop" ), + collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + + scrollInfo.width, + collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + + scrollInfo.height, + position = $.extend( {}, basePosition ), + myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); + + if ( options.my[ 0 ] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[ 0 ] === "center" ) { + position.left -= elemWidth / 2; + } + + if ( options.my[ 1 ] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[ 1 ] === "center" ) { + position.top -= elemHeight / 2; + } + + position.left += myOffset[ 0 ]; + position.top += myOffset[ 1 ]; + + collisionPosition = { + marginLeft: marginLeft, + marginTop: marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[ i ] ] ) { + $.ui.position[ collision[ i ] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], + my: options.my, + at: options.at, + within: within, + elem: elem + } ); + } + } ); + + if ( options.using ) { + + // Adds feedback as second argument to using callback, if present + using = function( props ) { + var left = targetOffset.left - position.left, + right = left + targetWidth - elemWidth, + top = targetOffset.top - position.top, + bottom = top + targetHeight - elemHeight, + feedback = { + target: { + element: target, + left: targetOffset.left, + top: targetOffset.top, + width: targetWidth, + height: targetHeight + }, + element: { + element: elem, + left: position.left, + top: position.top, + width: elemWidth, + height: elemHeight + }, + horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", + vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" + }; + if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { + feedback.horizontal = "center"; + } + if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { + feedback.vertical = "middle"; + } + if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { + feedback.important = "horizontal"; + } else { + feedback.important = "vertical"; + } + options.using.call( this, props, feedback ); + }; + } + + elem.offset( $.extend( position, { using: using } ) ); + } ); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, + outerWidth = within.width, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = withinOffset - collisionPosLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, + newOverRight; + + // Element is wider than within + if ( data.collisionWidth > outerWidth ) { + + // Element is initially over the left side of within + if ( overLeft > 0 && overRight <= 0 ) { + newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - + withinOffset; + position.left += overLeft - newOverRight; + + // Element is initially over right side of within + } else if ( overRight > 0 && overLeft <= 0 ) { + position.left = withinOffset; + + // Element is initially over both left and right sides of within + } else { + if ( overLeft > overRight ) { + position.left = withinOffset + outerWidth - data.collisionWidth; + } else { + position.left = withinOffset; + } + } + + // Too far left -> align with left edge + } else if ( overLeft > 0 ) { + position.left += overLeft; + + // Too far right -> align with right edge + } else if ( overRight > 0 ) { + position.left -= overRight; + + // Adjust based on position and margin + } else { + position.left = max( position.left - collisionPosLeft, position.left ); + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollTop : within.offset.top, + outerHeight = data.within.height, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = withinOffset - collisionPosTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, + newOverBottom; + + // Element is taller than within + if ( data.collisionHeight > outerHeight ) { + + // Element is initially over the top of within + if ( overTop > 0 && overBottom <= 0 ) { + newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - + withinOffset; + position.top += overTop - newOverBottom; + + // Element is initially over bottom of within + } else if ( overBottom > 0 && overTop <= 0 ) { + position.top = withinOffset; + + // Element is initially over both top and bottom of within + } else { + if ( overTop > overBottom ) { + position.top = withinOffset + outerHeight - data.collisionHeight; + } else { + position.top = withinOffset; + } + } + + // Too far up -> align with top + } else if ( overTop > 0 ) { + position.top += overTop; + + // Too far down -> align with bottom edge + } else if ( overBottom > 0 ) { + position.top -= overBottom; + + // Adjust based on position and margin + } else { + position.top = max( position.top - collisionPosTop, position.top ); + } + } + }, + flip: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.offset.left + within.scrollLeft, + outerWidth = within.width, + offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = collisionPosLeft - offsetLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + data.at[ 0 ] === "right" ? + -data.targetWidth : + 0, + offset = -2 * data.offset[ 0 ], + newOverRight, + newOverLeft; + + if ( overLeft < 0 ) { + newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - + outerWidth - withinOffset; + if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { + position.left += myOffset + atOffset + offset; + } + } else if ( overRight > 0 ) { + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + + atOffset + offset - offsetLeft; + if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { + position.left += myOffset + atOffset + offset; + } + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.offset.top + within.scrollTop, + outerHeight = within.height, + offsetTop = within.isWindow ? within.scrollTop : within.offset.top, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = collisionPosTop - offsetTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, + top = data.my[ 1 ] === "top", + myOffset = top ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + data.at[ 1 ] === "bottom" ? + -data.targetHeight : + 0, + offset = -2 * data.offset[ 1 ], + newOverTop, + newOverBottom; + if ( overTop < 0 ) { + newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - + outerHeight - withinOffset; + if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { + position.top += myOffset + atOffset + offset; + } + } else if ( overBottom > 0 ) { + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + + offset - offsetTop; + if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { + position.top += myOffset + atOffset + offset; + } + } + } + }, + flipfit: { + left: function() { + $.ui.position.flip.left.apply( this, arguments ); + $.ui.position.fit.left.apply( this, arguments ); + }, + top: function() { + $.ui.position.flip.top.apply( this, arguments ); + $.ui.position.fit.top.apply( this, arguments ); + } + } +}; + +} )(); + +return $.ui.position; + +} ) ); + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} ( function( $ ) { +return $.ui.safeActiveElement = function( document ) { + var activeElement; + + // Support: IE 9 only + // IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe> + try { + activeElement = document.activeElement; + } catch ( error ) { + activeElement = document.body; + } + + // Support: IE 9 - 11 only + // IE may return null instead of an element + // Interestingly, this only seems to occur when NOT in an iframe + if ( !activeElement ) { + activeElement = document.body; + } + + // Support: IE 11 only + // IE11 returns a seemingly empty object in some cases when accessing + // document.activeElement from an <iframe> + if ( !activeElement.nodeName ) { + activeElement = document.body; + } + + return activeElement; +}; + +} ) ); + + +/*! + * jQuery UI Unique ID 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: uniqueId +//>>group: Core +//>>description: Functions to generate and remove uniqueId's +//>>docs: http://api.jqueryui.com/uniqueId/ + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} ( function( $ ) { + +return $.fn.extend( { + uniqueId: ( function() { + var uuid = 0; + + return function() { + return this.each( function() { + if ( !this.id ) { + this.id = "ui-id-" + ( ++uuid ); + } + } ); + }; + } )(), + + removeUniqueId: function() { + return this.each( function() { + if ( /^ui-id-\d+$/.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + } ); + } +} ); + +} ) ); + + +/*! + * jQuery UI Widget 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Widget +//>>group: Core +//>>description: Provides a factory for creating stateful widgets with a common API. +//>>docs: http://api.jqueryui.com/jQuery.widget/ +//>>demos: http://jqueryui.com/widget/ + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +}( function( $ ) { + +var widgetUuid = 0; +var widgetSlice = Array.prototype.slice; + +$.cleanData = ( function( orig ) { + return function( elems ) { + var events, elem, i; + for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { + try { + + // Only trigger remove when necessary to save time + events = $._data( elem, "events" ); + if ( events && events.remove ) { + $( elem ).triggerHandler( "remove" ); + } + + // Http://bugs.jquery.com/ticket/8235 + } catch ( e ) {} + } + orig( elems ); + }; +} )( $.cleanData ); + +$.widget = function( name, base, prototype ) { + var existingConstructor, constructor, basePrototype; + + // ProxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + var proxiedPrototype = {}; + + var namespace = name.split( "." )[ 0 ]; + name = name.split( "." )[ 1 ]; + var fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + if ( $.isArray( prototype ) ) { + prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); + } + + // Create selector for plugin + $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + + // Allow instantiation without "new" keyword + if ( !this._createWidget ) { + return new constructor( options, element ); + } + + // Allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + + // Extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + + // Copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + + // Track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + } ); + + basePrototype = new base(); + + // We need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( !$.isFunction( value ) ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = ( function() { + function _super() { + return base.prototype[ prop ].apply( this, arguments ); + } + + function _superApply( args ) { + return base.prototype[ prop ].apply( this, args ); + } + + return function() { + var __super = this._super; + var __superApply = this._superApply; + var returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + } )(); + } ); + constructor.prototype = $.widget.extend( basePrototype, { + + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + } ); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // Redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, + child._proto ); + } ); + + // Remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); + + return constructor; +}; + +$.widget.extend = function( target ) { + var input = widgetSlice.call( arguments, 1 ); + var inputIndex = 0; + var inputLength = input.length; + var key; + var value; + + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { + + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string"; + var args = widgetSlice.call( arguments, 1 ); + var returnValue = this; + + if ( isMethodCall ) { + + // If this is an empty collection, we need to have the instance method + // return undefined instead of the jQuery instance + if ( !this.length && options === "instance" ) { + returnValue = undefined; + } else { + this.each( function() { + var methodValue; + var instance = $.data( this, fullName ); + + if ( options === "instance" ) { + returnValue = instance; + return false; + } + + if ( !instance ) { + return $.error( "cannot call methods on " + name + + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + + if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + + " widget instance" ); + } + + methodValue = instance[ options ].apply( instance, args ); + + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + } ); + } + } else { + + // Allow multiple hashes to be passed on init + if ( args.length ) { + options = $.widget.extend.apply( null, [ options ].concat( args ) ); + } + + this.each( function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} ); + if ( instance._init ) { + instance._init(); + } + } else { + $.data( this, fullName, new object( options, this ) ); + } + } ); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "<div>", + + options: { + classes: {}, + disabled: false, + + // Callbacks + create: null + }, + + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = widgetUuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + this.classesElementLookup = {}; + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + } ); + this.document = $( element.style ? + + // Element within the document + element.ownerDocument : + + // Element is window or document + element.document || element ); + this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); + } + + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this._create(); + + if ( this.options.disabled ) { + this._setOptionDisabled( this.options.disabled ); + } + + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + + _getCreateOptions: function() { + return {}; + }, + + _getCreateEventData: $.noop, + + _create: $.noop, + + _init: $.noop, + + destroy: function() { + var that = this; + + this._destroy(); + $.each( this.classesElementLookup, function( key, value ) { + that._removeClass( value, key ); + } ); + + // We can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .off( this.eventNamespace ) + .removeData( this.widgetFullName ); + this.widget() + .off( this.eventNamespace ) + .removeAttr( "aria-disabled" ); + + // Clean up events and states + this.bindings.off( this.eventNamespace ); + }, + + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key; + var parts; + var curOption; + var i; + + if ( arguments.length === 0 ) { + + // Don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + + // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( arguments.length === 1 ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( arguments.length === 1 ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + + _setOption: function( key, value ) { + if ( key === "classes" ) { + this._setOptionClasses( value ); + } + + this.options[ key ] = value; + + if ( key === "disabled" ) { + this._setOptionDisabled( value ); + } + + return this; + }, + + _setOptionClasses: function( value ) { + var classKey, elements, currentElements; + + for ( classKey in value ) { + currentElements = this.classesElementLookup[ classKey ]; + if ( value[ classKey ] === this.options.classes[ classKey ] || + !currentElements || + !currentElements.length ) { + continue; + } + + // We are doing this to create a new jQuery object because the _removeClass() call + // on the next line is going to destroy the reference to the current elements being + // tracked. We need to save a copy of this collection so that we can add the new classes + // below. + elements = $( currentElements.get() ); + this._removeClass( currentElements, classKey ); + + // We don't use _addClass() here, because that uses this.options.classes + // for generating the string of classes. We want to use the value passed in from + // _setOption(), this is the new value of the classes option which was passed to + // _setOption(). We pass this value directly to _classes(). + elements.addClass( this._classes( { + element: elements, + keys: classKey, + classes: value, + add: true + } ) ); + } + }, + + _setOptionDisabled: function( value ) { + this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); + + // If the widget is becoming disabled, then nothing is interactive + if ( value ) { + this._removeClass( this.hoverable, null, "ui-state-hover" ); + this._removeClass( this.focusable, null, "ui-state-focus" ); + } + }, + + enable: function() { + return this._setOptions( { disabled: false } ); + }, + + disable: function() { + return this._setOptions( { disabled: true } ); + }, + + _classes: function( options ) { + var full = []; + var that = this; + + options = $.extend( { + element: this.element, + classes: this.options.classes || {} + }, options ); + + function processClassString( classes, checkOption ) { + var current, i; + for ( i = 0; i < classes.length; i++ ) { + current = that.classesElementLookup[ classes[ i ] ] || $(); + if ( options.add ) { + current = $( $.unique( current.get().concat( options.element.get() ) ) ); + } else { + current = $( current.not( options.element ).get() ); + } + that.classesElementLookup[ classes[ i ] ] = current; + full.push( classes[ i ] ); + if ( checkOption && options.classes[ classes[ i ] ] ) { + full.push( options.classes[ classes[ i ] ] ); + } + } + } + + this._on( options.element, { + "remove": "_untrackClassesElement" + } ); + + if ( options.keys ) { + processClassString( options.keys.match( /\S+/g ) || [], true ); + } + if ( options.extra ) { + processClassString( options.extra.match( /\S+/g ) || [] ); + } + + return full.join( " " ); + }, + + _untrackClassesElement: function( event ) { + var that = this; + $.each( that.classesElementLookup, function( key, value ) { + if ( $.inArray( event.target, value ) !== -1 ) { + that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); + } + } ); + }, + + _removeClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, false ); + }, + + _addClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, true ); + }, + + _toggleClass: function( element, keys, extra, add ) { + add = ( typeof add === "boolean" ) ? add : extra; + var shift = ( typeof element === "string" || element === null ), + options = { + extra: shift ? keys : extra, + keys: shift ? element : keys, + element: shift ? this.element : element, + add: add + }; + options.element.toggleClass( this._classes( options ), add ); + return this; + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement; + var instance = this; + + // No suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // No element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + + // Allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // Copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^([\w:-]*)\s*(.*)$/ ); + var eventName = match[ 1 ] + instance.eventNamespace; + var selector = match[ 2 ]; + + if ( selector ) { + delegateElement.on( eventName, selector, handlerProxy ); + } else { + element.on( eventName, handlerProxy ); + } + } ); + }, + + _off: function( element, eventName ) { + eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + + this.eventNamespace; + element.off( eventName ).off( eventName ); + + // Clear the stack to avoid memory leaks (#10056) + this.bindings = $( this.bindings.not( element ).get() ); + this.focusable = $( this.focusable.not( element ).get() ); + this.hoverable = $( this.hoverable.not( element ).get() ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); + }, + mouseleave: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); + } + } ); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); + }, + focusout: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); + } + } ); + }, + + _trigger: function( type, event, data ) { + var prop, orig; + var callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + + // The original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // Copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( $.isFunction( callback ) && + callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + + var hasOptions; + var effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } + + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + + if ( options.delay ) { + element.delay( options.delay ); + } + + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue( function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + } ); + } + }; +} ); + +return $.widget; + +} ) ); + + + + + + + +/*! + * jQuery UI Menu 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Menu +//>>group: Widgets +//>>description: Creates nestable menus. +//>>docs: http://api.jqueryui.com/menu/ +//>>demos: http://jqueryui.com/menu/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/menu.css +//>>css.theme: ../../themes/base/theme.css + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ + "jquery", + "../keycode", + "../position", + "../safe-active-element", + "../unique-id", + "../version", + "../widget" + ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +}( function( $ ) { + +return $.widget( "ui.menu", { + version: "1.12.1", + defaultElement: "<ul>", + delay: 300, + options: { + icons: { + submenu: "ui-icon-caret-1-e" + }, + items: "> *", + menus: "ul", + position: { + my: "left top", + at: "right top" + }, + role: "menu", + + // Callbacks + blur: null, + focus: null, + select: null + }, + + _create: function() { + this.activeMenu = this.element; + + // Flag used to prevent firing of the click handler + // as the event bubbles up through nested menus + this.mouseHandled = false; + this.element + .uniqueId() + .attr( { + role: this.options.role, + tabIndex: 0 + } ); + + this._addClass( "ui-menu", "ui-widget ui-widget-content" ); + this._on( { + + // Prevent focus from sticking to links inside menu after clicking + // them (focus should always stay on UL during navigation). + "mousedown .ui-menu-item": function( event ) { + event.preventDefault(); + }, + "click .ui-menu-item": function( event ) { + var target = $( event.target ); + var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) ); + if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) { + this.select( event ); + + // Only set the mouseHandled flag if the event will bubble, see #9469. + if ( !event.isPropagationStopped() ) { + this.mouseHandled = true; + } + + // Open submenu on click + if ( target.has( ".ui-menu" ).length ) { + this.expand( event ); + } else if ( !this.element.is( ":focus" ) && + active.closest( ".ui-menu" ).length ) { + + // Redirect focus to the menu + this.element.trigger( "focus", [ true ] ); + + // If the active item is on the top level, let it stay active. + // Otherwise, blur the active item since it is no longer visible. + if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) { + clearTimeout( this.timer ); + } + } + } + }, + "mouseenter .ui-menu-item": function( event ) { + + // Ignore mouse events while typeahead is active, see #10458. + // Prevents focusing the wrong item when typeahead causes a scroll while the mouse + // is over an item in the menu + if ( this.previousFilter ) { + return; + } + + var actualTarget = $( event.target ).closest( ".ui-menu-item" ), + target = $( event.currentTarget ); + + // Ignore bubbled events on parent items, see #11641 + if ( actualTarget[ 0 ] !== target[ 0 ] ) { + return; + } + + // Remove ui-state-active class from siblings of the newly focused menu item + // to avoid a jump caused by adjacent elements both having a class with a border + this._removeClass( target.siblings().children( ".ui-state-active" ), + null, "ui-state-active" ); + this.focus( event, target ); + }, + mouseleave: "collapseAll", + "mouseleave .ui-menu": "collapseAll", + focus: function( event, keepActiveItem ) { + + // If there's already an active item, keep it active + // If not, activate the first item + var item = this.active || this.element.find( this.options.items ).eq( 0 ); + + if ( !keepActiveItem ) { + this.focus( event, item ); + } + }, + blur: function( event ) { + this._delay( function() { + var notContained = !$.contains( + this.element[ 0 ], + $.ui.safeActiveElement( this.document[ 0 ] ) + ); + if ( notContained ) { + this.collapseAll( event ); + } + } ); + }, + keydown: "_keydown" + } ); + + this.refresh(); + + // Clicks outside of a menu collapse any open menus + this._on( this.document, { + click: function( event ) { + if ( this._closeOnDocumentClick( event ) ) { + this.collapseAll( event ); + } + + // Reset the mouseHandled flag + this.mouseHandled = false; + } + } ); + }, + + _destroy: function() { + var items = this.element.find( ".ui-menu-item" ) + .removeAttr( "role aria-disabled" ), + submenus = items.children( ".ui-menu-item-wrapper" ) + .removeUniqueId() + .removeAttr( "tabIndex role aria-haspopup" ); + + // Destroy (sub)menus + this.element + .removeAttr( "aria-activedescendant" ) + .find( ".ui-menu" ).addBack() + .removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " + + "tabIndex" ) + .removeUniqueId() + .show(); + + submenus.children().each( function() { + var elem = $( this ); + if ( elem.data( "ui-menu-submenu-caret" ) ) { + elem.remove(); + } + } ); + }, + + _keydown: function( event ) { + var match, prev, character, skip, + preventDefault = true; + + switch ( event.keyCode ) { + case $.ui.keyCode.PAGE_UP: + this.previousPage( event ); + break; + case $.ui.keyCode.PAGE_DOWN: + this.nextPage( event ); + break; + case $.ui.keyCode.HOME: + this._move( "first", "first", event ); + break; + case $.ui.keyCode.END: + this._move( "last", "last", event ); + break; + case $.ui.keyCode.UP: + this.previous( event ); + break; + case $.ui.keyCode.DOWN: + this.next( event ); + break; + case $.ui.keyCode.LEFT: + this.collapse( event ); + break; + case $.ui.keyCode.RIGHT: + if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { + this.expand( event ); + } + break; + case $.ui.keyCode.ENTER: + case $.ui.keyCode.SPACE: + this._activate( event ); + break; + case $.ui.keyCode.ESCAPE: + this.collapse( event ); + break; + default: + preventDefault = false; + prev = this.previousFilter || ""; + skip = false; + + // Support number pad values + character = event.keyCode >= 96 && event.keyCode <= 105 ? + ( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode ); + + clearTimeout( this.filterTimer ); + + if ( character === prev ) { + skip = true; + } else { + character = prev + character; + } + + match = this._filterMenuItems( character ); + match = skip && match.index( this.active.next() ) !== -1 ? + this.active.nextAll( ".ui-menu-item" ) : + match; + + // If no matches on the current filter, reset to the last character pressed + // to move down the menu to the first item that starts with that character + if ( !match.length ) { + character = String.fromCharCode( event.keyCode ); + match = this._filterMenuItems( character ); + } + + if ( match.length ) { + this.focus( event, match ); + this.previousFilter = character; + this.filterTimer = this._delay( function() { + delete this.previousFilter; + }, 1000 ); + } else { + delete this.previousFilter; + } + } + + if ( preventDefault ) { + event.preventDefault(); + } + }, + + _activate: function( event ) { + if ( this.active && !this.active.is( ".ui-state-disabled" ) ) { + if ( this.active.children( "[aria-haspopup='true']" ).length ) { + this.expand( event ); + } else { + this.select( event ); + } + } + }, + + refresh: function() { + var menus, items, newSubmenus, newItems, newWrappers, + that = this, + icon = this.options.icons.submenu, + submenus = this.element.find( this.options.menus ); + + this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length ); + + // Initialize nested menus + newSubmenus = submenus.filter( ":not(.ui-menu)" ) + .hide() + .attr( { + role: this.options.role, + "aria-hidden": "true", + "aria-expanded": "false" + } ) + .each( function() { + var menu = $( this ), + item = menu.prev(), + submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true ); + + that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon ); + item + .attr( "aria-haspopup", "true" ) + .prepend( submenuCaret ); + menu.attr( "aria-labelledby", item.attr( "id" ) ); + } ); + + this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" ); + + menus = submenus.add( this.element ); + items = menus.find( this.options.items ); + + // Initialize menu-items containing spaces and/or dashes only as dividers + items.not( ".ui-menu-item" ).each( function() { + var item = $( this ); + if ( that._isDivider( item ) ) { + that._addClass( item, "ui-menu-divider", "ui-widget-content" ); + } + } ); + + // Don't refresh list items that are already adapted + newItems = items.not( ".ui-menu-item, .ui-menu-divider" ); + newWrappers = newItems.children() + .not( ".ui-menu" ) + .uniqueId() + .attr( { + tabIndex: -1, + role: this._itemRole() + } ); + this._addClass( newItems, "ui-menu-item" ) + ._addClass( newWrappers, "ui-menu-item-wrapper" ); + + // Add aria-disabled attribute to any disabled menu item + items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" ); + + // If the active item has been removed, blur the menu + if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { + this.blur(); + } + }, + + _itemRole: function() { + return { + menu: "menuitem", + listbox: "option" + }[ this.options.role ]; + }, + + _setOption: function( key, value ) { + if ( key === "icons" ) { + var icons = this.element.find( ".ui-menu-icon" ); + this._removeClass( icons, null, this.options.icons.submenu ) + ._addClass( icons, null, value.submenu ); + } + this._super( key, value ); + }, + + _setOptionDisabled: function( value ) { + this._super( value ); + + this.element.attr( "aria-disabled", String( value ) ); + this._toggleClass( null, "ui-state-disabled", !!value ); + }, + + focus: function( event, item ) { + var nested, focused, activeParent; + this.blur( event, event && event.type === "focus" ); + + this._scrollIntoView( item ); + + this.active = item.first(); + + focused = this.active.children( ".ui-menu-item-wrapper" ); + this._addClass( focused, null, "ui-state-active" ); + + // Only update aria-activedescendant if there's a role + // otherwise we assume focus is managed elsewhere + if ( this.options.role ) { + this.element.attr( "aria-activedescendant", focused.attr( "id" ) ); + } + + // Highlight active parent menu item, if any + activeParent = this.active + .parent() + .closest( ".ui-menu-item" ) + .children( ".ui-menu-item-wrapper" ); + this._addClass( activeParent, null, "ui-state-active" ); + + if ( event && event.type === "keydown" ) { + this._close(); + } else { + this.timer = this._delay( function() { + this._close(); + }, this.delay ); + } + + nested = item.children( ".ui-menu" ); + if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) { + this._startOpening( nested ); + } + this.activeMenu = item.parent(); + + this._trigger( "focus", event, { item: item } ); + }, + + _scrollIntoView: function( item ) { + var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight; + if ( this._hasScroll() ) { + borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0; + paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0; + offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop; + scroll = this.activeMenu.scrollTop(); + elementHeight = this.activeMenu.height(); + itemHeight = item.outerHeight(); + + if ( offset < 0 ) { + this.activeMenu.scrollTop( scroll + offset ); + } else if ( offset + itemHeight > elementHeight ) { + this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight ); + } + } + }, + + blur: function( event, fromFocus ) { + if ( !fromFocus ) { + clearTimeout( this.timer ); + } + + if ( !this.active ) { + return; + } + + this._removeClass( this.active.children( ".ui-menu-item-wrapper" ), + null, "ui-state-active" ); + + this._trigger( "blur", event, { item: this.active } ); + this.active = null; + }, + + _startOpening: function( submenu ) { + clearTimeout( this.timer ); + + // Don't open if already open fixes a Firefox bug that caused a .5 pixel + // shift in the submenu position when mousing over the caret icon + if ( submenu.attr( "aria-hidden" ) !== "true" ) { + return; + } + + this.timer = this._delay( function() { + this._close(); + this._open( submenu ); + }, this.delay ); + }, + + _open: function( submenu ) { + var position = $.extend( { + of: this.active + }, this.options.position ); + + clearTimeout( this.timer ); + this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) ) + .hide() + .attr( "aria-hidden", "true" ); + + submenu + .show() + .removeAttr( "aria-hidden" ) + .attr( "aria-expanded", "true" ) + .position( position ); + }, + + collapseAll: function( event, all ) { + clearTimeout( this.timer ); + this.timer = this._delay( function() { + + // If we were passed an event, look for the submenu that contains the event + var currentMenu = all ? this.element : + $( event && event.target ).closest( this.element.find( ".ui-menu" ) ); + + // If we found no valid submenu ancestor, use the main menu to close all + // sub menus anyway + if ( !currentMenu.length ) { + currentMenu = this.element; + } + + this._close( currentMenu ); + + this.blur( event ); + + // Work around active item staying active after menu is blurred + this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" ); + + this.activeMenu = currentMenu; + }, this.delay ); + }, + + // With no arguments, closes the currently active menu - if nothing is active + // it closes all menus. If passed an argument, it will search for menus BELOW + _close: function( startMenu ) { + if ( !startMenu ) { + startMenu = this.active ? this.active.parent() : this.element; + } + + startMenu.find( ".ui-menu" ) + .hide() + .attr( "aria-hidden", "true" ) + .attr( "aria-expanded", "false" ); + }, + + _closeOnDocumentClick: function( event ) { + return !$( event.target ).closest( ".ui-menu" ).length; + }, + + _isDivider: function( item ) { + + // Match hyphen, em dash, en dash + return !/[^\-\u2014\u2013\s]/.test( item.text() ); + }, + + collapse: function( event ) { + var newItem = this.active && + this.active.parent().closest( ".ui-menu-item", this.element ); + if ( newItem && newItem.length ) { + this._close(); + this.focus( event, newItem ); + } + }, + + expand: function( event ) { + var newItem = this.active && + this.active + .children( ".ui-menu " ) + .find( this.options.items ) + .first(); + + if ( newItem && newItem.length ) { + this._open( newItem.parent() ); + + // Delay so Firefox will not hide activedescendant change in expanding submenu from AT + this._delay( function() { + this.focus( event, newItem ); + } ); + } + }, + + next: function( event ) { + this._move( "next", "first", event ); + }, + + previous: function( event ) { + this._move( "prev", "last", event ); + }, + + isFirstItem: function() { + return this.active && !this.active.prevAll( ".ui-menu-item" ).length; + }, + + isLastItem: function() { + return this.active && !this.active.nextAll( ".ui-menu-item" ).length; + }, + + _move: function( direction, filter, event ) { + var next; + if ( this.active ) { + if ( direction === "first" || direction === "last" ) { + next = this.active + [ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" ) + .eq( -1 ); + } else { + next = this.active + [ direction + "All" ]( ".ui-menu-item" ) + .eq( 0 ); + } + } + if ( !next || !next.length || !this.active ) { + next = this.activeMenu.find( this.options.items )[ filter ](); + } + + this.focus( event, next ); + }, + + nextPage: function( event ) { + var item, base, height; + + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isLastItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.height(); + this.active.nextAll( ".ui-menu-item" ).each( function() { + item = $( this ); + return item.offset().top - base - height < 0; + } ); + + this.focus( event, item ); + } else { + this.focus( event, this.activeMenu.find( this.options.items ) + [ !this.active ? "first" : "last" ]() ); + } + }, + + previousPage: function( event ) { + var item, base, height; + if ( !this.active ) { + this.next( event ); + return; + } + if ( this.isFirstItem() ) { + return; + } + if ( this._hasScroll() ) { + base = this.active.offset().top; + height = this.element.height(); + this.active.prevAll( ".ui-menu-item" ).each( function() { + item = $( this ); + return item.offset().top - base + height > 0; + } ); + + this.focus( event, item ); + } else { + this.focus( event, this.activeMenu.find( this.options.items ).first() ); + } + }, + + _hasScroll: function() { + return this.element.outerHeight() < this.element.prop( "scrollHeight" ); + }, + + select: function( event ) { + + // TODO: It should never be possible to not have an active item at this + // point, but the tests don't trigger mouseenter before click. + this.active = this.active || $( event.target ).closest( ".ui-menu-item" ); + var ui = { item: this.active }; + if ( !this.active.has( ".ui-menu" ).length ) { + this.collapseAll( event, true ); + } + this._trigger( "select", event, ui ); + }, + + _filterMenuItems: function( character ) { + var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ), + regex = new RegExp( "^" + escapedCharacter, "i" ); + + return this.activeMenu + .find( this.options.items ) + + // Only match on items, not dividers or other content (#10571) + .filter( ".ui-menu-item" ) + .filter( function() { + return regex.test( + $.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) ); + } ); + } +} ); + +} ) ); + + + + + + + +/*! + * jQuery UI Autocomplete 1.12.1 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Autocomplete +//>>group: Widgets +//>>description: Lists suggested words as the user is typing. +//>>docs: http://api.jqueryui.com/autocomplete/ +//>>demos: http://jqueryui.com/autocomplete/ +//>>css.structure: ../../themes/base/core.css +//>>css.structure: ../../themes/base/autocomplete.css +//>>css.theme: ../../themes/base/theme.css + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ + "jquery", + "./menu", + "../keycode", + "../position", + "../safe-active-element", + "../version", + "../widget" + ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +}( function( $ ) { + +$.widget( "ui.autocomplete", { + version: "1.12.1", + defaultElement: "<input>", + options: { + appendTo: null, + autoFocus: false, + delay: 300, + minLength: 1, + position: { + my: "left top", + at: "left bottom", + collision: "none" + }, + source: null, + + // Callbacks + change: null, + close: null, + focus: null, + open: null, + response: null, + search: null, + select: null + }, + + requestIndex: 0, + pending: 0, + + _create: function() { + + // Some browsers only repeat keydown events, not keypress events, + // so we use the suppressKeyPress flag to determine if we've already + // handled the keydown event. #7269 + // Unfortunately the code for & in keypress is the same as the up arrow, + // so we use the suppressKeyPressRepeat flag to avoid handling keypress + // events when we know the keydown event was used to modify the + // search term. #7799 + var suppressKeyPress, suppressKeyPressRepeat, suppressInput, + nodeName = this.element[ 0 ].nodeName.toLowerCase(), + isTextarea = nodeName === "textarea", + isInput = nodeName === "input"; + + // Textareas are always multi-line + // Inputs are always single-line, even if inside a contentEditable element + // IE also treats inputs as contentEditable + // All other element types are determined by whether or not they're contentEditable + this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element ); + + this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ]; + this.isNewMenu = true; + + this._addClass( "ui-autocomplete-input" ); + this.element.attr( "autocomplete", "off" ); + + this._on( this.element, { + keydown: function( event ) { + if ( this.element.prop( "readOnly" ) ) { + suppressKeyPress = true; + suppressInput = true; + suppressKeyPressRepeat = true; + return; + } + + suppressKeyPress = false; + suppressInput = false; + suppressKeyPressRepeat = false; + var keyCode = $.ui.keyCode; + switch ( event.keyCode ) { + case keyCode.PAGE_UP: + suppressKeyPress = true; + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + suppressKeyPress = true; + this._move( "nextPage", event ); + break; + case keyCode.UP: + suppressKeyPress = true; + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + suppressKeyPress = true; + this._keyEvent( "next", event ); + break; + case keyCode.ENTER: + + // when menu is open and has focus + if ( this.menu.active ) { + + // #6055 - Opera still allows the keypress to occur + // which causes forms to submit + suppressKeyPress = true; + event.preventDefault(); + this.menu.select( event ); + } + break; + case keyCode.TAB: + if ( this.menu.active ) { + this.menu.select( event ); + } + break; + case keyCode.ESCAPE: + if ( this.menu.element.is( ":visible" ) ) { + if ( !this.isMultiLine ) { + this._value( this.term ); + } + this.close( event ); + + // Different browsers have different default behavior for escape + // Single press can mean undo or clear + // Double press in IE means clear the whole form + event.preventDefault(); + } + break; + default: + suppressKeyPressRepeat = true; + + // search timeout should be triggered before the input value is changed + this._searchTimeout( event ); + break; + } + }, + keypress: function( event ) { + if ( suppressKeyPress ) { + suppressKeyPress = false; + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + event.preventDefault(); + } + return; + } + if ( suppressKeyPressRepeat ) { + return; + } + + // Replicate some key handlers to allow them to repeat in Firefox and Opera + var keyCode = $.ui.keyCode; + switch ( event.keyCode ) { + case keyCode.PAGE_UP: + this._move( "previousPage", event ); + break; + case keyCode.PAGE_DOWN: + this._move( "nextPage", event ); + break; + case keyCode.UP: + this._keyEvent( "previous", event ); + break; + case keyCode.DOWN: + this._keyEvent( "next", event ); + break; + } + }, + input: function( event ) { + if ( suppressInput ) { + suppressInput = false; + event.preventDefault(); + return; + } + this._searchTimeout( event ); + }, + focus: function() { + this.selectedItem = null; + this.previous = this._value(); + }, + blur: function( event ) { + if ( this.cancelBlur ) { + delete this.cancelBlur; + return; + } + + clearTimeout( this.searching ); + this.close( event ); + this._change( event ); + } + } ); + + this._initSource(); + this.menu = $( "<ul>" ) + .appendTo( this._appendTo() ) + .menu( { + + // disable ARIA support, the live region takes care of that + role: null + } ) + .hide() + .menu( "instance" ); + + this._addClass( this.menu.element, "ui-autocomplete", "ui-front" ); + this._on( this.menu.element, { + mousedown: function( event ) { + + // prevent moving focus out of the text field + event.preventDefault(); + + // IE doesn't prevent moving focus even with event.preventDefault() + // so we set a flag to know when we should ignore the blur event + this.cancelBlur = true; + this._delay( function() { + delete this.cancelBlur; + + // Support: IE 8 only + // Right clicking a menu item or selecting text from the menu items will + // result in focus moving out of the input. However, we've already received + // and ignored the blur event because of the cancelBlur flag set above. So + // we restore focus to ensure that the menu closes properly based on the user's + // next actions. + if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) { + this.element.trigger( "focus" ); + } + } ); + }, + menufocus: function( event, ui ) { + var label, item; + + // support: Firefox + // Prevent accidental activation of menu items in Firefox (#7024 #9118) + if ( this.isNewMenu ) { + this.isNewMenu = false; + if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) { + this.menu.blur(); + + this.document.one( "mousemove", function() { + $( event.target ).trigger( event.originalEvent ); + } ); + + return; + } + } + + item = ui.item.data( "ui-autocomplete-item" ); + if ( false !== this._trigger( "focus", event, { item: item } ) ) { + + // use value to match what will end up in the input, if it was a key event + if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) { + this._value( item.value ); + } + } + + // Announce the value in the liveRegion + label = ui.item.attr( "aria-label" ) || item.value; + if ( label && $.trim( label ).length ) { + this.liveRegion.children().hide(); + $( "<div>" ).text( label ).appendTo( this.liveRegion ); + } + }, + menuselect: function( event, ui ) { + var item = ui.item.data( "ui-autocomplete-item" ), + previous = this.previous; + + // Only trigger when focus was lost (click on menu) + if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) { + this.element.trigger( "focus" ); + this.previous = previous; + + // #6109 - IE triggers two focus events and the second + // is asynchronous, so we need to reset the previous + // term synchronously and asynchronously :-( + this._delay( function() { + this.previous = previous; + this.selectedItem = item; + } ); + } + + if ( false !== this._trigger( "select", event, { item: item } ) ) { + this._value( item.value ); + } + + // reset the term after the select event + // this allows custom select handling to work properly + this.term = this._value(); + + this.close( event ); + this.selectedItem = item; + } + } ); + + this.liveRegion = $( "<div>", { + role: "status", + "aria-live": "assertive", + "aria-relevant": "additions" + } ) + .appendTo( this.document[ 0 ].body ); + + this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" ); + + // Turning off autocomplete prevents the browser from remembering the + // value when navigating through history, so we re-enable autocomplete + // if the page is unloaded before the widget is destroyed. #7790 + this._on( this.window, { + beforeunload: function() { + this.element.removeAttr( "autocomplete" ); + } + } ); + }, + + _destroy: function() { + clearTimeout( this.searching ); + this.element.removeAttr( "autocomplete" ); + this.menu.element.remove(); + this.liveRegion.remove(); + }, + + _setOption: function( key, value ) { + this._super( key, value ); + if ( key === "source" ) { + this._initSource(); + } + if ( key === "appendTo" ) { + this.menu.element.appendTo( this._appendTo() ); + } + if ( key === "disabled" && value && this.xhr ) { + this.xhr.abort(); + } + }, + + _isEventTargetInWidget: function( event ) { + var menuElement = this.menu.element[ 0 ]; + + return event.target === this.element[ 0 ] || + event.target === menuElement || + $.contains( menuElement, event.target ); + }, + + _closeOnClickOutside: function( event ) { + if ( !this._isEventTargetInWidget( event ) ) { + this.close(); + } + }, + + _appendTo: function() { + var element = this.options.appendTo; + + if ( element ) { + element = element.jquery || element.nodeType ? + $( element ) : + this.document.find( element ).eq( 0 ); + } + + if ( !element || !element[ 0 ] ) { + element = this.element.closest( ".ui-front, dialog" ); + } + + if ( !element.length ) { + element = this.document[ 0 ].body; + } + + return element; + }, + + _initSource: function() { + var array, url, + that = this; + if ( $.isArray( this.options.source ) ) { + array = this.options.source; + this.source = function( request, response ) { + response( $.ui.autocomplete.filter( array, request.term ) ); + }; + } else if ( typeof this.options.source === "string" ) { + url = this.options.source; + this.source = function( request, response ) { + if ( that.xhr ) { + that.xhr.abort(); + } + that.xhr = $.ajax( { + url: url, + data: request, + dataType: "json", + success: function( data ) { + response( data ); + }, + error: function() { + response( [] ); + } + } ); + }; + } else { + this.source = this.options.source; + } + }, + + _searchTimeout: function( event ) { + clearTimeout( this.searching ); + this.searching = this._delay( function() { + + // Search if the value has changed, or if the user retypes the same value (see #7434) + var equalValues = this.term === this._value(), + menuVisible = this.menu.element.is( ":visible" ), + modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey; + + if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) { + this.selectedItem = null; + this.search( null, event ); + } + }, this.options.delay ); + }, + + search: function( value, event ) { + value = value != null ? value : this._value(); + + // Always save the actual value, not the one passed as an argument + this.term = this._value(); + + if ( value.length < this.options.minLength ) { + return this.close( event ); + } + + if ( this._trigger( "search", event ) === false ) { + return; + } + + return this._search( value ); + }, + + _search: function( value ) { + this.pending++; + this._addClass( "ui-autocomplete-loading" ); + this.cancelSearch = false; + + this.source( { term: value }, this._response() ); + }, + + _response: function() { + var index = ++this.requestIndex; + + return $.proxy( function( content ) { + if ( index === this.requestIndex ) { + this.__response( content ); + } + + this.pending--; + if ( !this.pending ) { + this._removeClass( "ui-autocomplete-loading" ); + } + }, this ); + }, + + __response: function( content ) { + if ( content ) { + content = this._normalize( content ); + } + this._trigger( "response", null, { content: content } ); + if ( !this.options.disabled && content && content.length && !this.cancelSearch ) { + this._suggest( content ); + this._trigger( "open" ); + } else { + + // use ._close() instead of .close() so we don't cancel future searches + this._close(); + } + }, + + close: function( event ) { + this.cancelSearch = true; + this._close( event ); + }, + + _close: function( event ) { + + // Remove the handler that closes the menu on outside clicks + this._off( this.document, "mousedown" ); + + if ( this.menu.element.is( ":visible" ) ) { + this.menu.element.hide(); + this.menu.blur(); + this.isNewMenu = true; + this._trigger( "close", event ); + } + }, + + _change: function( event ) { + if ( this.previous !== this._value() ) { + this._trigger( "change", event, { item: this.selectedItem } ); + } + }, + + _normalize: function( items ) { + + // assume all items have the right format when the first item is complete + if ( items.length && items[ 0 ].label && items[ 0 ].value ) { + return items; + } + return $.map( items, function( item ) { + if ( typeof item === "string" ) { + return { + label: item, + value: item + }; + } + return $.extend( {}, item, { + label: item.label || item.value, + value: item.value || item.label + } ); + } ); + }, + + _suggest: function( items ) { + var ul = this.menu.element.empty(); + this._renderMenu( ul, items ); + this.isNewMenu = true; + this.menu.refresh(); + + // Size and position menu + ul.show(); + this._resizeMenu(); + ul.position( $.extend( { + of: this.element + }, this.options.position ) ); + + if ( this.options.autoFocus ) { + this.menu.next(); + } + + // Listen for interactions outside of the widget (#6642) + this._on( this.document, { + mousedown: "_closeOnClickOutside" + } ); + }, + + _resizeMenu: function() { + var ul = this.menu.element; + ul.outerWidth( Math.max( + + // Firefox wraps long text (possibly a rounding bug) + // so we add 1px to avoid the wrapping (#7513) + ul.width( "" ).outerWidth() + 1, + this.element.outerWidth() + ) ); + }, + + _renderMenu: function( ul, items ) { + var that = this; + $.each( items, function( index, item ) { + that._renderItemData( ul, item ); + } ); + }, + + _renderItemData: function( ul, item ) { + return this._renderItem( ul, item ).data( "ui-autocomplete-item", item ); + }, + + _renderItem: function( ul, item ) { + return $( "<li>" ) + .append( $( "<div>" ).text( item.label ) ) + .appendTo( ul ); + }, + + _move: function( direction, event ) { + if ( !this.menu.element.is( ":visible" ) ) { + this.search( null, event ); + return; + } + if ( this.menu.isFirstItem() && /^previous/.test( direction ) || + this.menu.isLastItem() && /^next/.test( direction ) ) { + + if ( !this.isMultiLine ) { + this._value( this.term ); + } + + this.menu.blur(); + return; + } + this.menu[ direction ]( event ); + }, + + widget: function() { + return this.menu.element; + }, + + _value: function() { + return this.valueMethod.apply( this.element, arguments ); + }, + + _keyEvent: function( keyEvent, event ) { + if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) { + this._move( keyEvent, event ); + + // Prevents moving cursor to beginning/end of the text field in some browsers + event.preventDefault(); + } + }, + + // Support: Chrome <=50 + // We should be able to just use this.element.prop( "isContentEditable" ) + // but hidden elements always report false in Chrome. + // https://code.google.com/p/chromium/issues/detail?id=313082 + _isContentEditable: function( element ) { + if ( !element.length ) { + return false; + } + + var editable = element.prop( "contentEditable" ); + + if ( editable === "inherit" ) { + return this._isContentEditable( element.parent() ); + } + + return editable === "true"; + } +} ); + +$.extend( $.ui.autocomplete, { + escapeRegex: function( value ) { + return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ); + }, + filter: function( array, term ) { + var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" ); + return $.grep( array, function( value ) { + return matcher.test( value.label || value.value || value ); + } ); + } +} ); + +// Live region extension, adding a `messages` option +// NOTE: This is an experimental API. We are still investigating +// a full solution for string manipulation and internationalization. +$.widget( "ui.autocomplete", $.ui.autocomplete, { + options: { + messages: { + noResults: "No search results.", + results: function( amount ) { + return amount + ( amount > 1 ? " results are" : " result is" ) + + " available, use up and down arrow keys to navigate."; + } + } + }, + + __response: function( content ) { + var message; + this._superApply( arguments ); + if ( this.options.disabled || this.cancelSearch ) { + return; + } + if ( content && content.length ) { + message = this.options.messages.results( content.length ); + } else { + message = this.options.messages.noResults; + } + this.liveRegion.children().hide(); + $( "<div>" ).text( message ).appendTo( this.liveRegion ); + } +} ); + +return $.ui.autocomplete; + +} ) ); +/* + + jQuery Tags Input Plugin 1.3.3 + + Copyright (c) 2011 XOXCO, Inc + + Documentation for this plugin lives here: + http://xoxco.com/clickable/jquery-tags-input + + Licensed under the MIT license: + http://www.opensource.org/licenses/mit-license.php + + ben@xoxco.com + +*/ + + +(function($) { + + var delimiter = new Array(); + var tags_callbacks = new Array(); + $.fn.doAutosize = function(o){ + var minWidth = $(this).data('minwidth'), + maxWidth = $(this).data('maxwidth'), + val = '', + input = $(this), + testSubject = $('#'+$(this).data('tester_id')); + + if (val === (val = input.val())) {return;} + + // Enter new content into testSubject + var escaped = val.replace(/&/g, '&').replace(/\s/g,' ').replace(/</g, '<').replace(/>/g, '>'); + testSubject.html(escaped); + // Calculate new width + whether to change + var testerWidth = testSubject.width(), + newWidth = (testerWidth + o.comfortZone) >= minWidth ? testerWidth + o.comfortZone : minWidth, + currentWidth = input.width(), + isValidWidthChange = (newWidth < currentWidth && newWidth >= minWidth) + || (newWidth > minWidth && newWidth < maxWidth); + + // Animate width + if (isValidWidthChange) { + input.width(newWidth); + } + + + }; + $.fn.resetAutosize = function(options){ + // alert(JSON.stringify(options)); + var minWidth = $(this).data('minwidth') || options.minInputWidth || $(this).width(), + maxWidth = $(this).data('maxwidth') || options.maxInputWidth || ($(this).closest('.tagsinput').width() - options.inputPadding), + val = '', + input = $(this), + testSubject = $('<tester/>').css({ + position: 'absolute', + top: -9999, + left: -9999, + width: 'auto', + fontSize: input.css('fontSize'), + fontFamily: input.css('fontFamily'), + fontWeight: input.css('fontWeight'), + letterSpacing: input.css('letterSpacing'), + whiteSpace: 'nowrap' + }), + testerId = $(this).attr('id')+'_autosize_tester'; + if(! $('#'+testerId).length > 0){ + testSubject.attr('id', testerId); + testSubject.appendTo('body'); + } + + input.data('minwidth', minWidth); + input.data('maxwidth', maxWidth); + input.data('tester_id', testerId); + input.css('width', minWidth); + }; + + $.fn.addTag = function(value,options) { + options = jQuery.extend({focus:false,callback:true},options); + this.each(function() { + var id = $(this).attr('id'); + + var tagslist = $(this).val().split(delimiter[id]); + if (tagslist[0] == '') { + tagslist = new Array(); + } + + value = jQuery.trim(value); + + if (options.unique) { + var skipTag = $(this).tagExist(value); + if(skipTag == true) { + //Marks fake input as not_valid to let styling it + $('#'+id+'_tag').addClass('not_valid'); + } + } else { + var skipTag = false; + } + + if (value !='' && skipTag != true) { + $('<span>').addClass('tag').append( + $('<span>').text(value).append(' '), + $('<a>', { + href : '#', + title : 'Removing tag', + text : 'x' + }).click(function () { + return $('#' + id).removeTag(escape(value)); + }) + ).insertBefore('#' + id + '_addTag'); + + tagslist.push(value); + + $('#'+id+'_tag').val(''); + if (options.focus) { + $('#'+id+'_tag').focus(); + } else { + $('#'+id+'_tag').blur(); + } + + $.fn.tagsInput.updateTagsField(this,tagslist); + + if (options.callback && tags_callbacks[id] && tags_callbacks[id]['onAddTag']) { + var f = tags_callbacks[id]['onAddTag']; + f.call(this, value); + } + if(tags_callbacks[id] && tags_callbacks[id]['onChange']) + { + var i = tagslist.length; + var f = tags_callbacks[id]['onChange']; + f.call(this, $(this), tagslist[i-1]); + } + } + + }); + + return false; + }; + + $.fn.removeTag = function(value) { + value = unescape(value); + this.each(function() { + var id = $(this).attr('id'); + + var old = $(this).val().split(delimiter[id]); + + $('#'+id+'_tagsinput .tag').remove(); + str = ''; + for (i=0; i< old.length; i++) { + if (old[i]!=value) { + str = str + delimiter[id] +old[i]; + } + } + + $.fn.tagsInput.importTags(this,str); + + if (tags_callbacks[id] && tags_callbacks[id]['onRemoveTag']) { + var f = tags_callbacks[id]['onRemoveTag']; + f.call(this, value); + } + }); + + return false; + }; + + $.fn.tagExist = function(val) { + var id = $(this).attr('id'); + var tagslist = $(this).val().split(delimiter[id]); + return (jQuery.inArray(val, tagslist) >= 0); //true when tag exists, false when not + }; + + // clear all existing tags and import new ones from a string + $.fn.importTags = function(str) { + var id = $(this).attr('id'); + $('#'+id+'_tagsinput .tag').remove(); + $.fn.tagsInput.importTags(this,str); + } + + $.fn.tagsInput = function(options) { + var settings = jQuery.extend({ + interactive:true, + defaultText:'add a tag', + minChars:0, + width:'300px', + height:'100px', + autocomplete: {selectFirst: false }, + hide:true, + delimiter: ',', + unique:true, + removeWithBackspace:true, + placeholderColor:'#666666', + autosize: true, + comfortZone: 20, + inputPadding: 6*2 + },options); + + var uniqueIdCounter = 0; + + this.each(function() { + // If we have already initialized the field, do not do it again + if (typeof $(this).attr('data-tagsinput-init') !== 'undefined') { + return; + } + + // Mark the field as having been initialized + $(this).attr('data-tagsinput-init', true); + + if (settings.hide) { + $(this).hide(); + } + var id = $(this).attr('id'); + if (!id || delimiter[$(this).attr('id')]) { + id = $(this).attr('id', 'tags' + new Date().getTime() + (uniqueIdCounter++)).attr('id'); + } + + var data = jQuery.extend({ + pid:id, + real_input: '#'+id, + holder: '#'+id+'_tagsinput', + input_wrapper: '#'+id+'_addTag', + fake_input: '#'+id+'_tag' + },settings); + + delimiter[id] = data.delimiter; + + if (settings.onAddTag || settings.onRemoveTag || settings.onChange) { + tags_callbacks[id] = new Array(); + tags_callbacks[id]['onAddTag'] = settings.onAddTag; + tags_callbacks[id]['onRemoveTag'] = settings.onRemoveTag; + tags_callbacks[id]['onChange'] = settings.onChange; + } + + var markup = '<div id="'+id+'_tagsinput" class="tagsinput"><div id="'+id+'_addTag">'; + + if (settings.interactive) { + markup = markup + '<input id="'+id+'_tag" value="" data-default="'+settings.defaultText+'" />'; + } + + markup = markup + '</div><div class="tags_clear"></div></div>'; + + $(markup).insertAfter(this); + + $(data.holder).css('width',settings.width); + $(data.holder).css('min-height',settings.height); + $(data.holder).css('height',settings.height); + + if ($(data.real_input).val()!='') { + $.fn.tagsInput.importTags($(data.real_input),$(data.real_input).val()); + } + if (settings.interactive) { + $(data.fake_input).val($(data.fake_input).attr('data-default')); + $(data.fake_input).css('color',settings.placeholderColor); + $(data.fake_input).resetAutosize(settings); + + $(data.holder).bind('click',data,function(event) { + $(event.data.fake_input).focus(); + }); + + $(data.fake_input).bind('focus',data,function(event) { + if ($(event.data.fake_input).val()==$(event.data.fake_input).attr('data-default')) { + $(event.data.fake_input).val(''); + } + $(event.data.fake_input).css('color','#000000'); + }); + + if (settings.autocomplete_url != undefined) { + autocomplete_options = {source: settings.autocomplete_url}; + for (attrname in settings.autocomplete) { + autocomplete_options[attrname] = settings.autocomplete[attrname]; + } + + if (jQuery.Autocompleter !== undefined) { + $(data.fake_input).autocomplete(settings.autocomplete_url, settings.autocomplete); + $(data.fake_input).bind('result',data,function(event,data,formatted) { + if (data) { + $('#'+id).addTag(data[0] + "",{focus:true,unique:(settings.unique)}); + } + }); + } else if (jQuery.ui.autocomplete !== undefined) { + $(data.fake_input).autocomplete(autocomplete_options); + $(data.fake_input).bind('autocompleteselect',data,function(event,ui) { + $(event.data.real_input).addTag(ui.item.value,{focus:true,unique:(settings.unique)}); + return false; + }); + } + + + } else { + // if a user tabs out of the field, create a new tag + // this is only available if autocomplete is not used. + $(data.fake_input).bind('blur',data,function(event) { + var d = $(this).attr('data-default'); + if ($(event.data.fake_input).val()!='' && $(event.data.fake_input).val()!=d) { + if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) ) + $(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)}); + } else { + $(event.data.fake_input).val($(event.data.fake_input).attr('data-default')); + $(event.data.fake_input).css('color',settings.placeholderColor); + } + return false; + }); + + } + // if user types a default delimiter like comma,semicolon and then create a new tag + $(data.fake_input).bind('keypress',data,function(event) { + if (_checkDelimiter(event)) { + event.preventDefault(); + if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) ) + $(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)}); + $(event.data.fake_input).resetAutosize(settings); + return false; + } else if (event.data.autosize) { + $(event.data.fake_input).doAutosize(settings); + + } + }); + //Delete last tag on backspace + data.removeWithBackspace && $(data.fake_input).bind('keydown', function(event) + { + if(event.keyCode == 8 && $(this).val() == '') + { + event.preventDefault(); + var last_tag = $(this).closest('.tagsinput').find('.tag:last').text(); + var id = $(this).attr('id').replace(/_tag$/, ''); + last_tag = last_tag.replace(/[\s]+x$/, ''); + $('#' + id).removeTag(escape(last_tag)); + $(this).trigger('focus'); + } + }); + $(data.fake_input).blur(); + + //Removes the not_valid class when user changes the value of the fake input + if(data.unique) { + $(data.fake_input).keydown(function(event){ + if(event.keyCode == 8 || String.fromCharCode(event.which).match(/\w+|[áéÃóúÃÉÃÓÚñÑ,/]+/)) { + $(this).removeClass('not_valid'); + } + }); + } + } // if settings.interactive + }); + + return this; + + }; + + $.fn.tagsInput.updateTagsField = function(obj,tagslist) { + var id = $(obj).attr('id'); + $(obj).val(tagslist.join(delimiter[id])); + }; + + $.fn.tagsInput.importTags = function(obj,val) { + $(obj).val(''); + var id = $(obj).attr('id'); + var tags = val.split(delimiter[id]); + for (i=0; i<tags.length; i++) { + $(obj).addTag(tags[i],{focus:false,callback:false}); + } + if(tags_callbacks[id] && tags_callbacks[id]['onChange']) + { + var f = tags_callbacks[id]['onChange']; + f.call(obj, obj, tags[i]); + } + }; + + /** + * check delimiter Array + * @param event + * @returns {boolean} + * @private + */ + var _checkDelimiter = function(event){ + var found = false; + if (event.which == 13) { + return true; + } + + if (typeof event.data.delimiter === 'string') { + if (event.which == event.data.delimiter.charCodeAt(0)) { + found = true; + } + } else { + $.each(event.data.delimiter, function(index, delimiter) { + if (event.which == delimiter.charCodeAt(0)) { + found = true; + } + }); + } + + return found; + } +})(jQuery); +/* +Turbolinks 5.1.0 +Copyright © 2018 Basecamp, LLC + */ + +(function(){this.Turbolinks={supported:function(){return null!=window.history.pushState&&null!=window.requestAnimationFrame&&null!=window.addEventListener}(),visit:function(t,e){return Turbolinks.controller.visit(t,e)},clearCache:function(){return Turbolinks.controller.clearCache()},setProgressBarDelay:function(t){return Turbolinks.controller.setProgressBarDelay(t)}}}).call(this),function(){var t,e,r,n=[].slice;Turbolinks.copyObject=function(t){var e,r,n;r={};for(e in t)n=t[e],r[e]=n;return r},Turbolinks.closest=function(e,r){return t.call(e,r)},t=function(){var t,r;return t=document.documentElement,null!=(r=t.closest)?r:function(t){var r;for(r=this;r;){if(r.nodeType===Node.ELEMENT_NODE&&e.call(r,t))return r;r=r.parentNode}}}(),Turbolinks.defer=function(t){return setTimeout(t,1)},Turbolinks.throttle=function(t){var e;return e=null,function(){var r;return r=1<=arguments.length?n.call(arguments,0):[],null!=e?e:e=requestAnimationFrame(function(n){return function(){return e=null,t.apply(n,r)}}(this))}},Turbolinks.dispatch=function(t,e){var n,o,i,s,a,u;return a=null!=e?e:{},u=a.target,n=a.cancelable,o=a.data,i=document.createEvent("Events"),i.initEvent(t,!0,n===!0),i.data=null!=o?o:{},i.cancelable&&!r&&(s=i.preventDefault,i.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}}),s.call(this)}),(null!=u?u:document).dispatchEvent(i),i},r=function(){var t;return t=document.createEvent("Events"),t.initEvent("test",!0,!0),t.preventDefault(),t.defaultPrevented}(),Turbolinks.match=function(t,r){return e.call(t,r)},e=function(){var t,e,r,n;return t=document.documentElement,null!=(e=null!=(r=null!=(n=t.matchesSelector)?n:t.webkitMatchesSelector)?r:t.msMatchesSelector)?e:t.mozMatchesSelector}(),Turbolinks.uuid=function(){var t,e,r;for(r="",t=e=1;36>=e;t=++e)r+=9===t||14===t||19===t||24===t?"-":15===t?"4":20===t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return r}}.call(this),function(){Turbolinks.Location=function(){function t(t){var e,r;null==t&&(t=""),r=document.createElement("a"),r.href=t.toString(),this.absoluteURL=r.href,e=r.hash.length,2>e?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-e),this.anchor=r.hash.slice(1))}var e,r,n,o;return t.wrap=function(t){return t instanceof this?t:new this(t)},t.prototype.getOrigin=function(){return this.absoluteURL.split("/",3).join("/")},t.prototype.getPath=function(){var t,e;return null!=(t=null!=(e=this.requestURL.match(/\/\/[^\/]*(\/[^?;]*)/))?e[1]:void 0)?t:"/"},t.prototype.getPathComponents=function(){return this.getPath().split("/").slice(1)},t.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},t.prototype.getExtension=function(){var t,e;return null!=(t=null!=(e=this.getLastPathComponent().match(/\.[^.]*$/))?e[0]:void 0)?t:""},t.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/)},t.prototype.isPrefixedBy=function(t){var e;return e=r(t),this.isEqualTo(t)||o(this.absoluteURL,e)},t.prototype.isEqualTo=function(t){return this.absoluteURL===(null!=t?t.absoluteURL:void 0)},t.prototype.toCacheKey=function(){return this.requestURL},t.prototype.toJSON=function(){return this.absoluteURL},t.prototype.toString=function(){return this.absoluteURL},t.prototype.valueOf=function(){return this.absoluteURL},r=function(t){return e(t.getOrigin()+t.getPath())},e=function(t){return n(t,"/")?t:t+"/"},o=function(t,e){return t.slice(0,e.length)===e},n=function(t,e){return t.slice(-e.length)===e},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.HttpRequest=function(){function e(e,r,n){this.delegate=e,this.requestCanceled=t(this.requestCanceled,this),this.requestTimedOut=t(this.requestTimedOut,this),this.requestFailed=t(this.requestFailed,this),this.requestLoaded=t(this.requestLoaded,this),this.requestProgressed=t(this.requestProgressed,this),this.url=Turbolinks.Location.wrap(r).requestURL,this.referrer=Turbolinks.Location.wrap(n).absoluteURL,this.createXHR()}return e.NETWORK_FAILURE=0,e.TIMEOUT_FAILURE=-1,e.timeout=60,e.prototype.send=function(){var t;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,"function"==typeof(t=this.delegate).requestStarted?t.requestStarted():void 0):void 0},e.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},e.prototype.requestProgressed=function(t){return t.lengthComputable?this.setProgress(t.loaded/t.total):void 0},e.prototype.requestLoaded=function(){return this.endRequest(function(t){return function(){var e;return 200<=(e=t.xhr.status)&&300>e?t.delegate.requestCompletedWithResponse(t.xhr.responseText,t.xhr.getResponseHeader("Turbolinks-Location")):(t.failed=!0,t.delegate.requestFailedWithStatusCode(t.xhr.status,t.xhr.responseText))}}(this))},e.prototype.requestFailed=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE)}}(this))},e.prototype.requestTimedOut=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE)}}(this))},e.prototype.requestCanceled=function(){return this.endRequest()},e.prototype.notifyApplicationBeforeRequestStart=function(){return Turbolinks.dispatch("turbolinks:request-start",{data:{url:this.url,xhr:this.xhr}})},e.prototype.notifyApplicationAfterRequestEnd=function(){return Turbolinks.dispatch("turbolinks:request-end",{data:{url:this.url,xhr:this.xhr}})},e.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open("GET",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader("Accept","text/html, application/xhtml+xml"),this.xhr.setRequestHeader("Turbolinks-Referrer",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},e.prototype.endRequest=function(t){return this.xhr?(this.notifyApplicationAfterRequestEnd(),null!=t&&t.call(this),this.destroy()):void 0},e.prototype.setProgress=function(t){var e;return this.progress=t,"function"==typeof(e=this.delegate).requestProgressed?e.requestProgressed(this.progress):void 0},e.prototype.destroy=function(){var t;return this.setProgress(1),"function"==typeof(t=this.delegate).requestFinished&&t.requestFinished(),this.delegate=null,this.xhr=null},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.ProgressBar=function(){function e(){this.trickle=t(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var r;return r=300,e.defaultCSS=".turbolinks-progress-bar {\n position: fixed;\n display: block;\n top: 0;\n left: 0;\n height: 3px;\n background: #0076ff;\n z-index: 9999;\n transition: width "+r+"ms ease-out, opacity "+r/2+"ms "+r/2+"ms ease-in;\n transform: translate3d(0, 0, 0);\n}",e.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},e.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(t){return function(){return t.uninstallProgressElement(),t.stopTrickling(),t.visible=!1,t.hiding=!1}}(this))):void 0},e.prototype.setValue=function(t){return this.value=t,this.refresh()},e.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},e.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},e.prototype.fadeProgressElement=function(t){return this.progressElement.style.opacity=0,setTimeout(t,1.5*r)},e.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},e.prototype.startTrickling=function(){return null!=this.trickleInterval?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,r)},e.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},e.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},e.prototype.refresh=function(){return requestAnimationFrame(function(t){return function(){return t.progressElement.style.width=10+90*t.value+"%"}}(this))},e.prototype.createStylesheetElement=function(){var t;return t=document.createElement("style"),t.type="text/css",t.textContent=this.constructor.defaultCSS,t},e.prototype.createProgressElement=function(){var t;return t=document.createElement("div"),t.className="turbolinks-progress-bar",t},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.BrowserAdapter=function(){function e(e){this.controller=e,this.showProgressBar=t(this.showProgressBar,this),this.progressBar=new Turbolinks.ProgressBar}var r,n,o;return o=Turbolinks.HttpRequest,r=o.NETWORK_FAILURE,n=o.TIMEOUT_FAILURE,e.prototype.visitProposedToLocationWithAction=function(t,e){return this.controller.startVisitToLocationWithAction(t,e)},e.prototype.visitStarted=function(t){return t.issueRequest(),t.changeHistory(),t.loadCachedSnapshot()},e.prototype.visitRequestStarted=function(t){return this.progressBar.setValue(0),t.hasCachedSnapshot()||"restore"!==t.action?this.showProgressBarAfterDelay():this.showProgressBar()},e.prototype.visitRequestProgressed=function(t){return this.progressBar.setValue(t.progress)},e.prototype.visitRequestCompleted=function(t){return t.loadResponse()},e.prototype.visitRequestFailedWithStatusCode=function(t,e){switch(e){case r:case n:return this.reload();default:return t.loadResponse()}},e.prototype.visitRequestFinished=function(t){return this.hideProgressBar()},e.prototype.visitCompleted=function(t){return t.followRedirect()},e.prototype.pageInvalidated=function(){return this.reload()},e.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},e.prototype.showProgressBar=function(){return this.progressBar.show()},e.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},e.prototype.reload=function(){return window.location.reload()},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.History=function(){function e(e){this.delegate=e,this.onPageLoad=t(this.onPageLoad,this),this.onPopState=t(this.onPopState,this)}return e.prototype.start=function(){return this.started?void 0:(addEventListener("popstate",this.onPopState,!1),addEventListener("load",this.onPageLoad,!1),this.started=!0)},e.prototype.stop=function(){return this.started?(removeEventListener("popstate",this.onPopState,!1),removeEventListener("load",this.onPageLoad,!1),this.started=!1):void 0},e.prototype.push=function(t,e){return t=Turbolinks.Location.wrap(t),this.update("push",t,e)},e.prototype.replace=function(t,e){return t=Turbolinks.Location.wrap(t),this.update("replace",t,e)},e.prototype.onPopState=function(t){var e,r,n,o;return this.shouldHandlePopState()&&(o=null!=(r=t.state)?r.turbolinks:void 0)?(e=Turbolinks.Location.wrap(window.location),n=o.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(e,n)):void 0},e.prototype.onPageLoad=function(t){return Turbolinks.defer(function(t){return function(){return t.pageLoaded=!0}}(this))},e.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},e.prototype.pageIsLoaded=function(){return this.pageLoaded||"complete"===document.readyState},e.prototype.update=function(t,e,r){var n;return n={turbolinks:{restorationIdentifier:r}},history[t+"State"](n,null,e)},e}()}.call(this),function(){Turbolinks.Snapshot=function(){function t(t){var e,r;r=t.head,e=t.body,this.head=null!=r?r:document.createElement("head"),this.body=null!=e?e:document.createElement("body")}return t.wrap=function(t){return t instanceof this?t:this.fromHTML(t)},t.fromHTML=function(t){var e;return e=document.createElement("html"),e.innerHTML=t,this.fromElement(e)},t.fromElement=function(t){return new this({head:t.querySelector("head"),body:t.querySelector("body")})},t.prototype.clone=function(){return new t({head:this.head.cloneNode(!0),body:this.body.cloneNode(!0)})},t.prototype.getRootLocation=function(){var t,e;return e=null!=(t=this.getSetting("root"))?t:"/",new Turbolinks.Location(e)},t.prototype.getCacheControlValue=function(){return this.getSetting("cache-control")},t.prototype.getElementForAnchor=function(t){try{return this.body.querySelector("[id='"+t+"'], a[name='"+t+"']")}catch(e){}},t.prototype.hasAnchor=function(t){return null!=this.getElementForAnchor(t)},t.prototype.isPreviewable=function(){return"no-preview"!==this.getCacheControlValue()},t.prototype.isCacheable=function(){return"no-cache"!==this.getCacheControlValue()},t.prototype.isVisitable=function(){return"reload"!==this.getSetting("visit-control")},t.prototype.getSetting=function(t){var e,r;return r=this.head.querySelectorAll("meta[name='turbolinks-"+t+"']"),e=r[r.length-1],null!=e?e.getAttribute("content"):void 0},t}()}.call(this),function(){var t=[].slice;Turbolinks.Renderer=function(){function e(){}var r;return e.render=function(){var e,r,n,o;return n=arguments[0],r=arguments[1],e=3<=arguments.length?t.call(arguments,2):[],o=function(t,e,r){r.prototype=t.prototype;var n=new r,o=t.apply(n,e);return Object(o)===o?o:n}(this,e,function(){}),o.delegate=n,o.render(r),o},e.prototype.renderView=function(t){return this.delegate.viewWillRender(this.newBody),t(),this.delegate.viewRendered(this.newBody)},e.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},e.prototype.createScriptElement=function(t){var e;return"false"===t.getAttribute("data-turbolinks-eval")?t:(e=document.createElement("script"),e.textContent=t.textContent,e.async=!1,r(e,t),e)},r=function(t,e){var r,n,o,i,s,a,u;for(i=e.attributes,a=[],r=0,n=i.length;n>r;r++)s=i[r],o=s.name,u=s.value,a.push(t.setAttribute(o,u));return a},e}()}.call(this),function(){Turbolinks.HeadDetails=function(){function t(t){var e,r,i,s,a,u,l;for(this.element=t,this.elements={},l=this.element.childNodes,s=0,u=l.length;u>s;s++)i=l[s],i.nodeType===Node.ELEMENT_NODE&&(a=i.outerHTML,r=null!=(e=this.elements)[a]?e[a]:e[a]={type:o(i),tracked:n(i),elements:[]},r.elements.push(i))}var e,r,n,o;return t.prototype.hasElementWithKey=function(t){return t in this.elements},t.prototype.getTrackedElementSignature=function(){var t,e;return function(){var r,n;r=this.elements,n=[];for(t in r)e=r[t].tracked,e&&n.push(t);return n}.call(this).join("")},t.prototype.getScriptElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails("script",t)},t.prototype.getStylesheetElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails("stylesheet",t)},t.prototype.getElementsMatchingTypeNotInDetails=function(t,e){var r,n,o,i,s,a;o=this.elements,s=[];for(n in o)i=o[n],a=i.type,r=i.elements,a!==t||e.hasElementWithKey(n)||s.push(r[0]);return s},t.prototype.getProvisionalElements=function(){var t,e,r,n,o,i,s;r=[],n=this.elements;for(e in n)o=n[e],s=o.type,i=o.tracked,t=o.elements,null!=s||i?t.length>1&&r.push.apply(r,t.slice(1)):r.push.apply(r,t);return r},o=function(t){return e(t)?"script":r(t)?"stylesheet":void 0},n=function(t){return"reload"===t.getAttribute("data-turbolinks-track")},e=function(t){var e;return e=t.tagName.toLowerCase(),"script"===e},r=function(t){var e;return e=t.tagName.toLowerCase(),"style"===e||"link"===e&&"stylesheet"===t.getAttribute("rel")},t}()}.call(this),function(){var t=function(t,r){function n(){this.constructor=t}for(var o in r)e.call(r,o)&&(t[o]=r[o]);return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,t},e={}.hasOwnProperty;Turbolinks.SnapshotRenderer=function(e){function r(t,e,r){this.currentSnapshot=t,this.newSnapshot=e,this.isPreview=r,this.currentHeadDetails=new Turbolinks.HeadDetails(this.currentSnapshot.head),this.newHeadDetails=new Turbolinks.HeadDetails(this.newSnapshot.head),this.newBody=this.newSnapshot.body}return t(r,e),r.prototype.render=function(t){return this.shouldRender()?(this.mergeHead(),this.renderView(function(e){return function(){return e.replaceBody(),e.isPreview||e.focusFirstAutofocusableElement(),t()}}(this))):this.invalidateView()},r.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},r.prototype.replaceBody=function(){return this.activateBodyScriptElements(),this.importBodyPermanentElements(),this.assignNewBody()},r.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},r.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},r.prototype.copyNewHeadStylesheetElements=function(){var t,e,r,n,o;for(n=this.getNewHeadStylesheetElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},r.prototype.copyNewHeadScriptElements=function(){var t,e,r,n,o;for(n=this.getNewHeadScriptElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(this.createScriptElement(t)));return o},r.prototype.removeCurrentHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getCurrentHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.removeChild(t));return o},r.prototype.copyNewHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getNewHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},r.prototype.importBodyPermanentElements=function(){var t,e,r,n,o,i;for(n=this.getNewBodyPermanentElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],(t=this.findCurrentBodyPermanentElement(o))?i.push(o.parentNode.replaceChild(t,o)):i.push(void 0);return i},r.prototype.activateBodyScriptElements=function(){var t,e,r,n,o,i;for(n=this.getNewBodyScriptElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],t=this.createScriptElement(o),i.push(o.parentNode.replaceChild(t,o));return i},r.prototype.assignNewBody=function(){return document.body=this.newBody},r.prototype.focusFirstAutofocusableElement=function(){var t;return null!=(t=this.findFirstAutofocusableElement())?t.focus():void 0},r.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},r.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},r.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},r.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},r.prototype.getNewBodyPermanentElements=function(){return this.newBody.querySelectorAll("[id][data-turbolinks-permanent]")},r.prototype.findCurrentBodyPermanentElement=function(t){return document.body.querySelector("#"+t.id+"[data-turbolinks-permanent]")},r.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll("script")},r.prototype.findFirstAutofocusableElement=function(){return document.body.querySelector("[autofocus]")},r}(Turbolinks.Renderer)}.call(this),function(){var t=function(t,r){function n(){this.constructor=t}for(var o in r)e.call(r,o)&&(t[o]=r[o]);return n.prototype=r.prototype,t.prototype=new n,t.__super__=r.prototype,t},e={}.hasOwnProperty;Turbolinks.ErrorRenderer=function(e){function r(t){this.html=t}return t(r,e),r.prototype.render=function(t){return this.renderView(function(e){return function(){return e.replaceDocumentHTML(),e.activateBodyScriptElements(),t()}}(this))},r.prototype.replaceDocumentHTML=function(){return document.documentElement.innerHTML=this.html},r.prototype.activateBodyScriptElements=function(){var t,e,r,n,o,i;for(n=this.getScriptElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],t=this.createScriptElement(o),i.push(o.parentNode.replaceChild(t,o));return i},r.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll("script")},r}(Turbolinks.Renderer)}.call(this),function(){Turbolinks.View=function(){function t(t){this.delegate=t,this.element=document.documentElement}return t.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},t.prototype.getElementForAnchor=function(t){return this.getSnapshot().getElementForAnchor(t)},t.prototype.getSnapshot=function(){return Turbolinks.Snapshot.fromElement(this.element)},t.prototype.render=function(t,e){var r,n,o;return o=t.snapshot,r=t.error,n=t.isPreview,this.markAsPreview(n),null!=o?this.renderSnapshot(o,n,e):this.renderError(r,e)},t.prototype.markAsPreview=function(t){return t?this.element.setAttribute("data-turbolinks-preview",""):this.element.removeAttribute("data-turbolinks-preview")},t.prototype.renderSnapshot=function(t,e,r){return Turbolinks.SnapshotRenderer.render(this.delegate,r,this.getSnapshot(),Turbolinks.Snapshot.wrap(t),e)},t.prototype.renderError=function(t,e){return Turbolinks.ErrorRenderer.render(this.delegate,e,t)},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.ScrollManager=function(){function e(e){this.delegate=e,this.onScroll=t(this.onScroll,this),this.onScroll=Turbolinks.throttle(this.onScroll)}return e.prototype.start=function(){return this.started?void 0:(addEventListener("scroll",this.onScroll,!1),this.onScroll(),this.started=!0)},e.prototype.stop=function(){return this.started?(removeEventListener("scroll",this.onScroll,!1),this.started=!1):void 0},e.prototype.scrollToElement=function(t){return t.scrollIntoView()},e.prototype.scrollToPosition=function(t){var e,r;return e=t.x,r=t.y,window.scrollTo(e,r)},e.prototype.onScroll=function(t){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},e.prototype.updatePosition=function(t){var e;return this.position=t,null!=(e=this.delegate)?e.scrollPositionChanged(this.position):void 0},e}()}.call(this),function(){Turbolinks.SnapshotCache=function(){function t(t){this.size=t,this.keys=[],this.snapshots={}}var e;return t.prototype.has=function(t){var r;return r=e(t),r in this.snapshots},t.prototype.get=function(t){var e;if(this.has(t))return e=this.read(t),this.touch(t),e},t.prototype.put=function(t,e){return this.write(t,e),this.touch(t),e},t.prototype.read=function(t){var r;return r=e(t),this.snapshots[r]},t.prototype.write=function(t,r){var n;return n=e(t),this.snapshots[n]=r},t.prototype.touch=function(t){var r,n;return n=e(t),r=this.keys.indexOf(n),r>-1&&this.keys.splice(r,1),this.keys.unshift(n),this.trim()},t.prototype.trim=function(){var t,e,r,n,o;for(n=this.keys.splice(this.size),o=[],t=0,r=n.length;r>t;t++)e=n[t],o.push(delete this.snapshots[e]);return o},e=function(t){return Turbolinks.Location.wrap(t).toCacheKey()},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.Visit=function(){function e(e,r,n){this.controller=e,this.action=n,this.performScroll=t(this.performScroll,this),this.identifier=Turbolinks.uuid(),this.location=Turbolinks.Location.wrap(r),this.adapter=this.controller.adapter,this.state="initialized",this.timingMetrics={}}var r;return e.prototype.start=function(){return"initialized"===this.state?(this.recordTimingMetric("visitStart"),this.state="started",this.adapter.visitStarted(this)):void 0},e.prototype.cancel=function(){var t;return"started"===this.state?(null!=(t=this.request)&&t.cancel(),this.cancelRender(),this.state="canceled"):void 0},e.prototype.complete=function(){var t;return"started"===this.state?(this.recordTimingMetric("visitEnd"),this.state="completed","function"==typeof(t=this.adapter).visitCompleted&&t.visitCompleted(this),this.controller.visitCompleted(this)):void 0},e.prototype.fail=function(){var t;return"started"===this.state?(this.state="failed","function"==typeof(t=this.adapter).visitFailed?t.visitFailed(this):void 0):void 0},e.prototype.changeHistory=function(){var t,e;return this.historyChanged?void 0:(t=this.location.isEqualTo(this.referrer)?"replace":this.action,e=r(t),this.controller[e](this.location,this.restorationIdentifier),this.historyChanged=!0)},e.prototype.issueRequest=function(){return this.shouldIssueRequest()&&null==this.request?(this.progress=0,this.request=new Turbolinks.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},e.prototype.getCachedSnapshot=function(){var t;return!(t=this.controller.getCachedSnapshotForLocation(this.location))||null!=this.location.anchor&&!t.hasAnchor(this.location.anchor)||"restore"!==this.action&&!t.isPreviewable()?void 0:t},e.prototype.hasCachedSnapshot=function(){return null!=this.getCachedSnapshot()},e.prototype.loadCachedSnapshot=function(){var t,e;return(e=this.getCachedSnapshot())?(t=this.shouldIssueRequest(),this.render(function(){var r;return this.cacheSnapshot(),this.controller.render({snapshot:e,isPreview:t},this.performScroll),"function"==typeof(r=this.adapter).visitRendered&&r.visitRendered(this),t?void 0:this.complete()})):void 0},e.prototype.loadResponse=function(){return null!=this.response?this.render(function(){var t,e;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),"function"==typeof(t=this.adapter).visitRendered&&t.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),"function"==typeof(e=this.adapter).visitRendered&&e.visitRendered(this),this.complete())}):void 0},e.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},e.prototype.requestStarted=function(){var t;return this.recordTimingMetric("requestStart"),"function"==typeof(t=this.adapter).visitRequestStarted?t.visitRequestStarted(this):void 0},e.prototype.requestProgressed=function(t){var e;return this.progress=t,"function"==typeof(e=this.adapter).visitRequestProgressed?e.visitRequestProgressed(this):void 0},e.prototype.requestCompletedWithResponse=function(t,e){return this.response=t,null!=e&&(this.redirectedToLocation=Turbolinks.Location.wrap(e)),this.adapter.visitRequestCompleted(this)},e.prototype.requestFailedWithStatusCode=function(t,e){return this.response=e,this.adapter.visitRequestFailedWithStatusCode(this,t)},e.prototype.requestFinished=function(){var t;return this.recordTimingMetric("requestEnd"),"function"==typeof(t=this.adapter).visitRequestFinished?t.visitRequestFinished(this):void 0},e.prototype.performScroll=function(){return this.scrolled?void 0:("restore"===this.action?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},e.prototype.scrollToRestoredPosition=function(){var t,e;return t=null!=(e=this.restorationData)?e.scrollPosition:void 0,null!=t?(this.controller.scrollToPosition(t),!0):void 0},e.prototype.scrollToAnchor=function(){return null!=this.location.anchor?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},e.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},e.prototype.recordTimingMetric=function(t){var e;return null!=(e=this.timingMetrics)[t]?e[t]:e[t]=(new Date).getTime()},e.prototype.getTimingMetrics=function(){return Turbolinks.copyObject(this.timingMetrics)},r=function(t){switch(t){case"replace":return"replaceHistoryWithLocationAndRestorationIdentifier";case"advance":case"restore":return"pushHistoryWithLocationAndRestorationIdentifier"}},e.prototype.shouldIssueRequest=function(){return"restore"===this.action?!this.hasCachedSnapshot():!0},e.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},e.prototype.render=function(t){return this.cancelRender(),this.frame=requestAnimationFrame(function(e){return function(){return e.frame=null,t.call(e)}}(this))},e.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};Turbolinks.Controller=function(){function e(){this.clickBubbled=t(this.clickBubbled,this),this.clickCaptured=t(this.clickCaptured,this),this.pageLoaded=t(this.pageLoaded,this),this.history=new Turbolinks.History(this),this.view=new Turbolinks.View(this),this.scrollManager=new Turbolinks.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return e.prototype.start=function(){return Turbolinks.supported&&!this.started?(addEventListener("click",this.clickCaptured,!0),addEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},e.prototype.disable=function(){return this.enabled=!1},e.prototype.stop=function(){return this.started?(removeEventListener("click",this.clickCaptured,!0),removeEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},e.prototype.clearCache=function(){return this.cache=new Turbolinks.SnapshotCache(10)},e.prototype.visit=function(t,e){var r,n;return null==e&&(e={}),t=Turbolinks.Location.wrap(t),this.applicationAllowsVisitingLocation(t)?this.locationIsVisitable(t)?(r=null!=(n=e.action)?n:"advance",this.adapter.visitProposedToLocationWithAction(t,r)):window.location=t:void 0},e.prototype.startVisitToLocationWithAction=function(t,e,r){var n;return Turbolinks.supported?(n=this.getRestorationDataForIdentifier(r),this.startVisit(t,e,{restorationData:n})):window.location=t},e.prototype.setProgressBarDelay=function(t){return this.progressBarDelay=t},e.prototype.startHistory=function(){return this.location=Turbolinks.Location.wrap(window.location),this.restorationIdentifier=Turbolinks.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},e.prototype.stopHistory=function(){return this.history.stop()},e.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(t,e){return this.restorationIdentifier=e,this.location=Turbolinks.Location.wrap(t),this.history.push(this.location,this.restorationIdentifier)},e.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(t,e){return this.restorationIdentifier=e,this.location=Turbolinks.Location.wrap(t),this.history.replace(this.location,this.restorationIdentifier)},e.prototype.historyPoppedToLocationWithRestorationIdentifier=function(t,e){var r;return this.restorationIdentifier=e,this.enabled?(r=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(t,"restore",{restorationIdentifier:this.restorationIdentifier,restorationData:r,historyChanged:!0}),this.location=Turbolinks.Location.wrap(t)):this.adapter.pageInvalidated()},e.prototype.getCachedSnapshotForLocation=function(t){var e;return e=this.cache.get(t),e?e.clone():void 0},e.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable()},e.prototype.cacheSnapshot=function(){var t;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),t=this.view.getSnapshot(),this.cache.put(this.lastRenderedLocation,t.clone())):void 0},e.prototype.scrollToAnchor=function(t){var e;return(e=this.view.getElementForAnchor(t))?this.scrollToElement(e):this.scrollToPosition({x:0,y:0})},e.prototype.scrollToElement=function(t){return this.scrollManager.scrollToElement(t)},e.prototype.scrollToPosition=function(t){return this.scrollManager.scrollToPosition(t)},e.prototype.scrollPositionChanged=function(t){var e;return e=this.getCurrentRestorationData(),e.scrollPosition=t},e.prototype.render=function(t,e){return this.view.render(t,e)},e.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},e.prototype.viewWillRender=function(t){return this.notifyApplicationBeforeRender(t)},e.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},e.prototype.pageLoaded=function(){ +return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},e.prototype.clickCaptured=function(){return removeEventListener("click",this.clickBubbled,!1),addEventListener("click",this.clickBubbled,!1)},e.prototype.clickBubbled=function(t){var e,r,n;return this.enabled&&this.clickEventIsSignificant(t)&&(r=this.getVisitableLinkForNode(t.target))&&(n=this.getVisitableLocationForLink(r))&&this.applicationAllowsFollowingLinkToLocation(r,n)?(t.preventDefault(),e=this.getActionForLink(r),this.visit(n,{action:e})):void 0},e.prototype.applicationAllowsFollowingLinkToLocation=function(t,e){var r;return r=this.notifyApplicationAfterClickingLinkToLocation(t,e),!r.defaultPrevented},e.prototype.applicationAllowsVisitingLocation=function(t){var e;return e=this.notifyApplicationBeforeVisitingLocation(t),!e.defaultPrevented},e.prototype.notifyApplicationAfterClickingLinkToLocation=function(t,e){return Turbolinks.dispatch("turbolinks:click",{target:t,data:{url:e.absoluteURL},cancelable:!0})},e.prototype.notifyApplicationBeforeVisitingLocation=function(t){return Turbolinks.dispatch("turbolinks:before-visit",{data:{url:t.absoluteURL},cancelable:!0})},e.prototype.notifyApplicationAfterVisitingLocation=function(t){return Turbolinks.dispatch("turbolinks:visit",{data:{url:t.absoluteURL}})},e.prototype.notifyApplicationBeforeCachingSnapshot=function(){return Turbolinks.dispatch("turbolinks:before-cache")},e.prototype.notifyApplicationBeforeRender=function(t){return Turbolinks.dispatch("turbolinks:before-render",{data:{newBody:t}})},e.prototype.notifyApplicationAfterRender=function(){return Turbolinks.dispatch("turbolinks:render")},e.prototype.notifyApplicationAfterPageLoad=function(t){return null==t&&(t={}),Turbolinks.dispatch("turbolinks:load",{data:{url:this.location.absoluteURL,timing:t}})},e.prototype.startVisit=function(t,e,r){var n;return null!=(n=this.currentVisit)&&n.cancel(),this.currentVisit=this.createVisit(t,e,r),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(t)},e.prototype.createVisit=function(t,e,r){var n,o,i,s,a;return o=null!=r?r:{},s=o.restorationIdentifier,i=o.restorationData,n=o.historyChanged,a=new Turbolinks.Visit(this,t,e),a.restorationIdentifier=null!=s?s:Turbolinks.uuid(),a.restorationData=Turbolinks.copyObject(i),a.historyChanged=n,a.referrer=this.location,a},e.prototype.visitCompleted=function(t){return this.notifyApplicationAfterPageLoad(t.getTimingMetrics())},e.prototype.clickEventIsSignificant=function(t){return!(t.defaultPrevented||t.target.isContentEditable||t.which>1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey)},e.prototype.getVisitableLinkForNode=function(t){return this.nodeIsVisitable(t)?Turbolinks.closest(t,"a[href]:not([target]):not([download])"):void 0},e.prototype.getVisitableLocationForLink=function(t){var e;return e=new Turbolinks.Location(t.getAttribute("href")),this.locationIsVisitable(e)?e:void 0},e.prototype.getActionForLink=function(t){var e;return null!=(e=t.getAttribute("data-turbolinks-action"))?e:"advance"},e.prototype.nodeIsVisitable=function(t){var e;return(e=Turbolinks.closest(t,"[data-turbolinks]"))?"false"!==e.getAttribute("data-turbolinks"):!0},e.prototype.locationIsVisitable=function(t){return t.isPrefixedBy(this.view.getRootLocation())&&t.isHTML()},e.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},e.prototype.getRestorationDataForIdentifier=function(t){var e;return null!=(e=this.restorationData)[t]?e[t]:e[t]={}},e}()}.call(this),function(){!function(){var t,e;if((t=e=document.currentScript)&&!e.hasAttribute("data-turbolinks-suppress-warning"))for(;t=t.parentNode;)if(t===document.body)return console.warn("You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\n\nLoad your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\n\n\u2014\u2014\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s",e.outerHTML)}()}.call(this),function(){var t,e,r;Turbolinks.start=function(){return e()?(null==Turbolinks.controller&&(Turbolinks.controller=t()),Turbolinks.controller.start()):void 0},e=function(){return null==window.Turbolinks&&(window.Turbolinks=Turbolinks),r()},t=function(){var t;return t=new Turbolinks.Controller,t.adapter=new Turbolinks.BrowserAdapter(t),t},r=function(){return window.Turbolinks===Turbolinks},r()&&Turbolinks.start()}.call(this); +window.TinyMCERails = { + configuration: { + default: {} + }, + + initialize: function(config, options) { + if (typeof tinyMCE != 'undefined') { + // Merge the custom options with the given configuration + var configuration = TinyMCERails.configuration[config || 'default']; + configuration = TinyMCERails._merge(configuration, options); + + tinyMCE.init(configuration); + } else { + // Wait until TinyMCE is loaded + setTimeout(function() { + TinyMCERails.initialize(config, options); + }, 50); + } + }, + + setupTurbolinks: function() { + // Remove all TinyMCE instances before rendering + document.addEventListener('turbolinks:before-render', function() { + tinymce.remove(); + }); + }, + + _merge: function() { + var result = {}; + + for (var i = 0; i < arguments.length; ++i) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (Object.prototype.toString.call(source[key]) === '[object Object]') { + result[key] = TinyMCERails._merge(result[key], source[key]); + } else { + result[key] = source[key]; + } + } + } + } + + return result; + } +}; + +if (typeof Turbolinks != 'undefined' && Turbolinks.supported) { + TinyMCERails.setupTurbolinks(); +} +; +window.tinymce = window.tinymce || { + base: '/assets/tinymce', + suffix: '' +}; +// 4.7.9 (2018-02-27) +(function () { +(function () { + 'use strict'; + + var noop = function () { + }; + var noarg = function (f) { + return function () { + return f(); + }; + }; + var compose = function (fa, fb) { + return function () { + return fa(fb.apply(null, arguments)); + }; + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var tripleEquals = function (a, b) { + return a === b; + }; + var curry = function (f) { + var args = new Array(arguments.length - 1); + for (var i = 1; i < arguments.length; i++) + args[i - 1] = arguments[i]; + return function () { + var newArgs = new Array(arguments.length); + for (var j = 0; j < newArgs.length; j++) + newArgs[j] = arguments[j]; + var all = args.concat(newArgs); + return f.apply(null, all); + }; + }; + var not = function (f) { + return function () { + return !f.apply(null, arguments); + }; + }; + var die = function (msg) { + return function () { + throw new Error(msg); + }; + }; + var apply = function (f) { + return f(); + }; + var call = function (f) { + f(); + }; + var never = constant(false); + var always = constant(true); + var $_enfhkv6je5o2ply = { + noop: noop, + noarg: noarg, + compose: compose, + constant: constant, + identity: identity, + tripleEquals: tripleEquals, + curry: curry, + not: not, + die: die, + apply: apply, + call: call, + never: never, + always: always + }; + + var never$1 = $_enfhkv6je5o2ply.never; + var always$1 = $_enfhkv6je5o2ply.always; + var none = function () { + return NONE; + }; + var NONE = function () { + var eq = function (o) { + return o.isNone(); + }; + var call = function (thunk) { + return thunk(); + }; + var id = function (n) { + return n; + }; + var noop = function () { + }; + var me = { + fold: function (n, s) { + return n(); + }, + is: never$1, + isSome: never$1, + isNone: always$1, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + or: id, + orThunk: call, + map: none, + ap: none, + each: noop, + bind: none, + flatten: none, + exists: never$1, + forall: always$1, + filter: none, + equals: eq, + equals_: eq, + toArray: function () { + return []; + }, + toString: $_enfhkv6je5o2ply.constant('none()') + }; + if (Object.freeze) + Object.freeze(me); + return me; + }(); + var some = function (a) { + var constant_a = function () { + return a; + }; + var self = function () { + return me; + }; + var map = function (f) { + return some(f(a)); + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + is: function (v) { + return a === v; + }, + isSome: always$1, + isNone: never$1, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + or: self, + orThunk: self, + map: map, + ap: function (optfab) { + return optfab.fold(none, function (fab) { + return some(fab(a)); + }); + }, + each: function (f) { + f(a); + }, + bind: bind, + flatten: constant_a, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + equals: function (o) { + return o.is(a); + }, + equals_: function (o, elementEq) { + return o.fold(never$1, function (b) { + return elementEq(a, b); + }); + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Option = { + some: some, + none: none, + from: from + }; + + var rawIndexOf = function () { + var pIndexOf = Array.prototype.indexOf; + var fastIndex = function (xs, x) { + return pIndexOf.call(xs, x); + }; + var slowIndex = function (xs, x) { + return slowIndexOf(xs, x); + }; + return pIndexOf === undefined ? slowIndex : fastIndex; + }(); + var indexOf = function (xs, x) { + var r = rawIndexOf(xs, x); + return r === -1 ? Option.none() : Option.some(r); + }; + var contains = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var exists = function (xs, pred) { + return findIndex(xs, pred).isSome(); + }; + var range = function (num, f) { + var r = []; + for (var i = 0; i < num; i++) { + r.push(f(i)); + } + return r; + }; + var chunk = function (array, size) { + var r = []; + for (var i = 0; i < array.length; i += size) { + var s = array.slice(i, i + size); + r.push(s); + } + return r; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i, xs); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i, xs); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i, xs); + } + }; + var partition = function (xs, pred) { + var pass = []; + var fail = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var arr = pred(x, i, xs) ? pass : fail; + arr.push(x); + } + return { + pass: pass, + fail: fail + }; + }; + var filter = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + r.push(x); + } + } + return r; + }; + var groupBy = function (xs, f) { + if (xs.length === 0) { + return []; + } else { + var wasType = f(xs[0]); + var r = []; + var group = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var type = f(x); + if (type !== wasType) { + r.push(group); + group = []; + } + wasType = type; + group.push(x); + } + if (group.length !== 0) { + r.push(group); + } + return r; + } + }; + var foldr = function (xs, f, acc) { + eachr(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var foldl = function (xs, f, acc) { + each(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var find = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return Option.some(x); + } + } + return Option.none(); + }; + var findIndex = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return Option.some(i); + } + } + return Option.none(); + }; + var slowIndexOf = function (xs, x) { + for (var i = 0, len = xs.length; i < len; ++i) { + if (xs[i] === x) { + return i; + } + } + return -1; + }; + var push = Array.prototype.push; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!Array.prototype.isPrototypeOf(xs[i])) + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + push.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + var output = map(xs, f); + return flatten(output); + }; + var forall = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; ++i) { + var x = xs[i]; + if (pred(x, i, xs) !== true) { + return false; + } + } + return true; + }; + var equal = function (a1, a2) { + return a1.length === a2.length && forall(a1, function (x, i) { + return x === a2[i]; + }); + }; + var slice = Array.prototype.slice; + var reverse = function (xs) { + var r = slice.call(xs, 0); + r.reverse(); + return r; + }; + var difference = function (a1, a2) { + return filter(a1, function (x) { + return !contains(a2, x); + }); + }; + var mapToObject = function (xs, f) { + var r = {}; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + r[String(x)] = f(x, i); + } + return r; + }; + var pure = function (x) { + return [x]; + }; + var sort = function (xs, comparator) { + var copy = slice.call(xs, 0); + copy.sort(comparator); + return copy; + }; + var head = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[0]); + }; + var last = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]); + }; + var $_bwcteb4je5o2pl4 = { + map: map, + each: each, + eachr: eachr, + partition: partition, + filter: filter, + groupBy: groupBy, + indexOf: indexOf, + foldr: foldr, + foldl: foldl, + find: find, + findIndex: findIndex, + flatten: flatten, + bind: bind, + forall: forall, + exists: exists, + contains: contains, + equal: equal, + reverse: reverse, + chunk: chunk, + difference: difference, + mapToObject: mapToObject, + pure: pure, + sort: sort, + range: range, + head: head, + last: last + }; + + var global = typeof window !== 'undefined' ? window : Function('return this;')(); + + var path = function (parts, scope) { + var o = scope !== undefined && scope !== null ? scope : global; + for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) + o = o[parts[i]]; + return o; + }; + var resolve = function (p, scope) { + var parts = p.split('.'); + return path(parts, scope); + }; + var step = function (o, part) { + if (o[part] === undefined || o[part] === null) + o[part] = {}; + return o[part]; + }; + var forge = function (parts, target) { + var o = target !== undefined ? target : global; + for (var i = 0; i < parts.length; ++i) + o = step(o, parts[i]); + return o; + }; + var namespace = function (name, target) { + var parts = name.split('.'); + return forge(parts, target); + }; + var $_m1ooucje5o2ppc = { + path: path, + resolve: resolve, + forge: forge, + namespace: namespace + }; + + var unsafe = function (name, scope) { + return $_m1ooucje5o2ppc.resolve(name, scope); + }; + var getOrDie = function (name, scope) { + var actual = unsafe(name, scope); + if (actual === undefined || actual === null) + throw name + ' not available on this browser'; + return actual; + }; + var $_lmz5vbje5o2pp9 = { getOrDie: getOrDie }; + + var url = function () { + return $_lmz5vbje5o2pp9.getOrDie('URL'); + }; + var createObjectURL = function (blob) { + return url().createObjectURL(blob); + }; + var revokeObjectURL = function (u) { + url().revokeObjectURL(u); + }; + var $_g0v736aje5o2pp8 = { + createObjectURL: createObjectURL, + revokeObjectURL: revokeObjectURL + }; + + var nav = navigator; + var userAgent = nav.userAgent; + var opera; + var webkit; + var ie; + var ie11; + var ie12; + var gecko; + var mac; + var iDevice; + var android; + var fileApi; + var phone; + var tablet; + var windowsPhone; + var matchMediaQuery = function (query) { + return 'matchMedia' in window ? matchMedia(query).matches : false; + }; + opera = false; + android = /Android/.test(userAgent); + webkit = /WebKit/.test(userAgent); + ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName); + ie = ie && /MSIE (\w+)\./.exec(userAgent)[1]; + ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false; + ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false; + ie = ie || ie11 || ie12; + gecko = !webkit && !ie11 && /Gecko/.test(userAgent); + mac = userAgent.indexOf('Mac') !== -1; + iDevice = /(iPad|iPhone)/.test(userAgent); + fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!$_g0v736aje5o2pp8.createObjectURL; + phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice); + tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice); + windowsPhone = userAgent.indexOf('Windows Phone') !== -1; + if (ie12) { + webkit = false; + } + var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534; + var $_9bd8pn9je5o2pp2 = { + opera: opera, + webkit: webkit, + ie: ie, + gecko: gecko, + mac: mac, + iOS: iDevice, + android: android, + contentEditable: contentEditable, + transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', + caretAfter: ie !== 8, + range: window.getSelection && 'Range' in window, + documentMode: ie && !ie12 ? document.documentMode || 7 : 10, + fileApi: fileApi, + ceFalse: ie === false || ie > 8, + cacheSuffix: '', + container: null, + overrideViewPort: null, + experimentalShadowDom: false, + canHaveCSP: ie === false || ie > 11, + desktop: !phone && !tablet, + windowsPhone: windowsPhone + }; + + var promise = function () { + function bind(fn, thisArg) { + return function () { + fn.apply(thisArg, arguments); + }; + } + var isArray = Array.isArray || function (value) { + return Object.prototype.toString.call(value) === '[object Array]'; + }; + var Promise = function (fn) { + if (typeof this !== 'object') { + throw new TypeError('Promises must be constructed via new'); + } + if (typeof fn !== 'function') { + throw new TypeError('not a function'); + } + this._state = null; + this._value = null; + this._deferreds = []; + doResolve(fn, bind(resolve, this), bind(reject, this)); + }; + var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) { + setTimeout(fn, 1); + }; + function handle(deferred) { + var me = this; + if (this._state === null) { + this._deferreds.push(deferred); + return; + } + asap(function () { + var cb = me._state ? deferred.onFulfilled : deferred.onRejected; + if (cb === null) { + (me._state ? deferred.resolve : deferred.reject)(me._value); + return; + } + var ret; + try { + ret = cb(me._value); + } catch (e) { + deferred.reject(e); + return; + } + deferred.resolve(ret); + }); + } + function resolve(newValue) { + try { + if (newValue === this) { + throw new TypeError('A promise cannot be resolved with itself.'); + } + if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { + var then = newValue.then; + if (typeof then === 'function') { + doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this)); + return; + } + } + this._state = true; + this._value = newValue; + finale.call(this); + } catch (e) { + reject.call(this, e); + } + } + function reject(newValue) { + this._state = false; + this._value = newValue; + finale.call(this); + } + function finale() { + for (var i = 0, len = this._deferreds.length; i < len; i++) { + handle.call(this, this._deferreds[i]); + } + this._deferreds = null; + } + function Handler(onFulfilled, onRejected, resolve, reject) { + this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; + this.onRejected = typeof onRejected === 'function' ? onRejected : null; + this.resolve = resolve; + this.reject = reject; + } + function doResolve(fn, onFulfilled, onRejected) { + var done = false; + try { + fn(function (value) { + if (done) { + return; + } + done = true; + onFulfilled(value); + }, function (reason) { + if (done) { + return; + } + done = true; + onRejected(reason); + }); + } catch (ex) { + if (done) { + return; + } + done = true; + onRejected(ex); + } + } + Promise.prototype.catch = function (onRejected) { + return this.then(null, onRejected); + }; + Promise.prototype.then = function (onFulfilled, onRejected) { + var me = this; + return new Promise(function (resolve, reject) { + handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject)); + }); + }; + Promise.all = function () { + var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments); + return new Promise(function (resolve, reject) { + if (args.length === 0) { + return resolve([]); + } + var remaining = args.length; + function res(i, val) { + try { + if (val && (typeof val === 'object' || typeof val === 'function')) { + var then = val.then; + if (typeof then === 'function') { + then.call(val, function (val) { + res(i, val); + }, reject); + return; + } + } + args[i] = val; + if (--remaining === 0) { + resolve(args); + } + } catch (ex) { + reject(ex); + } + } + for (var i = 0; i < args.length; i++) { + res(i, args[i]); + } + }); + }; + Promise.resolve = function (value) { + if (value && typeof value === 'object' && value.constructor === Promise) { + return value; + } + return new Promise(function (resolve) { + resolve(value); + }); + }; + Promise.reject = function (value) { + return new Promise(function (resolve, reject) { + reject(value); + }); + }; + Promise.race = function (values) { + return new Promise(function (resolve, reject) { + for (var i = 0, len = values.length; i < len; i++) { + values[i].then(resolve, reject); + } + }); + }; + return Promise; + }; + var promiseObj = window.Promise ? window.Promise : promise(); + + var requestAnimationFramePromise; + var requestAnimationFrame = function (callback, element) { + var i, requestAnimationFrameFunc = window.requestAnimationFrame; + var vendors = [ + 'ms', + 'moz', + 'webkit' + ]; + var featurefill = function (callback) { + window.setTimeout(callback, 0); + }; + for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) { + requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame']; + } + if (!requestAnimationFrameFunc) { + requestAnimationFrameFunc = featurefill; + } + requestAnimationFrameFunc(callback, element); + }; + var wrappedSetTimeout = function (callback, time) { + if (typeof time !== 'number') { + time = 0; + } + return setTimeout(callback, time); + }; + var wrappedSetInterval = function (callback, time) { + if (typeof time !== 'number') { + time = 1; + } + return setInterval(callback, time); + }; + var wrappedClearTimeout = function (id) { + return clearTimeout(id); + }; + var wrappedClearInterval = function (id) { + return clearInterval(id); + }; + var debounce = function (callback, time) { + var timer, func; + func = function () { + var args = arguments; + clearTimeout(timer); + timer = wrappedSetTimeout(function () { + callback.apply(this, args); + }, time); + }; + func.stop = function () { + clearTimeout(timer); + }; + return func; + }; + var $_db41wogje5o2ps3 = { + requestAnimationFrame: function (callback, element) { + if (requestAnimationFramePromise) { + requestAnimationFramePromise.then(callback); + return; + } + requestAnimationFramePromise = new promiseObj(function (resolve) { + if (!element) { + element = document.body; + } + requestAnimationFrame(resolve, element); + }).then(callback); + }, + setTimeout: wrappedSetTimeout, + setInterval: wrappedSetInterval, + setEditorTimeout: function (editor, callback, time) { + return wrappedSetTimeout(function () { + if (!editor.removed) { + callback(); + } + }, time); + }, + setEditorInterval: function (editor, callback, time) { + var timer; + timer = wrappedSetInterval(function () { + if (!editor.removed) { + callback(); + } else { + clearInterval(timer); + } + }, time); + return timer; + }, + debounce: debounce, + throttle: debounce, + clearInterval: wrappedClearInterval, + clearTimeout: wrappedClearTimeout + }; + + var eventExpandoPrefix = 'mce-data-'; + var mouseEventRe = /^(?:mouse|contextmenu)|click/; + var deprecated = { + keyLocation: 1, + layerX: 1, + layerY: 1, + returnValue: 1, + webkitMovementX: 1, + webkitMovementY: 1, + keyIdentifier: 1 + }; + var hasIsDefaultPrevented = function (event) { + return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse; + }; + var returnFalse = function () { + return false; + }; + var returnTrue = function () { + return true; + }; + var addEvent = function (target, name, callback, capture) { + if (target.addEventListener) { + target.addEventListener(name, callback, capture || false); + } else if (target.attachEvent) { + target.attachEvent('on' + name, callback); + } + }; + var removeEvent = function (target, name, callback, capture) { + if (target.removeEventListener) { + target.removeEventListener(name, callback, capture || false); + } else if (target.detachEvent) { + target.detachEvent('on' + name, callback); + } + }; + var getTargetFromShadowDom = function (event, defaultTarget) { + var path, target = defaultTarget; + path = event.path; + if (path && path.length > 0) { + target = path[0]; + } + if (event.composedPath) { + path = event.composedPath(); + if (path && path.length > 0) { + target = path[0]; + } + } + return target; + }; + var fix = function (originalEvent, data) { + var name; + var event = data || {}; + for (name in originalEvent) { + if (!deprecated[name]) { + event[name] = originalEvent[name]; + } + } + if (!event.target) { + event.target = event.srcElement || document; + } + if ($_9bd8pn9je5o2pp2.experimentalShadowDom) { + event.target = getTargetFromShadowDom(originalEvent, event.target); + } + if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) { + var eventDoc = event.target.ownerDocument || document; + var doc = eventDoc.documentElement; + var body = eventDoc.body; + event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + event.preventDefault = function () { + event.isDefaultPrevented = returnTrue; + if (originalEvent) { + if (originalEvent.preventDefault) { + originalEvent.preventDefault(); + } else { + originalEvent.returnValue = false; + } + } + }; + event.stopPropagation = function () { + event.isPropagationStopped = returnTrue; + if (originalEvent) { + if (originalEvent.stopPropagation) { + originalEvent.stopPropagation(); + } else { + originalEvent.cancelBubble = true; + } + } + }; + event.stopImmediatePropagation = function () { + event.isImmediatePropagationStopped = returnTrue; + event.stopPropagation(); + }; + if (hasIsDefaultPrevented(event) === false) { + event.isDefaultPrevented = returnFalse; + event.isPropagationStopped = returnFalse; + event.isImmediatePropagationStopped = returnFalse; + } + if (typeof event.metaKey === 'undefined') { + event.metaKey = false; + } + return event; + }; + var bindOnReady = function (win, callback, eventUtils) { + var doc = win.document, event = { type: 'ready' }; + if (eventUtils.domLoaded) { + callback(event); + return; + } + var isDocReady = function () { + return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body; + }; + var readyHandler = function () { + if (!eventUtils.domLoaded) { + eventUtils.domLoaded = true; + callback(event); + } + }; + var waitForDomLoaded = function () { + if (isDocReady()) { + removeEvent(doc, 'readystatechange', waitForDomLoaded); + readyHandler(); + } + }; + var tryScroll = function () { + try { + doc.documentElement.doScroll('left'); + } catch (ex) { + $_db41wogje5o2ps3.setTimeout(tryScroll); + return; + } + readyHandler(); + }; + if (doc.addEventListener && !($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11)) { + if (isDocReady()) { + readyHandler(); + } else { + addEvent(win, 'DOMContentLoaded', readyHandler); + } + } else { + addEvent(doc, 'readystatechange', waitForDomLoaded); + if (doc.documentElement.doScroll && win.self === win.top) { + tryScroll(); + } + } + addEvent(win, 'load', readyHandler); + }; + var EventUtils = function () { + var self = this; + var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave; + expando = eventExpandoPrefix + (+new Date()).toString(32); + hasMouseEnterLeave = 'onmouseenter' in document.documentElement; + hasFocusIn = 'onfocusin' in document.documentElement; + mouseEnterLeave = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + count = 1; + self.domLoaded = false; + self.events = events; + var executeHandlers = function (evt, id) { + var callbackList, i, l, callback; + var container = events[id]; + callbackList = container && container[evt.type]; + if (callbackList) { + for (i = 0, l = callbackList.length; i < l; i++) { + callback = callbackList[i]; + if (callback && callback.func.call(callback.scope, evt) === false) { + evt.preventDefault(); + } + if (evt.isImmediatePropagationStopped()) { + return; + } + } + } + }; + self.bind = function (target, names, callback, scope) { + var id, callbackList, i, name, fakeName, nativeHandler, capture; + var win = window; + var defaultNativeHandler = function (evt) { + executeHandlers(fix(evt || win.event), id); + }; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return; + } + if (!target[expando]) { + id = count++; + target[expando] = id; + events[id] = {}; + } else { + id = target[expando]; + } + scope = scope || target; + names = names.split(' '); + i = names.length; + while (i--) { + name = names[i]; + nativeHandler = defaultNativeHandler; + fakeName = capture = false; + if (name === 'DOMContentLoaded') { + name = 'ready'; + } + if (self.domLoaded && name === 'ready' && target.readyState === 'complete') { + callback.call(scope, fix({ type: name })); + continue; + } + if (!hasMouseEnterLeave) { + fakeName = mouseEnterLeave[name]; + if (fakeName) { + nativeHandler = function (evt) { + var current, related; + current = evt.currentTarget; + related = evt.relatedTarget; + if (related && current.contains) { + related = current.contains(related); + } else { + while (related && related !== current) { + related = related.parentNode; + } + } + if (!related) { + evt = fix(evt || win.event); + evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter'; + evt.target = current; + executeHandlers(evt, id); + } + }; + } + } + if (!hasFocusIn && (name === 'focusin' || name === 'focusout')) { + capture = true; + fakeName = name === 'focusin' ? 'focus' : 'blur'; + nativeHandler = function (evt) { + evt = fix(evt || win.event); + evt.type = evt.type === 'focus' ? 'focusin' : 'focusout'; + executeHandlers(evt, id); + }; + } + callbackList = events[id][name]; + if (!callbackList) { + events[id][name] = callbackList = [{ + func: callback, + scope: scope + }]; + callbackList.fakeName = fakeName; + callbackList.capture = capture; + callbackList.nativeHandler = nativeHandler; + if (name === 'ready') { + bindOnReady(target, nativeHandler, self); + } else { + addEvent(target, fakeName || name, nativeHandler, capture); + } + } else { + if (name === 'ready' && self.domLoaded) { + callback({ type: name }); + } else { + callbackList.push({ + func: callback, + scope: scope + }); + } + } + } + target = callbackList = 0; + return callback; + }; + self.unbind = function (target, names, callback) { + var id, callbackList, i, ci, name, eventMap; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + id = target[expando]; + if (id) { + eventMap = events[id]; + if (names) { + names = names.split(' '); + i = names.length; + while (i--) { + name = names[i]; + callbackList = eventMap[name]; + if (callbackList) { + if (callback) { + ci = callbackList.length; + while (ci--) { + if (callbackList[ci].func === callback) { + var nativeHandler = callbackList.nativeHandler; + var fakeName = callbackList.fakeName, capture = callbackList.capture; + callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1)); + callbackList.nativeHandler = nativeHandler; + callbackList.fakeName = fakeName; + callbackList.capture = capture; + eventMap[name] = callbackList; + } + } + } + if (!callback || callbackList.length === 0) { + delete eventMap[name]; + removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture); + } + } + } + } else { + for (name in eventMap) { + callbackList = eventMap[name]; + removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture); + } + eventMap = {}; + } + for (name in eventMap) { + return self; + } + delete events[id]; + try { + delete target[expando]; + } catch (ex) { + target[expando] = null; + } + } + return self; + }; + self.fire = function (target, name, args) { + var id; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + args = fix(null, args); + args.type = name; + args.target = target; + do { + id = target[expando]; + if (id) { + executeHandlers(args, id); + } + target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow; + } while (target && !args.isPropagationStopped()); + return self; + }; + self.clean = function (target) { + var i, children; + var unbind = self.unbind; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + if (target[expando]) { + unbind(target); + } + if (!target.getElementsByTagName) { + target = target.document; + } + if (target && target.getElementsByTagName) { + unbind(target); + children = target.getElementsByTagName('*'); + i = children.length; + while (i--) { + target = children[i]; + if (target[expando]) { + unbind(target); + } + } + } + return self; + }; + self.destroy = function () { + events = {}; + }; + self.cancel = function (e) { + if (e) { + e.preventDefault(); + e.stopImmediatePropagation(); + } + return false; + }; + }; + EventUtils.Event = new EventUtils(); + EventUtils.Event.bind(window, 'ready', function () { + }); + + var i; + var support; + var Expr; + var getText; + var isXML; + var tokenize; + var compile; + var select; + var outermostContext; + var sortInput; + var hasDuplicate; + var setDocument; + var document$1; + var docElem; + var documentIsHTML; + var rbuggyQSA; + var rbuggyMatches; + var matches; + var contains$1; + var expando = 'sizzle' + -new Date(); + var preferredDoc = window.document; + var dirruns = 0; + var done = 0; + var classCache = createCache(); + var tokenCache = createCache(); + var compilerCache = createCache(); + var sortOrder = function (a, b) { + if (a === b) { + hasDuplicate = true; + } + return 0; + }; + var strundefined = typeof undefined; + var MAX_NEGATIVE = 1 << 31; + var hasOwn = {}.hasOwnProperty; + var arr = []; + var pop = arr.pop; + var push_native = arr.push; + var push$1 = arr.push; + var slice$1 = arr.slice; + var indexOf$1 = arr.indexOf || function (elem) { + var i = 0, len = this.length; + for (; i < len; i++) { + if (this[i] === elem) { + return i; + } + } + return -1; + }; + var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped'; + var whitespace = '[\\x20\\t\\r\\n\\f]'; + var identifier = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+'; + var attributes = '\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + identifier + '))|)' + whitespace + '*\\]'; + var pseudos = ':(' + identifier + ')(?:\\((' + '(\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|' + '((?:\\\\.|[^\\\\()[\\]]|' + attributes + ')*)|' + '.*' + ')\\)|)'; + var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\])(?:\\\\.)*)' + whitespace + '+$', 'g'); + var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*'); + var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*'); + var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\]\'"]*?)' + whitespace + '*\\]', 'g'); + var rpseudo = new RegExp(pseudos); + var ridentifier = new RegExp('^' + identifier + '$'); + var matchExpr = { + ID: new RegExp('^#(' + identifier + ')'), + CLASS: new RegExp('^\\.(' + identifier + ')'), + TAG: new RegExp('^(' + identifier + '|[*])'), + ATTR: new RegExp('^' + attributes), + PSEUDO: new RegExp('^' + pseudos), + CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(' + whitespace + '*(even|odd|(([+-]|)(\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\d+)|))' + whitespace + '*\\)|)', 'i'), + bool: new RegExp('^(?:' + booleans + ')$', 'i'), + needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(' + whitespace + '*((?:-\\d)?\\d*)' + whitespace + '*\\)|)(?=[^-]|$)', 'i') + }; + var rinputs = /^(?:input|select|textarea|button)$/i; + var rheader = /^h\d$/i; + var rnative = /^[^{]+\{\s*\[native \w/; + var rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/; + var rsibling = /[+~]/; + var rescape = /'|\\/g; + var runescape = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'); + var funescape = function (_, escaped, escapedWhitespace) { + var high = '0x' + escaped - 65536; + return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); + }; + try { + push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes); + arr[preferredDoc.childNodes.length].nodeType; + } catch (e) { + push$1 = { + apply: arr.length ? function (target, els) { + push_native.apply(target, slice$1.call(els)); + } : function (target, els) { + var j = target.length, i = 0; + while (target[j++] = els[i++]) { + } + target.length = j - 1; + } + }; + } + var Sizzle = function (selector, context, results, seed) { + var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector; + if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) { + setDocument(context); + } + context = context || document$1; + results = results || []; + if (!selector || typeof selector !== 'string') { + return results; + } + if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) { + return []; + } + if (documentIsHTML && !seed) { + if (match = rquickExpr.exec(selector)) { + if (m = match[1]) { + if (nodeType === 9) { + elem = context.getElementById(m); + if (elem && elem.parentNode) { + if (elem.id === m) { + results.push(elem); + return results; + } + } else { + return results; + } + } else { + if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) { + results.push(elem); + return results; + } + } + } else if (match[2]) { + push$1.apply(results, context.getElementsByTagName(selector)); + return results; + } else if ((m = match[3]) && support.getElementsByClassName) { + push$1.apply(results, context.getElementsByClassName(m)); + return results; + } + } + if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') { + groups = tokenize(selector); + if (old = context.getAttribute('id')) { + nid = old.replace(rescape, '\\$&'); + } else { + context.setAttribute('id', nid); + } + nid = '[id=\'' + nid + '\'] '; + i = groups.length; + while (i--) { + groups[i] = nid + toSelector(groups[i]); + } + newContext = rsibling.test(selector) && testContext(context.parentNode) || context; + newSelector = groups.join(','); + } + if (newSelector) { + try { + push$1.apply(results, newContext.querySelectorAll(newSelector)); + return results; + } catch (qsaError) { + } finally { + if (!old) { + context.removeAttribute('id'); + } + } + } + } + } + return select(selector.replace(rtrim, '$1'), context, results, seed); + }; + function createCache() { + var keys = []; + function cache(key, value) { + if (keys.push(key + ' ') > Expr.cacheLength) { + delete cache[keys.shift()]; + } + return cache[key + ' '] = value; + } + return cache; + } + function markFunction(fn) { + fn[expando] = true; + return fn; + } + function siblingCheck(a, b) { + var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE); + if (diff) { + return diff; + } + if (cur) { + while (cur = cur.nextSibling) { + if (cur === b) { + return -1; + } + } + } + return a ? 1 : -1; + } + function createInputPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === 'input' && elem.type === type; + }; + } + function createButtonPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return (name === 'input' || name === 'button') && elem.type === type; + }; + } + function createPositionalPseudo(fn) { + return markFunction(function (argument) { + argument = +argument; + return markFunction(function (seed, matches) { + var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; + while (i--) { + if (seed[j = matchIndexes[i]]) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); + } + function testContext(context) { + return context && typeof context.getElementsByTagName !== strundefined && context; + } + support = Sizzle.support = {}; + isXML = Sizzle.isXML = function (elem) { + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== 'HTML' : false; + }; + setDocument = Sizzle.setDocument = function (node) { + var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent = doc.defaultView; + function getTop(win) { + try { + return win.top; + } catch (ex) { + } + return null; + } + if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) { + return document$1; + } + document$1 = doc; + docElem = doc.documentElement; + documentIsHTML = !isXML(doc); + if (parent && parent !== getTop(parent)) { + if (parent.addEventListener) { + parent.addEventListener('unload', function () { + setDocument(); + }, false); + } else if (parent.attachEvent) { + parent.attachEvent('onunload', function () { + setDocument(); + }); + } + } + support.attributes = true; + support.getElementsByTagName = true; + support.getElementsByClassName = rnative.test(doc.getElementsByClassName); + support.getById = true; + Expr.find.ID = function (id, context) { + if (typeof context.getElementById !== strundefined && documentIsHTML) { + var m = context.getElementById(id); + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter.ID = function (id) { + var attrId = id.replace(runescape, funescape); + return function (elem) { + return elem.getAttribute('id') === attrId; + }; + }; + Expr.find.TAG = support.getElementsByTagName ? function (tag, context) { + if (typeof context.getElementsByTagName !== strundefined) { + return context.getElementsByTagName(tag); + } + } : function (tag, context) { + var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag); + if (tag === '*') { + while (elem = results[i++]) { + if (elem.nodeType === 1) { + tmp.push(elem); + } + } + return tmp; + } + return results; + }; + Expr.find.CLASS = support.getElementsByClassName && function (className, context) { + if (documentIsHTML) { + return context.getElementsByClassName(className); + } + }; + rbuggyMatches = []; + rbuggyQSA = []; + support.disconnectedMatch = true; + rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|')); + rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|')); + hasCompare = rnative.test(docElem.compareDocumentPosition); + contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) { + var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; + return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); + } : function (a, b) { + if (b) { + while (b = b.parentNode) { + if (b === a) { + return true; + } + } + } + return false; + }; + sortOrder = hasCompare ? function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if (compare) { + return compare; + } + compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1; + if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { + if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) { + return -1; + } + if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) { + return 1; + } + return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0; + } + return compare & 4 ? -1 : 1; + } : function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b]; + if (!aup || !bup) { + return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0; + } else if (aup === bup) { + return siblingCheck(a, b); + } + cur = a; + while (cur = cur.parentNode) { + ap.unshift(cur); + } + cur = b; + while (cur = cur.parentNode) { + bp.unshift(cur); + } + while (ap[i] === bp[i]) { + i++; + } + return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; + }; + return doc; + }; + Sizzle.matches = function (expr, elements) { + return Sizzle(expr, null, null, elements); + }; + Sizzle.matchesSelector = function (elem, expr) { + if ((elem.ownerDocument || elem) !== document$1) { + setDocument(elem); + } + expr = expr.replace(rattributeQuotes, '=\'$1\']'); + if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { + try { + var ret = matches.call(elem, expr); + if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) { + return ret; + } + } catch (e) { + } + } + return Sizzle(expr, document$1, null, [elem]).length > 0; + }; + Sizzle.contains = function (context, elem) { + if ((context.ownerDocument || context) !== document$1) { + setDocument(context); + } + return contains$1(context, elem); + }; + Sizzle.attr = function (elem, name) { + if ((elem.ownerDocument || elem) !== document$1) { + setDocument(elem); + } + var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined; + return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; + }; + Sizzle.error = function (msg) { + throw new Error('Syntax error, unrecognized expression: ' + msg); + }; + Sizzle.uniqueSort = function (results) { + var elem, duplicates = [], j = 0, i = 0; + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice(0); + results.sort(sortOrder); + if (hasDuplicate) { + while (elem = results[i++]) { + if (elem === results[i]) { + j = duplicates.push(i); + } + } + while (j--) { + results.splice(duplicates[j], 1); + } + } + sortInput = null; + return results; + }; + getText = Sizzle.getText = function (elem) { + var node, ret = '', i = 0, nodeType = elem.nodeType; + if (!nodeType) { + while (node = elem[i++]) { + ret += getText(node); + } + } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { + if (typeof elem.textContent === 'string') { + return elem.textContent; + } else { + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText(elem); + } + } + } else if (nodeType === 3 || nodeType === 4) { + return elem.nodeValue; + } + return ret; + }; + Expr = Sizzle.selectors = { + cacheLength: 50, + createPseudo: markFunction, + match: matchExpr, + attrHandle: {}, + find: {}, + relative: { + '>': { + dir: 'parentNode', + first: true + }, + ' ': { dir: 'parentNode' }, + '+': { + dir: 'previousSibling', + first: true + }, + '~': { dir: 'previousSibling' } + }, + preFilter: { + ATTR: function (match) { + match[1] = match[1].replace(runescape, funescape); + match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape); + if (match[2] === '~=') { + match[3] = ' ' + match[3] + ' '; + } + return match.slice(0, 4); + }, + CHILD: function (match) { + match[1] = match[1].toLowerCase(); + if (match[1].slice(0, 3) === 'nth') { + if (!match[3]) { + Sizzle.error(match[0]); + } + match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd')); + match[5] = +(match[7] + match[8] || match[3] === 'odd'); + } else if (match[3]) { + Sizzle.error(match[0]); + } + return match; + }, + PSEUDO: function (match) { + var excess, unquoted = !match[6] && match[2]; + if (matchExpr.CHILD.test(match[0])) { + return null; + } + if (match[3]) { + match[2] = match[4] || match[5] || ''; + } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) { + match[0] = match[0].slice(0, excess); + match[2] = unquoted.slice(0, excess); + } + return match.slice(0, 3); + } + }, + filter: { + TAG: function (nodeNameSelector) { + var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); + return nodeNameSelector === '*' ? function () { + return true; + } : function (elem) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + CLASS: function (className) { + var pattern = classCache[className + ' ']; + return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) { + return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || ''); + }); + }, + ATTR: function (name, operator, check) { + return function (elem) { + var result = Sizzle.attr(elem, name); + if (result == null) { + return operator === '!='; + } + if (!operator) { + return true; + } + result += ''; + return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false; + }; + }, + CHILD: function (type, what, argument, first, last) { + var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type'; + return first === 1 && last === 0 ? function (elem) { + return !!elem.parentNode; + } : function (elem, context, xml) { + var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType; + if (parent) { + if (simple) { + while (dir) { + node = elem; + while (node = node[dir]) { + if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) { + return false; + } + } + start = dir = type === 'only' && !start && 'nextSibling'; + } + return true; + } + start = [forward ? parent.firstChild : parent.lastChild]; + if (forward && useCache) { + outerCache = parent[expando] || (parent[expando] = {}); + cache = outerCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[nodeIndex]; + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if (node.nodeType === 1 && ++diff && node === elem) { + outerCache[type] = [ + dirruns, + nodeIndex, + diff + ]; + break; + } + } + } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) { + diff = cache[1]; + } else { + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) { + if (useCache) { + (node[expando] || (node[expando] = {}))[type] = [ + dirruns, + diff + ]; + } + if (node === elem) { + break; + } + } + } + } + diff -= last; + return diff === first || diff % first === 0 && diff / first >= 0; + } + }; + }, + PSEUDO: function (pseudo, argument) { + var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo); + if (fn[expando]) { + return fn(argument); + } + if (fn.length > 1) { + args = [ + pseudo, + pseudo, + '', + argument + ]; + return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) { + var idx, matched = fn(seed, argument), i = matched.length; + while (i--) { + idx = indexOf$1.call(seed, matched[i]); + seed[idx] = !(matches[idx] = matched[i]); + } + }) : function (elem) { + return fn(elem, 0, args); + }; + } + return fn; + } + }, + pseudos: { + not: markFunction(function (selector) { + var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1')); + return matcher[expando] ? markFunction(function (seed, matches, context, xml) { + var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; + while (i--) { + if (elem = unmatched[i]) { + seed[i] = !(matches[i] = elem); + } + } + }) : function (elem, context, xml) { + input[0] = elem; + matcher(input, null, xml, results); + return !results.pop(); + }; + }), + has: markFunction(function (selector) { + return function (elem) { + return Sizzle(selector, elem).length > 0; + }; + }), + contains: markFunction(function (text) { + text = text.replace(runescape, funescape); + return function (elem) { + return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; + }; + }), + lang: markFunction(function (lang) { + if (!ridentifier.test(lang || '')) { + Sizzle.error('unsupported lang: ' + lang); + } + lang = lang.replace(runescape, funescape).toLowerCase(); + return function (elem) { + var elemLang; + do { + if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) { + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf(lang + '-') === 0; + } + } while ((elem = elem.parentNode) && elem.nodeType === 1); + return false; + }; + }), + target: function (elem) { + var hash = window.location && window.location.hash; + return hash && hash.slice(1) === elem.id; + }, + root: function (elem) { + return elem === docElem; + }, + focus: function (elem) { + return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + enabled: function (elem) { + return elem.disabled === false; + }, + disabled: function (elem) { + return elem.disabled === true; + }, + checked: function (elem) { + var nodeName = elem.nodeName.toLowerCase(); + return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected; + }, + selected: function (elem) { + if (elem.parentNode) { + elem.parentNode.selectedIndex; + } + return elem.selected === true; + }, + empty: function (elem) { + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + if (elem.nodeType < 6) { + return false; + } + } + return true; + }, + parent: function (elem) { + return !Expr.pseudos.empty(elem); + }, + header: function (elem) { + return rheader.test(elem.nodeName); + }, + input: function (elem) { + return rinputs.test(elem.nodeName); + }, + button: function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === 'input' && elem.type === 'button' || name === 'button'; + }, + text: function (elem) { + var attr; + return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text'); + }, + first: createPositionalPseudo(function () { + return [0]; + }), + last: createPositionalPseudo(function (matchIndexes, length) { + return [length - 1]; + }), + eq: createPositionalPseudo(function (matchIndexes, length, argument) { + return [argument < 0 ? argument + length : argument]; + }), + even: createPositionalPseudo(function (matchIndexes, length) { + var i = 0; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + odd: createPositionalPseudo(function (matchIndexes, length) { + var i = 1; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + lt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; --i >= 0;) { + matchIndexes.push(i); + } + return matchIndexes; + }), + gt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; ++i < length;) { + matchIndexes.push(i); + } + return matchIndexes; + }) + } + }; + Expr.pseudos.nth = Expr.pseudos.eq; + for (i in { + radio: true, + checkbox: true, + file: true, + password: true, + image: true + }) { + Expr.pseudos[i] = createInputPseudo(i); + } + for (i in { + submit: true, + reset: true + }) { + Expr.pseudos[i] = createButtonPseudo(i); + } + function setFilters() { + } + setFilters.prototype = Expr.filters = Expr.pseudos; + Expr.setFilters = new setFilters(); + tokenize = Sizzle.tokenize = function (selector, parseOnly) { + var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' ']; + if (cached) { + return parseOnly ? 0 : cached.slice(0); + } + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + while (soFar) { + if (!matched || (match = rcomma.exec(soFar))) { + if (match) { + soFar = soFar.slice(match[0].length) || soFar; + } + groups.push(tokens = []); + } + matched = false; + if (match = rcombinators.exec(soFar)) { + matched = match.shift(); + tokens.push({ + value: matched, + type: match[0].replace(rtrim, ' ') + }); + soFar = soFar.slice(matched.length); + } + for (type in Expr.filter) { + if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice(matched.length); + } + } + if (!matched) { + break; + } + } + return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0); + }; + function toSelector(tokens) { + var i = 0, len = tokens.length, selector = ''; + for (; i < len; i++) { + selector += tokens[i].value; + } + return selector; + } + function addCombinator(matcher, combinator, base) { + var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++; + return combinator.first ? function (elem, context, xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + return matcher(elem, context, xml); + } + } + } : function (elem, context, xml) { + var oldCache, outerCache, newCache = [ + dirruns, + doneName + ]; + if (xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + if (matcher(elem, context, xml)) { + return true; + } + } + } + } else { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + outerCache = elem[expando] || (elem[expando] = {}); + if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) { + return newCache[2] = oldCache[2]; + } else { + outerCache[dir] = newCache; + if (newCache[2] = matcher(elem, context, xml)) { + return true; + } + } + } + } + } + }; + } + function elementMatcher(matchers) { + return matchers.length > 1 ? function (elem, context, xml) { + var i = matchers.length; + while (i--) { + if (!matchers[i](elem, context, xml)) { + return false; + } + } + return true; + } : matchers[0]; + } + function multipleContexts(selector, contexts, results) { + var i = 0, len = contexts.length; + for (; i < len; i++) { + Sizzle(selector, contexts[i], results); + } + return results; + } + function condense(unmatched, map, filter, context, xml) { + var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; + for (; i < len; i++) { + if (elem = unmatched[i]) { + if (!filter || filter(elem, context, xml)) { + newUnmatched.push(elem); + if (mapped) { + map.push(i); + } + } + } + } + return newUnmatched; + } + function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { + if (postFilter && !postFilter[expando]) { + postFilter = setMatcher(postFilter); + } + if (postFinder && !postFinder[expando]) { + postFinder = setMatcher(postFinder, postSelector); + } + return markFunction(function (seed, results, context, xml) { + var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn; + if (matcher) { + matcher(matcherIn, matcherOut, context, xml); + } + if (postFilter) { + temp = condense(matcherOut, postMap); + postFilter(temp, [], context, xml); + i = temp.length; + while (i--) { + if (elem = temp[i]) { + matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); + } + } + } + if (seed) { + if (postFinder || preFilter) { + if (postFinder) { + temp = []; + i = matcherOut.length; + while (i--) { + if (elem = matcherOut[i]) { + temp.push(matcherIn[i] = elem); + } + } + postFinder(null, matcherOut = [], temp, xml); + } + i = matcherOut.length; + while (i--) { + if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) { + seed[temp] = !(results[temp] = elem); + } + } + } + } else { + matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut); + if (postFinder) { + postFinder(null, results, matcherOut, xml); + } else { + push$1.apply(results, matcherOut); + } + } + }); + } + function matcherFromTokens(tokens) { + var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) { + return elem === checkContext; + }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) { + return indexOf$1.call(checkContext, elem) > -1; + }, implicitRelative, true), matchers = [function (elem, context, xml) { + return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); + }]; + for (; i < len; i++) { + if (matcher = Expr.relative[tokens[i].type]) { + matchers = [addCombinator(elementMatcher(matchers), matcher)]; + } else { + matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); + if (matcher[expando]) { + j = ++i; + for (; j < len; j++) { + if (Expr.relative[tokens[j].type]) { + break; + } + } + return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)); + } + matchers.push(matcher); + } + } + return elementMatcher(matchers); + } + function matcherFromGroupMatchers(elementMatchers, setMatchers) { + var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) { + var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length; + if (outermost) { + outermostContext = context !== document$1 && context; + } + for (; i !== len && (elem = elems[i]) != null; i++) { + if (byElement && elem) { + j = 0; + while (matcher = elementMatchers[j++]) { + if (matcher(elem, context, xml)) { + results.push(elem); + break; + } + } + if (outermost) { + dirruns = dirrunsUnique; + } + } + if (bySet) { + if (elem = !matcher && elem) { + matchedCount--; + } + if (seed) { + unmatched.push(elem); + } + } + } + matchedCount += i; + if (bySet && i !== matchedCount) { + j = 0; + while (matcher = setMatchers[j++]) { + matcher(unmatched, setMatched, context, xml); + } + if (seed) { + if (matchedCount > 0) { + while (i--) { + if (!(unmatched[i] || setMatched[i])) { + setMatched[i] = pop.call(results); + } + } + } + setMatched = condense(setMatched); + } + push$1.apply(results, setMatched); + if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { + Sizzle.uniqueSort(results); + } + } + if (outermost) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + return unmatched; + }; + return bySet ? markFunction(superMatcher) : superMatcher; + } + compile = Sizzle.compile = function (selector, match) { + var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' ']; + if (!cached) { + if (!match) { + match = tokenize(selector); + } + i = match.length; + while (i--) { + cached = matcherFromTokens(match[i]); + if (cached[expando]) { + setMatchers.push(cached); + } else { + elementMatchers.push(cached); + } + } + cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); + cached.selector = selector; + } + return cached; + }; + select = Sizzle.select = function (selector, context, results, seed) { + var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector); + results = results || []; + if (match.length === 1) { + tokens = match[0] = match[0].slice(0); + if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { + context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0]; + if (!context) { + return results; + } else if (compiled) { + context = context.parentNode; + } + selector = selector.slice(tokens.shift().value.length); + } + i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; + while (i--) { + token = tokens[i]; + if (Expr.relative[type = token.type]) { + break; + } + if (find = Expr.find[type]) { + if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) { + tokens.splice(i, 1); + selector = seed.length && toSelector(tokens); + if (!selector) { + push$1.apply(results, seed); + return results; + } + break; + } + } + } + } + (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context); + return results; + }; + support.sortStable = expando.split('').sort(sortOrder).join('') === expando; + support.detectDuplicates = !!hasDuplicate; + setDocument(); + support.sortDetached = true; + + var isArray = Array.isArray || function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + var toArray = function (obj) { + var array = obj, i, l; + if (!isArray(obj)) { + array = []; + for (i = 0, l = obj.length; i < l; i++) { + array[i] = obj[i]; + } + } + return array; + }; + var each$1 = function (o, cb, s) { + var n, l; + if (!o) { + return 0; + } + s = s || o; + if (o.length !== undefined) { + for (n = 0, l = o.length; n < l; n++) { + if (cb.call(s, o[n], n, o) === false) { + return 0; + } + } + } else { + for (n in o) { + if (o.hasOwnProperty(n)) { + if (cb.call(s, o[n], n, o) === false) { + return 0; + } + } + } + } + return 1; + }; + var map$1 = function (array, callback) { + var out = []; + each$1(array, function (item, index) { + out.push(callback(item, index, array)); + }); + return out; + }; + var filter$1 = function (a, f) { + var o = []; + each$1(a, function (v, index) { + if (!f || f(v, index, a)) { + o.push(v); + } + }); + return o; + }; + var indexOf$2 = function (a, v) { + var i, l; + if (a) { + for (i = 0, l = a.length; i < l; i++) { + if (a[i] === v) { + return i; + } + } + } + return -1; + }; + var reduce = function (collection, iteratee, accumulator, thisArg) { + var i = 0; + if (arguments.length < 3) { + accumulator = collection[0]; + } + for (; i < collection.length; i++) { + accumulator = iteratee.call(thisArg, accumulator, collection[i], i); + } + return accumulator; + }; + var findIndex$1 = function (array, predicate, thisArg) { + var i, l; + for (i = 0, l = array.length; i < l; i++) { + if (predicate.call(thisArg, array[i], i, array)) { + return i; + } + } + return -1; + }; + var find$1 = function (array, predicate, thisArg) { + var idx = findIndex$1(array, predicate, thisArg); + if (idx !== -1) { + return array[idx]; + } + return undefined; + }; + var last$1 = function (collection) { + return collection[collection.length - 1]; + }; + var $_c2vc3pkje5o2puw = { + isArray: isArray, + toArray: toArray, + each: each$1, + map: map$1, + filter: filter$1, + indexOf: indexOf$2, + reduce: reduce, + findIndex: findIndex$1, + find: find$1, + last: last$1 + }; + + var whiteSpaceRegExp = /^\s*|\s*$/g; + var trim = function (str) { + return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, ''); + }; + var is = function (obj, type) { + if (!type) { + return obj !== undefined; + } + if (type === 'array' && $_c2vc3pkje5o2puw.isArray(obj)) { + return true; + } + return typeof obj === type; + }; + var makeMap = function (items, delim, map) { + var i; + items = items || []; + delim = delim || ','; + if (typeof items === 'string') { + items = items.split(delim); + } + map = map || {}; + i = items.length; + while (i--) { + map[items[i]] = {}; + } + return map; + }; + var hasOwnProperty = function (obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + }; + var create = function (s, p, root) { + var self = this; + var sp, ns, cn, scn, c, de = 0; + s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s); + cn = s[3].match(/(^|\.)(\w+)$/i)[2]; + ns = self.createNS(s[3].replace(/\.\w+$/, ''), root); + if (ns[cn]) { + return; + } + if (s[2] === 'static') { + ns[cn] = p; + if (this.onCreate) { + this.onCreate(s[2], s[3], ns[cn]); + } + return; + } + if (!p[cn]) { + p[cn] = function () { + }; + de = 1; + } + ns[cn] = p[cn]; + self.extend(ns[cn].prototype, p); + if (s[5]) { + sp = self.resolve(s[5]).prototype; + scn = s[5].match(/\.(\w+)$/i)[1]; + c = ns[cn]; + if (de) { + ns[cn] = function () { + return sp[scn].apply(this, arguments); + }; + } else { + ns[cn] = function () { + this.parent = sp[scn]; + return c.apply(this, arguments); + }; + } + ns[cn].prototype[cn] = ns[cn]; + self.each(sp, function (f, n) { + ns[cn].prototype[n] = sp[n]; + }); + self.each(p, function (f, n) { + if (sp[n]) { + ns[cn].prototype[n] = function () { + this.parent = sp[n]; + return f.apply(this, arguments); + }; + } else { + if (n !== cn) { + ns[cn].prototype[n] = f; + } + } + }); + } + self.each(p.static, function (f, n) { + ns[cn][n] = f; + }); + }; + var extend = function (obj, ext) { + var x = []; + for (var _i = 2; _i < arguments.length; _i++) { + x[_i - 2] = arguments[_i]; + } + var i, l, name; + var args = arguments; + var value; + for (i = 1, l = args.length; i < l; i++) { + ext = args[i]; + for (name in ext) { + if (ext.hasOwnProperty(name)) { + value = ext[name]; + if (value !== undefined) { + obj[name] = value; + } + } + } + } + return obj; + }; + var walk = function (o, f, n, s) { + s = s || this; + if (o) { + if (n) { + o = o[n]; + } + $_c2vc3pkje5o2puw.each(o, function (o, i) { + if (f.call(s, o, i, n) === false) { + return false; + } + walk(o, f, n, s); + }); + } + }; + var createNS = function (n, o) { + var i, v; + o = o || window; + n = n.split('.'); + for (i = 0; i < n.length; i++) { + v = n[i]; + if (!o[v]) { + o[v] = {}; + } + o = o[v]; + } + return o; + }; + var resolve$1 = function (n, o) { + var i, l; + o = o || window; + n = n.split('.'); + for (i = 0, l = n.length; i < l; i++) { + o = o[n[i]]; + if (!o) { + break; + } + } + return o; + }; + var explode = function (s, d) { + if (!s || is(s, 'array')) { + return s; + } + return $_c2vc3pkje5o2puw.map(s.split(d || ','), trim); + }; + var _addCacheSuffix = function (url) { + var cacheSuffix = $_9bd8pn9je5o2pp2.cacheSuffix; + if (cacheSuffix) { + url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix; + } + return url; + }; + var $_a5gegtjje5o2pum = { + trim: trim, + isArray: $_c2vc3pkje5o2puw.isArray, + is: is, + toArray: $_c2vc3pkje5o2puw.toArray, + makeMap: makeMap, + each: $_c2vc3pkje5o2puw.each, + map: $_c2vc3pkje5o2puw.map, + grep: $_c2vc3pkje5o2puw.filter, + inArray: $_c2vc3pkje5o2puw.indexOf, + hasOwn: hasOwnProperty, + extend: extend, + create: create, + walk: walk, + createNS: createNS, + resolve: resolve$1, + explode: explode, + _addCacheSuffix: _addCacheSuffix + }; + + var doc = document; + var push$2 = Array.prototype.push; + var slice$2 = Array.prototype.slice; + var rquickExpr$1 = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/; + var Event = EventUtils.Event; + var skipUniques = $_a5gegtjje5o2pum.makeMap('children,contents,next,prev'); + var isDefined = function (obj) { + return typeof obj !== 'undefined'; + }; + var isString = function (obj) { + return typeof obj === 'string'; + }; + var isWindow = function (obj) { + return obj && obj === obj.window; + }; + var createFragment = function (html, fragDoc) { + var frag, node, container; + fragDoc = fragDoc || doc; + container = fragDoc.createElement('div'); + frag = fragDoc.createDocumentFragment(); + container.innerHTML = html; + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }; + var domManipulate = function (targetNodes, sourceItem, callback, reverse) { + var i; + if (isString(sourceItem)) { + sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0])); + } else if (sourceItem.length && !sourceItem.nodeType) { + sourceItem = DomQuery.makeArray(sourceItem); + if (reverse) { + for (i = sourceItem.length - 1; i >= 0; i--) { + domManipulate(targetNodes, sourceItem[i], callback, reverse); + } + } else { + for (i = 0; i < sourceItem.length; i++) { + domManipulate(targetNodes, sourceItem[i], callback, reverse); + } + } + return targetNodes; + } + if (sourceItem.nodeType) { + i = targetNodes.length; + while (i--) { + callback.call(targetNodes[i], sourceItem); + } + } + return targetNodes; + }; + var hasClass = function (node, className) { + return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1; + }; + var wrap = function (elements, wrapper, all) { + var lastParent, newWrapper; + wrapper = DomQuery(wrapper)[0]; + elements.each(function () { + var self = this; + if (!all || lastParent !== self.parentNode) { + lastParent = self.parentNode; + newWrapper = wrapper.cloneNode(false); + self.parentNode.insertBefore(newWrapper, self); + newWrapper.appendChild(self); + } else { + newWrapper.appendChild(self); + } + }); + return elements; + }; + var numericCssMap = $_a5gegtjje5o2pum.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' '); + var booleanMap = $_a5gegtjje5o2pum.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' '); + var propFix = { + for: 'htmlFor', + class: 'className', + readonly: 'readOnly' + }; + var cssFix = { float: 'cssFloat' }; + var attrHooks = {}; + var cssHooks = {}; + var DomQuery = function (selector, context) { + return new DomQuery.fn.init(selector, context); + }; + var inArray = function (item, array) { + var i; + if (array.indexOf) { + return array.indexOf(item); + } + i = array.length; + while (i--) { + if (array[i] === item) { + return i; + } + } + return -1; + }; + var whiteSpaceRegExp$1 = /^\s*|\s*$/g; + var trim$1 = function (str) { + return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, ''); + }; + var each$2 = function (obj, callback) { + var length, key, i, value; + if (obj) { + length = obj.length; + if (length === undefined) { + for (key in obj) { + if (obj.hasOwnProperty(key)) { + value = obj[key]; + if (callback.call(value, key, value) === false) { + break; + } + } + } + } else { + for (i = 0; i < length; i++) { + value = obj[i]; + if (callback.call(value, i, value) === false) { + break; + } + } + } + } + return obj; + }; + var grep = function (array, callback) { + var out = []; + each$2(array, function (i, item) { + if (callback(item, i)) { + out.push(item); + } + }); + return out; + }; + var getElementDocument = function (element) { + if (!element) { + return doc; + } + if (element.nodeType === 9) { + return element; + } + return element.ownerDocument; + }; + DomQuery.fn = DomQuery.prototype = { + constructor: DomQuery, + selector: '', + context: null, + length: 0, + init: function (selector, context) { + var self = this; + var match, node; + if (!selector) { + return self; + } + if (selector.nodeType) { + self.context = self[0] = selector; + self.length = 1; + return self; + } + if (context && context.nodeType) { + self.context = context; + } else { + if (context) { + return DomQuery(selector).attr(context); + } + self.context = context = document; + } + if (isString(selector)) { + self.selector = selector; + if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) { + match = [ + null, + selector, + null + ]; + } else { + match = rquickExpr$1.exec(selector); + } + if (match) { + if (match[1]) { + node = createFragment(selector, getElementDocument(context)).firstChild; + while (node) { + push$2.call(self, node); + node = node.nextSibling; + } + } else { + node = getElementDocument(context).getElementById(match[2]); + if (!node) { + return self; + } + if (node.id !== match[2]) { + return self.find(selector); + } + self.length = 1; + self[0] = node; + } + } else { + return DomQuery(context).find(selector); + } + } else { + this.add(selector, false); + } + return self; + }, + toArray: function () { + return $_a5gegtjje5o2pum.toArray(this); + }, + add: function (items, sort) { + var self = this; + var nodes, i; + if (isString(items)) { + return self.add(DomQuery(items)); + } + if (sort !== false) { + nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items))); + self.length = nodes.length; + for (i = 0; i < nodes.length; i++) { + self[i] = nodes[i]; + } + } else { + push$2.apply(self, DomQuery.makeArray(items)); + } + return self; + }, + attr: function (name, value) { + var self = this; + var hook; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.attr(name, value); + }); + } else if (isDefined(value)) { + this.each(function () { + var hook; + if (this.nodeType === 1) { + hook = attrHooks[name]; + if (hook && hook.set) { + hook.set(this, value); + return; + } + if (value === null) { + this.removeAttribute(name, 2); + } else { + this.setAttribute(name, value, 2); + } + } + }); + } else { + if (self[0] && self[0].nodeType === 1) { + hook = attrHooks[name]; + if (hook && hook.get) { + return hook.get(self[0], name); + } + if (booleanMap[name]) { + return self.prop(name) ? name : undefined; + } + value = self[0].getAttribute(name, 2); + if (value === null) { + value = undefined; + } + } + return value; + } + return self; + }, + removeAttr: function (name) { + return this.attr(name, null); + }, + prop: function (name, value) { + var self = this; + name = propFix[name] || name; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.prop(name, value); + }); + } else if (isDefined(value)) { + this.each(function () { + if (this.nodeType === 1) { + this[name] = value; + } + }); + } else { + if (self[0] && self[0].nodeType && name in self[0]) { + return self[0][name]; + } + return value; + } + return self; + }, + css: function (name, value) { + var self = this; + var elm, hook; + var camel = function (name) { + return name.replace(/-(\D)/g, function (a, b) { + return b.toUpperCase(); + }); + }; + var dashed = function (name) { + return name.replace(/[A-Z]/g, function (a) { + return '-' + a; + }); + }; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.css(name, value); + }); + } else { + if (isDefined(value)) { + name = camel(name); + if (typeof value === 'number' && !numericCssMap[name]) { + value = value.toString() + 'px'; + } + self.each(function () { + var style = this.style; + hook = cssHooks[name]; + if (hook && hook.set) { + hook.set(this, value); + return; + } + try { + this.style[cssFix[name] || name] = value; + } catch (ex) { + } + if (value === null || value === '') { + if (style.removeProperty) { + style.removeProperty(dashed(name)); + } else { + style.removeAttribute(name); + } + } + }); + } else { + elm = self[0]; + hook = cssHooks[name]; + if (hook && hook.get) { + return hook.get(elm); + } + if (elm.ownerDocument.defaultView) { + try { + return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name)); + } catch (ex) { + return undefined; + } + } else if (elm.currentStyle) { + return elm.currentStyle[camel(name)]; + } + } + } + return self; + }, + remove: function () { + var self = this; + var node, i = this.length; + while (i--) { + node = self[i]; + Event.clean(node); + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + return this; + }, + empty: function () { + var self = this; + var node, i = this.length; + while (i--) { + node = self[i]; + while (node.firstChild) { + node.removeChild(node.firstChild); + } + } + return this; + }, + html: function (value) { + var self = this; + var i; + if (isDefined(value)) { + i = self.length; + try { + while (i--) { + self[i].innerHTML = value; + } + } catch (ex) { + DomQuery(self[i]).empty().append(value); + } + return self; + } + return self[0] ? self[0].innerHTML : ''; + }, + text: function (value) { + var self = this; + var i; + if (isDefined(value)) { + i = self.length; + while (i--) { + if ('innerText' in self[i]) { + self[i].innerText = value; + } else { + self[0].textContent = value; + } + } + return self; + } + return self[0] ? self[0].innerText || self[0].textContent : ''; + }, + append: function () { + return domManipulate(this, arguments, function (node) { + if (this.nodeType === 1 || this.host && this.host.nodeType === 1) { + this.appendChild(node); + } + }); + }, + prepend: function () { + return domManipulate(this, arguments, function (node) { + if (this.nodeType === 1 || this.host && this.host.nodeType === 1) { + this.insertBefore(node, this.firstChild); + } + }, true); + }, + before: function () { + var self = this; + if (self[0] && self[0].parentNode) { + return domManipulate(self, arguments, function (node) { + this.parentNode.insertBefore(node, this); + }); + } + return self; + }, + after: function () { + var self = this; + if (self[0] && self[0].parentNode) { + return domManipulate(self, arguments, function (node) { + this.parentNode.insertBefore(node, this.nextSibling); + }, true); + } + return self; + }, + appendTo: function (val) { + DomQuery(val).append(this); + return this; + }, + prependTo: function (val) { + DomQuery(val).prepend(this); + return this; + }, + replaceWith: function (content) { + return this.before(content).remove(); + }, + wrap: function (content) { + return wrap(this, content); + }, + wrapAll: function (content) { + return wrap(this, content, true); + }, + wrapInner: function (content) { + this.each(function () { + DomQuery(this).contents().wrapAll(content); + }); + return this; + }, + unwrap: function () { + return this.parent().each(function () { + DomQuery(this).replaceWith(this.childNodes); + }); + }, + clone: function () { + var result = []; + this.each(function () { + result.push(this.cloneNode(true)); + }); + return DomQuery(result); + }, + addClass: function (className) { + return this.toggleClass(className, true); + }, + removeClass: function (className) { + return this.toggleClass(className, false); + }, + toggleClass: function (className, state) { + var self = this; + if (typeof className !== 'string') { + return self; + } + if (className.indexOf(' ') !== -1) { + each$2(className.split(' '), function () { + self.toggleClass(this, state); + }); + } else { + self.each(function (index, node) { + var existingClassName, classState; + classState = hasClass(node, className); + if (classState !== state) { + existingClassName = node.className; + if (classState) { + node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' ')); + } else { + node.className += existingClassName ? ' ' + className : className; + } + } + }); + } + return self; + }, + hasClass: function (className) { + return hasClass(this[0], className); + }, + each: function (callback) { + return each$2(this, callback); + }, + on: function (name, callback) { + return this.each(function () { + Event.bind(this, name, callback); + }); + }, + off: function (name, callback) { + return this.each(function () { + Event.unbind(this, name, callback); + }); + }, + trigger: function (name) { + return this.each(function () { + if (typeof name === 'object') { + Event.fire(this, name.type, name); + } else { + Event.fire(this, name); + } + }); + }, + show: function () { + return this.css('display', ''); + }, + hide: function () { + return this.css('display', 'none'); + }, + slice: function () { + return new DomQuery(slice$2.apply(this, arguments)); + }, + eq: function (index) { + return index === -1 ? this.slice(index) : this.slice(index, +index + 1); + }, + first: function () { + return this.eq(0); + }, + last: function () { + return this.eq(-1); + }, + find: function (selector) { + var i, l; + var ret = []; + for (i = 0, l = this.length; i < l; i++) { + DomQuery.find(selector, this[i], ret); + } + return DomQuery(ret); + }, + filter: function (selector) { + if (typeof selector === 'function') { + return DomQuery(grep(this.toArray(), function (item, i) { + return selector(i, item); + })); + } + return DomQuery(DomQuery.filter(selector, this.toArray())); + }, + closest: function (selector) { + var result = []; + if (selector instanceof DomQuery) { + selector = selector[0]; + } + this.each(function (i, node) { + while (node) { + if (typeof selector === 'string' && DomQuery(node).is(selector)) { + result.push(node); + break; + } else if (node === selector) { + result.push(node); + break; + } + node = node.parentNode; + } + }); + return DomQuery(result); + }, + offset: function (offset) { + var elm, doc, docElm; + var x = 0, y = 0, pos; + if (!offset) { + elm = this[0]; + if (elm) { + doc = elm.ownerDocument; + docElm = doc.documentElement; + if (elm.getBoundingClientRect) { + pos = elm.getBoundingClientRect(); + x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft; + y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop; + } + } + return { + left: x, + top: y + }; + } + return this.css(offset); + }, + push: push$2, + sort: [].sort, + splice: [].splice + }; + $_a5gegtjje5o2pum.extend(DomQuery, { + extend: $_a5gegtjje5o2pum.extend, + makeArray: function (object) { + if (isWindow(object) || object.nodeType) { + return [object]; + } + return $_a5gegtjje5o2pum.toArray(object); + }, + inArray: inArray, + isArray: $_a5gegtjje5o2pum.isArray, + each: each$2, + trim: trim$1, + grep: grep, + find: Sizzle, + expr: Sizzle.selectors, + unique: Sizzle.uniqueSort, + text: Sizzle.getText, + contains: Sizzle.contains, + filter: function (expr, elems, not) { + var i = elems.length; + if (not) { + expr = ':not(' + expr + ')'; + } + while (i--) { + if (elems[i].nodeType !== 1) { + elems.splice(i, 1); + } + } + if (elems.length === 1) { + elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : []; + } else { + elems = DomQuery.find.matches(expr, elems); + } + return elems; + } + }); + var dir = function (el, prop, until) { + var matched = []; + var cur = el[prop]; + if (typeof until !== 'string' && until instanceof DomQuery) { + until = until[0]; + } + while (cur && cur.nodeType !== 9) { + if (until !== undefined) { + if (cur === until) { + break; + } + if (typeof until === 'string' && DomQuery(cur).is(until)) { + break; + } + } + if (cur.nodeType === 1) { + matched.push(cur); + } + cur = cur[prop]; + } + return matched; + }; + var sibling = function (node, siblingName, nodeType, until) { + var result = []; + if (until instanceof DomQuery) { + until = until[0]; + } + for (; node; node = node[siblingName]) { + if (nodeType && node.nodeType !== nodeType) { + continue; + } + if (until !== undefined) { + if (node === until) { + break; + } + if (typeof until === 'string' && DomQuery(node).is(until)) { + break; + } + } + result.push(node); + } + return result; + }; + var firstSibling = function (node, siblingName, nodeType) { + for (node = node[siblingName]; node; node = node[siblingName]) { + if (node.nodeType === nodeType) { + return node; + } + } + return null; + }; + each$2({ + parent: function (node) { + var parent = node.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function (node) { + return dir(node, 'parentNode'); + }, + next: function (node) { + return firstSibling(node, 'nextSibling', 1); + }, + prev: function (node) { + return firstSibling(node, 'previousSibling', 1); + }, + children: function (node) { + return sibling(node.firstChild, 'nextSibling', 1); + }, + contents: function (node) { + return $_a5gegtjje5o2pum.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes); + } + }, function (name, fn) { + DomQuery.fn[name] = function (selector) { + var self = this; + var result = []; + self.each(function () { + var nodes = fn.call(result, this, selector, result); + if (nodes) { + if (DomQuery.isArray(nodes)) { + result.push.apply(result, nodes); + } else { + result.push(nodes); + } + } + }); + if (this.length > 1) { + if (!skipUniques[name]) { + result = DomQuery.unique(result); + } + if (name.indexOf('parents') === 0) { + result = result.reverse(); + } + } + result = DomQuery(result); + if (selector) { + return result.filter(selector); + } + return result; + }; + }); + each$2({ + parentsUntil: function (node, until) { + return dir(node, 'parentNode', until); + }, + nextUntil: function (node, until) { + return sibling(node, 'nextSibling', 1, until).slice(1); + }, + prevUntil: function (node, until) { + return sibling(node, 'previousSibling', 1, until).slice(1); + } + }, function (name, fn) { + DomQuery.fn[name] = function (selector, filter) { + var self = this; + var result = []; + self.each(function () { + var nodes = fn.call(result, this, selector, result); + if (nodes) { + if (DomQuery.isArray(nodes)) { + result.push.apply(result, nodes); + } else { + result.push(nodes); + } + } + }); + if (this.length > 1) { + result = DomQuery.unique(result); + if (name.indexOf('parents') === 0 || name === 'prevUntil') { + result = result.reverse(); + } + } + result = DomQuery(result); + if (filter) { + return result.filter(filter); + } + return result; + }; + }); + DomQuery.fn.is = function (selector) { + return !!selector && this.filter(selector).length > 0; + }; + DomQuery.fn.init.prototype = DomQuery.fn; + DomQuery.overrideDefaults = function (callback) { + var defaults; + var sub = function (selector, context) { + defaults = defaults || callback(); + if (arguments.length === 0) { + selector = defaults.element; + } + if (!context) { + context = defaults.context; + } + return new sub.fn.init(selector, context); + }; + DomQuery.extend(sub, this); + return sub; + }; + var appendHooks = function (targetHooks, prop, hooks) { + each$2(hooks, function (name, func) { + targetHooks[name] = targetHooks[name] || {}; + targetHooks[name][prop] = func; + }); + }; + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 8) { + appendHooks(attrHooks, 'get', { + maxlength: function (elm) { + var value = elm.maxLength; + if (value === 2147483647) { + return undefined; + } + return value; + }, + size: function (elm) { + var value = elm.size; + if (value === 20) { + return undefined; + } + return value; + }, + class: function (elm) { + return elm.className; + }, + style: function (elm) { + var value = elm.style.cssText; + if (value.length === 0) { + return undefined; + } + return value; + } + }); + appendHooks(attrHooks, 'set', { + class: function (elm, value) { + elm.className = value; + }, + style: function (elm, value) { + elm.style.cssText = value; + } + }); + } + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 9) { + cssFix.float = 'styleFloat'; + appendHooks(cssHooks, 'set', { + opacity: function (elm, value) { + var style = elm.style; + if (value === null || value === '') { + style.removeAttribute('filter'); + } else { + style.zoom = 1; + style.filter = 'alpha(opacity=' + value * 100 + ')'; + } + } + }); + } + DomQuery.attrHooks = attrHooks; + DomQuery.cssHooks = cssHooks; + + var cached = function (f) { + var called = false; + var r; + return function () { + if (!called) { + called = true; + r = f.apply(null, arguments); + } + return r; + }; + }; + var $_g85o1xnje5o2pvw = { cached: cached }; + + var firstMatch = function (regexes, s) { + for (var i = 0; i < regexes.length; i++) { + var x = regexes[i]; + if (x.test(s)) + return x; + } + return undefined; + }; + var find$2 = function (regexes, agent) { + var r = firstMatch(regexes, agent); + if (!r) + return { + major: 0, + minor: 0 + }; + var group = function (i) { + return Number(agent.replace(r, '$' + i)); + }; + return nu(group(1), group(2)); + }; + var detect = function (versionRegexes, agent) { + var cleanedAgent = String(agent).toLowerCase(); + if (versionRegexes.length === 0) + return unknown(); + return find$2(versionRegexes, cleanedAgent); + }; + var unknown = function () { + return nu(0, 0); + }; + var nu = function (major, minor) { + return { + major: major, + minor: minor + }; + }; + var $_df13jvqje5o2pw3 = { + nu: nu, + detect: detect, + unknown: unknown + }; + + var edge = 'Edge'; + var chrome = 'Chrome'; + var ie$1 = 'IE'; + var opera$1 = 'Opera'; + var firefox = 'Firefox'; + var safari = 'Safari'; + var isBrowser = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$1 = function () { + return nu$1({ + current: undefined, + version: $_df13jvqje5o2pw3.unknown() + }); + }; + var nu$1 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isEdge: isBrowser(edge, current), + isChrome: isBrowser(chrome, current), + isIE: isBrowser(ie$1, current), + isOpera: isBrowser(opera$1, current), + isFirefox: isBrowser(firefox, current), + isSafari: isBrowser(safari, current) + }; + }; + var $_3tg2x6pje5o2pvz = { + unknown: unknown$1, + nu: nu$1, + edge: $_enfhkv6je5o2ply.constant(edge), + chrome: $_enfhkv6je5o2ply.constant(chrome), + ie: $_enfhkv6je5o2ply.constant(ie$1), + opera: $_enfhkv6je5o2ply.constant(opera$1), + firefox: $_enfhkv6je5o2ply.constant(firefox), + safari: $_enfhkv6je5o2ply.constant(safari) + }; + + var windows = 'Windows'; + var ios = 'iOS'; + var android$1 = 'Android'; + var linux = 'Linux'; + var osx = 'OSX'; + var solaris = 'Solaris'; + var freebsd = 'FreeBSD'; + var isOS = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$2 = function () { + return nu$2({ + current: undefined, + version: $_df13jvqje5o2pw3.unknown() + }); + }; + var nu$2 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isWindows: isOS(windows, current), + isiOS: isOS(ios, current), + isAndroid: isOS(android$1, current), + isOSX: isOS(osx, current), + isLinux: isOS(linux, current), + isSolaris: isOS(solaris, current), + isFreeBSD: isOS(freebsd, current) + }; + }; + var $_w4a0lrje5o2pw4 = { + unknown: unknown$2, + nu: nu$2, + windows: $_enfhkv6je5o2ply.constant(windows), + ios: $_enfhkv6je5o2ply.constant(ios), + android: $_enfhkv6je5o2ply.constant(android$1), + linux: $_enfhkv6je5o2ply.constant(linux), + osx: $_enfhkv6je5o2ply.constant(osx), + solaris: $_enfhkv6je5o2ply.constant(solaris), + freebsd: $_enfhkv6je5o2ply.constant(freebsd) + }; + + function DeviceType (os, browser, userAgent) { + var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; + var isiPhone = os.isiOS() && !isiPad; + var isAndroid3 = os.isAndroid() && os.version.major === 3; + var isAndroid4 = os.isAndroid() && os.version.major === 4; + var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true; + var isTouch = os.isiOS() || os.isAndroid(); + var isPhone = isTouch && !isTablet; + var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; + return { + isiPad: $_enfhkv6je5o2ply.constant(isiPad), + isiPhone: $_enfhkv6je5o2ply.constant(isiPhone), + isTablet: $_enfhkv6je5o2ply.constant(isTablet), + isPhone: $_enfhkv6je5o2ply.constant(isPhone), + isTouch: $_enfhkv6je5o2ply.constant(isTouch), + isAndroid: os.isAndroid, + isiOS: os.isiOS, + isWebView: $_enfhkv6je5o2ply.constant(iOSwebview) + }; + } + + var detect$1 = function (candidates, userAgent) { + var agent = String(userAgent).toLowerCase(); + return $_bwcteb4je5o2pl4.find(candidates, function (candidate) { + return candidate.search(agent); + }); + }; + var detectBrowser = function (browsers, userAgent) { + return detect$1(browsers, userAgent).map(function (browser) { + var version = $_df13jvqje5o2pw3.detect(browser.versionRegexes, userAgent); + return { + current: browser.name, + version: version + }; + }); + }; + var detectOs = function (oses, userAgent) { + return detect$1(oses, userAgent).map(function (os) { + var version = $_df13jvqje5o2pw3.detect(os.versionRegexes, userAgent); + return { + current: os.name, + version: version + }; + }); + }; + var $_4evi4wtje5o2pwb = { + detectBrowser: detectBrowser, + detectOs: detectOs + }; + + var addToStart = function (str, prefix) { + return prefix + str; + }; + var addToEnd = function (str, suffix) { + return str + suffix; + }; + var removeFromStart = function (str, numChars) { + return str.substring(numChars); + }; + var removeFromEnd = function (str, numChars) { + return str.substring(0, str.length - numChars); + }; + var $_3qinixwje5o2pwr = { + addToStart: addToStart, + addToEnd: addToEnd, + removeFromStart: removeFromStart, + removeFromEnd: removeFromEnd + }; + + var first = function (str, count) { + return str.substr(0, count); + }; + var last$2 = function (str, count) { + return str.substr(str.length - count, str.length); + }; + var head$1 = function (str) { + return str === '' ? Option.none() : Option.some(str.substr(0, 1)); + }; + var tail = function (str) { + return str === '' ? Option.none() : Option.some(str.substring(1)); + }; + var $_7ingkmxje5o2pws = { + first: first, + last: last$2, + head: head$1, + tail: tail + }; + + var checkRange = function (str, substr, start) { + if (substr === '') + return true; + if (str.length < substr.length) + return false; + var x = str.substr(start, start + substr.length); + return x === substr; + }; + var supplant = function (str, obj) { + var isStringOrNumber = function (a) { + var t = typeof a; + return t === 'string' || t === 'number'; + }; + return str.replace(/\${([^{}]*)}/g, function (a, b) { + var value = obj[b]; + return isStringOrNumber(value) ? value : a; + }); + }; + var removeLeading = function (str, prefix) { + return startsWith(str, prefix) ? $_3qinixwje5o2pwr.removeFromStart(str, prefix.length) : str; + }; + var removeTrailing = function (str, prefix) { + return endsWith(str, prefix) ? $_3qinixwje5o2pwr.removeFromEnd(str, prefix.length) : str; + }; + var ensureLeading = function (str, prefix) { + return startsWith(str, prefix) ? str : $_3qinixwje5o2pwr.addToStart(str, prefix); + }; + var ensureTrailing = function (str, prefix) { + return endsWith(str, prefix) ? str : $_3qinixwje5o2pwr.addToEnd(str, prefix); + }; + var contains$2 = function (str, substr) { + return str.indexOf(substr) !== -1; + }; + var capitalize = function (str) { + return $_7ingkmxje5o2pws.head(str).bind(function (head) { + return $_7ingkmxje5o2pws.tail(str).map(function (tail) { + return head.toUpperCase() + tail; + }); + }).getOr(str); + }; + var startsWith = function (str, prefix) { + return checkRange(str, prefix, 0); + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + var trim$2 = function (str) { + return str.replace(/^\s+|\s+$/g, ''); + }; + var lTrim = function (str) { + return str.replace(/^\s+/g, ''); + }; + var rTrim = function (str) { + return str.replace(/\s+$/g, ''); + }; + var $_6dh61xvje5o2pwo = { + supplant: supplant, + startsWith: startsWith, + removeLeading: removeLeading, + removeTrailing: removeTrailing, + ensureLeading: ensureLeading, + ensureTrailing: ensureTrailing, + endsWith: endsWith, + contains: contains$2, + trim: trim$2, + lTrim: lTrim, + rTrim: rTrim, + capitalize: capitalize + }; + + var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; + var checkContains = function (target) { + return function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, target); + }; + }; + var browsers = [ + { + name: 'Edge', + versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], + search: function (uastring) { + var monstrosity = $_6dh61xvje5o2pwo.contains(uastring, 'edge/') && $_6dh61xvje5o2pwo.contains(uastring, 'chrome') && $_6dh61xvje5o2pwo.contains(uastring, 'safari') && $_6dh61xvje5o2pwo.contains(uastring, 'applewebkit'); + return monstrosity; + } + }, + { + name: 'Chrome', + versionRegexes: [ + /.*?chrome\/([0-9]+)\.([0-9]+).*/, + normalVersionRegex + ], + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'chrome') && !$_6dh61xvje5o2pwo.contains(uastring, 'chromeframe'); + } + }, + { + name: 'IE', + versionRegexes: [ + /.*?msie\ ?([0-9]+)\.([0-9]+).*/, + /.*?rv:([0-9]+)\.([0-9]+).*/ + ], + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'msie') || $_6dh61xvje5o2pwo.contains(uastring, 'trident'); + } + }, + { + name: 'Opera', + versionRegexes: [ + normalVersionRegex, + /.*?opera\/([0-9]+)\.([0-9]+).*/ + ], + search: checkContains('opera') + }, + { + name: 'Firefox', + versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], + search: checkContains('firefox') + }, + { + name: 'Safari', + versionRegexes: [ + normalVersionRegex, + /.*?cpu os ([0-9]+)_([0-9]+).*/ + ], + search: function (uastring) { + return ($_6dh61xvje5o2pwo.contains(uastring, 'safari') || $_6dh61xvje5o2pwo.contains(uastring, 'mobile/')) && $_6dh61xvje5o2pwo.contains(uastring, 'applewebkit'); + } + } + ]; + var oses = [ + { + name: 'Windows', + search: checkContains('win'), + versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'iOS', + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'iphone') || $_6dh61xvje5o2pwo.contains(uastring, 'ipad'); + }, + versionRegexes: [ + /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, + /.*cpu os ([0-9]+)_([0-9]+).*/, + /.*cpu iphone os ([0-9]+)_([0-9]+).*/ + ] + }, + { + name: 'Android', + search: checkContains('android'), + versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'OSX', + search: checkContains('os x'), + versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] + }, + { + name: 'Linux', + search: checkContains('linux'), + versionRegexes: [] + }, + { + name: 'Solaris', + search: checkContains('sunos'), + versionRegexes: [] + }, + { + name: 'FreeBSD', + search: checkContains('freebsd'), + versionRegexes: [] + } + ]; + var $_5dts3kuje5o2pwh = { + browsers: $_enfhkv6je5o2ply.constant(browsers), + oses: $_enfhkv6je5o2ply.constant(oses) + }; + + var detect$2 = function (userAgent) { + var browsers = $_5dts3kuje5o2pwh.browsers(); + var oses = $_5dts3kuje5o2pwh.oses(); + var browser = $_4evi4wtje5o2pwb.detectBrowser(browsers, userAgent).fold($_3tg2x6pje5o2pvz.unknown, $_3tg2x6pje5o2pvz.nu); + var os = $_4evi4wtje5o2pwb.detectOs(oses, userAgent).fold($_w4a0lrje5o2pw4.unknown, $_w4a0lrje5o2pw4.nu); + var deviceType = DeviceType(os, browser, userAgent); + return { + browser: browser, + os: os, + deviceType: deviceType + }; + }; + var $_7glnnooje5o2pvy = { detect: detect$2 }; + + var detect$3 = $_g85o1xnje5o2pvw.cached(function () { + var userAgent = navigator.userAgent; + return $_7glnnooje5o2pvy.detect(userAgent); + }); + var $_2hq237mje5o2pvu = { detect: detect$3 }; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw 'HTML must have a single root node'; + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) + throw new Error('Node cannot be null or undefined'); + return { dom: $_enfhkv6je5o2ply.constant(node) }; + }; + var fromPoint = function (doc, x, y) { + return Option.from(doc.dom().elementFromPoint(x, y)).map(fromDom); + }; + var $_5tcb2dyje5o2pwu = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var $_62vbac10je5o2px2 = { + ATTRIBUTE: 2, + CDATA_SECTION: 4, + COMMENT: 8, + DOCUMENT: 9, + DOCUMENT_TYPE: 10, + DOCUMENT_FRAGMENT: 11, + ELEMENT: 1, + TEXT: 3, + PROCESSING_INSTRUCTION: 7, + ENTITY_REFERENCE: 5, + ENTITY: 6, + NOTATION: 12 + }; + + var name = function (element) { + var r = element.dom().nodeName; + return r.toLowerCase(); + }; + var type = function (element) { + return element.dom().nodeType; + }; + var value = function (element) { + return element.dom().nodeValue; + }; + var isType = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isComment = function (element) { + return type(element) === $_62vbac10je5o2px2.COMMENT || name(element) === '#comment'; + }; + var isElement = isType($_62vbac10je5o2px2.ELEMENT); + var isText = isType($_62vbac10je5o2px2.TEXT); + var isDocument = isType($_62vbac10je5o2px2.DOCUMENT); + var $_95wn8qzje5o2px0 = { + name: name, + type: type, + value: value, + isElement: isElement, + isText: isText, + isDocument: isDocument, + isComment: isComment + }; + + var typeOf = function (x) { + if (x === null) + return 'null'; + var t = typeof x; + if (t === 'object' && Array.prototype.isPrototypeOf(x)) + return 'array'; + if (t === 'object' && String.prototype.isPrototypeOf(x)) + return 'string'; + return t; + }; + var isType$1 = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var $_be3q8w12je5o2pxj = { + isString: isType$1('string'), + isObject: isType$1('object'), + isArray: isType$1('array'), + isNull: isType$1('null'), + isBoolean: isType$1('boolean'), + isUndefined: isType$1('undefined'), + isFunction: isType$1('function'), + isNumber: isType$1('number') + }; + + var keys = function () { + var fastKeys = Object.keys; + var slowKeys = function (o) { + var r = []; + for (var i in o) { + if (o.hasOwnProperty(i)) { + r.push(i); + } + } + return r; + }; + return fastKeys === undefined ? slowKeys : fastKeys; + }(); + var each$3 = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i, obj); + } + }; + var objectMap = function (obj, f) { + return tupleMap(obj, function (x, i, obj) { + return { + k: i, + v: f(x, i, obj) + }; + }); + }; + var tupleMap = function (obj, f) { + var r = {}; + each$3(obj, function (x, i) { + var tuple = f(x, i, obj); + r[tuple.k] = tuple.v; + }); + return r; + }; + var bifilter = function (obj, pred) { + var t = {}; + var f = {}; + each$3(obj, function (x, i) { + var branch = pred(x, i) ? t : f; + branch[i] = x; + }); + return { + t: t, + f: f + }; + }; + var mapToArray = function (obj, f) { + var r = []; + each$3(obj, function (value, name) { + r.push(f(value, name)); + }); + return r; + }; + var find$3 = function (obj, pred) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + if (pred(x, i, obj)) { + return Option.some(x); + } + } + return Option.none(); + }; + var values = function (obj) { + return mapToArray(obj, function (v) { + return v; + }); + }; + var size = function (obj) { + return values(obj).length; + }; + var $_8v44sy13je5o2pxm = { + bifilter: bifilter, + each: each$3, + map: objectMap, + mapToArray: mapToArray, + tupleMap: tupleMap, + find: find$3, + keys: keys, + values: values, + size: size + }; + + var rawSet = function (dom, key, value) { + if ($_be3q8w12je5o2pxj.isString(value) || $_be3q8w12je5o2pxj.isBoolean(value) || $_be3q8w12je5o2pxj.isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set = function (element, key, value) { + rawSet(element.dom(), key, value); + }; + var setAll = function (element, attrs) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(attrs, function (v, k) { + rawSet(dom, k, v); + }); + }; + var get = function (element, key) { + var v = element.dom().getAttribute(key); + return v === null ? undefined : v; + }; + var has = function (element, key) { + var dom = element.dom(); + return dom && dom.hasAttribute ? dom.hasAttribute(key) : false; + }; + var remove = function (element, key) { + element.dom().removeAttribute(key); + }; + var hasNone = function (element) { + var attrs = element.dom().attributes; + return attrs === undefined || attrs === null || attrs.length === 0; + }; + var clone = function (element) { + return $_bwcteb4je5o2pl4.foldl(element.dom().attributes, function (acc, attr) { + acc[attr.name] = attr.value; + return acc; + }, {}); + }; + var transferOne = function (source, destination, attr) { + if (has(source, attr) && !has(destination, attr)) + set(destination, attr, get(source, attr)); + }; + var transfer = function (source, destination, attrs) { + if (!$_95wn8qzje5o2px0.isElement(source) || !$_95wn8qzje5o2px0.isElement(destination)) + return; + $_bwcteb4je5o2pl4.each(attrs, function (attr) { + transferOne(source, destination, attr); + }); + }; + var $_3uo9pl14je5o2pxq = { + clone: clone, + set: set, + setAll: setAll, + get: get, + has: has, + remove: remove, + hasNone: hasNone, + transfer: transfer + }; + + var inBody = function (element) { + var dom = $_95wn8qzje5o2px0.isText(element) ? element.dom().parentNode : element.dom(); + return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom); + }; + var body = $_g85o1xnje5o2pvw.cached(function () { + return getBody($_5tcb2dyje5o2pwu.fromDom(document)); + }); + var getBody = function (doc) { + var body = doc.dom().body; + if (body === null || body === undefined) + throw 'Body is not available yet'; + return $_5tcb2dyje5o2pwu.fromDom(body); + }; + var $_484buq15je5o2py8 = { + body: body, + getBody: getBody, + inBody: inBody + }; + + var isSupported = function (dom) { + return dom.style !== undefined; + }; + var $_g9o6j616je5o2pyb = { isSupported: isSupported }; + + var internalSet = function (dom, property, value) { + if (!$_be3q8w12je5o2pxj.isString(value)) { + console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); + throw new Error('CSS value must be a string: ' + value); + } + if ($_g9o6j616je5o2pyb.isSupported(dom)) + dom.style.setProperty(property, value); + }; + var internalRemove = function (dom, property) { + if ($_g9o6j616je5o2pyb.isSupported(dom)) + dom.style.removeProperty(property); + }; + var set$1 = function (element, property, value) { + var dom = element.dom(); + internalSet(dom, property, value); + }; + var setAll$1 = function (element, css) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(css, function (v, k) { + internalSet(dom, k, v); + }); + }; + var setOptions = function (element, css) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(css, function (v, k) { + v.fold(function () { + internalRemove(dom, k); + }, function (value) { + internalSet(dom, k, value); + }); + }); + }; + var get$1 = function (element, property) { + var dom = element.dom(); + var styles = window.getComputedStyle(dom); + var r = styles.getPropertyValue(property); + var v = r === '' && !$_484buq15je5o2py8.inBody(element) ? getUnsafeProperty(dom, property) : r; + return v === null ? undefined : v; + }; + var getUnsafeProperty = function (dom, property) { + return $_g9o6j616je5o2pyb.isSupported(dom) ? dom.style.getPropertyValue(property) : ''; + }; + var getRaw = function (element, property) { + var dom = element.dom(); + var raw = getUnsafeProperty(dom, property); + return Option.from(raw).filter(function (r) { + return r.length > 0; + }); + }; + var getAllRaw = function (element) { + var css = {}; + var dom = element.dom(); + if ($_g9o6j616je5o2pyb.isSupported(dom)) { + for (var i = 0; i < dom.style.length; i++) { + var ruleName = dom.style.item(i); + css[ruleName] = dom.style[ruleName]; + } + } + return css; + }; + var isValidValue = function (tag, property, value) { + var element = $_5tcb2dyje5o2pwu.fromTag(tag); + set$1(element, property, value); + var style = getRaw(element, property); + return style.isSome(); + }; + var remove$1 = function (element, property) { + var dom = element.dom(); + internalRemove(dom, property); + if ($_3uo9pl14je5o2pxq.has(element, 'style') && $_6dh61xvje5o2pwo.trim($_3uo9pl14je5o2pxq.get(element, 'style')) === '') { + $_3uo9pl14je5o2pxq.remove(element, 'style'); + } + }; + var preserve = function (element, f) { + var oldStyles = $_3uo9pl14je5o2pxq.get(element, 'style'); + var result = f(element); + var restore = oldStyles === undefined ? $_3uo9pl14je5o2pxq.remove : $_3uo9pl14je5o2pxq.set; + restore(element, 'style', oldStyles); + return result; + }; + var copy = function (source, target) { + var sourceDom = source.dom(); + var targetDom = target.dom(); + if ($_g9o6j616je5o2pyb.isSupported(sourceDom) && $_g9o6j616je5o2pyb.isSupported(targetDom)) { + targetDom.style.cssText = sourceDom.style.cssText; + } + }; + var reflow = function (e) { + return e.dom().offsetWidth; + }; + var transferOne$1 = function (source, destination, style) { + getRaw(source, style).each(function (value) { + if (getRaw(destination, style).isNone()) + set$1(destination, style, value); + }); + }; + var transfer$1 = function (source, destination, styles) { + if (!$_95wn8qzje5o2px0.isElement(source) || !$_95wn8qzje5o2px0.isElement(destination)) + return; + $_bwcteb4je5o2pl4.each(styles, function (style) { + transferOne$1(source, destination, style); + }); + }; + var $_1ioope11je5o2px4 = { + copy: copy, + set: set$1, + preserve: preserve, + setAll: setAll$1, + setOptions: setOptions, + remove: remove$1, + get: get$1, + getRaw: getRaw, + getAllRaw: getAllRaw, + isValidValue: isValidValue, + reflow: reflow, + transfer: transfer$1 + }; + + function Immutable () { + var fields = arguments; + return function () { + var values = new Array(arguments.length); + for (var i = 0; i < values.length; i++) + values[i] = arguments[i]; + if (fields.length !== values.length) + throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments'); + var struct = {}; + $_bwcteb4je5o2pl4.each(fields, function (name, i) { + struct[name] = $_enfhkv6je5o2ply.constant(values[i]); + }); + return struct; + }; + } + + var sort$1 = function (arr) { + return arr.slice(0).sort(); + }; + var reqMessage = function (required, keys) { + throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.'); + }; + var unsuppMessage = function (unsupported) { + throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', ')); + }; + var validateStrArr = function (label, array) { + if (!$_be3q8w12je5o2pxj.isArray(array)) + throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.'); + $_bwcteb4je5o2pl4.each(array, function (a) { + if (!$_be3q8w12je5o2pxj.isString(a)) + throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.'); + }); + }; + var invalidTypeMessage = function (incorrect, type) { + throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.'); + }; + var checkDupes = function (everything) { + var sorted = sort$1(everything); + var dupe = $_bwcteb4je5o2pl4.find(sorted, function (s, i) { + return i < sorted.length - 1 && s === sorted[i + 1]; + }); + dupe.each(function (d) { + throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].'); + }); + }; + var $_avjnh51bje5o2pyw = { + sort: sort$1, + reqMessage: reqMessage, + unsuppMessage: unsuppMessage, + validateStrArr: validateStrArr, + invalidTypeMessage: invalidTypeMessage, + checkDupes: checkDupes + }; + + function MixedBag (required, optional) { + var everything = required.concat(optional); + if (everything.length === 0) + throw new Error('You must specify at least one required or optional field.'); + $_avjnh51bje5o2pyw.validateStrArr('required', required); + $_avjnh51bje5o2pyw.validateStrArr('optional', optional); + $_avjnh51bje5o2pyw.checkDupes(everything); + return function (obj) { + var keys = $_8v44sy13je5o2pxm.keys(obj); + var allReqd = $_bwcteb4je5o2pl4.forall(required, function (req) { + return $_bwcteb4je5o2pl4.contains(keys, req); + }); + if (!allReqd) + $_avjnh51bje5o2pyw.reqMessage(required, keys); + var unsupported = $_bwcteb4je5o2pl4.filter(keys, function (key) { + return !$_bwcteb4je5o2pl4.contains(everything, key); + }); + if (unsupported.length > 0) + $_avjnh51bje5o2pyw.unsuppMessage(unsupported); + var r = {}; + $_bwcteb4je5o2pl4.each(required, function (req) { + r[req] = $_enfhkv6je5o2ply.constant(obj[req]); + }); + $_bwcteb4je5o2pl4.each(optional, function (opt) { + r[opt] = $_enfhkv6je5o2ply.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none()); + }); + return r; + }; + } + + var $_86drv18je5o2pyn = { + immutable: Immutable, + immutableBag: MixedBag + }; + + var toArray$1 = function (target, f) { + var r = []; + var recurse = function (e) { + r.push(e); + return f(e); + }; + var cur = f(target); + do { + cur = cur.bind(recurse); + } while (cur.isSome()); + return r; + }; + var $_zryvs1cje5o2pyz = { toArray: toArray$1 }; + + var node = function () { + var f = $_lmz5vbje5o2pp9.getOrDie('Node'); + return f; + }; + var compareDocumentPosition = function (a, b, match) { + return (a.compareDocumentPosition(b) & match) !== 0; + }; + var documentPositionPreceding = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING); + }; + var documentPositionContainedBy = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY); + }; + var $_3s8zkc1eje5o2pz7 = { + documentPositionPreceding: documentPositionPreceding, + documentPositionContainedBy: documentPositionContainedBy + }; + + var ELEMENT = $_62vbac10je5o2px2.ELEMENT; + var DOCUMENT = $_62vbac10je5o2px2.DOCUMENT; + var is$1 = function (element, selector) { + var elem = element.dom(); + if (elem.nodeType !== ELEMENT) + return false; + else if (elem.matches !== undefined) + return elem.matches(selector); + else if (elem.msMatchesSelector !== undefined) + return elem.msMatchesSelector(selector); + else if (elem.webkitMatchesSelector !== undefined) + return elem.webkitMatchesSelector(selector); + else if (elem.mozMatchesSelector !== undefined) + return elem.mozMatchesSelector(selector); + else + throw new Error('Browser lacks native selectors'); + }; + var bypassSelector = function (dom) { + return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0; + }; + var all = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? [] : $_bwcteb4je5o2pl4.map(base.querySelectorAll(selector), $_5tcb2dyje5o2pwu.fromDom); + }; + var one = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map($_5tcb2dyje5o2pwu.fromDom); + }; + var $_87zu5k1fje5o2pz9 = { + all: all, + is: is$1, + one: one + }; + + var eq = function (e1, e2) { + return e1.dom() === e2.dom(); + }; + var isEqualNode = function (e1, e2) { + return e1.dom().isEqualNode(e2.dom()); + }; + var member = function (element, elements) { + return $_bwcteb4je5o2pl4.exists(elements, $_enfhkv6je5o2ply.curry(eq, element)); + }; + var regularContains = function (e1, e2) { + var d1 = e1.dom(), d2 = e2.dom(); + return d1 === d2 ? false : d1.contains(d2); + }; + var ieContains = function (e1, e2) { + return $_3s8zkc1eje5o2pz7.documentPositionContainedBy(e1.dom(), e2.dom()); + }; + var browser = $_2hq237mje5o2pvu.detect().browser; + var contains$3 = browser.isIE() ? ieContains : regularContains; + var $_7oppmo1dje5o2pz1 = { + eq: eq, + isEqualNode: isEqualNode, + member: member, + contains: contains$3, + is: $_87zu5k1fje5o2pz9.is + }; + + var owner = function (element) { + return $_5tcb2dyje5o2pwu.fromDom(element.dom().ownerDocument); + }; + var documentElement = function (element) { + var doc = owner(element); + return $_5tcb2dyje5o2pwu.fromDom(doc.dom().documentElement); + }; + var defaultView = function (element) { + var el = element.dom(); + var defaultView = el.ownerDocument.defaultView; + return $_5tcb2dyje5o2pwu.fromDom(defaultView); + }; + var parent = function (element) { + var dom = element.dom(); + return Option.from(dom.parentNode).map($_5tcb2dyje5o2pwu.fromDom); + }; + var findIndex$2 = function (element) { + return parent(element).bind(function (p) { + var kin = children(p); + return $_bwcteb4je5o2pl4.findIndex(kin, function (elem) { + return $_7oppmo1dje5o2pz1.eq(element, elem); + }); + }); + }; + var parents = function (element, isRoot) { + var stop = $_be3q8w12je5o2pxj.isFunction(isRoot) ? isRoot : $_enfhkv6je5o2ply.constant(false); + var dom = element.dom(); + var ret = []; + while (dom.parentNode !== null && dom.parentNode !== undefined) { + var rawParent = dom.parentNode; + var parent = $_5tcb2dyje5o2pwu.fromDom(rawParent); + ret.push(parent); + if (stop(parent) === true) + break; + else + dom = rawParent; + } + return ret; + }; + var siblings = function (element) { + var filterSelf = function (elements) { + return $_bwcteb4je5o2pl4.filter(elements, function (x) { + return !$_7oppmo1dje5o2pz1.eq(element, x); + }); + }; + return parent(element).map(children).map(filterSelf).getOr([]); + }; + var offsetParent = function (element) { + var dom = element.dom(); + return Option.from(dom.offsetParent).map($_5tcb2dyje5o2pwu.fromDom); + }; + var prevSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.previousSibling).map($_5tcb2dyje5o2pwu.fromDom); + }; + var nextSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.nextSibling).map($_5tcb2dyje5o2pwu.fromDom); + }; + var prevSiblings = function (element) { + return $_bwcteb4je5o2pl4.reverse($_zryvs1cje5o2pyz.toArray(element, prevSibling)); + }; + var nextSiblings = function (element) { + return $_zryvs1cje5o2pyz.toArray(element, nextSibling); + }; + var children = function (element) { + var dom = element.dom(); + return $_bwcteb4je5o2pl4.map(dom.childNodes, $_5tcb2dyje5o2pwu.fromDom); + }; + var child = function (element, index) { + var children = element.dom().childNodes; + return Option.from(children[index]).map($_5tcb2dyje5o2pwu.fromDom); + }; + var firstChild = function (element) { + return child(element, 0); + }; + var lastChild = function (element) { + return child(element, element.dom().childNodes.length - 1); + }; + var childNodesCount = function (element) { + return element.dom().childNodes.length; + }; + var hasChildNodes = function (element) { + return element.dom().hasChildNodes(); + }; + var spot = $_86drv18je5o2pyn.immutable('element', 'offset'); + var leaf = function (element, offset) { + var cs = children(element); + return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset); + }; + var $_a6mttx17je5o2pyd = { + owner: owner, + defaultView: defaultView, + documentElement: documentElement, + parent: parent, + findIndex: findIndex$2, + parents: parents, + siblings: siblings, + prevSibling: prevSibling, + offsetParent: offsetParent, + prevSiblings: prevSiblings, + nextSibling: nextSibling, + nextSiblings: nextSiblings, + children: children, + child: child, + firstChild: firstChild, + lastChild: lastChild, + childNodesCount: childNodesCount, + hasChildNodes: hasChildNodes, + leaf: leaf + }; + + var browser$1 = $_2hq237mje5o2pvu.detect().browser; + var firstElement = function (nodes) { + return $_bwcteb4je5o2pl4.find(nodes, $_95wn8qzje5o2px0.isElement); + }; + var getTableCaptionDeltaY = function (elm) { + if (browser$1.isFirefox() && $_95wn8qzje5o2px0.name(elm) === 'table') { + return firstElement($_a6mttx17je5o2pyd.children(elm)).filter(function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'caption'; + }).bind(function (caption) { + return firstElement($_a6mttx17je5o2pyd.nextSiblings(caption)).map(function (body) { + var bodyTop = body.dom().offsetTop; + var captionTop = caption.dom().offsetTop; + var captionHeight = caption.dom().offsetHeight; + return bodyTop <= captionTop ? -captionHeight : 0; + }); + }).getOr(0); + } else { + return 0; + } + }; + var getPos = function (body, elm, rootElm) { + var x = 0, y = 0, offsetParent; + var doc = body.ownerDocument; + var pos; + rootElm = rootElm ? rootElm : body; + if (elm) { + if (rootElm === body && elm.getBoundingClientRect && $_1ioope11je5o2px4.get($_5tcb2dyje5o2pwu.fromDom(body), 'position') === 'static') { + pos = elm.getBoundingClientRect(); + x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft; + y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop; + return { + x: x, + y: y + }; + } + offsetParent = elm; + while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) { + x += offsetParent.offsetLeft || 0; + y += offsetParent.offsetTop || 0; + offsetParent = offsetParent.offsetParent; + } + offsetParent = elm.parentNode; + while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) { + x -= offsetParent.scrollLeft || 0; + y -= offsetParent.scrollTop || 0; + offsetParent = offsetParent.parentNode; + } + y += getTableCaptionDeltaY($_5tcb2dyje5o2pwu.fromDom(elm)); + } + return { + x: x, + y: y + }; + }; + var $_5uqvv2lje5o2pvj = { getPos: getPos }; + + var nu$3 = function (baseFn) { + var data = Option.none(); + var callbacks = []; + var map = function (f) { + return nu$3(function (nCallback) { + get(function (data) { + nCallback(f(data)); + }); + }); + }; + var get = function (nCallback) { + if (isReady()) + call(nCallback); + else + callbacks.push(nCallback); + }; + var set = function (x) { + data = Option.some(x); + run(callbacks); + callbacks = []; + }; + var isReady = function () { + return data.isSome(); + }; + var run = function (cbs) { + $_bwcteb4je5o2pl4.each(cbs, call); + }; + var call = function (cb) { + data.each(function (x) { + setTimeout(function () { + cb(x); + }, 0); + }); + }; + baseFn(set); + return { + get: get, + map: map, + isReady: isReady + }; + }; + var pure$1 = function (a) { + return nu$3(function (callback) { + callback(a); + }); + }; + var LazyValue = { + nu: nu$3, + pure: pure$1 + }; + + var bounce = function (f) { + return function () { + var args = Array.prototype.slice.call(arguments); + var me = this; + setTimeout(function () { + f.apply(me, args); + }, 0); + }; + }; + var $_bz4se01jje5o2pzu = { bounce: bounce }; + + var nu$4 = function (baseFn) { + var get = function (callback) { + baseFn($_bz4se01jje5o2pzu.bounce(callback)); + }; + var map = function (fab) { + return nu$4(function (callback) { + get(function (a) { + var value = fab(a); + callback(value); + }); + }); + }; + var bind = function (aFutureB) { + return nu$4(function (callback) { + get(function (a) { + aFutureB(a).get(callback); + }); + }); + }; + var anonBind = function (futureB) { + return nu$4(function (callback) { + get(function (a) { + futureB.get(callback); + }); + }); + }; + var toLazy = function () { + return LazyValue.nu(get); + }; + return { + map: map, + bind: bind, + anonBind: anonBind, + toLazy: toLazy, + get: get + }; + }; + var pure$2 = function (a) { + return nu$4(function (callback) { + callback(a); + }); + }; + var Future = { + nu: nu$4, + pure: pure$2 + }; + + var par = function (asyncValues, nu) { + return nu(function (callback) { + var r = []; + var count = 0; + var cb = function (i) { + return function (value) { + r[i] = value; + count++; + if (count >= asyncValues.length) { + callback(r); + } + }; + }; + if (asyncValues.length === 0) { + callback([]); + } else { + $_bwcteb4je5o2pl4.each(asyncValues, function (asyncValue, i) { + asyncValue.get(cb(i)); + }); + } + }); + }; + var $_7idrm1lje5o2pzx = { par: par }; + + var par$1 = function (futures) { + return $_7idrm1lje5o2pzx.par(futures, Future.nu); + }; + var mapM = function (array, fn) { + var futures = $_bwcteb4je5o2pl4.map(array, fn); + return par$1(futures); + }; + var compose$1 = function (f, g) { + return function (a) { + return g(a).bind(f); + }; + }; + var $_bqrv8i1kje5o2pzv = { + par: par$1, + mapM: mapM, + compose: compose$1 + }; + + var value$1 = function (o) { + var is = function (v) { + return o === v; + }; + var or = function (opt) { + return value$1(o); + }; + var orThunk = function (f) { + return value$1(o); + }; + var map = function (f) { + return value$1(f(o)); + }; + var each = function (f) { + f(o); + }; + var bind = function (f) { + return f(o); + }; + var fold = function (_, onValue) { + return onValue(o); + }; + var exists = function (f) { + return f(o); + }; + var forall = function (f) { + return f(o); + }; + var toOption = function () { + return Option.some(o); + }; + return { + is: is, + isValue: $_enfhkv6je5o2ply.always, + isError: $_enfhkv6je5o2ply.never, + getOr: $_enfhkv6je5o2ply.constant(o), + getOrThunk: $_enfhkv6je5o2ply.constant(o), + getOrDie: $_enfhkv6je5o2ply.constant(o), + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOption: toOption + }; + }; + var error = function (message) { + var getOrThunk = function (f) { + return f(); + }; + var getOrDie = function () { + return $_enfhkv6je5o2ply.die(message)(); + }; + var or = function (opt) { + return opt; + }; + var orThunk = function (f) { + return f(); + }; + var map = function (f) { + return error(message); + }; + var bind = function (f) { + return error(message); + }; + var fold = function (onError, _) { + return onError(message); + }; + return { + is: $_enfhkv6je5o2ply.never, + isValue: $_enfhkv6je5o2ply.never, + isError: $_enfhkv6je5o2ply.always, + getOr: $_enfhkv6je5o2ply.identity, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: $_enfhkv6je5o2ply.noop, + bind: bind, + exists: $_enfhkv6je5o2ply.never, + forall: $_enfhkv6je5o2ply.always, + toOption: Option.none + }; + }; + var Result = { + value: value$1, + error: error + }; + + function StyleSheetLoader (document, settings) { + var idCount = 0; + var loadedStates = {}; + var maxLoadTime; + settings = settings || {}; + maxLoadTime = settings.maxLoadTime || 5000; + var appendToHead = function (node) { + document.getElementsByTagName('head')[0].appendChild(node); + }; + var load = function (url, loadedCallback, errorCallback) { + var link, style, startTime, state; + var passed = function () { + var callbacks = state.passed; + var i = callbacks.length; + while (i--) { + callbacks[i](); + } + state.status = 2; + state.passed = []; + state.failed = []; + }; + var failed = function () { + var callbacks = state.failed; + var i = callbacks.length; + while (i--) { + callbacks[i](); + } + state.status = 3; + state.passed = []; + state.failed = []; + }; + var isOldWebKit = function () { + var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/); + return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536); + }; + var wait = function (testCallback, waitCallback) { + if (!testCallback()) { + if (new Date().getTime() - startTime < maxLoadTime) { + $_db41wogje5o2ps3.setTimeout(waitCallback); + } else { + failed(); + } + } + }; + var waitForWebKitLinkLoaded = function () { + wait(function () { + var styleSheets = document.styleSheets; + var styleSheet, i = styleSheets.length, owner; + while (i--) { + styleSheet = styleSheets[i]; + owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement; + if (owner && owner.id === link.id) { + passed(); + return true; + } + } + }, waitForWebKitLinkLoaded); + }; + var waitForGeckoLinkLoaded = function () { + wait(function () { + try { + var cssRules = style.sheet.cssRules; + passed(); + return !!cssRules; + } catch (ex) { + } + }, waitForGeckoLinkLoaded); + }; + url = $_a5gegtjje5o2pum._addCacheSuffix(url); + if (!loadedStates[url]) { + state = { + passed: [], + failed: [] + }; + loadedStates[url] = state; + } else { + state = loadedStates[url]; + } + if (loadedCallback) { + state.passed.push(loadedCallback); + } + if (errorCallback) { + state.failed.push(errorCallback); + } + if (state.status === 1) { + return; + } + if (state.status === 2) { + passed(); + return; + } + if (state.status === 3) { + failed(); + return; + } + state.status = 1; + link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.id = 'u' + idCount++; + link.async = false; + link.defer = false; + startTime = new Date().getTime(); + if ('onload' in link && !isOldWebKit()) { + link.onload = waitForWebKitLinkLoaded; + link.onerror = failed; + } else { + if (navigator.userAgent.indexOf('Firefox') > 0) { + style = document.createElement('style'); + style.textContent = '@import "' + url + '"'; + waitForGeckoLinkLoaded(); + appendToHead(style); + return; + } + waitForWebKitLinkLoaded(); + } + appendToHead(link); + link.href = url; + }; + var loadF = function (url) { + return Future.nu(function (resolve) { + load(url, $_enfhkv6je5o2ply.compose(resolve, $_enfhkv6je5o2ply.constant(Result.value(url))), $_enfhkv6je5o2ply.compose(resolve, $_enfhkv6je5o2ply.constant(Result.error(url)))); + }); + }; + var unbox = function (result) { + return result.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var loadAll = function (urls, success, failure) { + $_bqrv8i1kje5o2pzv.par($_bwcteb4je5o2pl4.map(urls, loadF)).get(function (result) { + var parts = $_bwcteb4je5o2pl4.partition(result, function (r) { + return r.isValue(); + }); + if (parts.fail.length > 0) { + failure(parts.fail.map(unbox)); + } else { + success(parts.pass.map(unbox)); + } + }); + }; + return { + load: load, + loadAll: loadAll + }; + } + + function TreeWalker (startNode, rootNode) { + var node = startNode; + var findSibling = function (node, startName, siblingName, shallow) { + var sibling, parent; + if (node) { + if (!shallow && node[startName]) { + return node[startName]; + } + if (node !== rootNode) { + sibling = node[siblingName]; + if (sibling) { + return sibling; + } + for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) { + sibling = parent[siblingName]; + if (sibling) { + return sibling; + } + } + } + } + }; + var findPreviousNode = function (node, startName, siblingName, shallow) { + var sibling, parent, child; + if (node) { + sibling = node[siblingName]; + if (rootNode && sibling === rootNode) { + return; + } + if (sibling) { + if (!shallow) { + for (child = sibling[startName]; child; child = child[startName]) { + if (!child[startName]) { + return child; + } + } + } + return sibling; + } + parent = node.parentNode; + if (parent && parent !== rootNode) { + return parent; + } + } + }; + this.current = function () { + return node; + }; + this.next = function (shallow) { + node = findSibling(node, 'firstChild', 'nextSibling', shallow); + return node; + }; + this.prev = function (shallow) { + node = findSibling(node, 'lastChild', 'previousSibling', shallow); + return node; + }; + this.prev2 = function (shallow) { + node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow); + return node; + }; + } + + var blocks = [ + 'article', + 'aside', + 'details', + 'div', + 'dt', + 'figcaption', + 'footer', + 'form', + 'fieldset', + 'header', + 'hgroup', + 'html', + 'main', + 'nav', + 'section', + 'summary', + 'body', + 'p', + 'dl', + 'multicol', + 'dd', + 'figure', + 'address', + 'center', + 'blockquote', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'listing', + 'xmp', + 'pre', + 'plaintext', + 'menu', + 'dir', + 'ul', + 'ol', + 'li', + 'hr', + 'table', + 'tbody', + 'thead', + 'tfoot', + 'th', + 'tr', + 'td', + 'caption' + ]; + var voids = [ + 'area', + 'base', + 'basefont', + 'br', + 'col', + 'frame', + 'hr', + 'img', + 'input', + 'isindex', + 'link', + 'meta', + 'param', + 'embed', + 'source', + 'wbr', + 'track' + ]; + var tableCells = [ + 'td', + 'th' + ]; + var tableSections = [ + 'thead', + 'tbody', + 'tfoot' + ]; + var textBlocks = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'div', + 'address', + 'pre', + 'form', + 'blockquote', + 'center', + 'dir', + 'fieldset', + 'header', + 'footer', + 'article', + 'section', + 'hgroup', + 'aside', + 'nav', + 'figure' + ]; + var headings = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6' + ]; + var listItems = [ + 'li', + 'dd', + 'dt' + ]; + var lists = [ + 'ul', + 'ol', + 'dl' + ]; + var lazyLookup = function (items) { + var lookup; + return function (node) { + lookup = lookup ? lookup : $_bwcteb4je5o2pl4.mapToObject(items, $_enfhkv6je5o2ply.constant(true)); + return lookup.hasOwnProperty($_95wn8qzje5o2px0.name(node)); + }; + }; + var isHeading = lazyLookup(headings); + var isBlock = lazyLookup(blocks); + var isInline = function (node) { + return $_95wn8qzje5o2px0.isElement(node) && !isBlock(node); + }; + var isBr = function (node) { + return $_95wn8qzje5o2px0.isElement(node) && $_95wn8qzje5o2px0.name(node) === 'br'; + }; + var isTextBlock = lazyLookup(textBlocks); + var isList = lazyLookup(lists); + var isListItem = lazyLookup(listItems); + var isVoid = lazyLookup(voids); + var isTableSection = lazyLookup(tableSections); + var isTableCell = lazyLookup(tableCells); + + var isNodeType = function (type) { + return function (node) { + return !!node && node.nodeType === type; + }; + }; + var isElement$1 = isNodeType(1); + var matchNodeNames = function (names) { + var items = names.toLowerCase().split(' '); + return function (node) { + var i, name; + if (node && node.nodeType) { + name = node.nodeName.toLowerCase(); + for (i = 0; i < items.length; i++) { + if (name === items[i]) { + return true; + } + } + } + return false; + }; + }; + var matchStyleValues = function (name, values) { + var items = values.toLowerCase().split(' '); + return function (node) { + var i, cssValue; + if (isElement$1(node)) { + for (i = 0; i < items.length; i++) { + cssValue = node.ownerDocument.defaultView.getComputedStyle(node, null).getPropertyValue(name); + if (cssValue === items[i]) { + return true; + } + } + } + return false; + }; + }; + var hasPropValue = function (propName, propValue) { + return function (node) { + return isElement$1(node) && node[propName] === propValue; + }; + }; + var hasAttribute = function (attrName, attrValue) { + return function (node) { + return isElement$1(node) && node.hasAttribute(attrName); + }; + }; + var hasAttributeValue = function (attrName, attrValue) { + return function (node) { + return isElement$1(node) && node.getAttribute(attrName) === attrValue; + }; + }; + var isBogus = function (node) { + return isElement$1(node) && node.hasAttribute('data-mce-bogus'); + }; + var isBogusAll = function (node) { + return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all'; + }; + var isTable = function (node) { + return isElement$1(node) && node.tagName === 'TABLE'; + }; + var hasContentEditableState = function (value) { + return function (node) { + if (isElement$1(node)) { + if (node.contentEditable === value) { + return true; + } + if (node.getAttribute('data-mce-contenteditable') === value) { + return true; + } + } + return false; + }; + }; + var isText$1 = isNodeType(3); + var isComment$1 = isNodeType(8); + var isDocument$1 = isNodeType(9); + var isBr$1 = matchNodeNames('br'); + var isContentEditableTrue = hasContentEditableState('true'); + var isContentEditableFalse = hasContentEditableState('false'); + var $_9owqcy1qje5o2q0e = { + isText: isText$1, + isElement: isElement$1, + isComment: isComment$1, + isDocument: isDocument$1, + isBr: isBr$1, + isContentEditableTrue: isContentEditableTrue, + isContentEditableFalse: isContentEditableFalse, + matchNodeNames: matchNodeNames, + hasPropValue: hasPropValue, + hasAttribute: hasAttribute, + hasAttributeValue: hasAttributeValue, + matchStyleValues: matchStyleValues, + isBogus: isBogus, + isBogusAll: isBogusAll, + isTable: isTable + }; + + var surroundedBySpans = function (node) { + var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN'; + var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN'; + return previousIsSpan && nextIsSpan; + }; + var isBookmarkNode = function (node) { + return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark'; + }; + var trimNode = function (dom, node) { + var i, children = node.childNodes; + if ($_9owqcy1qje5o2q0e.isElement(node) && isBookmarkNode(node)) { + return; + } + for (i = children.length - 1; i >= 0; i--) { + trimNode(dom, children[i]); + } + if ($_9owqcy1qje5o2q0e.isDocument(node) === false) { + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + var trimmedLength = $_a5gegtjje5o2pum.trim(node.nodeValue).length; + if (dom.isBlock(node.parentNode) || trimmedLength > 0) { + return; + } + if (trimmedLength === 0 && surroundedBySpans(node)) { + return; + } + } else if ($_9owqcy1qje5o2q0e.isElement(node)) { + children = node.childNodes; + if (children.length === 1 && isBookmarkNode(children[0])) { + node.parentNode.insertBefore(children[0], node); + } + if (children.length || isVoid($_5tcb2dyje5o2pwu.fromDom(node))) { + return; + } + } + dom.remove(node); + } + return node; + }; + var $_cfe5l31oje5o2q05 = { trimNode: trimNode }; + + var makeMap$1 = $_a5gegtjje5o2pum.makeMap; + var namedEntities; + var baseEntities; + var reverseEntities; + var attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var rawCharsRegExp = /[<>&\"\']/g; + var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi; + var asciiMap = { + 128: '\u20AC', + 130: '\u201A', + 131: '\u0192', + 132: '\u201E', + 133: '\u2026', + 134: '\u2020', + 135: '\u2021', + 136: '\u02c6', + 137: '\u2030', + 138: '\u0160', + 139: '\u2039', + 140: '\u0152', + 142: '\u017d', + 145: '\u2018', + 146: '\u2019', + 147: '\u201C', + 148: '\u201D', + 149: '\u2022', + 150: '\u2013', + 151: '\u2014', + 152: '\u02DC', + 153: '\u2122', + 154: '\u0161', + 155: '\u203A', + 156: '\u0153', + 158: '\u017e', + 159: '\u0178' + }; + baseEntities = { + '"': '"', + '\'': ''', + '<': '<', + '>': '>', + '&': '&', + '`': '`' + }; + reverseEntities = { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + ''': '\'' + }; + var nativeDecode = function (text) { + var elm; + elm = $_5tcb2dyje5o2pwu.fromTag('div').dom(); + elm.innerHTML = text; + return elm.textContent || elm.innerText || text; + }; + var buildEntitiesLookup = function (items, radix) { + var i, chr, entity; + var lookup = {}; + if (items) { + items = items.split(','); + radix = radix || 10; + for (i = 0; i < items.length; i += 2) { + chr = String.fromCharCode(parseInt(items[i], radix)); + if (!baseEntities[chr]) { + entity = '&' + items[i + 1] + ';'; + lookup[chr] = entity; + lookup[entity] = chr; + } + } + return lookup; + } + }; + namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32); + var encodeRaw = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + return baseEntities[chr] || chr; + }); + }; + var encodeAllRaw = function (text) { + return ('' + text).replace(rawCharsRegExp, function (chr) { + return baseEntities[chr] || chr; + }); + }; + var encodeNumeric = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + if (chr.length > 1) { + return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';'; + } + return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';'; + }); + }; + var encodeNamed = function (text, attr, entities) { + entities = entities || namedEntities; + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + return baseEntities[chr] || entities[chr] || chr; + }); + }; + var getEncodeFunc = function (name, entities) { + var entitiesMap = buildEntitiesLookup(entities) || namedEntities; + var encodeNamedAndNumeric = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + if (baseEntities[chr] !== undefined) { + return baseEntities[chr]; + } + if (entitiesMap[chr] !== undefined) { + return entitiesMap[chr]; + } + if (chr.length > 1) { + return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';'; + } + return '&#' + chr.charCodeAt(0) + ';'; + }); + }; + var encodeCustomNamed = function (text, attr) { + return encodeNamed(text, attr, entitiesMap); + }; + var nameMap = makeMap$1(name.replace(/\+/g, ',')); + if (nameMap.named && nameMap.numeric) { + return encodeNamedAndNumeric; + } + if (nameMap.named) { + if (entities) { + return encodeCustomNamed; + } + return encodeNamed; + } + if (nameMap.numeric) { + return encodeNumeric; + } + return encodeRaw; + }; + var decode = function (text) { + return text.replace(entityRegExp, function (all, numeric) { + if (numeric) { + if (numeric.charAt(0).toLowerCase() === 'x') { + numeric = parseInt(numeric.substr(1), 16); + } else { + numeric = parseInt(numeric, 10); + } + if (numeric > 65535) { + numeric -= 65536; + return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023)); + } + return asciiMap[numeric] || String.fromCharCode(numeric); + } + return reverseEntities[all] || namedEntities[all] || nativeDecode(all); + }); + }; + var $_fzh4ld1rje5o2q0t = { + encodeRaw: encodeRaw, + encodeAllRaw: encodeAllRaw, + encodeNumeric: encodeNumeric, + encodeNamed: encodeNamed, + getEncodeFunc: getEncodeFunc, + decode: decode + }; + + var mapCache = {}; + var dummyObj = {}; + var makeMap$2 = $_a5gegtjje5o2pum.makeMap; + var each$4 = $_a5gegtjje5o2pum.each; + var extend$1 = $_a5gegtjje5o2pum.extend; + var explode$1 = $_a5gegtjje5o2pum.explode; + var inArray$1 = $_a5gegtjje5o2pum.inArray; + var split = function (items, delim) { + items = $_a5gegtjje5o2pum.trim(items); + return items ? items.split(delim || ' ') : []; + }; + var compileSchema = function (type) { + var schema = {}; + var globalAttributes, blockContent; + var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent; + var add = function (name, attributes, children) { + var ni, attributesOrder, element; + var arrayToMap = function (array, obj) { + var map = {}; + var i, l; + for (i = 0, l = array.length; i < l; i++) { + map[array[i]] = obj || {}; + } + return map; + }; + children = children || []; + attributes = attributes || ''; + if (typeof children === 'string') { + children = split(children); + } + name = split(name); + ni = name.length; + while (ni--) { + attributesOrder = split([ + globalAttributes, + attributes + ].join(' ')); + element = { + attributes: arrayToMap(attributesOrder), + attributesOrder: attributesOrder, + children: arrayToMap(children, dummyObj) + }; + schema[name[ni]] = element; + } + }; + var addAttrs = function (name, attributes) { + var ni, schemaItem, i, l; + name = split(name); + ni = name.length; + attributes = split(attributes); + while (ni--) { + schemaItem = schema[name[ni]]; + for (i = 0, l = attributes.length; i < l; i++) { + schemaItem.attributes[attributes[i]] = {}; + schemaItem.attributesOrder.push(attributes[i]); + } + } + }; + if (mapCache[type]) { + return mapCache[type]; + } + globalAttributes = 'id accesskey class dir lang style tabindex title role'; + blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul'; + phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment'; + if (type !== 'html4') { + globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate'; + blockContent += ' article aside details dialog figure header footer hgroup section nav'; + phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen'; + } + if (type !== 'html5-strict') { + globalAttributes += ' xml:lang'; + html4PhrasingContent = 'acronym applet basefont big font strike tt'; + phrasingContent = [ + phrasingContent, + html4PhrasingContent + ].join(' '); + each$4(split(html4PhrasingContent), function (name) { + add(name, '', phrasingContent); + }); + html4BlockContent = 'center dir isindex noframes'; + blockContent = [ + blockContent, + html4BlockContent + ].join(' '); + flowContent = [ + blockContent, + phrasingContent + ].join(' '); + each$4(split(html4BlockContent), function (name) { + add(name, '', flowContent); + }); + } + flowContent = flowContent || [ + blockContent, + phrasingContent + ].join(' '); + add('html', 'manifest', 'head body'); + add('head', '', 'base command link meta noscript script style title'); + add('title hr noscript br'); + add('base', 'href target'); + add('link', 'href rel media hreflang type sizes hreflang'); + add('meta', 'name http-equiv content charset'); + add('style', 'media type scoped'); + add('script', 'src async defer type charset'); + add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent); + add('address dt dd div caption', '', flowContent); + add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent); + add('blockquote', 'cite', flowContent); + add('ol', 'reversed start type', 'li'); + add('ul', '', 'li'); + add('li', 'value', flowContent); + add('dl', '', 'dt dd'); + add('a', 'href target rel media hreflang type', phrasingContent); + add('q', 'cite', phrasingContent); + add('ins del', 'cite datetime', flowContent); + add('img', 'src sizes srcset alt usemap ismap width height'); + add('iframe', 'src name width height', flowContent); + add('embed', 'src type width height'); + add('object', 'data type typemustmatch name usemap form width height', [ + flowContent, + 'param' + ].join(' ')); + add('param', 'name value'); + add('map', 'name', [ + flowContent, + 'area' + ].join(' ')); + add('area', 'alt coords shape href target rel media hreflang type'); + add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : '')); + add('colgroup', 'span', 'col'); + add('col', 'span'); + add('tbody thead tfoot', '', 'tr'); + add('tr', '', 'td th'); + add('td', 'colspan rowspan headers', flowContent); + add('th', 'colspan rowspan headers scope abbr', flowContent); + add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent); + add('fieldset', 'disabled form name', [ + flowContent, + 'legend' + ].join(' ')); + add('label', 'form for', phrasingContent); + add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width'); + add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent); + add('select', 'disabled form multiple name required size', 'option optgroup'); + add('optgroup', 'disabled label', 'option'); + add('option', 'disabled label selected value'); + add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap'); + add('menu', 'type label', [ + flowContent, + 'li' + ].join(' ')); + add('noscript', '', flowContent); + if (type !== 'html4') { + add('wbr'); + add('ruby', '', [ + phrasingContent, + 'rt rp' + ].join(' ')); + add('figcaption', '', flowContent); + add('mark rt rp summary bdi', '', phrasingContent); + add('canvas', 'width height', flowContent); + add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [ + flowContent, + 'track source' + ].join(' ')); + add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [ + flowContent, + 'track source' + ].join(' ')); + add('picture', '', 'img source'); + add('source', 'src srcset type media sizes'); + add('track', 'kind src srclang label default'); + add('datalist', '', [ + phrasingContent, + 'option' + ].join(' ')); + add('article section nav aside header footer', '', flowContent); + add('hgroup', '', 'h1 h2 h3 h4 h5 h6'); + add('figure', '', [ + flowContent, + 'figcaption' + ].join(' ')); + add('time', 'datetime', phrasingContent); + add('dialog', 'open', flowContent); + add('command', 'type label icon disabled checked radiogroup command'); + add('output', 'for form name', phrasingContent); + add('progress', 'value max', phrasingContent); + add('meter', 'value min max low high optimum', phrasingContent); + add('details', 'open', [ + flowContent, + 'summary' + ].join(' ')); + add('keygen', 'autofocus challenge disabled form keytype name'); + } + if (type !== 'html5-strict') { + addAttrs('script', 'language xml:space'); + addAttrs('style', 'xml:space'); + addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace'); + addAttrs('embed', 'align name hspace vspace'); + addAttrs('param', 'valuetype type'); + addAttrs('a', 'charset name rev shape coords'); + addAttrs('br', 'clear'); + addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace'); + addAttrs('img', 'name longdesc align border hspace vspace'); + addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align'); + addAttrs('font basefont', 'size color face'); + addAttrs('input', 'usemap align'); + addAttrs('select', 'onchange'); + addAttrs('textarea'); + addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align'); + addAttrs('ul', 'type compact'); + addAttrs('li', 'type'); + addAttrs('ol dl menu dir', 'compact'); + addAttrs('pre', 'width xml:space'); + addAttrs('hr', 'align noshade size width'); + addAttrs('isindex', 'prompt'); + addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor'); + addAttrs('col', 'width align char charoff valign'); + addAttrs('colgroup', 'width align char charoff valign'); + addAttrs('thead', 'align char charoff valign'); + addAttrs('tr', 'align char charoff valign bgcolor'); + addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height'); + addAttrs('form', 'accept'); + addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height'); + addAttrs('tfoot', 'align char charoff valign'); + addAttrs('tbody', 'align char charoff valign'); + addAttrs('area', 'nohref'); + addAttrs('body', 'background bgcolor text link vlink alink'); + } + if (type !== 'html4') { + addAttrs('input button select textarea', 'autofocus'); + addAttrs('input textarea', 'placeholder'); + addAttrs('a', 'download'); + addAttrs('link script img', 'crossorigin'); + addAttrs('iframe', 'sandbox seamless allowfullscreen'); + } + each$4(split('a form meter progress dfn'), function (name) { + if (schema[name]) { + delete schema[name].children[name]; + } + }); + delete schema.caption.children.table; + delete schema.script; + mapCache[type] = schema; + return schema; + }; + var compileElementMap = function (value, mode) { + var styles; + if (value) { + styles = {}; + if (typeof value === 'string') { + value = { '*': value }; + } + each$4(value, function (value, key) { + styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/); + }); + } + return styles; + }; + function Schema(settings) { + var elements = {}; + var children = {}; + var patternElements = []; + var validStyles; + var invalidStyles; + var schemaItems; + var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses; + var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap; + var customElementsMap = {}, specialElements = {}; + var createLookupTable = function (option, defaultValue, extendWith) { + var value = settings[option]; + if (!value) { + value = mapCache[option]; + if (!value) { + value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' ')); + value = extend$1(value, extendWith); + mapCache[option] = value; + } + } else { + value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/)); + } + return value; + }; + settings = settings || {}; + schemaItems = compileSchema(settings.schema); + if (settings.verify_html === false) { + settings.valid_elements = '*[*]'; + } + validStyles = compileElementMap(settings.valid_styles); + invalidStyles = compileElementMap(settings.invalid_styles, 'map'); + validClasses = compileElementMap(settings.valid_classes, 'map'); + whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code'); + selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr'); + shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track'); + boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls'); + nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap); + moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap); + textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside nav figure'); + blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption', textBlockElementsMap); + textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp'); + each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) { + specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi'); + }); + var patternToRegExp = function (str) { + return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$'); + }; + var addValidElements = function (validElements) { + var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value; + var elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/, attrRuleRegExp = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/; + if (validElements) { + validElements = split(validElements, ','); + if (elements['@']) { + globalAttributes = elements['@'].attributes; + globalAttributesOrder = elements['@'].attributesOrder; + } + for (ei = 0, el = validElements.length; ei < el; ei++) { + matches = elementRuleRegExp.exec(validElements[ei]); + if (matches) { + prefix = matches[1]; + elementName = matches[2]; + outputName = matches[3]; + attrData = matches[5]; + attributes = {}; + attributesOrder = []; + element = { + attributes: attributes, + attributesOrder: attributesOrder + }; + if (prefix === '#') { + element.paddEmpty = true; + } + if (prefix === '-') { + element.removeEmpty = true; + } + if (matches[4] === '!') { + element.removeEmptyAttrs = true; + } + if (globalAttributes) { + for (key in globalAttributes) { + attributes[key] = globalAttributes[key]; + } + attributesOrder.push.apply(attributesOrder, globalAttributesOrder); + } + if (attrData) { + attrData = split(attrData, '|'); + for (ai = 0, al = attrData.length; ai < al; ai++) { + matches = attrRuleRegExp.exec(attrData[ai]); + if (matches) { + attr = {}; + attrType = matches[1]; + attrName = matches[2].replace(/[\\:]:/g, ':'); + prefix = matches[3]; + value = matches[4]; + if (attrType === '!') { + element.attributesRequired = element.attributesRequired || []; + element.attributesRequired.push(attrName); + attr.required = true; + } + if (attrType === '-') { + delete attributes[attrName]; + attributesOrder.splice(inArray$1(attributesOrder, attrName), 1); + continue; + } + if (prefix) { + if (prefix === '=') { + element.attributesDefault = element.attributesDefault || []; + element.attributesDefault.push({ + name: attrName, + value: value + }); + attr.defaultValue = value; + } + if (prefix === ':') { + element.attributesForced = element.attributesForced || []; + element.attributesForced.push({ + name: attrName, + value: value + }); + attr.forcedValue = value; + } + if (prefix === '<') { + attr.validValues = makeMap$2(value, '?'); + } + } + if (hasPatternsRegExp.test(attrName)) { + element.attributePatterns = element.attributePatterns || []; + attr.pattern = patternToRegExp(attrName); + element.attributePatterns.push(attr); + } else { + if (!attributes[attrName]) { + attributesOrder.push(attrName); + } + attributes[attrName] = attr; + } + } + } + } + if (!globalAttributes && elementName === '@') { + globalAttributes = attributes; + globalAttributesOrder = attributesOrder; + } + if (outputName) { + element.outputName = elementName; + elements[outputName] = element; + } + if (hasPatternsRegExp.test(elementName)) { + element.pattern = patternToRegExp(elementName); + patternElements.push(element); + } else { + elements[elementName] = element; + } + } + } + } + }; + var setValidElements = function (validElements) { + elements = {}; + patternElements = []; + addValidElements(validElements); + each$4(schemaItems, function (element, name) { + children[name] = element.children; + }); + }; + var addCustomElements = function (customElements) { + var customElementRegExp = /^(~)?(.+)$/; + if (customElements) { + mapCache.text_block_elements = mapCache.block_elements = null; + each$4(split(customElements, ','), function (rule) { + var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2]; + children[name] = children[cloneName]; + customElementsMap[name] = cloneName; + if (!inline) { + blockElementsMap[name.toUpperCase()] = {}; + blockElementsMap[name] = {}; + } + if (!elements[name]) { + var customRule = elements[cloneName]; + customRule = extend$1({}, customRule); + delete customRule.removeEmptyAttrs; + delete customRule.removeEmpty; + elements[name] = customRule; + } + each$4(children, function (element, elmName) { + if (element[cloneName]) { + children[elmName] = element = extend$1({}, children[elmName]); + element[name] = element[cloneName]; + } + }); + }); + } + }; + var addValidChildren = function (validChildren) { + var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/; + mapCache[settings.schema] = null; + if (validChildren) { + each$4(split(validChildren, ','), function (rule) { + var matches = childRuleRegExp.exec(rule); + var parent, prefix; + if (matches) { + prefix = matches[1]; + if (prefix) { + parent = children[matches[2]]; + } else { + parent = children[matches[2]] = { '#comment': {} }; + } + parent = children[matches[2]]; + each$4(split(matches[3], '|'), function (child) { + if (prefix === '-') { + delete parent[child]; + } else { + parent[child] = {}; + } + }); + } + }); + } + }; + var getElementRule = function (name) { + var element = elements[name], i; + if (element) { + return element; + } + i = patternElements.length; + while (i--) { + element = patternElements[i]; + if (element.pattern.test(name)) { + return element; + } + } + }; + if (!settings.valid_elements) { + each$4(schemaItems, function (element, name) { + elements[name] = { + attributes: element.attributes, + attributesOrder: element.attributesOrder + }; + children[name] = element.children; + }); + if (settings.schema !== 'html5') { + each$4(split('strong/b em/i'), function (item) { + item = split(item, '/'); + elements[item[1]].outputName = item[0]; + }); + } + each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) { + if (elements[name]) { + elements[name].removeEmpty = true; + } + }); + each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) { + elements[name].paddEmpty = true; + }); + each$4(split('span'), function (name) { + elements[name].removeEmptyAttrs = true; + }); + } else { + setValidElements(settings.valid_elements); + } + addCustomElements(settings.custom_elements); + addValidChildren(settings.valid_children); + addValidElements(settings.extended_valid_elements); + addValidChildren('+ol[ul|ol],+ul[ul|ol]'); + each$4({ + dd: 'dl', + dt: 'dl', + li: 'ul ol', + td: 'tr', + th: 'tr', + tr: 'tbody thead tfoot', + tbody: 'table', + thead: 'table', + tfoot: 'table', + legend: 'fieldset', + area: 'map', + param: 'video audio object' + }, function (parents, item) { + if (elements[item]) { + elements[item].parentsRequired = split(parents); + } + }); + if (settings.invalid_elements) { + each$4(explode$1(settings.invalid_elements), function (item) { + if (elements[item]) { + delete elements[item]; + } + }); + } + if (!getElementRule('span')) { + addValidElements('span[!data-mce-type|*]'); + } + var getValidStyles = function () { + return validStyles; + }; + var getInvalidStyles = function () { + return invalidStyles; + }; + var getValidClasses = function () { + return validClasses; + }; + var getBoolAttrs = function () { + return boolAttrMap; + }; + var getBlockElements = function () { + return blockElementsMap; + }; + var getTextBlockElements = function () { + return textBlockElementsMap; + }; + var getTextInlineElements = function () { + return textInlineElementsMap; + }; + var getShortEndedElements = function () { + return shortEndedElementsMap; + }; + var getSelfClosingElements = function () { + return selfClosingElementsMap; + }; + var getNonEmptyElements = function () { + return nonEmptyElementsMap; + }; + var getMoveCaretBeforeOnEnterElements = function () { + return moveCaretBeforeOnEnterElementsMap; + }; + var getWhiteSpaceElements = function () { + return whiteSpaceElementsMap; + }; + var getSpecialElements = function () { + return specialElements; + }; + var isValidChild = function (name, child) { + var parent = children[name.toLowerCase()]; + return !!(parent && parent[child.toLowerCase()]); + }; + var isValid = function (name, attr) { + var attrPatterns, i; + var rule = getElementRule(name); + if (rule) { + if (attr) { + if (rule.attributes[attr]) { + return true; + } + attrPatterns = rule.attributePatterns; + if (attrPatterns) { + i = attrPatterns.length; + while (i--) { + if (attrPatterns[i].pattern.test(name)) { + return true; + } + } + } + } else { + return true; + } + } + return false; + }; + var getCustomElements = function () { + return customElementsMap; + }; + return { + children: children, + elements: elements, + getValidStyles: getValidStyles, + getValidClasses: getValidClasses, + getBlockElements: getBlockElements, + getInvalidStyles: getInvalidStyles, + getShortEndedElements: getShortEndedElements, + getTextBlockElements: getTextBlockElements, + getTextInlineElements: getTextInlineElements, + getBoolAttrs: getBoolAttrs, + getElementRule: getElementRule, + getSelfClosingElements: getSelfClosingElements, + getNonEmptyElements: getNonEmptyElements, + getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements, + getWhiteSpaceElements: getWhiteSpaceElements, + getSpecialElements: getSpecialElements, + isValidChild: isValidChild, + isValid: isValid, + getCustomElements: getCustomElements, + addValidElements: addValidElements, + setValidElements: setValidElements, + addCustomElements: addCustomElements, + addValidChildren: addValidChildren + }; + } + + var toHex = function (match, r, g, b) { + var hex = function (val) { + val = parseInt(val, 10).toString(16); + return val.length > 1 ? val : '0' + val; + }; + return '#' + hex(r) + hex(g) + hex(b); + }; + function Styles (settings, schema) { + var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi; + var urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi; + var styleRegExp = /\s*([^:]+):\s*([^;]+);?/g; + var trimRightRegExp = /\s+$/; + var i; + var encodingLookup = {}; + var encodingItems; + var validStyles; + var invalidStyles; + var invisibleChar = '\uFEFF'; + settings = settings || {}; + if (schema) { + validStyles = schema.getValidStyles(); + invalidStyles = schema.getInvalidStyles(); + } + encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' '); + for (i = 0; i < encodingItems.length; i++) { + encodingLookup[encodingItems[i]] = invisibleChar + i; + encodingLookup[invisibleChar + i] = encodingItems[i]; + } + return { + toHex: function (color) { + return color.replace(rgbRegExp, toHex); + }, + parse: function (css) { + var styles = {}; + var matches, name, value, isEncoded; + var urlConverter = settings.url_converter; + var urlConverterScope = settings.url_converter_scope || this; + var compress = function (prefix, suffix, noJoin) { + var top, right, bottom, left; + top = styles[prefix + '-top' + suffix]; + if (!top) { + return; + } + right = styles[prefix + '-right' + suffix]; + if (!right) { + return; + } + bottom = styles[prefix + '-bottom' + suffix]; + if (!bottom) { + return; + } + left = styles[prefix + '-left' + suffix]; + if (!left) { + return; + } + var box = [ + top, + right, + bottom, + left + ]; + i = box.length - 1; + while (i--) { + if (box[i] !== box[i + 1]) { + break; + } + } + if (i > -1 && noJoin) { + return; + } + styles[prefix + suffix] = i === -1 ? box[0] : box.join(' '); + delete styles[prefix + '-top' + suffix]; + delete styles[prefix + '-right' + suffix]; + delete styles[prefix + '-bottom' + suffix]; + delete styles[prefix + '-left' + suffix]; + }; + var canCompress = function (key) { + var value = styles[key], i; + if (!value) { + return; + } + value = value.split(' '); + i = value.length; + while (i--) { + if (value[i] !== value[0]) { + return false; + } + } + styles[key] = value[0]; + return true; + }; + var compress2 = function (target, a, b, c) { + if (!canCompress(a)) { + return; + } + if (!canCompress(b)) { + return; + } + if (!canCompress(c)) { + return; + } + styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c]; + delete styles[a]; + delete styles[b]; + delete styles[c]; + }; + var encode = function (str) { + isEncoded = true; + return encodingLookup[str]; + }; + var decode = function (str, keepSlashes) { + if (isEncoded) { + str = str.replace(/\uFEFF[0-9]/g, function (str) { + return encodingLookup[str]; + }); + } + if (!keepSlashes) { + str = str.replace(/\\([\'\";:])/g, '$1'); + } + return str; + }; + var decodeSingleHexSequence = function (escSeq) { + return String.fromCharCode(parseInt(escSeq.slice(1), 16)); + }; + var decodeHexSequences = function (value) { + return value.replace(/\\[0-9a-f]+/gi, decodeSingleHexSequence); + }; + var processUrl = function (match, url, url2, url3, str, str2) { + str = str || str2; + if (str) { + str = decode(str); + return '\'' + str.replace(/\'/g, '\\\'') + '\''; + } + url = decode(url || url2 || url3); + if (!settings.allow_script_urls) { + var scriptUrl = url.replace(/[\s\r\n]+/g, ''); + if (/(java|vb)script:/i.test(scriptUrl)) { + return ''; + } + if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) { + return ''; + } + } + if (urlConverter) { + url = urlConverter.call(urlConverterScope, url, 'style'); + } + return 'url(\'' + url.replace(/\'/g, '\\\'') + '\')'; + }; + if (css) { + css = css.replace(/[\u0000-\u001F]/g, ''); + css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function (str) { + return str.replace(/[;:]/g, encode); + }); + while (matches = styleRegExp.exec(css)) { + styleRegExp.lastIndex = matches.index + matches[0].length; + name = matches[1].replace(trimRightRegExp, '').toLowerCase(); + value = matches[2].replace(trimRightRegExp, ''); + if (name && value) { + name = decodeHexSequences(name); + value = decodeHexSequences(value); + if (name.indexOf(invisibleChar) !== -1 || name.indexOf('"') !== -1) { + continue; + } + if (!settings.allow_script_urls && (name === 'behavior' || /expression\s*\(|\/\*|\*\//.test(value))) { + continue; + } + if (name === 'font-weight' && value === '700') { + value = 'bold'; + } else if (name === 'color' || name === 'background-color') { + value = value.toLowerCase(); + } + value = value.replace(rgbRegExp, toHex); + value = value.replace(urlOrStrRegExp, processUrl); + styles[name] = isEncoded ? decode(value, true) : value; + } + } + compress('border', '', true); + compress('border', '-width'); + compress('border', '-color'); + compress('border', '-style'); + compress('padding', ''); + compress('margin', ''); + compress2('border', 'border-width', 'border-style', 'border-color'); + if (styles.border === 'medium none') { + delete styles.border; + } + if (styles['border-image'] === 'none') { + delete styles['border-image']; + } + } + return styles; + }, + serialize: function (styles, elementName) { + var css = '', name, value; + var serializeStyles = function (name) { + var styleList, i, l, value; + styleList = validStyles[name]; + if (styleList) { + for (i = 0, l = styleList.length; i < l; i++) { + name = styleList[i]; + value = styles[name]; + if (value) { + css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; + } + } + } + }; + var isValid = function (name, elementName) { + var styleMap; + styleMap = invalidStyles['*']; + if (styleMap && styleMap[name]) { + return false; + } + styleMap = invalidStyles[elementName]; + if (styleMap && styleMap[name]) { + return false; + } + return true; + }; + if (elementName && validStyles) { + serializeStyles('*'); + serializeStyles(elementName); + } else { + for (name in styles) { + value = styles[name]; + if (value && (!invalidStyles || isValid(name, elementName))) { + css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; + } + } + } + return css; + } + }; + } + + var each$5 = $_a5gegtjje5o2pum.each; + var is$2 = $_a5gegtjje5o2pum.is; + var grep$1 = $_a5gegtjje5o2pum.grep; + var isIE = $_9bd8pn9je5o2pp2.ie; + var simpleSelectorRe = /^([a-z0-9],?)+$/i; + var whiteSpaceRegExp$2 = /^[ \t\r\n]*$/; + var setupAttrHooks = function (domUtils, settings) { + var attrHooks = {}; + var keepValues = settings.keep_values; + var keepUrlHook; + keepUrlHook = { + set: function ($elm, value, name) { + if (settings.url_converter) { + value = settings.url_converter.call(settings.url_converter_scope || domUtils, value, name, $elm[0]); + } + $elm.attr('data-mce-' + name, value).attr(name, value); + }, + get: function ($elm, name) { + return $elm.attr('data-mce-' + name) || $elm.attr(name); + } + }; + attrHooks = { + style: { + set: function ($elm, value) { + if (value !== null && typeof value === 'object') { + $elm.css(value); + return; + } + if (keepValues) { + $elm.attr('data-mce-style', value); + } + $elm.attr('style', value); + }, + get: function ($elm) { + var value = $elm.attr('data-mce-style') || $elm.attr('style'); + value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName); + return value; + } + } + }; + if (keepValues) { + attrHooks.href = attrHooks.src = keepUrlHook; + } + return attrHooks; + }; + var updateInternalStyleAttr = function (domUtils, $elm) { + var value = $elm.attr('style'); + value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName); + if (!value) { + value = null; + } + $elm.attr('data-mce-style', value); + }; + var nodeIndex = function (node, normalized) { + var idx = 0, lastNodeType, nodeType; + if (node) { + for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) { + nodeType = node.nodeType; + if (normalized && nodeType === 3) { + if (nodeType === lastNodeType || !node.nodeValue.length) { + continue; + } + } + idx++; + lastNodeType = nodeType; + } + } + return idx; + }; + var DOMUtils = function (doc, settings) { + var self = this; + var blockElementsMap; + self.doc = doc; + self.win = window; + self.files = {}; + self.counter = 0; + self.stdMode = !isIE || doc.documentMode >= 8; + self.boxModel = !isIE || doc.compatMode === 'CSS1Compat' || self.stdMode; + self.styleSheetLoader = StyleSheetLoader(doc); + self.boundEvents = []; + self.settings = settings = settings || {}; + self.schema = settings.schema ? settings.schema : Schema({}); + self.styles = Styles({ + url_converter: settings.url_converter, + url_converter_scope: settings.url_converter_scope + }, settings.schema); + self.fixDoc(doc); + self.events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event; + self.attrHooks = setupAttrHooks(self, settings); + blockElementsMap = self.schema.getBlockElements(); + self.$ = DomQuery.overrideDefaults(function () { + return { + context: doc, + element: self.getRoot() + }; + }); + self.isBlock = function (node) { + if (!node) { + return false; + } + var type = node.nodeType; + if (type) { + return !!(type === 1 && blockElementsMap[node.nodeName]); + } + return !!blockElementsMap[node]; + }; + }; + DOMUtils.prototype = { + $$: function (elm) { + if (typeof elm === 'string') { + elm = this.get(elm); + } + return this.$(elm); + }, + root: null, + fixDoc: function (doc) { + }, + clone: function (node, deep) { + var self = this; + var clone, doc; + if (!isIE || node.nodeType !== 1 || deep) { + return node.cloneNode(deep); + } + doc = self.doc; + if (!deep) { + clone = doc.createElement(node.nodeName); + each$5(self.getAttribs(node), function (attr) { + self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName)); + }); + return clone; + } + return clone.firstChild; + }, + getRoot: function () { + var self = this; + return self.settings.root_element || self.doc.body; + }, + getViewPort: function (win) { + var doc, rootElm; + win = !win ? this.win : win; + doc = win.document; + rootElm = this.boxModel ? doc.documentElement : doc.body; + return { + x: win.pageXOffset || rootElm.scrollLeft, + y: win.pageYOffset || rootElm.scrollTop, + w: win.innerWidth || rootElm.clientWidth, + h: win.innerHeight || rootElm.clientHeight + }; + }, + getRect: function (elm) { + var self = this; + var pos, size; + elm = self.get(elm); + pos = self.getPos(elm); + size = self.getSize(elm); + return { + x: pos.x, + y: pos.y, + w: size.w, + h: size.h + }; + }, + getSize: function (elm) { + var self = this; + var w, h; + elm = self.get(elm); + w = self.getStyle(elm, 'width'); + h = self.getStyle(elm, 'height'); + if (w.indexOf('px') === -1) { + w = 0; + } + if (h.indexOf('px') === -1) { + h = 0; + } + return { + w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth, + h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight + }; + }, + getParent: function (node, selector, root) { + return this.getParents(node, selector, root, false); + }, + getParents: function (node, selector, root, collect) { + var self = this; + var selectorVal; + var result = []; + node = self.get(node); + collect = collect === undefined; + root = root || (self.getRoot().nodeName !== 'BODY' ? self.getRoot().parentNode : null); + if (is$2(selector, 'string')) { + selectorVal = selector; + if (selector === '*') { + selector = function (node) { + return node.nodeType === 1; + }; + } else { + selector = function (node) { + return self.is(node, selectorVal); + }; + } + } + while (node) { + if (node === root || !node.nodeType || node.nodeType === 9) { + break; + } + if (!selector || selector(node)) { + if (collect) { + result.push(node); + } else { + return node; + } + } + node = node.parentNode; + } + return collect ? result : null; + }, + get: function (elm) { + var name; + if (elm && this.doc && typeof elm === 'string') { + name = elm; + elm = this.doc.getElementById(elm); + if (elm && elm.id !== name) { + return this.doc.getElementsByName(name)[1]; + } + } + return elm; + }, + getNext: function (node, selector) { + return this._findSib(node, selector, 'nextSibling'); + }, + getPrev: function (node, selector) { + return this._findSib(node, selector, 'previousSibling'); + }, + select: function (selector, scope) { + var self = this; + return Sizzle(selector, self.get(scope) || self.settings.root_element || self.doc, []); + }, + is: function (elm, selector) { + var i; + if (!elm) { + return false; + } + if (elm.length === undefined) { + if (selector === '*') { + return elm.nodeType === 1; + } + if (simpleSelectorRe.test(selector)) { + selector = selector.toLowerCase().split(/,/); + elm = elm.nodeName.toLowerCase(); + for (i = selector.length - 1; i >= 0; i--) { + if (selector[i] === elm) { + return true; + } + } + return false; + } + } + if (elm.nodeType && elm.nodeType !== 1) { + return false; + } + var elms = elm.nodeType ? [elm] : elm; + return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0; + }, + add: function (parentElm, name, attrs, html, create) { + var self = this; + return this.run(parentElm, function (parentElm) { + var newElm; + newElm = is$2(name, 'string') ? self.doc.createElement(name) : name; + self.setAttribs(newElm, attrs); + if (html) { + if (html.nodeType) { + newElm.appendChild(html); + } else { + self.setHTML(newElm, html); + } + } + return !create ? parentElm.appendChild(newElm) : newElm; + }); + }, + create: function (name, attrs, html) { + return this.add(this.doc.createElement(name), name, attrs, html, 1); + }, + createHTML: function (name, attrs, html) { + var outHtml = '', key; + outHtml += '<' + name; + for (key in attrs) { + if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') { + outHtml += ' ' + key + '="' + this.encode(attrs[key]) + '"'; + } + } + if (typeof html !== 'undefined') { + return outHtml + '>' + html + '</' + name + '>'; + } + return outHtml + ' />'; + }, + createFragment: function (html) { + var frag, node; + var doc = this.doc; + var container; + container = doc.createElement('div'); + frag = doc.createDocumentFragment(); + if (html) { + container.innerHTML = html; + } + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }, + remove: function (node, keepChildren) { + node = this.$$(node); + if (keepChildren) { + node.each(function () { + var child; + while (child = this.firstChild) { + if (child.nodeType === 3 && child.data.length === 0) { + this.removeChild(child); + } else { + this.parentNode.insertBefore(child, this); + } + } + }).remove(); + } else { + node.remove(); + } + return node.length > 1 ? node.toArray() : node[0]; + }, + setStyle: function (elm, name, value) { + elm = this.$$(elm).css(name, value); + if (this.settings.update_styles) { + updateInternalStyleAttr(this, elm); + } + }, + getStyle: function (elm, name, computed) { + elm = this.$$(elm); + if (computed) { + return elm.css(name); + } + name = name.replace(/-(\D)/g, function (a, b) { + return b.toUpperCase(); + }); + if (name === 'float') { + name = $_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 12 ? 'styleFloat' : 'cssFloat'; + } + return elm[0] && elm[0].style ? elm[0].style[name] : undefined; + }, + setStyles: function (elm, styles) { + elm = this.$$(elm).css(styles); + if (this.settings.update_styles) { + updateInternalStyleAttr(this, elm); + } + }, + removeAllAttribs: function (e) { + return this.run(e, function (e) { + var i; + var attrs = e.attributes; + for (i = attrs.length - 1; i >= 0; i--) { + e.removeAttributeNode(attrs.item(i)); + } + }); + }, + setAttrib: function (elm, name, value) { + var self = this; + var originalValue, hook; + var settings = self.settings; + if (value === '') { + value = null; + } + elm = self.$$(elm); + originalValue = elm.attr(name); + if (!elm.length) { + return; + } + hook = self.attrHooks[name]; + if (hook && hook.set) { + hook.set(elm, value, name); + } else { + elm.attr(name, value); + } + if (originalValue !== value && settings.onSetAttrib) { + settings.onSetAttrib({ + attrElm: elm, + attrName: name, + attrValue: value + }); + } + }, + setAttribs: function (elm, attrs) { + var self = this; + self.$$(elm).each(function (i, node) { + each$5(attrs, function (value, name) { + self.setAttrib(node, name, value); + }); + }); + }, + getAttrib: function (elm, name, defaultVal) { + var self = this; + var hook, value; + elm = self.$$(elm); + if (elm.length) { + hook = self.attrHooks[name]; + if (hook && hook.get) { + value = hook.get(elm, name); + } else { + value = elm.attr(name); + } + } + if (typeof value === 'undefined') { + value = defaultVal || ''; + } + return value; + }, + getPos: function (elm, rootElm) { + return $_5uqvv2lje5o2pvj.getPos(this.doc.body, this.get(elm), rootElm); + }, + parseStyle: function (cssText) { + return this.styles.parse(cssText); + }, + serializeStyle: function (styles, name) { + return this.styles.serialize(styles, name); + }, + addStyle: function (cssText) { + var self = this; + var doc = self.doc; + var head, styleElm; + if (self !== DOMUtils.DOM && doc === document) { + var addedStyles = DOMUtils.DOM.addedStyles; + addedStyles = addedStyles || []; + if (addedStyles[cssText]) { + return; + } + addedStyles[cssText] = true; + DOMUtils.DOM.addedStyles = addedStyles; + } + styleElm = doc.getElementById('mceDefaultStyles'); + if (!styleElm) { + styleElm = doc.createElement('style'); + styleElm.id = 'mceDefaultStyles'; + styleElm.type = 'text/css'; + head = doc.getElementsByTagName('head')[0]; + if (head.firstChild) { + head.insertBefore(styleElm, head.firstChild); + } else { + head.appendChild(styleElm); + } + } + if (styleElm.styleSheet) { + styleElm.styleSheet.cssText += cssText; + } else { + styleElm.appendChild(doc.createTextNode(cssText)); + } + }, + loadCSS: function (url) { + var self = this; + var doc = self.doc; + var head; + if (self !== DOMUtils.DOM && doc === document) { + DOMUtils.DOM.loadCSS(url); + return; + } + if (!url) { + url = ''; + } + head = doc.getElementsByTagName('head')[0]; + each$5(url.split(','), function (url) { + var link; + url = $_a5gegtjje5o2pum._addCacheSuffix(url); + if (self.files[url]) { + return; + } + self.files[url] = true; + link = self.create('link', { + rel: 'stylesheet', + href: url + }); + if (isIE && doc.documentMode && doc.recalc) { + link.onload = function () { + if (doc.recalc) { + doc.recalc(); + } + link.onload = null; + }; + } + head.appendChild(link); + }); + }, + addClass: function (elm, cls) { + this.$$(elm).addClass(cls); + }, + removeClass: function (elm, cls) { + this.toggleClass(elm, cls, false); + }, + hasClass: function (elm, cls) { + return this.$$(elm).hasClass(cls); + }, + toggleClass: function (elm, cls, state) { + this.$$(elm).toggleClass(cls, state).each(function () { + if (this.className === '') { + DomQuery(this).attr('class', null); + } + }); + }, + show: function (elm) { + this.$$(elm).show(); + }, + hide: function (elm) { + this.$$(elm).hide(); + }, + isHidden: function (elm) { + return this.$$(elm).css('display') === 'none'; + }, + uniqueId: function (prefix) { + return (!prefix ? 'mce_' : prefix) + this.counter++; + }, + setHTML: function (elm, html) { + elm = this.$$(elm); + if (isIE) { + elm.each(function (i, target) { + if (target.canHaveHTML === false) { + return; + } + while (target.firstChild) { + target.removeChild(target.firstChild); + } + try { + target.innerHTML = '<br>' + html; + target.removeChild(target.firstChild); + } catch (ex) { + DomQuery('<div></div>').html('<br>' + html).contents().slice(1).appendTo(target); + } + return html; + }); + } else { + elm.html(html); + } + }, + getOuterHTML: function (elm) { + elm = this.get(elm); + return elm.nodeType === 1 && 'outerHTML' in elm ? elm.outerHTML : DomQuery('<div></div>').append(DomQuery(elm).clone()).html(); + }, + setOuterHTML: function (elm, html) { + var self = this; + self.$$(elm).each(function () { + try { + if ('outerHTML' in this) { + this.outerHTML = html; + return; + } + } catch (ex) { + } + self.remove(DomQuery(this).html(html), true); + }); + }, + decode: $_fzh4ld1rje5o2q0t.decode, + encode: $_fzh4ld1rje5o2q0t.encodeAllRaw, + insertAfter: function (node, referenceNode) { + referenceNode = this.get(referenceNode); + return this.run(node, function (node) { + var parent, nextSibling; + parent = referenceNode.parentNode; + nextSibling = referenceNode.nextSibling; + if (nextSibling) { + parent.insertBefore(node, nextSibling); + } else { + parent.appendChild(node); + } + return node; + }); + }, + replace: function (newElm, oldElm, keepChildren) { + var self = this; + return self.run(oldElm, function (oldElm) { + if (is$2(oldElm, 'array')) { + newElm = newElm.cloneNode(true); + } + if (keepChildren) { + each$5(grep$1(oldElm.childNodes), function (node) { + newElm.appendChild(node); + }); + } + return oldElm.parentNode.replaceChild(newElm, oldElm); + }); + }, + rename: function (elm, name) { + var self = this; + var newElm; + if (elm.nodeName !== name.toUpperCase()) { + newElm = self.create(name); + each$5(self.getAttribs(elm), function (attrNode) { + self.setAttrib(newElm, attrNode.nodeName, self.getAttrib(elm, attrNode.nodeName)); + }); + self.replace(newElm, elm, 1); + } + return newElm || elm; + }, + findCommonAncestor: function (a, b) { + var ps = a, pe; + while (ps) { + pe = b; + while (pe && ps !== pe) { + pe = pe.parentNode; + } + if (ps === pe) { + break; + } + ps = ps.parentNode; + } + if (!ps && a.ownerDocument) { + return a.ownerDocument.documentElement; + } + return ps; + }, + toHex: function (rgbVal) { + return this.styles.toHex($_a5gegtjje5o2pum.trim(rgbVal)); + }, + run: function (elm, func, scope) { + var self = this; + var result; + if (typeof elm === 'string') { + elm = self.get(elm); + } + if (!elm) { + return false; + } + scope = scope || this; + if (!elm.nodeType && (elm.length || elm.length === 0)) { + result = []; + each$5(elm, function (elm, i) { + if (elm) { + if (typeof elm === 'string') { + elm = self.get(elm); + } + result.push(func.call(scope, elm, i)); + } + }); + return result; + } + return func.call(scope, elm); + }, + getAttribs: function (elm) { + var attrs; + elm = this.get(elm); + if (!elm) { + return []; + } + if (isIE) { + attrs = []; + if (elm.nodeName === 'OBJECT') { + return elm.attributes; + } + if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) { + attrs.push({ + specified: 1, + nodeName: 'selected' + }); + } + var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi; + elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function (a) { + attrs.push({ + specified: 1, + nodeName: a + }); + }); + return attrs; + } + return elm.attributes; + }, + isEmpty: function (node, elements) { + var self = this; + var i, attributes, type, whitespace, walker, name, brCount = 0; + node = node.firstChild; + if (node) { + walker = new TreeWalker(node, node.parentNode); + elements = elements || (self.schema ? self.schema.getNonEmptyElements() : null); + whitespace = self.schema ? self.schema.getWhiteSpaceElements() : {}; + do { + type = node.nodeType; + if (type === 1) { + var bogusVal = node.getAttribute('data-mce-bogus'); + if (bogusVal) { + node = walker.next(bogusVal === 'all'); + continue; + } + name = node.nodeName.toLowerCase(); + if (elements && elements[name]) { + if (name === 'br') { + brCount++; + node = walker.next(); + continue; + } + return false; + } + attributes = self.getAttribs(node); + i = attributes.length; + while (i--) { + name = attributes[i].nodeName; + if (name === 'name' || name === 'data-mce-bookmark') { + return false; + } + } + } + if (type === 8) { + return false; + } + if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) { + return false; + } + if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) { + return false; + } + node = walker.next(); + } while (node); + } + return brCount <= 1; + }, + createRng: function () { + return this.doc.createRange(); + }, + nodeIndex: nodeIndex, + split: function (parentElm, splitElm, replacementElm) { + var self = this; + var r = self.createRng(), bef, aft, pa; + if (parentElm && splitElm) { + r.setStart(parentElm.parentNode, self.nodeIndex(parentElm)); + r.setEnd(splitElm.parentNode, self.nodeIndex(splitElm)); + bef = r.extractContents(); + r = self.createRng(); + r.setStart(splitElm.parentNode, self.nodeIndex(splitElm) + 1); + r.setEnd(parentElm.parentNode, self.nodeIndex(parentElm) + 1); + aft = r.extractContents(); + pa = parentElm.parentNode; + pa.insertBefore($_cfe5l31oje5o2q05.trimNode(self, bef), parentElm); + if (replacementElm) { + pa.insertBefore(replacementElm, parentElm); + } else { + pa.insertBefore(splitElm, parentElm); + } + pa.insertBefore($_cfe5l31oje5o2q05.trimNode(self, aft), parentElm); + self.remove(parentElm); + return replacementElm || splitElm; + } + }, + bind: function (target, name, func, scope) { + var self = this; + if ($_a5gegtjje5o2pum.isArray(target)) { + var i = target.length; + while (i--) { + target[i] = self.bind(target[i], name, func, scope); + } + return target; + } + if (self.settings.collect && (target === self.doc || target === self.win)) { + self.boundEvents.push([ + target, + name, + func, + scope + ]); + } + return self.events.bind(target, name, func, scope || self); + }, + unbind: function (target, name, func) { + var self = this; + var i; + if ($_a5gegtjje5o2pum.isArray(target)) { + i = target.length; + while (i--) { + target[i] = self.unbind(target[i], name, func); + } + return target; + } + if (self.boundEvents && (target === self.doc || target === self.win)) { + i = self.boundEvents.length; + while (i--) { + var item = self.boundEvents[i]; + if (target === item[0] && (!name || name === item[1]) && (!func || func === item[2])) { + this.events.unbind(item[0], item[1], item[2]); + } + } + } + return this.events.unbind(target, name, func); + }, + fire: function (target, name, evt) { + return this.events.fire(target, name, evt); + }, + getContentEditable: function (node) { + var contentEditable; + if (!node || node.nodeType !== 1) { + return null; + } + contentEditable = node.getAttribute('data-mce-contenteditable'); + if (contentEditable && contentEditable !== 'inherit') { + return contentEditable; + } + return node.contentEditable !== 'inherit' ? node.contentEditable : null; + }, + getContentEditableParent: function (node) { + var root = this.getRoot(); + var state = null; + for (; node && node !== root; node = node.parentNode) { + state = this.getContentEditable(node); + if (state !== null) { + break; + } + } + return state; + }, + destroy: function () { + var self = this; + if (self.boundEvents) { + var i = self.boundEvents.length; + while (i--) { + var item = self.boundEvents[i]; + this.events.unbind(item[0], item[1], item[2]); + } + self.boundEvents = null; + } + if (Sizzle.setDocument) { + Sizzle.setDocument(); + } + self.win = self.doc = self.root = self.events = self.frag = null; + }, + isChildOf: function (node, parent) { + while (node) { + if (parent === node) { + return true; + } + node = node.parentNode; + } + return false; + }, + dumpRng: function (r) { + return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset; + }, + _findSib: function (node, selector, name) { + var self = this; + var func = selector; + if (node) { + if (typeof func === 'string') { + func = function (node) { + return self.is(node, selector); + }; + } + for (node = node[name]; node; node = node[name]) { + if (func(node)) { + return node; + } + } + } + return null; + } + }; + DOMUtils.DOM = new DOMUtils(document); + DOMUtils.nodeIndex = nodeIndex; + + var DOM = DOMUtils.DOM; + var each$6 = $_a5gegtjje5o2pum.each; + var grep$2 = $_a5gegtjje5o2pum.grep; + var isFunction = function (f) { + return typeof f === 'function'; + }; + var ScriptLoader = function () { + var QUEUED = 0; + var LOADING = 1; + var LOADED = 2; + var FAILED = 3; + var states = {}; + var queue = []; + var scriptLoadedCallbacks = {}; + var queueLoadedCallbacks = []; + var loading = 0; + var loadScript = function (url, success, failure) { + var dom = DOM; + var elm, id; + var done = function () { + dom.remove(id); + if (elm) { + elm.onreadystatechange = elm.onload = elm = null; + } + success(); + }; + var error = function () { + if (isFunction(failure)) { + failure(); + } else { + if (typeof console !== 'undefined' && console.log) { + console.log('Failed to load script: ' + url); + } + } + }; + id = dom.uniqueId(); + elm = document.createElement('script'); + elm.id = id; + elm.type = 'text/javascript'; + elm.src = $_a5gegtjje5o2pum._addCacheSuffix(url); + if ('onreadystatechange' in elm) { + elm.onreadystatechange = function () { + if (/loaded|complete/.test(elm.readyState)) { + done(); + } + }; + } else { + elm.onload = done; + } + elm.onerror = error; + (document.getElementsByTagName('head')[0] || document.body).appendChild(elm); + }; + this.isDone = function (url) { + return states[url] === LOADED; + }; + this.markDone = function (url) { + states[url] = LOADED; + }; + this.add = this.load = function (url, success, scope, failure) { + var state = states[url]; + if (state === undefined) { + queue.push(url); + states[url] = QUEUED; + } + if (success) { + if (!scriptLoadedCallbacks[url]) { + scriptLoadedCallbacks[url] = []; + } + scriptLoadedCallbacks[url].push({ + success: success, + failure: failure, + scope: scope || this + }); + } + }; + this.remove = function (url) { + delete states[url]; + delete scriptLoadedCallbacks[url]; + }; + this.loadQueue = function (success, scope, failure) { + this.loadScripts(queue, success, scope, failure); + }; + this.loadScripts = function (scripts, success, scope, failure) { + var loadScripts; + var failures = []; + var execCallbacks = function (name, url) { + each$6(scriptLoadedCallbacks[url], function (callback) { + if (isFunction(callback[name])) { + callback[name].call(callback.scope); + } + }); + scriptLoadedCallbacks[url] = undefined; + }; + queueLoadedCallbacks.push({ + success: success, + failure: failure, + scope: scope || this + }); + loadScripts = function () { + var loadingScripts = grep$2(scripts); + scripts.length = 0; + each$6(loadingScripts, function (url) { + if (states[url] === LOADED) { + execCallbacks('success', url); + return; + } + if (states[url] === FAILED) { + execCallbacks('failure', url); + return; + } + if (states[url] !== LOADING) { + states[url] = LOADING; + loading++; + loadScript(url, function () { + states[url] = LOADED; + loading--; + execCallbacks('success', url); + loadScripts(); + }, function () { + states[url] = FAILED; + loading--; + failures.push(url); + execCallbacks('failure', url); + loadScripts(); + }); + } + }); + if (!loading) { + var notifyCallbacks = queueLoadedCallbacks.slice(0); + queueLoadedCallbacks.length = 0; + each$6(notifyCallbacks, function (callback) { + if (failures.length === 0) { + if (isFunction(callback.success)) { + callback.success.call(callback.scope); + } + } else { + if (isFunction(callback.failure)) { + callback.failure.call(callback.scope, failures); + } + } + }); + } + }; + loadScripts(); + }; + }; + ScriptLoader.ScriptLoader = new ScriptLoader(); + + var each$7 = $_a5gegtjje5o2pum.each; + var AddOnManager = function () { + var self = this; + self.items = []; + self.urls = {}; + self.lookup = {}; + self._listeners = []; + }; + AddOnManager.prototype = { + get: function (name) { + if (this.lookup[name]) { + return this.lookup[name].instance; + } + return undefined; + }, + dependencies: function (name) { + var result; + if (this.lookup[name]) { + result = this.lookup[name].dependencies; + } + return result || []; + }, + requireLangPack: function (name, languages) { + var language = AddOnManager.language; + if (language && AddOnManager.languageLoad !== false) { + if (languages) { + languages = ',' + languages + ','; + if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) { + language = language.substr(0, 2); + } else if (languages.indexOf(',' + language + ',') === -1) { + return; + } + } + ScriptLoader.ScriptLoader.add(this.urls[name] + '/langs/' + language + '.js'); + } + }, + add: function (id, addOn, dependencies) { + this.items.push(addOn); + this.lookup[id] = { + instance: addOn, + dependencies: dependencies + }; + var result = $_bwcteb4je5o2pl4.partition(this._listeners, function (listener) { + return listener.name === id; + }); + this._listeners = result.fail; + each$7(result.pass, function (listener) { + listener.callback(); + }); + return addOn; + }, + remove: function (name) { + delete this.urls[name]; + delete this.lookup[name]; + }, + createUrl: function (baseUrl, dep) { + if (typeof dep === 'object') { + return dep; + } + return { + prefix: baseUrl.prefix, + resource: dep, + suffix: baseUrl.suffix + }; + }, + addComponents: function (pluginName, scripts) { + var pluginUrl = this.urls[pluginName]; + each$7(scripts, function (script) { + ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script); + }); + }, + load: function (name, addOnUrl, success, scope, failure) { + var self = this; + var url = addOnUrl; + var loadDependencies = function () { + var dependencies = self.dependencies(name); + each$7(dependencies, function (dep) { + var newUrl = self.createUrl(addOnUrl, dep); + self.load(newUrl.resource, newUrl, undefined, undefined); + }); + if (success) { + if (scope) { + success.call(scope); + } else { + success.call(ScriptLoader); + } + } + }; + if (self.urls[name]) { + return; + } + if (typeof addOnUrl === 'object') { + url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix; + } + if (url.indexOf('/') !== 0 && url.indexOf('://') === -1) { + url = AddOnManager.baseURL + '/' + url; + } + self.urls[name] = url.substring(0, url.lastIndexOf('/')); + if (self.lookup[name]) { + loadDependencies(); + } else { + ScriptLoader.ScriptLoader.add(url, loadDependencies, scope, failure); + } + }, + waitFor: function (name, callback) { + if (this.lookup.hasOwnProperty(name)) { + callback(); + } else { + this._listeners.push({ + name: name, + callback: callback + }); + } + } + }; + AddOnManager.PluginManager = new AddOnManager(); + AddOnManager.ThemeManager = new AddOnManager(); + + var ZWSP = '\uFEFF'; + var isZwsp = function (chr) { + return chr === ZWSP; + }; + var trim$3 = function (text) { + return text.replace(new RegExp(ZWSP, 'g'), ''); + }; + var $_4md31c21je5o2q5f = { + isZwsp: isZwsp, + ZWSP: ZWSP, + trim: trim$3 + }; + + var isElement$2 = $_9owqcy1qje5o2q0e.isElement; + var isText$2 = $_9owqcy1qje5o2q0e.isText; + var isCaretContainerBlock = function (node) { + if (isText$2(node)) { + node = node.parentNode; + } + return isElement$2(node) && node.hasAttribute('data-mce-caret'); + }; + var isCaretContainerInline = function (node) { + return isText$2(node) && $_4md31c21je5o2q5f.isZwsp(node.data); + }; + var isCaretContainer = function (node) { + return isCaretContainerBlock(node) || isCaretContainerInline(node); + }; + var hasContent = function (node) { + return node.firstChild !== node.lastChild || !$_9owqcy1qje5o2q0e.isBr(node.firstChild); + }; + var insertInline = function (node, before) { + var doc, sibling, textNode, parentNode; + doc = node.ownerDocument; + textNode = doc.createTextNode($_4md31c21je5o2q5f.ZWSP); + parentNode = node.parentNode; + if (!before) { + sibling = node.nextSibling; + if (isText$2(sibling)) { + if (isCaretContainer(sibling)) { + return sibling; + } + if (startsWithCaretContainer(sibling)) { + sibling.splitText(1); + return sibling; + } + } + if (node.nextSibling) { + parentNode.insertBefore(textNode, node.nextSibling); + } else { + parentNode.appendChild(textNode); + } + } else { + sibling = node.previousSibling; + if (isText$2(sibling)) { + if (isCaretContainer(sibling)) { + return sibling; + } + if (endsWithCaretContainer(sibling)) { + return sibling.splitText(sibling.data.length - 1); + } + } + parentNode.insertBefore(textNode, node); + } + return textNode; + }; + var isBeforeInline = function (pos) { + var container = pos.container(); + return pos && $_9owqcy1qje5o2q0e.isText(container) && container.data.charAt(pos.offset()) === $_4md31c21je5o2q5f.ZWSP; + }; + var isAfterInline = function (pos) { + var container = pos.container(); + return pos && $_9owqcy1qje5o2q0e.isText(container) && container.data.charAt(pos.offset() - 1) === $_4md31c21je5o2q5f.ZWSP; + }; + var createBogusBr = function () { + var br = document.createElement('br'); + br.setAttribute('data-mce-bogus', '1'); + return br; + }; + var insertBlock = function (blockName, node, before) { + var doc, blockNode, parentNode; + doc = node.ownerDocument; + blockNode = doc.createElement(blockName); + blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after'); + blockNode.setAttribute('data-mce-bogus', 'all'); + blockNode.appendChild(createBogusBr()); + parentNode = node.parentNode; + if (!before) { + if (node.nextSibling) { + parentNode.insertBefore(blockNode, node.nextSibling); + } else { + parentNode.appendChild(blockNode); + } + } else { + parentNode.insertBefore(blockNode, node); + } + return blockNode; + }; + var startsWithCaretContainer = function (node) { + return isText$2(node) && node.data[0] === $_4md31c21je5o2q5f.ZWSP; + }; + var endsWithCaretContainer = function (node) { + return isText$2(node) && node.data[node.data.length - 1] === $_4md31c21je5o2q5f.ZWSP; + }; + var trimBogusBr = function (elm) { + var brs = elm.getElementsByTagName('br'); + var lastBr = brs[brs.length - 1]; + if ($_9owqcy1qje5o2q0e.isBogus(lastBr)) { + lastBr.parentNode.removeChild(lastBr); + } + }; + var showCaretContainerBlock = function (caretContainer) { + if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) { + trimBogusBr(caretContainer); + caretContainer.removeAttribute('data-mce-caret'); + caretContainer.removeAttribute('data-mce-bogus'); + caretContainer.removeAttribute('style'); + caretContainer.removeAttribute('_moz_abspos'); + return caretContainer; + } + return null; + }; + var isRangeInCaretContainerBlock = function (range) { + return isCaretContainerBlock(range.startContainer); + }; + + var isContentEditableTrue$1 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$1 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isBr$2 = $_9owqcy1qje5o2q0e.isBr; + var isText$3 = $_9owqcy1qje5o2q0e.isText; + var isInvalidTextElement = $_9owqcy1qje5o2q0e.matchNodeNames('script style textarea'); + var isAtomicInline = $_9owqcy1qje5o2q0e.matchNodeNames('img input textarea hr iframe video audio object'); + var isTable$1 = $_9owqcy1qje5o2q0e.matchNodeNames('table'); + var isCaretContainer$1 = isCaretContainer; + var isCaretCandidate = function (node) { + if (isCaretContainer$1(node)) { + return false; + } + if (isText$3(node)) { + if (isInvalidTextElement(node.parentNode)) { + return false; + } + return true; + } + return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isContentEditableFalse$1(node); + }; + var isInEditable = function (node, root) { + for (node = node.parentNode; node && node !== root; node = node.parentNode) { + if (isContentEditableFalse$1(node)) { + return false; + } + if (isContentEditableTrue$1(node)) { + return true; + } + } + return true; + }; + var isAtomicContentEditableFalse = function (node) { + if (!isContentEditableFalse$1(node)) { + return false; + } + return $_c2vc3pkje5o2puw.reduce(node.getElementsByTagName('*'), function (result, elm) { + return result || isContentEditableTrue$1(elm); + }, false) !== true; + }; + var isAtomic = function (node) { + return isAtomicInline(node) || isAtomicContentEditableFalse(node); + }; + var isEditableCaretCandidate = function (node, root) { + return isCaretCandidate(node) && isInEditable(node, root); + }; + + var round = Math.round; + var clone$1 = function (rect) { + if (!rect) { + return { + left: 0, + top: 0, + bottom: 0, + right: 0, + width: 0, + height: 0 + }; + } + return { + left: round(rect.left), + top: round(rect.top), + bottom: round(rect.bottom), + right: round(rect.right), + width: round(rect.width), + height: round(rect.height) + }; + }; + var collapse = function (rect, toStart) { + rect = clone$1(rect); + if (toStart) { + rect.right = rect.left; + } else { + rect.left = rect.left + rect.width; + rect.right = rect.left; + } + rect.width = 0; + return rect; + }; + var isEqual = function (rect1, rect2) { + return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right; + }; + var isValidOverflow = function (overflowY, rect1, rect2) { + return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2; + }; + var isAbove = function (rect1, rect2) { + if (rect1.bottom - rect1.height / 2 < rect2.top) { + return true; + } + if (rect1.top > rect2.bottom) { + return false; + } + return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2); + }; + var isBelow = function (rect1, rect2) { + if (rect1.top > rect2.bottom) { + return true; + } + if (rect1.bottom < rect2.top) { + return false; + } + return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2); + }; + var containsXY = function (rect, clientX, clientY) { + return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom; + }; + + var getSelectedNode = function (range) { + var startContainer = range.startContainer, startOffset = range.startOffset; + if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) { + return startContainer.childNodes[startOffset]; + } + return null; + }; + var getNode = function (container, offset) { + if (container.nodeType === 1 && container.hasChildNodes()) { + if (offset >= container.childNodes.length) { + offset = container.childNodes.length - 1; + } + container = container.childNodes[offset]; + } + return container; + }; + + var extendingChars = new RegExp('[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a' + '\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0' + '\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08E3-\u0902\u093a\u093c' + '\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3' + '\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc' + '\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57' + '\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56' + '\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44' + '\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9' + '\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97' + '\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074' + '\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5' + '\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18' + '\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1ABE\u1b00-\u1b03\u1b34' + '\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9' + '\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9' + '\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20DD-\u20E0\u20e1\u20E2-\u20E4\u20e5-\u20f0\u2cef-\u2cf1' + '\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\uA670-\uA672\ua674-\ua67d\uA69E-\ua69f\ua6f0-\ua6f1' + '\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc' + '\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1' + '\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\uFE2F\uff9e-\uff9f]'); + var isExtendingChar = function (ch) { + return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch); + }; + + var slice$3 = [].slice; + var constant$1 = function (value) { + return function () { + return value; + }; + }; + var negate = function (predicate) { + return function (x) { + return !predicate(x); + }; + }; + var compose$2 = function (f, g) { + return function (x) { + return f(g(x)); + }; + }; + var or = function () { + var x = []; + for (var _i = 0; _i < arguments.length; _i++) { + x[_i] = arguments[_i]; + } + var args = slice$3.call(arguments); + return function (x) { + for (var i = 0; i < args.length; i++) { + if (args[i](x)) { + return true; + } + } + return false; + }; + }; + var and = function () { + var x = []; + for (var _i = 0; _i < arguments.length; _i++) { + x[_i] = arguments[_i]; + } + var args = slice$3.call(arguments); + return function (x) { + for (var i = 0; i < args.length; i++) { + if (!args[i](x)) { + return false; + } + } + return true; + }; + }; + var curry$1 = function (fn) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var args = slice$3.call(arguments); + if (args.length - 1 >= fn.length) { + return fn.apply(this, args.slice(1)); + } + return function () { + var tempArgs = args.concat([].slice.call(arguments)); + return curry$1.apply(this, tempArgs); + }; + }; + var noop$1 = function () { + }; + var $_ghq3nq25je5o2q5q = { + constant: constant$1, + negate: negate, + and: and, + or: or, + curry: curry$1, + compose: compose$2, + noop: noop$1 + }; + + var isElement$3 = $_9owqcy1qje5o2q0e.isElement; + var isCaretCandidate$1 = isCaretCandidate; + var isBlock$1 = $_9owqcy1qje5o2q0e.matchStyleValues('display', 'block table'); + var isFloated = $_9owqcy1qje5o2q0e.matchStyleValues('float', 'left right'); + var isValidElementCaretCandidate = $_ghq3nq25je5o2q5q.and(isElement$3, isCaretCandidate$1, $_ghq3nq25je5o2q5q.negate(isFloated)); + var isNotPre = $_ghq3nq25je5o2q5q.negate($_9owqcy1qje5o2q0e.matchStyleValues('white-space', 'pre pre-line pre-wrap')); + var isText$4 = $_9owqcy1qje5o2q0e.isText; + var isBr$3 = $_9owqcy1qje5o2q0e.isBr; + var nodeIndex$1 = DOMUtils.nodeIndex; + var resolveIndex = getNode; + var createRange = function (doc) { + return 'createRange' in doc ? doc.createRange() : DOMUtils.DOM.createRng(); + }; + var isWhiteSpace = function (chr) { + return chr && /[\r\n\t ]/.test(chr); + }; + var isRange = function (rng) { + return !!rng.setStart && !!rng.setEnd; + }; + var isHiddenWhiteSpaceRange = function (range) { + var container = range.startContainer; + var offset = range.startOffset; + var text; + if (isWhiteSpace(range.toString()) && isNotPre(container.parentNode) && $_9owqcy1qje5o2q0e.isText(container)) { + text = container.data; + if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) { + return true; + } + } + return false; + }; + var getBrClientRect = function (brNode) { + var doc = brNode.ownerDocument; + var rng = createRange(doc); + var nbsp = doc.createTextNode('\xA0'); + var parentNode = brNode.parentNode; + var clientRect; + parentNode.insertBefore(nbsp, brNode); + rng.setStart(nbsp, 0); + rng.setEnd(nbsp, 1); + clientRect = clone$1(rng.getBoundingClientRect()); + parentNode.removeChild(nbsp); + return clientRect; + }; + var getBoundingClientRectWebKitText = function (rng) { + var sc = rng.startContainer; + var ec = rng.endContainer; + var so = rng.startOffset; + var eo = rng.endOffset; + if (sc === ec && $_9owqcy1qje5o2q0e.isText(ec) && so === 0 && eo === 1) { + var newRng = rng.cloneRange(); + newRng.setEndAfter(ec); + return getBoundingClientRect(newRng); + } else { + return null; + } + }; + var isZeroRect = function (r) { + return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0; + }; + var getBoundingClientRect = function (item) { + var clientRect, clientRects; + clientRects = item.getClientRects(); + if (clientRects.length > 0) { + clientRect = clone$1(clientRects[0]); + } else { + clientRect = clone$1(item.getBoundingClientRect()); + } + if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) { + return getBrClientRect(item); + } + if (isZeroRect(clientRect) && isRange(item)) { + return getBoundingClientRectWebKitText(item); + } + return clientRect; + }; + var collapseAndInflateWidth = function (clientRect, toStart) { + var newClientRect = collapse(clientRect, toStart); + newClientRect.width = 1; + newClientRect.right = newClientRect.left + 1; + return newClientRect; + }; + var getCaretPositionClientRects = function (caretPosition) { + var clientRects = []; + var beforeNode, node; + var addUniqueAndValidRect = function (clientRect) { + if (clientRect.height === 0) { + return; + } + if (clientRects.length > 0) { + if (isEqual(clientRect, clientRects[clientRects.length - 1])) { + return; + } + } + clientRects.push(clientRect); + }; + var addCharacterOffset = function (container, offset) { + var range = createRange(container.ownerDocument); + if (offset < container.data.length) { + if (isExtendingChar(container.data[offset])) { + return clientRects; + } + if (isExtendingChar(container.data[offset - 1])) { + range.setStart(container, offset); + range.setEnd(container, offset + 1); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false)); + return clientRects; + } + } + } + if (offset > 0) { + range.setStart(container, offset - 1); + range.setEnd(container, offset); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false)); + } + } + if (offset < container.data.length) { + range.setStart(container, offset); + range.setEnd(container, offset + 1); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), true)); + } + } + }; + if (isText$4(caretPosition.container())) { + addCharacterOffset(caretPosition.container(), caretPosition.offset()); + return clientRects; + } + if (isElement$3(caretPosition.container())) { + if (caretPosition.isAtEnd()) { + node = resolveIndex(caretPosition.container(), caretPosition.offset()); + if (isText$4(node)) { + addCharacterOffset(node, node.data.length); + } + if (isValidElementCaretCandidate(node) && !isBr$3(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false)); + } + } else { + node = resolveIndex(caretPosition.container(), caretPosition.offset()); + if (isText$4(node)) { + addCharacterOffset(node, 0); + } + if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false)); + return clientRects; + } + beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1); + if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) { + if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false)); + } + } + if (isValidElementCaretCandidate(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true)); + } + } + } + return clientRects; + }; + function CaretPosition(container, offset, clientRects) { + var isAtStart = function () { + if (isText$4(container)) { + return offset === 0; + } + return offset === 0; + }; + var isAtEnd = function () { + if (isText$4(container)) { + return offset >= container.data.length; + } + return offset >= container.childNodes.length; + }; + var toRange = function () { + var range; + range = createRange(container.ownerDocument); + range.setStart(container, offset); + range.setEnd(container, offset); + return range; + }; + var getClientRects = function () { + if (!clientRects) { + clientRects = getCaretPositionClientRects(CaretPosition(container, offset)); + } + return clientRects; + }; + var isVisible = function () { + return getClientRects().length > 0; + }; + var isEqual$$1 = function (caretPosition) { + return caretPosition && container === caretPosition.container() && offset === caretPosition.offset(); + }; + var getNode$$1 = function (before) { + return resolveIndex(container, before ? offset - 1 : offset); + }; + return { + container: $_ghq3nq25je5o2q5q.constant(container), + offset: $_ghq3nq25je5o2q5q.constant(offset), + toRange: toRange, + getClientRects: getClientRects, + isVisible: isVisible, + isAtStart: isAtStart, + isAtEnd: isAtEnd, + isEqual: isEqual$$1, + getNode: getNode$$1 + }; + } + (function (CaretPosition) { + CaretPosition.fromRangeStart = function (range) { + return CaretPosition(range.startContainer, range.startOffset); + }; + CaretPosition.fromRangeEnd = function (range) { + return CaretPosition(range.endContainer, range.endOffset); + }; + CaretPosition.after = function (node) { + return CaretPosition(node.parentNode, nodeIndex$1(node) + 1); + }; + CaretPosition.before = function (node) { + return CaretPosition(node.parentNode, nodeIndex$1(node)); + }; + CaretPosition.isAtStart = function (pos) { + return pos ? pos.isAtStart() : false; + }; + CaretPosition.isAtEnd = function (pos) { + return pos ? pos.isAtEnd() : false; + }; + CaretPosition.isTextPosition = function (pos) { + return pos ? $_9owqcy1qje5o2q0e.isText(pos.container()) : false; + }; + }(CaretPosition || (CaretPosition = {}))); + var CaretPosition$1 = CaretPosition; + + var isElement$4 = $_9owqcy1qje5o2q0e.isElement; + var isText$5 = $_9owqcy1qje5o2q0e.isText; + var removeNode = function (node) { + var parentNode = node.parentNode; + if (parentNode) { + parentNode.removeChild(node); + } + }; + var getNodeValue = function (node) { + try { + return node.nodeValue; + } catch (ex) { + return ''; + } + }; + var setNodeValue = function (node, text) { + if (text.length === 0) { + removeNode(node); + } else { + node.nodeValue = text; + } + }; + var trimCount = function (text) { + var trimmedText = $_4md31c21je5o2q5f.trim(text); + return { + count: text.length - trimmedText.length, + text: trimmedText + }; + }; + var removeUnchanged = function (caretContainer, pos) { + remove$2(caretContainer); + return pos; + }; + var removeTextAndReposition = function (caretContainer, pos) { + var before = trimCount(caretContainer.data.substr(0, pos.offset())); + var after = trimCount(caretContainer.data.substr(pos.offset())); + var text = before.text + after.text; + if (text.length > 0) { + setNodeValue(caretContainer, text); + return CaretPosition$1(caretContainer, pos.offset() - before.count); + } else { + return pos; + } + }; + var removeElementAndReposition = function (caretContainer, pos) { + var parentNode = pos.container(); + var newPosition = $_bwcteb4je5o2pl4.indexOf(parentNode.childNodes, caretContainer).map(function (index) { + return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos; + }).getOr(pos); + remove$2(caretContainer); + return newPosition; + }; + var removeTextCaretContainer = function (caretContainer, pos) { + return isText$5(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos); + }; + var removeElementCaretContainer = function (caretContainer, pos) { + return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos); + }; + var removeAndReposition = function (container, pos) { + return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos); + }; + var remove$2 = function (caretContainerNode) { + if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) { + if (hasContent(caretContainerNode)) { + caretContainerNode.removeAttribute('data-mce-caret'); + } else { + removeNode(caretContainerNode); + } + } + if (isText$5(caretContainerNode)) { + var text = $_4md31c21je5o2q5f.trim(getNodeValue(caretContainerNode)); + setNodeValue(caretContainerNode, text); + } + }; + var $_3djwbs29je5o2q74 = { + removeAndReposition: removeAndReposition, + remove: remove$2 + }; + + var walkToPositionIn = function (forward, root, start) { + var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start); + return fromPosition(forward, root, position); + }; + var afterElement = function (node) { + return $_9owqcy1qje5o2q0e.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node); + }; + var isBeforeOrStart = function (position) { + if (CaretPosition$1.isTextPosition(position)) { + return position.offset() === 0; + } else { + return isCaretCandidate(position.getNode()); + } + }; + var isAfterOrEnd = function (position) { + if (CaretPosition$1.isTextPosition(position)) { + var container = position.container(); + return position.offset() === container.data.length; + } else { + return isCaretCandidate(position.getNode(true)); + } + }; + var isBeforeAfterSameElement = function (from, to) { + return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true); + }; + var isAtBr = function (position) { + return !CaretPosition$1.isTextPosition(position) && $_9owqcy1qje5o2q0e.isBr(position.getNode()); + }; + var shouldSkipPosition = function (forward, from, to) { + if (forward) { + return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to); + } else { + return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to); + } + }; + var fromPosition = function (forward, root, pos) { + var walker = CaretWalker(root); + return Option.from(forward ? walker.next(pos) : walker.prev(pos)); + }; + var navigate = function (forward, root, from) { + return fromPosition(forward, root, from).bind(function (to) { + if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) { + return fromPosition(forward, root, to); + } else { + return Option.some(to); + } + }); + }; + var positionIn = function (forward, element) { + var startNode = forward ? element.firstChild : element.lastChild; + if ($_9owqcy1qje5o2q0e.isText(startNode)) { + return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length)); + } else if (startNode) { + if (isCaretCandidate(startNode)) { + return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode)); + } else { + return walkToPositionIn(forward, element, startNode); + } + } else { + return Option.none(); + } + }; + var $_g2kzjo2bje5o2q7n = { + fromPosition: fromPosition, + nextPosition: $_enfhkv6je5o2ply.curry(fromPosition, true), + prevPosition: $_enfhkv6je5o2ply.curry(fromPosition, false), + navigate: navigate, + positionIn: positionIn, + firstPositionIn: $_enfhkv6je5o2ply.curry(positionIn, true), + lastPositionIn: $_enfhkv6je5o2ply.curry(positionIn, false) + }; + + var isContentEditableTrue$2 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$2 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var showCaret = function (direction, editor, node, before, scrollIntoView) { + return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView); + }; + var getNodeRange = function (node) { + var rng = node.ownerDocument.createRange(); + rng.selectNode(node); + return rng; + }; + var selectNode = function (editor, node) { + var e; + e = editor.fire('BeforeObjectSelected', { target: node }); + if (e.isDefaultPrevented()) { + return null; + } + return getNodeRange(node); + }; + var renderCaretAtRange = function (editor, range, scrollIntoView) { + var caretPosition, ceRoot; + range = normalizeRange(1, editor.getBody(), range); + caretPosition = CaretPosition$1.fromRangeStart(range); + if (isContentEditableFalse$2(caretPosition.getNode())) { + return showCaret(1, editor, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + if (isContentEditableFalse$2(caretPosition.getNode(true))) { + return showCaret(1, editor, caretPosition.getNode(true), false, false); + } + ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) { + return isContentEditableFalse$2(node) || isContentEditableTrue$2(node); + }); + if (isContentEditableFalse$2(ceRoot)) { + return showCaret(1, editor, ceRoot, false, scrollIntoView); + } + return null; + }; + var renderRangeCaret = function (editor, range, scrollIntoView) { + var caretRange; + if (!range || !range.collapsed) { + return range; + } + caretRange = renderCaretAtRange(editor, range, scrollIntoView); + if (caretRange) { + return caretRange; + } + return range; + }; + + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Option.none(); + }; + var liftN = function (arr, f) { + var r = []; + for (var i = 0; i < arr.length; i++) { + var x = arr[i]; + if (x.isSome()) { + r.push(x.getOrDie()); + } else { + return Option.none(); + } + } + return Option.some(f.apply(null, r)); + }; + var $_c8weyc2eje5o2q85 = { + cat: cat, + findMap: findMap, + liftN: liftN + }; + + var BreakType; + (function (BreakType) { + BreakType[BreakType['Br'] = 0] = 'Br'; + BreakType[BreakType['Block'] = 1] = 'Block'; + BreakType[BreakType['Wrap'] = 2] = 'Wrap'; + BreakType[BreakType['Eol'] = 3] = 'Eol'; + }(BreakType || (BreakType = {}))); + var isAbove$1 = function (pos1, pos2) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.head(pos2.getClientRects()), + $_bwcteb4je5o2pl4.last(pos1.getClientRects()) + ], isAbove).getOr(false); + }; + var isBelow$1 = function (pos1, pos2) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.last(pos2.getClientRects()), + $_bwcteb4je5o2pl4.head(pos1.getClientRects()) + ], function (r1, r2) { + return isBelow(r1, r2); + }).getOr(false); + }; + var flip = function (direction, positions) { + return direction === HDirection.Backwards ? positions.reverse() : positions; + }; + var walk$1 = function (direction, caretWalker, pos) { + return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos); + }; + var getBreakType = function (scope, direction, currentPos, nextPos) { + if ($_9owqcy1qje5o2q0e.isBr(nextPos.getNode(direction === HDirection.Forwards))) { + return BreakType.Br; + } else if (isInSameBlock(currentPos, nextPos) === false) { + return BreakType.Block; + } else { + return BreakType.Wrap; + } + }; + var getPositionsUntil = function (predicate, direction, scope, start) { + var caretWalker = CaretWalker(scope); + var currentPos = start, nextPos; + var positions = []; + while (currentPos) { + nextPos = walk$1(direction, caretWalker, currentPos); + if (!nextPos) { + break; + } + if ($_9owqcy1qje5o2q0e.isBr(nextPos.getNode(false))) { + if (direction === HDirection.Forwards) { + return { + positions: flip(direction, positions).concat([nextPos]), + breakType: BreakType.Br, + breakAt: Option.some(nextPos) + }; + } else { + return { + positions: flip(direction, positions), + breakType: BreakType.Br, + breakAt: Option.some(nextPos) + }; + } + } + if (!nextPos.isVisible()) { + currentPos = nextPos; + continue; + } + if (predicate(currentPos, nextPos)) { + var breakType = getBreakType(scope, direction, currentPos, nextPos); + return { + positions: flip(direction, positions), + breakType: breakType, + breakAt: Option.some(nextPos) + }; + } + positions.push(nextPos); + currentPos = nextPos; + } + return { + positions: flip(direction, positions), + breakType: BreakType.Eol, + breakAt: Option.none() + }; + }; + var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) { + return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) { + var positions = getPositionsUntilBreak(scope, pos).positions; + return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions); + }).getOr([]); + }; + var findClosestHorizontalPositionFromPoint = function (positions, x) { + return $_bwcteb4je5o2pl4.foldl(positions, function (acc, newPos) { + return acc.fold(function () { + return Option.some(newPos); + }, function (lastPos) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.head(lastPos.getClientRects()), + $_bwcteb4je5o2pl4.head(newPos.getClientRects()) + ], function (lastRect, newRect) { + var lastDist = Math.abs(x - lastRect.left); + var newDist = Math.abs(x - newRect.left); + return newDist <= lastDist ? newPos : lastPos; + }).or(acc); + }); + }, Option.none()); + }; + var findClosestHorizontalPosition = function (positions, pos) { + return $_bwcteb4je5o2pl4.head(pos.getClientRects()).bind(function (targetRect) { + return findClosestHorizontalPositionFromPoint(positions, targetRect.left); + }); + }; + var getPositionsUntilPreviousLine = $_enfhkv6je5o2ply.curry(getPositionsUntil, isAbove$1, -1); + var getPositionsUntilNextLine = $_enfhkv6je5o2ply.curry(getPositionsUntil, isBelow$1, 1); + var getPositionsAbove = $_enfhkv6je5o2ply.curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine); + var getPositionsBelow = $_enfhkv6je5o2ply.curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine); + var getFirstLinePositions = function (scope) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(scope).map(function (pos) { + return [pos].concat(getPositionsUntilNextLine(scope, pos).positions); + }).getOr([]); + }; + var getLastLinePositions = function (scope) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(scope).map(function (pos) { + return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos); + }).getOr([]); + }; + + var all$1 = function (predicate) { + return descendants($_484buq15je5o2py8.body(), predicate); + }; + var ancestors = function (scope, predicate, isRoot) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.parents(scope, isRoot), predicate); + }; + var siblings$1 = function (scope, predicate) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.siblings(scope), predicate); + }; + var children$1 = function (scope, predicate) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.children(scope), predicate); + }; + var descendants = function (scope, predicate) { + var result = []; + $_bwcteb4je5o2pl4.each($_a6mttx17je5o2pyd.children(scope), function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(descendants(x, predicate)); + }); + return result; + }; + var $_47brb52hje5o2q8h = { + all: all$1, + ancestors: ancestors, + siblings: siblings$1, + children: children$1, + descendants: descendants + }; + + var all$2 = function (selector) { + return $_87zu5k1fje5o2pz9.all(selector); + }; + var ancestors$1 = function (scope, selector, isRoot) { + return $_47brb52hje5o2q8h.ancestors(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }, isRoot); + }; + var siblings$2 = function (scope, selector) { + return $_47brb52hje5o2q8h.siblings(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var children$2 = function (scope, selector) { + return $_47brb52hje5o2q8h.children(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var descendants$1 = function (scope, selector) { + return $_87zu5k1fje5o2pz9.all(selector, scope); + }; + var $_b4jhpu2gje5o2q8e = { + all: all$2, + ancestors: ancestors$1, + siblings: siblings$2, + children: children$2, + descendants: descendants$1 + }; + + var deflate = function (rect, delta) { + return { + left: rect.left - delta, + top: rect.top - delta, + right: rect.right + delta * 2, + bottom: rect.bottom + delta * 2, + width: rect.width + delta, + height: rect.height + delta + }; + }; + var getCorners = function (getYAxisValue, tds) { + return $_bwcteb4je5o2pl4.bind(tds, function (td) { + var rect = deflate(td.getBoundingClientRect(), -1); + return [ + { + x: rect.left, + y: getYAxisValue(rect), + cell: td + }, + { + x: rect.right, + y: getYAxisValue(rect), + cell: td + } + ]; + }); + }; + var findClosestCorner = function (corners, x, y) { + return $_bwcteb4je5o2pl4.foldl(corners, function (acc, newCorner) { + return acc.fold(function () { + return Option.some(newCorner); + }, function (oldCorner) { + var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y)); + var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y)); + return Option.some(newDist < oldDist ? newCorner : oldCorner); + }); + }, Option.none()); + }; + var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) { + var cells = $_b4jhpu2gje5o2q8e.descendants($_5tcb2dyje5o2pwu.fromDom(table), 'td,th').map(function (e) { + return e.dom(); + }); + var corners = $_bwcteb4je5o2pl4.filter(getCorners(getYAxisValue, cells), function (corner) { + return isTargetCorner(corner, y); + }); + return findClosestCorner(corners, x, y).map(function (corner) { + return corner.cell; + }); + }; + var getBottomValue = function (rect) { + return rect.bottom; + }; + var getTopValue = function (rect) { + return rect.top; + }; + var isAbove$2 = function (corner, y) { + return corner.y < y; + }; + var isBelow$2 = function (corner, y) { + return corner.y > y; + }; + var getClosestCellAbove = $_enfhkv6je5o2ply.curry(getClosestCell, getBottomValue, isAbove$2); + var getClosestCellBelow = $_enfhkv6je5o2ply.curry(getClosestCell, getTopValue, isBelow$2); + var findClosestPositionInAboveCell = function (table, pos) { + return $_bwcteb4je5o2pl4.head(pos.getClientRects()).bind(function (rect) { + return getClosestCellAbove(table, rect.left, rect.top); + }).bind(function (cell) { + return findClosestHorizontalPosition(getLastLinePositions(cell), pos); + }); + }; + var findClosestPositionInBelowCell = function (table, pos) { + return $_bwcteb4je5o2pl4.last(pos.getClientRects()).bind(function (rect) { + return getClosestCellBelow(table, rect.left, rect.top); + }).bind(function (cell) { + return findClosestHorizontalPosition(getFirstLinePositions(cell), pos); + }); + }; + + var browser$2 = $_2hq237mje5o2pvu.detect().browser; + var isFakeCaretTableBrowser = function () { + return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox(); + }; + var isAtTableCellLine = function (getPositionsUntil, scope, pos) { + var lineInfo = getPositionsUntil(scope, pos); + if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) { + return lineInfo.breakAt.map(function (breakPos) { + return getPositionsUntil(scope, breakPos).breakAt.isNone(); + }).getOr(true); + } else { + return lineInfo.breakAt.isNone(); + } + }; + var isAtFirstTableCellLine = $_ghq3nq25je5o2q5q.curry(isAtTableCellLine, getPositionsUntilPreviousLine); + var isAtLastTableCellLine = $_ghq3nq25je5o2q5q.curry(isAtTableCellLine, getPositionsUntilNextLine); + var isCaretAtStartOrEndOfTable = function (forward, rng, table) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + return $_g2kzjo2bje5o2q7n.positionIn(!forward, table).map(function (pos) { + return pos.isEqual(caretPos); + }).getOr(false); + }; + var navigateHorizontally = function (editor, forward, table, td) { + var rng = editor.selection.getRng(); + var direction = forward ? 1 : -1; + if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) { + var newRng = showCaret(direction, editor, table, !forward, true); + editor.selection.setRng(newRng); + return true; + } + return false; + }; + var getClosestAbovePosition = function (root, table, start) { + return findClosestPositionInAboveCell(table, start).orThunk(function () { + return $_bwcteb4je5o2pl4.head(start.getClientRects()).bind(function (rect) { + return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left); + }); + }).getOr(CaretPosition$1.before(table)); + }; + var getClosestBelowPosition = function (root, table, start) { + return findClosestPositionInBelowCell(table, start).orThunk(function () { + return $_bwcteb4je5o2pl4.head(start.getClientRects()).bind(function (rect) { + return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left); + }); + }).getOr(CaretPosition$1.after(table)); + }; + var navigateVertically = function (editor, down, table, td) { + var rng = editor.selection.getRng(); + var pos = CaretPosition$1.fromRangeStart(rng); + var root = editor.getBody(); + if (!down && isAtFirstTableCellLine(td, pos)) { + var newPos = getClosestAbovePosition(root, table, pos); + editor.selection.setRng(newPos.toRange()); + return true; + } else if (down && isAtLastTableCellLine(td, pos)) { + var newPos = getClosestBelowPosition(root, table, pos); + editor.selection.setRng(newPos.toRange()); + return true; + } else { + return false; + } + }; + var moveH = function (editor, forward) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { + return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { + return navigateHorizontally(editor, forward, table, td); + }); + }).getOr(false); + }; + }; + var moveV = function (editor, forward) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { + return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { + return navigateVertically(editor, forward, table, td); + }); + }).getOr(false); + }; + }; + + var isContentEditableFalse$3 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isTableCell$1 = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && /^(TD|TH)$/i.test(node.tagName); + }; + var getAbsoluteClientRect = function (root, element, before) { + var clientRect = collapse(element.getBoundingClientRect(), before); + var docElm, scrollX, scrollY, margin, rootRect; + if (root.tagName === 'BODY') { + docElm = root.ownerDocument.documentElement; + scrollX = root.scrollLeft || docElm.scrollLeft; + scrollY = root.scrollTop || docElm.scrollTop; + } else { + rootRect = root.getBoundingClientRect(); + scrollX = root.scrollLeft - rootRect.left; + scrollY = root.scrollTop - rootRect.top; + } + clientRect.left += scrollX; + clientRect.right += scrollX; + clientRect.top += scrollY; + clientRect.bottom += scrollY; + clientRect.width = 1; + margin = element.offsetWidth - element.clientWidth; + if (margin > 0) { + if (before) { + margin *= -1; + } + clientRect.left += margin; + clientRect.right += margin; + } + return clientRect; + }; + var trimInlineCaretContainers = function (root) { + var contentEditableFalseNodes, node, sibling, i, data; + contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root); + for (i = 0; i < contentEditableFalseNodes.length; i++) { + node = contentEditableFalseNodes[i]; + sibling = node.previousSibling; + if (endsWithCaretContainer(sibling)) { + data = sibling.data; + if (data.length === 1) { + sibling.parentNode.removeChild(sibling); + } else { + sibling.deleteData(data.length - 1, 1); + } + } + sibling = node.nextSibling; + if (startsWithCaretContainer(sibling)) { + data = sibling.data; + if (data.length === 1) { + sibling.parentNode.removeChild(sibling); + } else { + sibling.deleteData(0, 1); + } + } + } + }; + var FakeCaret = function (root, isBlock, hasFocus) { + var cursorInterval, $lastVisualCaret = null, caretContainerNode; + var show = function (before, element) { + var clientRect, rng; + hide(); + if (isTableCell$1(element)) { + return null; + } + if (isBlock(element)) { + caretContainerNode = insertBlock('p', element, before); + clientRect = getAbsoluteClientRect(root, element, before); + DomQuery(caretContainerNode).css('top', clientRect.top); + $lastVisualCaret = DomQuery('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(clientRect).appendTo(root); + if (before) { + $lastVisualCaret.addClass('mce-visual-caret-before'); + } + startBlink(); + rng = element.ownerDocument.createRange(); + rng.setStart(caretContainerNode, 0); + rng.setEnd(caretContainerNode, 0); + } else { + caretContainerNode = insertInline(element, before); + rng = element.ownerDocument.createRange(); + if (isContentEditableFalse$3(caretContainerNode.nextSibling)) { + rng.setStart(caretContainerNode, 0); + rng.setEnd(caretContainerNode, 0); + } else { + rng.setStart(caretContainerNode, 1); + rng.setEnd(caretContainerNode, 1); + } + return rng; + } + return rng; + }; + var hide = function () { + trimInlineCaretContainers(root); + if (caretContainerNode) { + $_3djwbs29je5o2q74.remove(caretContainerNode); + caretContainerNode = null; + } + if ($lastVisualCaret) { + $lastVisualCaret.remove(); + $lastVisualCaret = null; + } + clearInterval(cursorInterval); + }; + var startBlink = function () { + cursorInterval = $_db41wogje5o2ps3.setInterval(function () { + if (hasFocus()) { + DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden'); + } else { + DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden'); + } + }, 500); + }; + var destroy = function () { + return $_db41wogje5o2ps3.clearInterval(cursorInterval); + }; + var getCss = function () { + return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}'; + }; + return { + show: show, + hide: hide, + getCss: getCss, + destroy: destroy + }; + }; + var isFakeCaretTarget = function (node) { + return isContentEditableFalse$3(node) || $_9owqcy1qje5o2q0e.isTable(node) && isFakeCaretTableBrowser(); + }; + + var isContentEditableFalse$4 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isBlockLike = $_9owqcy1qje5o2q0e.matchStyleValues('display', 'block table table-cell table-caption list-item'); + var isCaretContainer$2 = isCaretContainer; + var isCaretContainerBlock$1 = isCaretContainerBlock; + var curry$2 = $_ghq3nq25je5o2q5q.curry; + var isElement$5 = $_9owqcy1qje5o2q0e.isElement; + var isCaretCandidate$2 = isCaretCandidate; + var isForwards = function (direction) { + return direction > 0; + }; + var isBackwards = function (direction) { + return direction < 0; + }; + var skipCaretContainers = function (walk, shallow) { + var node; + while (node = walk(shallow)) { + if (!isCaretContainerBlock$1(node)) { + return node; + } + } + return null; + }; + var findNode = function (node, direction, predicateFn, rootNode, shallow) { + var walker = new TreeWalker(node, rootNode); + if (isBackwards(direction)) { + if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) { + node = skipCaretContainers(walker.prev, true); + if (predicateFn(node)) { + return node; + } + } + while (node = skipCaretContainers(walker.prev, shallow)) { + if (predicateFn(node)) { + return node; + } + } + } + if (isForwards(direction)) { + if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) { + node = skipCaretContainers(walker.next, true); + if (predicateFn(node)) { + return node; + } + } + while (node = skipCaretContainers(walker.next, shallow)) { + if (predicateFn(node)) { + return node; + } + } + } + return null; + }; + var getParentBlock = function (node, rootNode) { + while (node && node !== rootNode) { + if (isBlockLike(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) { + return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode); + }; + var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) { + var container, offset; + if (!caretPosition) { + return null; + } + container = caretPosition.container(); + offset = caretPosition.offset(); + if (!isElement$5(container)) { + return null; + } + return container.childNodes[offset + relativeOffset]; + }; + var beforeAfter = function (before, node) { + var range = node.ownerDocument.createRange(); + if (before) { + range.setStartBefore(node); + range.setEndBefore(node); + } else { + range.setStartAfter(node); + range.setEndAfter(node); + } + return range; + }; + var isNodesInSameBlock = function (root, node1, node2) { + return getParentBlock(node1, root) === getParentBlock(node2, root); + }; + var lean = function (left, root, node) { + var sibling, siblingName; + if (left) { + siblingName = 'previousSibling'; + } else { + siblingName = 'nextSibling'; + } + while (node && node !== root) { + sibling = node[siblingName]; + if (isCaretContainer$2(sibling)) { + sibling = sibling[siblingName]; + } + if (isContentEditableFalse$4(sibling)) { + if (isNodesInSameBlock(root, sibling, node)) { + return sibling; + } + break; + } + if (isCaretCandidate$2(sibling)) { + break; + } + node = node.parentNode; + } + return null; + }; + var before = curry$2(beforeAfter, true); + var after = curry$2(beforeAfter, false); + var normalizeRange = function (direction, root, range) { + var node, container, offset, location; + var leanLeft = curry$2(lean, true, root); + var leanRight = curry$2(lean, false, root); + container = range.startContainer; + offset = range.startOffset; + if (isCaretContainerBlock(container)) { + if (!isElement$5(container)) { + container = container.parentNode; + } + location = container.getAttribute('data-mce-caret'); + if (location === 'before') { + node = container.nextSibling; + if (isFakeCaretTarget(node)) { + return before(node); + } + } + if (location === 'after') { + node = container.previousSibling; + if (isFakeCaretTarget(node)) { + return after(node); + } + } + } + if (!range.collapsed) { + return range; + } + if ($_9owqcy1qje5o2q0e.isText(container)) { + if (isCaretContainer$2(container)) { + if (direction === 1) { + node = leanRight(container); + if (node) { + return before(node); + } + node = leanLeft(container); + if (node) { + return after(node); + } + } + if (direction === -1) { + node = leanLeft(container); + if (node) { + return after(node); + } + node = leanRight(container); + if (node) { + return before(node); + } + } + return range; + } + if (endsWithCaretContainer(container) && offset >= container.data.length - 1) { + if (direction === 1) { + node = leanRight(container); + if (node) { + return before(node); + } + } + return range; + } + if (startsWithCaretContainer(container) && offset <= 1) { + if (direction === -1) { + node = leanLeft(container); + if (node) { + return after(node); + } + } + return range; + } + if (offset === container.data.length) { + node = leanRight(container); + if (node) { + return before(node); + } + return range; + } + if (offset === 0) { + node = leanLeft(container); + if (node) { + return after(node); + } + return range; + } + } + return range; + }; + var isNextToContentEditableFalse = function (relativeOffset, caretPosition) { + var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition); + return isContentEditableFalse$4(node) && !$_9owqcy1qje5o2q0e.isBogusAll(node); + }; + var isNextToTable = function (relativeOffset, caretPosition) { + return $_9owqcy1qje5o2q0e.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition)); + }; + var getRelativeCefElm = function (forward, caretPosition) { + return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$4); + }; + var getNormalizedRangeEndPoint = function (direction, root, range) { + var normalizedRange = normalizeRange(direction, root, range); + if (direction === -1) { + return CaretPosition.fromRangeStart(normalizedRange); + } + return CaretPosition.fromRangeEnd(normalizedRange); + }; + var isBeforeContentEditableFalse = curry$2(isNextToContentEditableFalse, 0); + var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1); + var isBeforeTable = curry$2(isNextToTable, 0); + var isAfterTable = curry$2(isNextToTable, -1); + + var HDirection; + (function (HDirection) { + HDirection[HDirection['Backwards'] = -1] = 'Backwards'; + HDirection[HDirection['Forwards'] = 1] = 'Forwards'; + }(HDirection || (HDirection = {}))); + var isContentEditableFalse$5 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isText$6 = $_9owqcy1qje5o2q0e.isText; + var isElement$6 = $_9owqcy1qje5o2q0e.isElement; + var isBr$4 = $_9owqcy1qje5o2q0e.isBr; + var isCaretCandidate$3 = isCaretCandidate; + var isAtomic$1 = isAtomic; + var isEditableCaretCandidate$1 = isEditableCaretCandidate; + var getParents = function (node, root) { + var parents = []; + while (node && node !== root) { + parents.push(node); + node = node.parentNode; + } + return parents; + }; + var nodeAtIndex = function (container, offset) { + if (container.hasChildNodes() && offset < container.childNodes.length) { + return container.childNodes[offset]; + } + return null; + }; + var getCaretCandidatePosition = function (direction, node) { + if (isForwards(direction)) { + if (isCaretCandidate$3(node.previousSibling) && !isText$6(node.previousSibling)) { + return CaretPosition$1.before(node); + } + if (isText$6(node)) { + return CaretPosition$1(node, 0); + } + } + if (isBackwards(direction)) { + if (isCaretCandidate$3(node.nextSibling) && !isText$6(node.nextSibling)) { + return CaretPosition$1.after(node); + } + if (isText$6(node)) { + return CaretPosition$1(node, node.data.length); + } + } + if (isBackwards(direction)) { + if (isBr$4(node)) { + return CaretPosition$1.before(node); + } + return CaretPosition$1.after(node); + } + return CaretPosition$1.before(node); + }; + var isBrBeforeBlock = function (node, root) { + var next; + if (!$_9owqcy1qje5o2q0e.isBr(node)) { + return false; + } + next = findCaretPosition(1, CaretPosition$1.after(node), root); + if (!next) { + return false; + } + return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root); + }; + var findCaretPosition = function (direction, startPos, root) { + var node, nextNode, innerNode; + var rootContentEditableFalseElm, caretPosition; + if (!isElement$6(root) || !startPos) { + return null; + } + if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) { + caretPosition = CaretPosition$1.after(root.lastChild); + if (isBackwards(direction) && isCaretCandidate$3(root.lastChild) && isElement$6(root.lastChild)) { + return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition; + } + } else { + caretPosition = startPos; + } + var container = caretPosition.container(); + var offset = caretPosition.offset(); + if (isText$6(container)) { + if (isBackwards(direction) && offset > 0) { + return CaretPosition$1(container, --offset); + } + if (isForwards(direction) && offset < container.length) { + return CaretPosition$1(container, ++offset); + } + node = container; + } else { + if (isBackwards(direction) && offset > 0) { + nextNode = nodeAtIndex(container, offset - 1); + if (isCaretCandidate$3(nextNode)) { + if (!isAtomic$1(nextNode)) { + innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode); + if (innerNode) { + if (isText$6(innerNode)) { + return CaretPosition$1(innerNode, innerNode.data.length); + } + return CaretPosition$1.after(innerNode); + } + } + if (isText$6(nextNode)) { + return CaretPosition$1(nextNode, nextNode.data.length); + } + return CaretPosition$1.before(nextNode); + } + } + if (isForwards(direction) && offset < container.childNodes.length) { + nextNode = nodeAtIndex(container, offset); + if (isCaretCandidate$3(nextNode)) { + if (isBrBeforeBlock(nextNode, root)) { + return findCaretPosition(direction, CaretPosition$1.after(nextNode), root); + } + if (!isAtomic$1(nextNode)) { + innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode); + if (innerNode) { + if (isText$6(innerNode)) { + return CaretPosition$1(innerNode, 0); + } + return CaretPosition$1.before(innerNode); + } + } + if (isText$6(nextNode)) { + return CaretPosition$1(nextNode, 0); + } + return CaretPosition$1.after(nextNode); + } + } + node = nextNode ? nextNode : caretPosition.getNode(); + } + if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) { + node = findNode(node, direction, $_ghq3nq25je5o2q5q.constant(true), root, true); + if (isEditableCaretCandidate$1(node, root)) { + return getCaretCandidatePosition(direction, node); + } + } + nextNode = findNode(node, direction, isEditableCaretCandidate$1, root); + rootContentEditableFalseElm = $_c2vc3pkje5o2puw.last($_c2vc3pkje5o2puw.filter(getParents(container, root), isContentEditableFalse$5)); + if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) { + if (isForwards(direction)) { + caretPosition = CaretPosition$1.after(rootContentEditableFalseElm); + } else { + caretPosition = CaretPosition$1.before(rootContentEditableFalseElm); + } + return caretPosition; + } + if (nextNode) { + return getCaretCandidatePosition(direction, nextNode); + } + return null; + }; + var CaretWalker = function (root) { + return { + next: function (caretPosition) { + return findCaretPosition(HDirection.Forwards, caretPosition, root); + }, + prev: function (caretPosition) { + return findCaretPosition(HDirection.Backwards, caretPosition, root); + } + }; + }; + + var hasOnlyOneChild = function (node) { + return node.firstChild && node.firstChild === node.lastChild; + }; + var isPaddingNode = function (node) { + return node.name === 'br' || node.value === '\xA0'; + }; + var isPaddedEmptyBlock = function (schema, node) { + var blockElements = schema.getBlockElements(); + return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild); + }; + var isEmptyFragmentElement = function (schema, node) { + var nonEmptyElements = schema.getNonEmptyElements(); + return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node)); + }; + var isListFragment = function (schema, fragment) { + var firstChild = fragment.firstChild; + var lastChild = fragment.lastChild; + if (firstChild && firstChild.name === 'meta') { + firstChild = firstChild.next; + } + if (lastChild && lastChild.attr('id') === 'mce_marker') { + lastChild = lastChild.prev; + } + if (isEmptyFragmentElement(schema, lastChild)) { + lastChild = lastChild.prev; + } + if (!firstChild || firstChild !== lastChild) { + return false; + } + return firstChild.name === 'ul' || firstChild.name === 'ol'; + }; + var cleanupDomFragment = function (domFragment) { + var firstChild = domFragment.firstChild; + var lastChild = domFragment.lastChild; + if (firstChild && firstChild.nodeName === 'META') { + firstChild.parentNode.removeChild(firstChild); + } + if (lastChild && lastChild.id === 'mce_marker') { + lastChild.parentNode.removeChild(lastChild); + } + return domFragment; + }; + var toDomFragment = function (dom, serializer, fragment) { + var html = serializer.serialize(fragment); + var domFragment = dom.createFragment(html); + return cleanupDomFragment(domFragment); + }; + var listItems$1 = function (elm) { + return $_a5gegtjje5o2pum.grep(elm.childNodes, function (child) { + return child.nodeName === 'LI'; + }); + }; + var isPadding = function (node) { + return node.data === '\xA0' || $_9owqcy1qje5o2q0e.isBr(node); + }; + var isListItemPadded = function (node) { + return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild); + }; + var isEmptyOrPadded = function (elm) { + return !elm.firstChild || isListItemPadded(elm); + }; + var trimListItems = function (elms) { + return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms; + }; + var getParentLi = function (dom, node) { + var parentBlock = dom.getParent(node, dom.isBlock); + return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null; + }; + var isParentBlockLi = function (dom, node) { + return !!getParentLi(dom, node); + }; + var getSplit = function (parentNode, rng) { + var beforeRng = rng.cloneRange(); + var afterRng = rng.cloneRange(); + beforeRng.setStartBefore(parentNode); + afterRng.setEndAfter(parentNode); + return [ + beforeRng.cloneContents(), + afterRng.cloneContents() + ]; + }; + var findFirstIn = function (node, rootNode) { + var caretPos = CaretPosition$1.before(node); + var caretWalker = CaretWalker(rootNode); + var newCaretPos = caretWalker.next(caretPos); + return newCaretPos ? newCaretPos.toRange() : null; + }; + var findLastOf = function (node, rootNode) { + var caretPos = CaretPosition$1.after(node); + var caretWalker = CaretWalker(rootNode); + var newCaretPos = caretWalker.prev(caretPos); + return newCaretPos ? newCaretPos.toRange() : null; + }; + var insertMiddle = function (target, elms, rootNode, rng) { + var parts = getSplit(target, rng); + var parentElm = target.parentNode; + parentElm.insertBefore(parts[0], target); + $_a5gegtjje5o2pum.each(elms, function (li) { + parentElm.insertBefore(li, target); + }); + parentElm.insertBefore(parts[1], target); + parentElm.removeChild(target); + return findLastOf(elms[elms.length - 1], rootNode); + }; + var insertBefore = function (target, elms, rootNode) { + var parentElm = target.parentNode; + $_a5gegtjje5o2pum.each(elms, function (elm) { + parentElm.insertBefore(elm, target); + }); + return findFirstIn(target, rootNode); + }; + var insertAfter = function (target, elms, rootNode, dom) { + dom.insertAfter(elms.reverse(), target); + return findLastOf(elms[0], rootNode); + }; + var insertAtCaret = function (serializer, dom, rng, fragment) { + var domFragment = toDomFragment(dom, serializer, fragment); + var liTarget = getParentLi(dom, rng.startContainer); + var liElms = trimListItems(listItems$1(domFragment.firstChild)); + var BEGINNING = 1, END = 2; + var rootNode = dom.getRoot(); + var isAt = function (location) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + var caretWalker = CaretWalker(dom.getRoot()); + var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos); + return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true; + }; + if (isAt(BEGINNING)) { + return insertBefore(liTarget, liElms, rootNode); + } else if (isAt(END)) { + return insertAfter(liTarget, liElms, rootNode, dom); + } + return insertMiddle(liTarget, liElms, rootNode, rng); + }; + var $_3j1y5o1xje5o2q4o = { + isListFragment: isListFragment, + insertAtCaret: insertAtCaret, + isParentBlockLi: isParentBlockLi, + trimListItems: trimListItems, + listItems: listItems$1 + }; + + var isText$7 = $_9owqcy1qje5o2q0e.isText; + var isBogus$1 = $_9owqcy1qje5o2q0e.isBogus; + var nodeIndex$2 = DOMUtils.nodeIndex; + var normalizedParent = function (node) { + var parentNode = node.parentNode; + if (isBogus$1(parentNode)) { + return normalizedParent(parentNode); + } + return parentNode; + }; + var getChildNodes = function (node) { + if (!node) { + return []; + } + return $_c2vc3pkje5o2puw.reduce(node.childNodes, function (result, node) { + if (isBogus$1(node) && node.nodeName !== 'BR') { + result = result.concat(getChildNodes(node)); + } else { + result.push(node); + } + return result; + }, []); + }; + var normalizedTextOffset = function (node, offset) { + while (node = node.previousSibling) { + if (!isText$7(node)) { + break; + } + offset += node.data.length; + } + return offset; + }; + var equal$1 = function (a) { + return function (b) { + return a === b; + }; + }; + var normalizedNodeIndex = function (node) { + var nodes, index, numTextFragments; + nodes = getChildNodes(normalizedParent(node)); + index = $_c2vc3pkje5o2puw.findIndex(nodes, equal$1(node), node); + nodes = nodes.slice(0, index + 1); + numTextFragments = $_c2vc3pkje5o2puw.reduce(nodes, function (result, node, i) { + if (isText$7(node) && isText$7(nodes[i - 1])) { + result++; + } + return result; + }, 0); + nodes = $_c2vc3pkje5o2puw.filter(nodes, $_9owqcy1qje5o2q0e.matchNodeNames(node.nodeName)); + index = $_c2vc3pkje5o2puw.findIndex(nodes, equal$1(node), node); + return index - numTextFragments; + }; + var createPathItem = function (node) { + var name; + if (isText$7(node)) { + name = 'text()'; + } else { + name = node.nodeName.toLowerCase(); + } + return name + '[' + normalizedNodeIndex(node) + ']'; + }; + var parentsUntil = function (root, node, predicate) { + var parents = []; + for (node = node.parentNode; node !== root; node = node.parentNode) { + if (predicate && predicate(node)) { + break; + } + parents.push(node); + } + return parents; + }; + var create$1 = function (root, caretPosition) { + var container, offset, path = [], outputOffset, childNodes, parents; + container = caretPosition.container(); + offset = caretPosition.offset(); + if (isText$7(container)) { + outputOffset = normalizedTextOffset(container, offset); + } else { + childNodes = container.childNodes; + if (offset >= childNodes.length) { + outputOffset = 'after'; + offset = childNodes.length - 1; + } else { + outputOffset = 'before'; + } + container = childNodes[offset]; + } + path.push(createPathItem(container)); + parents = parentsUntil(root, container); + parents = $_c2vc3pkje5o2puw.filter(parents, $_ghq3nq25je5o2q5q.negate($_9owqcy1qje5o2q0e.isBogus)); + path = path.concat($_c2vc3pkje5o2puw.map(parents, function (node) { + return createPathItem(node); + })); + return path.reverse().join('/') + ',' + outputOffset; + }; + var resolvePathItem = function (node, name, index) { + var nodes = getChildNodes(node); + nodes = $_c2vc3pkje5o2puw.filter(nodes, function (node, index) { + return !isText$7(node) || !isText$7(nodes[index - 1]); + }); + nodes = $_c2vc3pkje5o2puw.filter(nodes, $_9owqcy1qje5o2q0e.matchNodeNames(name)); + return nodes[index]; + }; + var findTextPosition = function (container, offset) { + var node = container, targetOffset = 0, dataLen; + while (isText$7(node)) { + dataLen = node.data.length; + if (offset >= targetOffset && offset <= targetOffset + dataLen) { + container = node; + offset = offset - targetOffset; + break; + } + if (!isText$7(node.nextSibling)) { + container = node; + offset = dataLen; + break; + } + targetOffset += dataLen; + node = node.nextSibling; + } + if (isText$7(container) && offset > container.data.length) { + offset = container.data.length; + } + return CaretPosition$1(container, offset); + }; + var resolve$2 = function (root, path) { + var parts, container, offset; + if (!path) { + return null; + } + parts = path.split(','); + path = parts[0].split('/'); + offset = parts.length > 1 ? parts[1] : 'before'; + container = $_c2vc3pkje5o2puw.reduce(path, function (result, value) { + value = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(value); + if (!value) { + return null; + } + if (value[1] === 'text()') { + value[1] = '#text'; + } + return resolvePathItem(result, value[1], parseInt(value[2], 10)); + }, root); + if (!container) { + return null; + } + if (!isText$7(container)) { + if (offset === 'after') { + offset = nodeIndex$2(container) + 1; + } else { + offset = nodeIndex$2(container); + } + return CaretPosition$1(container.parentNode, offset); + } + return findTextPosition(container, parseInt(offset, 10)); + }; + + var isContentEditableFalse$6 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var getNormalizedTextOffset = function (trim, container, offset) { + var node, trimmedOffset; + trimmedOffset = trim(container.data.slice(0, offset)).length; + for (node = container.previousSibling; node && $_9owqcy1qje5o2q0e.isText(node); node = node.previousSibling) { + trimmedOffset += trim(node.data).length; + } + return trimmedOffset; + }; + var getPoint = function (dom, trim, normalized, rng, start) { + var container = rng[start ? 'startContainer' : 'endContainer']; + var offset = rng[start ? 'startOffset' : 'endOffset']; + var point = []; + var childNodes, after = 0; + var root = dom.getRoot(); + if ($_9owqcy1qje5o2q0e.isText(container)) { + point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset); + } else { + childNodes = container.childNodes; + if (offset >= childNodes.length && childNodes.length) { + after = 1; + offset = Math.max(0, childNodes.length - 1); + } + point.push(dom.nodeIndex(childNodes[offset], normalized) + after); + } + for (; container && container !== root; container = container.parentNode) { + point.push(dom.nodeIndex(container, normalized)); + } + return point; + }; + var getLocation = function (trim, selection, normalized, rng) { + var dom = selection.dom, bookmark = {}; + bookmark.start = getPoint(dom, trim, normalized, rng, true); + if (!selection.isCollapsed()) { + bookmark.end = getPoint(dom, trim, normalized, rng, false); + } + return bookmark; + }; + var trimEmptyTextNode = function (node) { + if ($_9owqcy1qje5o2q0e.isText(node) && node.data.length === 0) { + node.parentNode.removeChild(node); + } + }; + var findIndex$3 = function (dom, name, element) { + var count = 0; + $_a5gegtjje5o2pum.each(dom.select(name), function (node) { + if (node.getAttribute('data-mce-bogus') === 'all') { + return; + } + if (node === element) { + return false; + } + count++; + }); + return count; + }; + var moveEndPoint = function (rng, start) { + var container, offset, childNodes; + var prefix = start ? 'start' : 'end'; + container = rng[prefix + 'Container']; + offset = rng[prefix + 'Offset']; + if ($_9owqcy1qje5o2q0e.isElement(container) && container.nodeName === 'TR') { + childNodes = container.childNodes; + container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)]; + if (container) { + offset = start ? 0 : container.childNodes.length; + rng['set' + (start ? 'Start' : 'End')](container, offset); + } + } + }; + var normalizeTableCellSelection = function (rng) { + moveEndPoint(rng, true); + moveEndPoint(rng, false); + return rng; + }; + var findSibling = function (node, offset) { + var sibling; + if ($_9owqcy1qje5o2q0e.isElement(node)) { + node = getNode(node, offset); + if (isContentEditableFalse$6(node)) { + return node; + } + } + if (isCaretContainer(node)) { + if ($_9owqcy1qje5o2q0e.isText(node) && isCaretContainerBlock(node)) { + node = node.parentNode; + } + sibling = node.previousSibling; + if (isContentEditableFalse$6(sibling)) { + return sibling; + } + sibling = node.nextSibling; + if (isContentEditableFalse$6(sibling)) { + return sibling; + } + } + }; + var findAdjacentContentEditableFalseElm = function (rng) { + return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset); + }; + var getOffsetBookmark = function (trim, normalized, selection) { + var element = selection.getNode(); + var name = element ? element.nodeName : null; + var rng = selection.getRng(); + if (isContentEditableFalse$6(element) || name === 'IMG') { + return { + name: name, + index: findIndex$3(selection.dom, name, element) + }; + } + element = findAdjacentContentEditableFalseElm(rng); + if (element) { + name = element.tagName; + return { + name: name, + index: findIndex$3(selection.dom, name, element) + }; + } + return getLocation(trim, selection, normalized, rng); + }; + var getCaretBookmark = function (selection) { + var rng = selection.getRng(); + return { + start: create$1(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)), + end: create$1(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng)) + }; + }; + var getRangeBookmark = function (selection) { + return { rng: selection.getRng() }; + }; + var getPersistentBookmark = function (selection) { + var dom = selection.dom; + var rng = selection.getRng(); + var id = dom.uniqueId(); + var collapsed = selection.isCollapsed(); + var styles = 'overflow:hidden;line-height:0px'; + var element = selection.getNode(); + var name = element.nodeName; + var chr = ''; + if (name === 'IMG') { + return { + name: name, + index: findIndex$3(dom, name, element) + }; + } + var rng2 = normalizeTableCellSelection(rng.cloneRange()); + if (!collapsed) { + rng2.collapse(false); + var endBookmarkNode = dom.create('span', { + 'data-mce-type': 'bookmark', + 'id': id + '_end', + 'style': styles + }, chr); + rng2.insertNode(endBookmarkNode); + trimEmptyTextNode(endBookmarkNode.nextSibling); + } + rng = normalizeTableCellSelection(rng); + rng.collapse(true); + var startBookmarkNode = dom.create('span', { + 'data-mce-type': 'bookmark', + 'id': id + '_start', + 'style': styles + }, chr); + rng.insertNode(startBookmarkNode); + trimEmptyTextNode(startBookmarkNode.previousSibling); + selection.moveToBookmark({ + id: id, + keep: 1 + }); + return { id: id }; + }; + var getBookmark = function (selection, type, normalized) { + if (type === 2) { + return getOffsetBookmark($_4md31c21je5o2q5f.trim, normalized, selection); + } else if (type === 3) { + return getCaretBookmark(selection); + } else if (type) { + return getRangeBookmark(selection); + } else { + return getPersistentBookmark(selection); + } + }; + var $_9eyzd52kje5o2q8r = { + getBookmark: getBookmark, + getUndoBookmark: $_enfhkv6je5o2ply.curry(getOffsetBookmark, $_enfhkv6je5o2ply.identity, true) + }; + + var addBogus = function (dom, node) { + if (dom.isBlock(node) && !node.innerHTML && !$_9bd8pn9je5o2pp2.ie) { + node.innerHTML = '<br data-mce-bogus="1" />'; + } + return node; + }; + var resolveCaretPositionBookmark = function (dom, bookmark) { + var rng, pos; + rng = dom.createRng(); + pos = resolve$2(dom.getRoot(), bookmark.start); + rng.setStart(pos.container(), pos.offset()); + pos = resolve$2(dom.getRoot(), bookmark.end); + rng.setEnd(pos.container(), pos.offset()); + return rng; + }; + var setEndPoint = function (dom, start, bookmark, rng) { + var point = bookmark[start ? 'start' : 'end']; + var i, node, offset, children; + var root = dom.getRoot(); + if (point) { + offset = point[0]; + for (node = root, i = point.length - 1; i >= 1; i--) { + children = node.childNodes; + if (point[i] > children.length - 1) { + return; + } + node = children[point[i]]; + } + if (node.nodeType === 3) { + offset = Math.min(point[0], node.nodeValue.length); + } + if (node.nodeType === 1) { + offset = Math.min(point[0], node.childNodes.length); + } + if (start) { + rng.setStart(node, offset); + } else { + rng.setEnd(node, offset); + } + } + return true; + }; + var restoreEndPoint = function (dom, suffix, bookmark) { + var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev; + var keep = bookmark.keep; + var container, offset; + if (marker) { + node = marker.parentNode; + if (suffix === 'start') { + if (!keep) { + idx = dom.nodeIndex(marker); + } else { + node = marker.firstChild; + idx = 1; + } + container = node; + offset = idx; + } else { + if (!keep) { + idx = dom.nodeIndex(marker); + } else { + node = marker.firstChild; + idx = 1; + } + container = node; + offset = idx; + } + if (!keep) { + prev = marker.previousSibling; + next = marker.nextSibling; + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.grep(marker.childNodes), function (node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + node.nodeValue = node.nodeValue.replace(/\uFEFF/g, ''); + } + }); + while (marker = dom.get(bookmark.id + '_' + suffix)) { + dom.remove(marker, 1); + } + if (prev && next && prev.nodeType === next.nodeType && $_9owqcy1qje5o2q0e.isText(prev) && !$_9bd8pn9je5o2pp2.opera) { + idx = prev.nodeValue.length; + prev.appendData(next.nodeValue); + dom.remove(next); + if (suffix === 'start') { + container = prev; + offset = idx; + } else { + container = prev; + offset = idx; + } + } + } + return Option.some(CaretPosition$1(container, offset)); + } else { + return Option.none(); + } + }; + var alt = function (o1, o2) { + return o1.isSome() ? o1 : o2; + }; + var resolvePaths = function (dom, bookmark) { + var rng = dom.createRng(); + if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) { + return Option.some(rng); + } else { + return Option.none(); + } + }; + var resolveId = function (dom, bookmark) { + var startPos = restoreEndPoint(dom, 'start', bookmark); + var endPos = restoreEndPoint(dom, 'end', bookmark); + return $_c8weyc2eje5o2q85.liftN([ + startPos, + alt(endPos, startPos) + ], function (spos, epos) { + var rng = dom.createRng(); + rng.setStart(addBogus(dom, spos.container()), spos.offset()); + rng.setEnd(addBogus(dom, epos.container()), epos.offset()); + return rng; + }); + }; + var resolveIndex$1 = function (dom, bookmark) { + return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) { + var rng = dom.createRng(); + rng.selectNode(elm); + return rng; + }); + }; + var resolve$3 = function (selection, bookmark) { + var dom = selection.dom; + if (bookmark) { + if ($_a5gegtjje5o2pum.isArray(bookmark.start)) { + return resolvePaths(dom, bookmark); + } else if (typeof bookmark.start === 'string') { + return Option.some(resolveCaretPositionBookmark(dom, bookmark)); + } else if (bookmark.id) { + return resolveId(dom, bookmark); + } else if (bookmark.name) { + return resolveIndex$1(dom, bookmark); + } else if (bookmark.rng) { + return Option.some(bookmark.rng); + } + } + return Option.none(); + }; + var $_eb5pra2mje5o2q9j = { resolve: resolve$3 }; + + var getBookmark$1 = function (selection, type, normalized) { + return $_9eyzd52kje5o2q8r.getBookmark(selection, type, normalized); + }; + var moveToBookmark = function (selection, bookmark) { + $_eb5pra2mje5o2q9j.resolve(selection, bookmark).each(function (rng) { + selection.setRng(rng); + }); + }; + var isBookmarkNode$1 = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark'; + }; + var $_83h91t2jje5o2q8n = { + getBookmark: getBookmark$1, + moveToBookmark: moveToBookmark, + isBookmarkNode: isBookmarkNode$1 + }; + + var each$8 = $_a5gegtjje5o2pum.each; + var ElementUtils = function (dom) { + this.compare = function (node1, node2) { + if (node1.nodeName !== node2.nodeName) { + return false; + } + var getAttribs = function (node) { + var attribs = {}; + each$8(dom.getAttribs(node), function (attr) { + var name = attr.nodeName.toLowerCase(); + if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) { + attribs[name] = dom.getAttrib(node, name); + } + }); + return attribs; + }; + var compareObjects = function (obj1, obj2) { + var value, name; + for (name in obj1) { + if (obj1.hasOwnProperty(name)) { + value = obj2[name]; + if (typeof value === 'undefined') { + return false; + } + if (obj1[name] !== value) { + return false; + } + delete obj2[name]; + } + } + for (name in obj2) { + if (obj2.hasOwnProperty(name)) { + return false; + } + } + return true; + }; + if (!compareObjects(getAttribs(node1), getAttribs(node2))) { + return false; + } + if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) { + return false; + } + return !$_83h91t2jje5o2q8n.isBookmarkNode(node1) && !$_83h91t2jje5o2q8n.isBookmarkNode(node2); + }; + }; + + var before$1 = function (marker, element) { + var parent = $_a6mttx17je5o2pyd.parent(marker); + parent.each(function (v) { + v.dom().insertBefore(element.dom(), marker.dom()); + }); + }; + var after$1 = function (marker, element) { + var sibling = $_a6mttx17je5o2pyd.nextSibling(marker); + sibling.fold(function () { + var parent = $_a6mttx17je5o2pyd.parent(marker); + parent.each(function (v) { + append(v, element); + }); + }, function (v) { + before$1(v, element); + }); + }; + var prepend = function (parent, element) { + var firstChild = $_a6mttx17je5o2pyd.firstChild(parent); + firstChild.fold(function () { + append(parent, element); + }, function (v) { + parent.dom().insertBefore(element.dom(), v.dom()); + }); + }; + var append = function (parent, element) { + parent.dom().appendChild(element.dom()); + }; + var appendAt = function (parent, element, index) { + $_a6mttx17je5o2pyd.child(parent, index).fold(function () { + append(parent, element); + }, function (v) { + before$1(v, element); + }); + }; + var wrap$1 = function (element, wrapper) { + before$1(element, wrapper); + append(wrapper, element); + }; + var $_elbl2s2oje5o2q9z = { + before: before$1, + after: after$1, + prepend: prepend, + append: append, + appendAt: appendAt, + wrap: wrap$1 + }; + + var before$2 = function (marker, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x) { + $_elbl2s2oje5o2q9z.before(marker, x); + }); + }; + var after$2 = function (marker, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x, i) { + var e = i === 0 ? marker : elements[i - 1]; + $_elbl2s2oje5o2q9z.after(e, x); + }); + }; + var prepend$1 = function (parent, elements) { + $_bwcteb4je5o2pl4.each(elements.slice().reverse(), function (x) { + $_elbl2s2oje5o2q9z.prepend(parent, x); + }); + }; + var append$1 = function (parent, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x) { + $_elbl2s2oje5o2q9z.append(parent, x); + }); + }; + var $_93ro7k2qje5o2qa4 = { + before: before$2, + after: after$2, + prepend: prepend$1, + append: append$1 + }; + + var empty = function (element) { + element.dom().textContent = ''; + $_bwcteb4je5o2pl4.each($_a6mttx17je5o2pyd.children(element), function (rogue) { + remove$3(rogue); + }); + }; + var remove$3 = function (element) { + var dom = element.dom(); + if (dom.parentNode !== null) + dom.parentNode.removeChild(dom); + }; + var unwrap = function (wrapper) { + var children = $_a6mttx17je5o2pyd.children(wrapper); + if (children.length > 0) + $_93ro7k2qje5o2qa4.before(wrapper, children); + remove$3(wrapper); + }; + var $_cr1seh2pje5o2qa1 = { + empty: empty, + remove: remove$3, + unwrap: unwrap + }; + + function NodeValue (is, name) { + var get = function (element) { + if (!is(element)) + throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + return getOption(element).getOr(''); + }; + var getOptionIE10 = function (element) { + try { + return getOptionSafe(element); + } catch (e) { + return Option.none(); + } + }; + var getOptionSafe = function (element) { + return is(element) ? Option.from(element.dom().nodeValue) : Option.none(); + }; + var browser = $_2hq237mje5o2pvu.detect().browser; + var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe; + var set = function (element, value) { + if (!is(element)) + throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + element.dom().nodeValue = value; + }; + return { + get: get, + getOption: getOption, + set: set + }; + } + + var api = NodeValue($_95wn8qzje5o2px0.isText, 'text'); + var get$2 = function (element) { + return api.get(element); + }; + var getOption = function (element) { + return api.getOption(element); + }; + var set$2 = function (element, value) { + api.set(element, value); + }; + var $_3600ts2rje5o2qa7 = { + get: get$2, + getOption: getOption, + set: set$2 + }; + + var getLastChildren = function (elm) { + var children = []; + var rawNode = elm.dom(); + while (rawNode) { + children.push($_5tcb2dyje5o2pwu.fromDom(rawNode)); + rawNode = rawNode.lastChild; + } + return children; + }; + var removeTrailingBr = function (elm) { + var allBrs = $_b4jhpu2gje5o2q8e.descendants(elm, 'br'); + var brs = $_bwcteb4je5o2pl4.filter(getLastChildren(elm).slice(-1), isBr); + if (allBrs.length === brs.length) { + $_bwcteb4je5o2pl4.each(brs, $_cr1seh2pje5o2qa1.remove); + } + }; + var fillWithPaddingBr = function (elm) { + $_cr1seh2pje5o2qa1.empty(elm); + $_elbl2s2oje5o2q9z.append(elm, $_5tcb2dyje5o2pwu.fromHtml('<br data-mce-bogus="1">')); + }; + var isPaddingContents = function (elm) { + return $_95wn8qzje5o2px0.isText(elm) ? $_3600ts2rje5o2qa7.get(elm) === '\xA0' : isBr(elm); + }; + var isPaddedElement = function (elm) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.children(elm), isPaddingContents).length === 1; + }; + var trimBlockTrailingBr = function (elm) { + $_a6mttx17je5o2pyd.lastChild(elm).each(function (lastChild) { + $_a6mttx17je5o2pyd.prevSibling(lastChild).each(function (lastChildPrevSibling) { + if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) { + $_cr1seh2pje5o2qa1.remove(lastChild); + } + }); + }); + }; + var $_4kbg8z2nje5o2q9s = { + removeTrailingBr: removeTrailingBr, + fillWithPaddingBr: fillWithPaddingBr, + isPaddedElement: isPaddedElement, + trimBlockTrailingBr: trimBlockTrailingBr + }; + + var makeMap$3 = $_a5gegtjje5o2pum.makeMap; + function Writer (settings) { + var html = []; + var indent, indentBefore, indentAfter, encode, htmlOutput; + settings = settings || {}; + indent = settings.indent; + indentBefore = makeMap$3(settings.indent_before || ''); + indentAfter = makeMap$3(settings.indent_after || ''); + encode = $_fzh4ld1rje5o2q0t.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities); + htmlOutput = settings.element_format === 'html'; + return { + start: function (name, attrs, empty) { + var i, l, attr, value; + if (indent && indentBefore[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + html.push('<', name); + if (attrs) { + for (i = 0, l = attrs.length; i < l; i++) { + attr = attrs[i]; + html.push(' ', attr.name, '="', encode(attr.value, true), '"'); + } + } + if (!empty || htmlOutput) { + html[html.length] = '>'; + } else { + html[html.length] = ' />'; + } + if (empty && indent && indentAfter[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + }, + end: function (name) { + var value; + html.push('</', name, '>'); + if (indent && indentAfter[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + }, + text: function (text, raw) { + if (text.length > 0) { + html[html.length] = raw ? text : encode(text); + } + }, + cdata: function (text) { + html.push('<![CDATA[', text, ']]>'); + }, + comment: function (text) { + html.push('<!--', text, '-->'); + }, + pi: function (name, text) { + if (text) { + html.push('<?', name, ' ', encode(text), '?>'); + } else { + html.push('<?', name, '?>'); + } + if (indent) { + html.push('\n'); + } + }, + doctype: function (text) { + html.push('<!DOCTYPE', text, '>', indent ? '\n' : ''); + }, + reset: function () { + html.length = 0; + }, + getContent: function () { + return html.join('').replace(/\n$/, ''); + } + }; + } + + function HtmlSerializer (settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var writer = Writer(settings); + settings = settings || {}; + settings.validate = 'validate' in settings ? settings.validate : true; + var serialize = function (node) { + var handlers, validate; + validate = settings.validate; + handlers = { + 3: function (node) { + writer.text(node.value, node.raw); + }, + 8: function (node) { + writer.comment(node.value); + }, + 7: function (node) { + writer.pi(node.name, node.value); + }, + 10: function (node) { + writer.doctype(node.value); + }, + 4: function (node) { + writer.cdata(node.value); + }, + 11: function (node) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + } + }; + writer.reset(); + var walk = function (node) { + var handler = handlers[node.type]; + var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule; + if (!handler) { + name = node.name; + isEmpty = node.shortEnded; + attrs = node.attributes; + if (validate && attrs && attrs.length > 1) { + sortedAttrs = []; + sortedAttrs.map = {}; + elementRule = schema.getElementRule(node.name); + if (elementRule) { + for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) { + attrName = elementRule.attributesOrder[i]; + if (attrName in attrs.map) { + attrValue = attrs.map[attrName]; + sortedAttrs.map[attrName] = attrValue; + sortedAttrs.push({ + name: attrName, + value: attrValue + }); + } + } + for (i = 0, l = attrs.length; i < l; i++) { + attrName = attrs[i].name; + if (!(attrName in sortedAttrs.map)) { + attrValue = attrs.map[attrName]; + sortedAttrs.map[attrName] = attrValue; + sortedAttrs.push({ + name: attrName, + value: attrValue + }); + } + } + attrs = sortedAttrs; + } + } + writer.start(node.name, attrs, isEmpty); + if (!isEmpty) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + writer.end(name); + } + } else { + handler(node); + } + }; + if (node.type === 1 && !settings.inner) { + walk(node); + } else { + handlers[11](node); + } + return writer.getContent(); + }; + return { serialize: serialize }; + } + + var createRange$1 = function (sc, so, ec, eo) { + var rng = document.createRange(); + rng.setStart(sc, so); + rng.setEnd(ec, eo); + return rng; + }; + var normalizeBlockSelectionRange = function (rng) { + var startPos = CaretPosition$1.fromRangeStart(rng); + var endPos = CaretPosition$1.fromRangeEnd(rng); + var rootNode = rng.commonAncestorContainer; + return $_g2kzjo2bje5o2q7n.fromPosition(false, rootNode, endPos).map(function (newEndPos) { + if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) { + return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset()); + } else { + return rng; + } + }).getOr(rng); + }; + var normalizeBlockSelection = function (rng) { + return rng.collapsed ? rng : normalizeBlockSelectionRange(rng); + }; + var normalize = function (rng) { + return normalizeBlockSelection(rng); + }; + var $_8xjhg22vje5o2qak = { normalize: normalize }; + + var isTableCell$2 = $_9owqcy1qje5o2q0e.matchNodeNames('td th'); + var validInsertion = function (editor, value, parentNode) { + if (parentNode.getAttribute('data-mce-bogus') === 'all') { + parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode); + } else { + var node = parentNode.firstChild; + var node2 = parentNode.lastChild; + if (!node || node === node2 && node.nodeName === 'BR') { + editor.dom.setHTML(parentNode, value); + } else { + editor.selection.setContent(value); + } + } + }; + var trimBrsFromTableCell = function (dom, elm) { + Option.from(dom.getParent(elm, 'td,th')).map($_5tcb2dyje5o2pwu.fromDom).each($_4kbg8z2nje5o2q9s.trimBlockTrailingBr); + }; + var insertHtmlAtCaret = function (editor, value, details) { + var parser, serializer, parentNode, rootNode, fragment, args; + var marker, rng, node, node2, bookmarkHtml, merge; + var textInlineElements = editor.schema.getTextInlineElements(); + var selection = editor.selection, dom = editor.dom; + var trimOrPaddLeftRight = function (html) { + var rng, container, offset; + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + var hasSiblingText = function (siblingName) { + return container[siblingName] && container[siblingName].nodeType === 3; + }; + if (container.nodeType === 3) { + if (offset > 0) { + html = html.replace(/^ /, ' '); + } else if (!hasSiblingText('previousSibling')) { + html = html.replace(/^ /, ' '); + } + if (offset < container.length) { + html = html.replace(/ (<br>|)$/, ' '); + } else if (!hasSiblingText('nextSibling')) { + html = html.replace(/( | )(<br>|)$/, ' '); + } + } + return html; + }; + var trimNbspAfterDeleteAndPaddValue = function () { + var rng, container, offset; + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + if (container.nodeType === 3 && rng.collapsed) { + if (container.data[offset] === '\xA0') { + container.deleteData(offset, 1); + if (!/[\u00a0| ]$/.test(value)) { + value += ' '; + } + } else if (container.data[offset - 1] === '\xA0') { + container.deleteData(offset - 1, 1); + if (!/[\u00a0| ]$/.test(value)) { + value = ' ' + value; + } + } + } + }; + var reduceInlineTextElements = function () { + if (merge) { + var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom); + $_a5gegtjje5o2pum.each(dom.select('*[data-mce-fragment]'), function (node) { + for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) { + if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) { + dom.remove(node, true); + } + } + }); + } + }; + var markFragmentElements = function (fragment) { + var node = fragment; + while (node = node.walk()) { + if (node.type === 1) { + node.attr('data-mce-fragment', '1'); + } + } + }; + var umarkFragmentElements = function (elm) { + $_a5gegtjje5o2pum.each(elm.getElementsByTagName('*'), function (elm) { + elm.removeAttribute('data-mce-fragment'); + }); + }; + var isPartOfFragment = function (node) { + return !!node.getAttribute('data-mce-fragment'); + }; + var canHaveChildren = function (node) { + return node && !editor.schema.getShortEndedElements()[node.nodeName]; + }; + var moveSelectionToMarker = function (marker) { + var parentEditableFalseElm, parentBlock, nextRng; + var getContentEditableFalseParent = function (node) { + var root = editor.getBody(); + for (; node && node !== root; node = node.parentNode) { + if (editor.dom.getContentEditable(node) === 'false') { + return node; + } + } + return null; + }; + if (!marker) { + return; + } + selection.scrollIntoView(marker); + parentEditableFalseElm = getContentEditableFalseParent(marker); + if (parentEditableFalseElm) { + dom.remove(marker); + selection.select(parentEditableFalseElm); + return; + } + rng = dom.createRng(); + node = marker.previousSibling; + if (node && node.nodeType === 3) { + rng.setStart(node, node.nodeValue.length); + if (!$_9bd8pn9je5o2pp2.ie) { + node2 = marker.nextSibling; + if (node2 && node2.nodeType === 3) { + node.appendData(node2.data); + node2.parentNode.removeChild(node2); + } + } + } else { + rng.setStartBefore(marker); + rng.setEndBefore(marker); + } + var findNextCaretRng = function (rng) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + var caretWalker = CaretWalker(editor.getBody()); + caretPos = caretWalker.next(caretPos); + if (caretPos) { + return caretPos.toRange(); + } + }; + parentBlock = dom.getParent(marker, dom.isBlock); + dom.remove(marker); + if (parentBlock && dom.isEmpty(parentBlock)) { + editor.$(parentBlock).empty(); + rng.setStart(parentBlock, 0); + rng.setEnd(parentBlock, 0); + if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) { + rng = nextRng; + dom.remove(parentBlock); + } else { + dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' })); + } + } + selection.setRng(rng); + }; + if (/^ | $/.test(value)) { + value = trimOrPaddLeftRight(value); + } + parser = editor.parser; + merge = details.merge; + serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema); + bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">​</span>'; + args = { + content: value, + format: 'html', + selection: true, + paste: details.paste + }; + args = editor.fire('BeforeSetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('SetContent', { + content: args.content, + format: 'html', + selection: true, + paste: details.paste + }); + return; + } + value = args.content; + if (value.indexOf('{$caret}') === -1) { + value += '{$caret}'; + } + value = value.replace(/\{\$caret\}/, bookmarkHtml); + rng = selection.getRng(); + var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null); + var body = editor.getBody(); + if (caretElement === body && selection.isCollapsed()) { + if (dom.isBlock(body.firstChild) && canHaveChildren(body.firstChild) && dom.isEmpty(body.firstChild)) { + rng = dom.createRng(); + rng.setStart(body.firstChild, 0); + rng.setEnd(body.firstChild, 0); + selection.setRng(rng); + } + } + if (!selection.isCollapsed()) { + editor.selection.setRng($_8xjhg22vje5o2qak.normalize(editor.selection.getRng())); + editor.getDoc().execCommand('Delete', false, null); + trimNbspAfterDeleteAndPaddValue(); + } + parentNode = selection.getNode(); + var parserArgs = { + context: parentNode.nodeName.toLowerCase(), + data: details.data, + insert: true + }; + fragment = parser.parse(value, parserArgs); + if (details.paste === true && $_3j1y5o1xje5o2q4o.isListFragment(editor.schema, fragment) && $_3j1y5o1xje5o2q4o.isParentBlockLi(dom, parentNode)) { + rng = $_3j1y5o1xje5o2q4o.insertAtCaret(serializer, dom, editor.selection.getRng(true), fragment); + editor.selection.setRng(rng); + editor.fire('SetContent', args); + return; + } + markFragmentElements(fragment); + node = fragment.lastChild; + if (node.attr('id') === 'mce_marker') { + marker = node; + for (node = node.prev; node; node = node.walk(true)) { + if (node.type === 3 || !dom.isBlock(node.name)) { + if (editor.schema.isValidChild(node.parent.name, 'span')) { + node.parent.insert(marker, node, node.name === 'br'); + } + break; + } + } + } + editor._selectionOverrides.showBlockCaretContainer(parentNode); + if (!parserArgs.invalid) { + value = serializer.serialize(fragment); + validInsertion(editor, value, parentNode); + } else { + selection.setContent(bookmarkHtml); + parentNode = selection.getNode(); + rootNode = editor.getBody(); + if (parentNode.nodeType === 9) { + parentNode = node = rootNode; + } else { + node = parentNode; + } + while (node !== rootNode) { + parentNode = node; + node = node.parentNode; + } + value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode); + value = serializer.serialize(parser.parse(value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function () { + return serializer.serialize(fragment); + }))); + if (parentNode === rootNode) { + dom.setHTML(rootNode, value); + } else { + dom.setOuterHTML(parentNode, value); + } + } + reduceInlineTextElements(); + moveSelectionToMarker(dom.get('mce_marker')); + umarkFragmentElements(editor.getBody()); + trimBrsFromTableCell(editor.dom, editor.selection.getStart()); + editor.fire('SetContent', args); + editor.addVisual(); + }; + var processValue = function (value) { + var details; + if (typeof value !== 'string') { + details = $_a5gegtjje5o2pum.extend({ + paste: value.paste, + data: { paste: value.paste } + }, value); + return { + content: value.content, + details: details + }; + } + return { + content: value, + details: {} + }; + }; + var insertAtCaret$1 = function (editor, value) { + var result = processValue(value); + insertHtmlAtCaret(editor, result.content, result.details); + }; + var $_d42uuu1wje5o2q4b = { insertAtCaret: insertAtCaret$1 }; + + function ClosestOrAncestor (is, ancestor, scope, a, isRoot) { + return is(scope, a) ? Option.some(scope) : $_be3q8w12je5o2pxj.isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot); + } + + var first$1 = function (predicate) { + return descendant($_484buq15je5o2py8.body(), predicate); + }; + var ancestor = function (scope, predicate, isRoot) { + var element = scope.dom(); + var stop = $_be3q8w12je5o2pxj.isFunction(isRoot) ? isRoot : $_enfhkv6je5o2ply.constant(false); + while (element.parentNode) { + element = element.parentNode; + var el = $_5tcb2dyje5o2pwu.fromDom(element); + if (predicate(el)) + return Option.some(el); + else if (stop(el)) + break; + } + return Option.none(); + }; + var closest = function (scope, predicate, isRoot) { + var is = function (scope) { + return predicate(scope); + }; + return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot); + }; + var sibling$1 = function (scope, predicate) { + var element = scope.dom(); + if (!element.parentNode) + return Option.none(); + return child$1($_5tcb2dyje5o2pwu.fromDom(element.parentNode), function (x) { + return !$_7oppmo1dje5o2pz1.eq(scope, x) && predicate(x); + }); + }; + var child$1 = function (scope, predicate) { + var result = $_bwcteb4je5o2pl4.find(scope.dom().childNodes, $_enfhkv6je5o2ply.compose(predicate, $_5tcb2dyje5o2pwu.fromDom)); + return result.map($_5tcb2dyje5o2pwu.fromDom); + }; + var descendant = function (scope, predicate) { + var descend = function (element) { + for (var i = 0; i < element.childNodes.length; i++) { + if (predicate($_5tcb2dyje5o2pwu.fromDom(element.childNodes[i]))) + return Option.some($_5tcb2dyje5o2pwu.fromDom(element.childNodes[i])); + var res = descend(element.childNodes[i]); + if (res.isSome()) + return res; + } + return Option.none(); + }; + return descend(scope.dom()); + }; + var $_au2qfe30je5o2qb4 = { + first: first$1, + ancestor: ancestor, + closest: closest, + sibling: sibling$1, + child: child$1, + descendant: descendant + }; + + var sectionResult = $_86drv18je5o2pyn.immutable('sections', 'settings'); + var detection = $_2hq237mje5o2pvu.detect(); + var isTouch = detection.deviceType.isTouch(); + var mobilePlugins = [ + 'lists', + 'autolink', + 'autosave' + ]; + var defaultMobileSettings = { theme: 'mobile' }; + var normalizePlugins = function (plugins) { + var pluginNames = $_be3q8w12je5o2pxj.isArray(plugins) ? plugins.join(' ') : plugins; + var trimmedPlugins = $_bwcteb4je5o2pl4.map($_be3q8w12je5o2pxj.isString(pluginNames) ? pluginNames.split(' ') : [], $_6dh61xvje5o2pwo.trim); + return $_bwcteb4je5o2pl4.filter(trimmedPlugins, function (item) { + return item.length > 0; + }); + }; + var filterMobilePlugins = function (plugins) { + return $_bwcteb4je5o2pl4.filter(plugins, $_enfhkv6je5o2ply.curry($_bwcteb4je5o2pl4.contains, mobilePlugins)); + }; + var extractSections = function (keys, settings) { + var result = $_8v44sy13je5o2pxm.bifilter(settings, function (value, key) { + return $_bwcteb4je5o2pl4.contains(keys, key); + }); + return sectionResult(result.t, result.f); + }; + var getSection = function (sectionResult, name, defaults) { + var sections = sectionResult.sections(); + var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {}; + return $_a5gegtjje5o2pum.extend({}, defaults, sectionSettings); + }; + var hasSection = function (sectionResult, name) { + return sectionResult.sections().hasOwnProperty(name); + }; + var getDefaultSettings = function (id, documentBaseUrl, editor) { + return { + id: id, + theme: 'modern', + delta_width: 0, + delta_height: 0, + popup_css: '', + plugins: '', + document_base_url: documentBaseUrl, + add_form_submit_trigger: true, + submit_patch: true, + add_unload_trigger: true, + convert_urls: true, + relative_urls: true, + remove_script_host: true, + object_resizing: true, + doctype: '<!DOCTYPE html>', + visual: true, + font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large', + font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%', + forced_root_block: 'p', + hidden_input: true, + padd_empty_editor: true, + render_ui: true, + indentation: '30px', + inline_styles: true, + convert_fonts_to_spans: true, + indent: 'simple', + indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', + indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', + entity_encoding: 'named', + url_converter: editor.convertURL, + url_converter_scope: editor, + ie7_compat: true + }; + }; + var getExternalPlugins = function (overrideSettings, settings) { + var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {}; + if (overrideSettings && overrideSettings.external_plugins) { + return $_a5gegtjje5o2pum.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins); + } else { + return userDefinedExternalPlugins; + } + }; + var combinePlugins = function (forcedPlugins, plugins) { + return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins)); + }; + var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) { + var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins); + var plugins = normalizePlugins(settings.plugins); + var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins; + var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins); + return $_a5gegtjje5o2pum.extend(settings, { plugins: combinedPlugins.join(' ') }); + }; + var isOnMobile = function (isTouchDevice, sectionResult) { + var isInline = sectionResult.settings().inline; + return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline; + }; + var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) { + var sectionResult = extractSections(['mobile'], settings); + var extendedSettings = $_a5gegtjje5o2pum.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, { + validate: true, + content_editable: sectionResult.settings().inline, + external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings()) + }); + return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings); + }; + var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) { + var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor); + return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings); + }; + var getFiltered = function (predicate, editor, name) { + return Option.from(editor.settings[name]).filter(predicate); + }; + var getString = $_enfhkv6je5o2ply.curry(getFiltered, $_be3q8w12je5o2pxj.isString); + var getParamObject = function (value) { + var output = {}; + if (typeof value === 'string') { + $_bwcteb4je5o2pl4.each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (value) { + value = value.split('='); + if (value.length > 1) { + output[$_a5gegtjje5o2pum.trim(value[0])] = $_a5gegtjje5o2pum.trim(value[1]); + } else { + output[$_a5gegtjje5o2pum.trim(value[0])] = $_a5gegtjje5o2pum.trim(value); + } + }); + } else { + output = value; + } + return output; + }; + var getParam = function (editor, name, defaultVal, type) { + var value = name in editor.settings ? editor.settings[name] : defaultVal; + if (type === 'hash') { + return getParamObject(value); + } else if (type === 'string') { + return getFiltered($_be3q8w12je5o2pxj.isString, editor, name).getOr(defaultVal); + } else if (type === 'number') { + return getFiltered($_be3q8w12je5o2pxj.isNumber, editor, name).getOr(defaultVal); + } else if (type === 'boolean') { + return getFiltered($_be3q8w12je5o2pxj.isBoolean, editor, name).getOr(defaultVal); + } else if (type === 'object') { + return getFiltered($_be3q8w12je5o2pxj.isObject, editor, name).getOr(defaultVal); + } else if (type === 'array') { + return getFiltered($_be3q8w12je5o2pxj.isArray, editor, name).getOr(defaultVal); + } else if (type === 'function') { + return getFiltered($_be3q8w12je5o2pxj.isFunction, editor, name).getOr(defaultVal); + } else { + return value; + } + }; + + var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/; + var hasStrongRtl = function (text) { + return strongRtl.test(text); + }; + + var isInlineTarget = function (editor, elm) { + var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code'); + return $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(elm), selector); + }; + var isRtl = function (element) { + return DOMUtils.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent); + }; + var findInlineParents = function (isInlineTarget, rootNode, pos) { + return $_bwcteb4je5o2pl4.filter(DOMUtils.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget); + }; + var findRootInline = function (isInlineTarget, rootNode, pos) { + var parents = findInlineParents(isInlineTarget, rootNode, pos); + return Option.from(parents[parents.length - 1]); + }; + var hasSameParentBlock = function (rootNode, node1, node2) { + var block1 = getParentBlock(node1, rootNode); + var block2 = getParentBlock(node2, rootNode); + return block1 && block1 === block2; + }; + var isAtZwsp = function (pos) { + return isBeforeInline(pos) || isAfterInline(pos); + }; + var normalizePosition = function (forward, pos) { + var container = pos.container(), offset = pos.offset(); + if (forward) { + if (isCaretContainerInline(container)) { + if ($_9owqcy1qje5o2q0e.isText(container.nextSibling)) { + return CaretPosition$1(container.nextSibling, 0); + } else { + return CaretPosition$1.after(container); + } + } else { + return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos; + } + } else { + if (isCaretContainerInline(container)) { + if ($_9owqcy1qje5o2q0e.isText(container.previousSibling)) { + return CaretPosition$1(container.previousSibling, container.previousSibling.data.length); + } else { + return CaretPosition$1.before(container); + } + } else { + return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos; + } + } + }; + var normalizeForwards = $_enfhkv6je5o2ply.curry(normalizePosition, true); + var normalizeBackwards = $_enfhkv6je5o2ply.curry(normalizePosition, false); + var $_6skw9732je5o2qbp = { + isInlineTarget: isInlineTarget, + findRootInline: findRootInline, + isRtl: isRtl, + isAtZwsp: isAtZwsp, + normalizePosition: normalizePosition, + normalizeForwards: normalizeForwards, + normalizeBackwards: normalizeBackwards, + hasSameParentBlock: hasSameParentBlock + }; + + var isBeforeRoot = function (rootNode) { + return function (elm) { + return $_7oppmo1dje5o2pz1.eq(rootNode, $_5tcb2dyje5o2pwu.fromDom(elm.dom().parentNode)); + }; + }; + var getParentBlock$1 = function (rootNode, elm) { + return $_7oppmo1dje5o2pz1.contains(rootNode, elm) ? $_au2qfe30je5o2qb4.closest(elm, function (element) { + return isTextBlock(element) || isListItem(element); + }, isBeforeRoot(rootNode)) : Option.none(); + }; + var placeCaretInEmptyBody = function (editor) { + var body = editor.getBody(); + var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body; + editor.selection.setCursorLocation(node, 0); + }; + var paddEmptyBody = function (editor) { + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + placeCaretInEmptyBody(editor); + } + }; + var willDeleteLastPositionInElement = function (forward, fromPos, elm) { + return $_c8weyc2eje5o2q85.liftN([ + $_g2kzjo2bje5o2q7n.firstPositionIn(elm), + $_g2kzjo2bje5o2q7n.lastPositionIn(elm) + ], function (firstPos, lastPos) { + var normalizedFirstPos = $_6skw9732je5o2qbp.normalizePosition(true, firstPos); + var normalizedLastPos = $_6skw9732je5o2qbp.normalizePosition(false, lastPos); + var normalizedFromPos = $_6skw9732je5o2qbp.normalizePosition(false, fromPos); + if (forward) { + return $_g2kzjo2bje5o2q7n.nextPosition(elm, normalizedFromPos).map(function (nextPos) { + return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos); + }).getOr(false); + } else { + return $_g2kzjo2bje5o2q7n.prevPosition(elm, normalizedFromPos).map(function (prevPos) { + return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos); + }).getOr(false); + } + }).getOr(true); + }; + var $_7twey62zje5o2qay = { + getParentBlock: getParentBlock$1, + paddEmptyBody: paddEmptyBody, + willDeleteLastPositionInElement: willDeleteLastPositionInElement + }; + + var first$2 = function (selector) { + return $_87zu5k1fje5o2pz9.one(selector); + }; + var ancestor$1 = function (scope, selector, isRoot) { + return $_au2qfe30je5o2qb4.ancestor(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }, isRoot); + }; + var sibling$2 = function (scope, selector) { + return $_au2qfe30je5o2qb4.sibling(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var child$2 = function (scope, selector) { + return $_au2qfe30je5o2qb4.child(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var descendant$1 = function (scope, selector) { + return $_87zu5k1fje5o2pz9.one(selector, scope); + }; + var closest$1 = function (scope, selector, isRoot) { + return ClosestOrAncestor($_87zu5k1fje5o2pz9.is, ancestor$1, scope, selector, isRoot); + }; + var $_9fzewc37je5o2qck = { + first: first$2, + ancestor: ancestor$1, + sibling: sibling$2, + child: child$2, + descendant: descendant$1, + closest: closest$1 + }; + + var any = function (selector) { + return $_9fzewc37je5o2qck.first(selector).isSome(); + }; + var ancestor$2 = function (scope, selector, isRoot) { + return $_9fzewc37je5o2qck.ancestor(scope, selector, isRoot).isSome(); + }; + var sibling$3 = function (scope, selector) { + return $_9fzewc37je5o2qck.sibling(scope, selector).isSome(); + }; + var child$3 = function (scope, selector) { + return $_9fzewc37je5o2qck.child(scope, selector).isSome(); + }; + var descendant$2 = function (scope, selector) { + return $_9fzewc37je5o2qck.descendant(scope, selector).isSome(); + }; + var closest$2 = function (scope, selector, isRoot) { + return $_9fzewc37je5o2qck.closest(scope, selector, isRoot).isSome(); + }; + var $_9o2t0k36je5o2qci = { + any: any, + ancestor: ancestor$2, + sibling: sibling$3, + child: child$3, + descendant: descendant$2, + closest: closest$2 + }; + + var hasWhitespacePreserveParent = function (rootNode, node) { + var rootElement = $_5tcb2dyje5o2pwu.fromDom(rootNode); + var startNode = $_5tcb2dyje5o2pwu.fromDom(node); + return $_9o2t0k36je5o2qci.ancestor(startNode, 'pre,code', $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, rootElement)); + }; + var isWhitespace = function (rootNode, node) { + return $_9owqcy1qje5o2q0e.isText(node) && /^[ \t\r\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false; + }; + var isNamedAnchor = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name'); + }; + var isContent = function (rootNode, node) { + return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node); + }; + var isBookmark = $_9owqcy1qje5o2q0e.hasAttribute('data-mce-bookmark'); + var isBogus$2 = $_9owqcy1qje5o2q0e.hasAttribute('data-mce-bogus'); + var isBogusAll$1 = $_9owqcy1qje5o2q0e.hasAttributeValue('data-mce-bogus', 'all'); + var isEmptyNode = function (targetNode) { + var walker, node, brCount = 0; + if (isContent(targetNode, targetNode)) { + return false; + } else { + node = targetNode.firstChild; + if (!node) { + return true; + } + walker = new TreeWalker(node, targetNode); + do { + if (isBogusAll$1(node)) { + node = walker.next(true); + continue; + } + if (isBogus$2(node)) { + node = walker.next(); + continue; + } + if ($_9owqcy1qje5o2q0e.isBr(node)) { + brCount++; + node = walker.next(); + continue; + } + if (isContent(targetNode, node)) { + return false; + } + node = walker.next(); + } while (node); + return brCount <= 1; + } + }; + var isEmpty = function (elm) { + return isEmptyNode(elm.dom()); + }; + var $_dizx5c35je5o2qcb = { isEmpty: isEmpty }; + + var BlockPosition = $_86drv18je5o2pyn.immutable('block', 'position'); + var BlockBoundary = $_86drv18je5o2pyn.immutable('from', 'to'); + var getBlockPosition = function (rootNode, pos) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(rootNode); + var containerElm = $_5tcb2dyje5o2pwu.fromDom(pos.container()); + return $_7twey62zje5o2qay.getParentBlock(rootElm, containerElm).map(function (block) { + return BlockPosition(block, pos); + }); + }; + var isDifferentBlocks = function (blockBoundary) { + return $_7oppmo1dje5o2pz1.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false; + }; + var hasSameParent = function (blockBoundary) { + return $_a6mttx17je5o2pyd.parent(blockBoundary.from().block()).bind(function (parent1) { + return $_a6mttx17je5o2pyd.parent(blockBoundary.to().block()).filter(function (parent2) { + return $_7oppmo1dje5o2pz1.eq(parent1, parent2); + }); + }).isSome(); + }; + var isEditable = function (blockBoundary) { + return $_9owqcy1qje5o2q0e.isContentEditableFalse(blockBoundary.from().block()) === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(blockBoundary.to().block()) === false; + }; + var skipLastBr = function (rootNode, forward, blockPosition) { + if ($_9owqcy1qje5o2q0e.isBr(blockPosition.position().getNode()) && $_dizx5c35je5o2qcb.isEmpty(blockPosition.block()) === false) { + return $_g2kzjo2bje5o2q7n.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) { + if (lastPositionInBlock.isEqual(blockPosition.position())) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) { + return getBlockPosition(rootNode, to); + }); + } else { + return Option.some(blockPosition); + } + }).getOr(blockPosition); + } else { + return blockPosition; + } + }; + var readFromRange = function (rootNode, forward, rng) { + var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng)); + var toBlockPos = fromBlockPos.bind(function (blockPos) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) { + return getBlockPosition(rootNode, to).map(function (blockPos) { + return skipLastBr(rootNode, forward, blockPos); + }); + }); + }); + return $_c8weyc2eje5o2q85.liftN([ + fromBlockPos, + toBlockPos + ], BlockBoundary).filter(function (blockBoundary) { + return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary); + }); + }; + var read = function (rootNode, forward, rng) { + return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none(); + }; + var $_8rdvj02yje5o2qar = { read: read }; + + var dropLast = function (xs) { + return xs.slice(0, -1); + }; + var parentsUntil$1 = function (startNode, rootElm, predicate) { + if ($_7oppmo1dje5o2pz1.contains(rootElm, startNode)) { + return dropLast($_a6mttx17je5o2pyd.parents(startNode, function (elm) { + return predicate(elm) || $_7oppmo1dje5o2pz1.eq(elm, rootElm); + })); + } else { + return []; + } + }; + var parents$1 = function (startNode, rootElm) { + return parentsUntil$1(startNode, rootElm, $_enfhkv6je5o2ply.constant(false)); + }; + var parentsAndSelf = function (startNode, rootElm) { + return [startNode].concat(parents$1(startNode, rootElm)); + }; + var $_yqcmh39je5o2qcw = { + parentsUntil: parentsUntil$1, + parents: parents$1, + parentsAndSelf: parentsAndSelf + }; + + var getChildrenUntilBlockBoundary = function (block) { + var children = $_a6mttx17je5o2pyd.children(block); + return $_bwcteb4je5o2pl4.findIndex(children, isBlock).fold(function () { + return children; + }, function (index) { + return children.slice(0, index); + }); + }; + var extractChildren = function (block) { + var children = getChildrenUntilBlockBoundary(block); + $_bwcteb4je5o2pl4.each(children, function (node) { + $_cr1seh2pje5o2qa1.remove(node); + }); + return children; + }; + var trimBr = function (first, block) { + $_g2kzjo2bje5o2q7n.positionIn(first, block.dom()).each(function (position) { + var node = position.getNode(); + if ($_9owqcy1qje5o2q0e.isBr(node)) { + $_cr1seh2pje5o2qa1.remove($_5tcb2dyje5o2pwu.fromDom(node)); + } + }); + }; + var removeEmptyRoot = function (rootNode, block) { + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(block, rootNode); + return $_bwcteb4je5o2pl4.find(parents.reverse(), $_dizx5c35je5o2qcb.isEmpty).each($_cr1seh2pje5o2qa1.remove); + }; + var findParentInsertPoint = function (toBlock, block) { + var parents = $_a6mttx17je5o2pyd.parents(block, function (elm) { + return $_7oppmo1dje5o2pz1.eq(elm, toBlock); + }); + return Option.from(parents[parents.length - 2]); + }; + var getInsertionPoint = function (fromBlock, toBlock) { + if ($_7oppmo1dje5o2pz1.contains(toBlock, fromBlock)) { + return $_a6mttx17je5o2pyd.parent(fromBlock).bind(function (parent) { + return $_7oppmo1dje5o2pz1.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock); + }); + } else { + return Option.none(); + } + }; + var mergeBlockInto = function (rootNode, fromBlock, toBlock) { + if ($_dizx5c35je5o2qcb.isEmpty(toBlock)) { + $_cr1seh2pje5o2qa1.remove(toBlock); + if ($_dizx5c35je5o2qcb.isEmpty(fromBlock)) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr(fromBlock); + } + return $_g2kzjo2bje5o2q7n.firstPositionIn(fromBlock.dom()); + } else { + trimBr(true, fromBlock); + trimBr(false, toBlock); + var children_1 = extractChildren(fromBlock); + return getInsertionPoint(fromBlock, toBlock).fold(function () { + removeEmptyRoot(rootNode, fromBlock); + var position = $_g2kzjo2bje5o2q7n.lastPositionIn(toBlock.dom()); + $_bwcteb4je5o2pl4.each(children_1, function (node) { + $_elbl2s2oje5o2q9z.append(toBlock, node); + }); + return position; + }, function (target) { + var position = $_g2kzjo2bje5o2q7n.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom())); + $_bwcteb4je5o2pl4.each(children_1, function (node) { + $_elbl2s2oje5o2q9z.before(target, node); + }); + removeEmptyRoot(rootNode, fromBlock); + return position; + }); + } + }; + var mergeBlocks = function (rootNode, forward, block1, block2) { + return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2); + }; + var $_46j1ps38je5o2qcn = { mergeBlocks: mergeBlocks }; + + var backspaceDelete = function (editor, forward) { + var position; + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + position = $_8rdvj02yje5o2qar.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) { + return $_46j1ps38je5o2qcn.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block()); + }); + position.each(function (pos) { + editor.selection.setRng(pos.toRange()); + }); + return position.isSome(); + }; + var $_3qfe0j2xje5o2qao = { backspaceDelete: backspaceDelete }; + + var deleteRangeMergeBlocks = function (rootNode, selection) { + var rng = selection.getRng(); + return $_c8weyc2eje5o2q85.liftN([ + $_7twey62zje5o2qay.getParentBlock(rootNode, $_5tcb2dyje5o2pwu.fromDom(rng.startContainer)), + $_7twey62zje5o2qay.getParentBlock(rootNode, $_5tcb2dyje5o2pwu.fromDom(rng.endContainer)) + ], function (block1, block2) { + if ($_7oppmo1dje5o2pz1.eq(block1, block2) === false) { + rng.deleteContents(); + $_46j1ps38je5o2qcn.mergeBlocks(rootNode, true, block1, block2).each(function (pos) { + selection.setRng(pos.toRange()); + }); + return true; + } else { + return false; + } + }).getOr(false); + }; + var isRawNodeInTable = function (root, rawNode) { + var node = $_5tcb2dyje5o2pwu.fromDom(rawNode); + var isRoot = $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, root); + return $_au2qfe30je5o2qb4.ancestor(node, isTableCell, isRoot).isSome(); + }; + var isSelectionInTable = function (root, rng) { + return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer); + }; + var isEverythingSelected = function (root, rng) { + var noPrevious = $_g2kzjo2bje5o2q7n.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone(); + var noNext = $_g2kzjo2bje5o2q7n.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone(); + return !isSelectionInTable(root, rng) && noPrevious && noNext; + }; + var emptyEditor = function (editor) { + editor.setContent(''); + editor.selection.setCursorLocation(); + return true; + }; + var deleteRange = function (editor) { + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var rng = editor.selection.getRng(); + return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection); + }; + var backspaceDelete$1 = function (editor, forward) { + return editor.selection.isCollapsed() ? false : deleteRange(editor); + }; + var $_a476lo3aje5o2qd0 = { backspaceDelete: backspaceDelete$1 }; + + var generate = function (cases) { + if (!$_be3q8w12je5o2pxj.isArray(cases)) { + throw new Error('cases must be an array'); + } + if (cases.length === 0) { + throw new Error('there must be at least one case'); + } + var constructors = []; + var adt = {}; + $_bwcteb4je5o2pl4.each(cases, function (acase, count) { + var keys = $_8v44sy13je5o2pxm.keys(acase); + if (keys.length !== 1) { + throw new Error('one and only one name per case'); + } + var key = keys[0]; + var value = acase[key]; + if (adt[key] !== undefined) { + throw new Error('duplicate key detected:' + key); + } else if (key === 'cata') { + throw new Error('cannot have a case named cata (sorry)'); + } else if (!$_be3q8w12je5o2pxj.isArray(value)) { + throw new Error('case arguments must be an array'); + } + constructors.push(key); + adt[key] = function () { + var argLength = arguments.length; + if (argLength !== value.length) { + throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); + } + var args = new Array(argLength); + for (var i = 0; i < args.length; i++) + args[i] = arguments[i]; + var match = function (branches) { + var branchKeys = $_8v44sy13je5o2pxm.keys(branches); + if (constructors.length !== branchKeys.length) { + throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); + } + var allReqd = $_bwcteb4je5o2pl4.forall(constructors, function (reqKey) { + return $_bwcteb4je5o2pl4.contains(branchKeys, reqKey); + }); + if (!allReqd) + throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); + return branches[key].apply(null, args); + }; + return { + fold: function () { + if (arguments.length !== cases.length) { + throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length); + } + var target = arguments[count]; + return target.apply(null, args); + }, + match: match, + log: function (label) { + console.log(label, { + constructors: constructors, + constructor: key, + params: args + }); + } + }; + }; + }); + return adt; + }; + var $_e73lvt3dje5o2qdq = { generate: generate }; + + var isCompoundElement = function (node) { + return isTableCell($_5tcb2dyje5o2pwu.fromDom(node)) || isListItem($_5tcb2dyje5o2pwu.fromDom(node)); + }; + var DeleteAction = $_e73lvt3dje5o2qdq.generate([ + { remove: ['element'] }, + { moveToElement: ['element'] }, + { moveToPosition: ['position'] } + ]); + var isAtContentEditableBlockCaret = function (forward, from) { + var elm = from.getNode(forward === false); + var caretLocation = forward ? 'after' : 'before'; + return $_9owqcy1qje5o2q0e.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation; + }; + var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) { + var inSameBlock = function (elm) { + return isInline($_5tcb2dyje5o2pwu.fromDom(elm)) && !isInSameBlock(from, to, root); + }; + return getRelativeCefElm(!forward, from).fold(function () { + return getRelativeCefElm(forward, to).fold($_enfhkv6je5o2ply.constant(false), inSameBlock); + }, inSameBlock); + }; + var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) { + var toCefElm = to.getNode(forward === false); + return $_7twey62zje5o2qay.getParentBlock($_5tcb2dyje5o2pwu.fromDom(root), $_5tcb2dyje5o2pwu.fromDom(from.getNode())).map(function (blockElm) { + return $_dizx5c35je5o2qcb.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm); + }).orThunk(function () { + return Option.some(DeleteAction.moveToElement(toCefElm)); + }); + }; + var findCefPosition = function (root, forward, from) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, root, from).bind(function (to) { + if (isCompoundElement(to.getNode())) { + return Option.none(); + } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) { + return Option.none(); + } else if (forward && $_9owqcy1qje5o2q0e.isContentEditableFalse(to.getNode())) { + return deleteEmptyBlockOrMoveToCef(root, forward, from, to); + } else if (forward === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(to.getNode(true))) { + return deleteEmptyBlockOrMoveToCef(root, forward, from, to); + } else if (forward && isAfterContentEditableFalse(from)) { + return Option.some(DeleteAction.moveToPosition(to)); + } else if (forward === false && isBeforeContentEditableFalse(from)) { + return Option.some(DeleteAction.moveToPosition(to)); + } else { + return Option.none(); + } + }); + }; + var getContentEditableBlockAction = function (forward, elm) { + if (forward && $_9owqcy1qje5o2q0e.isContentEditableFalse(elm.nextSibling)) { + return Option.some(DeleteAction.moveToElement(elm.nextSibling)); + } else if (forward === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(elm.previousSibling)) { + return Option.some(DeleteAction.moveToElement(elm.previousSibling)); + } else { + return Option.none(); + } + }; + var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) { + return deleteAction.fold(function (elm) { + return Option.some(DeleteAction.remove(elm)); + }, function (elm) { + return Option.some(DeleteAction.moveToElement(elm)); + }, function (to) { + if (isInSameBlock(from, to, root)) { + return Option.none(); + } else { + return Option.some(DeleteAction.moveToPosition(to)); + } + }); + }; + var getContentEditableAction = function (root, forward, from) { + if (isAtContentEditableBlockCaret(forward, from)) { + return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () { + return findCefPosition(root, forward, from); + }, Option.some); + } else { + return findCefPosition(root, forward, from).bind(function (deleteAction) { + return skipMoveToActionFromInlineCefToContent(root, from, deleteAction); + }); + } + }; + var read$1 = function (root, forward, rng) { + var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng); + var from = CaretPosition$1.fromRangeStart(normalizedRange); + if (forward === false && isAfterContentEditableFalse(from)) { + return Option.some(DeleteAction.remove(from.getNode(true))); + } else if (forward && isBeforeContentEditableFalse(from)) { + return Option.some(DeleteAction.remove(from.getNode())); + } else { + return getContentEditableAction(root, forward, from); + } + }; + + var needsReposition = function (pos, elm) { + var container = pos.container(); + var offset = pos.offset(); + return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset(); + }; + var reposition = function (elm, pos) { + return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos; + }; + var beforeOrStartOf = function (node) { + return $_9owqcy1qje5o2q0e.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node); + }; + var afterOrEndOf = function (node) { + return $_9owqcy1qje5o2q0e.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node); + }; + var getPreviousSiblingCaretPosition = function (elm) { + if (isCaretCandidate(elm.previousSibling)) { + return Option.some(afterOrEndOf(elm.previousSibling)); + } else { + return elm.previousSibling ? $_g2kzjo2bje5o2q7n.lastPositionIn(elm.previousSibling) : Option.none(); + } + }; + var getNextSiblingCaretPosition = function (elm) { + if (isCaretCandidate(elm.nextSibling)) { + return Option.some(beforeOrStartOf(elm.nextSibling)); + } else { + return elm.nextSibling ? $_g2kzjo2bje5o2q7n.firstPositionIn(elm.nextSibling) : Option.none(); + } + }; + var findCaretPositionBackwardsFromElm = function (rootElement, elm) { + var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode); + return $_g2kzjo2bje5o2q7n.prevPosition(rootElement, startPosition).fold(function () { + return $_g2kzjo2bje5o2q7n.nextPosition(rootElement, CaretPosition$1.after(elm)); + }, Option.some); + }; + var findCaretPositionForwardsFromElm = function (rootElement, elm) { + return $_g2kzjo2bje5o2q7n.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () { + return $_g2kzjo2bje5o2q7n.prevPosition(rootElement, CaretPosition$1.before(elm)); + }, Option.some); + }; + var findCaretPositionBackwards = function (rootElement, elm) { + return getPreviousSiblingCaretPosition(elm).orThunk(function () { + return getNextSiblingCaretPosition(elm); + }).orThunk(function () { + return findCaretPositionBackwardsFromElm(rootElement, elm); + }); + }; + var findCaretPositionForward = function (rootElement, elm) { + return getNextSiblingCaretPosition(elm).orThunk(function () { + return getPreviousSiblingCaretPosition(elm); + }).orThunk(function () { + return findCaretPositionForwardsFromElm(rootElement, elm); + }); + }; + var findCaretPosition$1 = function (forward, rootElement, elm) { + return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm); + }; + var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) { + return findCaretPosition$1(forward, rootElement, elm).map($_enfhkv6je5o2ply.curry(reposition, elm)); + }; + var setSelection = function (editor, forward, pos) { + pos.fold(function () { + editor.focus(); + }, function (pos) { + editor.selection.setRng(pos.toRange(), forward); + }); + }; + var eqRawNode = function (rawNode) { + return function (elm) { + return elm.dom() === rawNode; + }; + }; + var isBlock$2 = function (editor, elm) { + return elm && editor.schema.getBlockElements().hasOwnProperty($_95wn8qzje5o2px0.name(elm)); + }; + var paddEmptyBlock = function (elm) { + if ($_dizx5c35je5o2qcb.isEmpty(elm)) { + var br = $_5tcb2dyje5o2pwu.fromHtml('<br data-mce-bogus="1">'); + $_cr1seh2pje5o2qa1.empty(elm); + $_elbl2s2oje5o2q9z.append(elm, br); + return Option.some(CaretPosition$1.before(br.dom())); + } else { + return Option.none(); + } + }; + var deleteNormalized = function (elm, afterDeletePosOpt) { + return $_c8weyc2eje5o2q85.liftN([ + $_a6mttx17je5o2pyd.prevSibling(elm), + $_a6mttx17je5o2pyd.nextSibling(elm), + afterDeletePosOpt + ], function (prev, next, afterDeletePos) { + var offset; + var prevNode = prev.dom(); + var nextNode = next.dom(); + if ($_9owqcy1qje5o2q0e.isText(prevNode) && $_9owqcy1qje5o2q0e.isText(nextNode)) { + offset = prevNode.data.length; + prevNode.appendData(nextNode.data); + $_cr1seh2pje5o2qa1.remove(next); + $_cr1seh2pje5o2qa1.remove(elm); + if (afterDeletePos.container() === nextNode) { + return CaretPosition$1(prevNode, offset); + } else { + return afterDeletePos; + } + } else { + $_cr1seh2pje5o2qa1.remove(elm); + return afterDeletePos; + } + }).orThunk(function () { + $_cr1seh2pje5o2qa1.remove(elm); + return afterDeletePosOpt; + }); + }; + var deleteElement = function (editor, forward, elm) { + var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom()); + var parentBlock = $_au2qfe30je5o2qb4.ancestor(elm, $_enfhkv6je5o2ply.curry(isBlock$2, editor), eqRawNode(editor.getBody())); + var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos); + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + editor.selection.setCursorLocation(); + } else { + parentBlock.bind(paddEmptyBlock).fold(function () { + setSelection(editor, forward, normalizedAfterDeletePos); + }, function (paddPos) { + setSelection(editor, forward, Option.some(paddPos)); + }); + } + }; + var $_8fuvl23eje5o2qdv = { deleteElement: deleteElement }; + + var deleteElement$1 = function (editor, forward) { + return function (element) { + editor._selectionOverrides.hideFakeCaret(); + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(element)); + return true; + }; + }; + var moveToElement = function (editor, forward) { + return function (element) { + var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element); + editor.selection.setRng(pos.toRange()); + return true; + }; + }; + var moveToPosition = function (editor) { + return function (pos) { + editor.selection.setRng(pos.toRange()); + return true; + }; + }; + var backspaceDeleteCaret = function (editor, forward) { + var result = read$1(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) { + return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor)); + }); + return result.getOr(false); + }; + var deleteOffscreenSelection = function (rootElement) { + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(rootElement, '.mce-offscreen-selection'), $_cr1seh2pje5o2qa1.remove); + }; + var backspaceDeleteRange = function (editor, forward) { + var selectedElement = editor.selection.getNode(); + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(selectedElement)) { + deleteOffscreenSelection($_5tcb2dyje5o2pwu.fromDom(editor.getBody())); + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(editor.selection.getNode())); + $_7twey62zje5o2qay.paddEmptyBody(editor); + return true; + } else { + return false; + } + }; + var getContentEditableRoot = function (root, node) { + while (node && node !== root) { + if ($_9owqcy1qje5o2q0e.isContentEditableTrue(node) || $_9owqcy1qje5o2q0e.isContentEditableFalse(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var paddEmptyElement = function (editor) { + var br; + var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode()); + if ($_9owqcy1qje5o2q0e.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) { + br = editor.dom.create('br', { 'data-mce-bogus': '1' }); + editor.dom.setHTML(ceRoot, ''); + ceRoot.appendChild(br); + editor.selection.setRng(CaretPosition$1.before(br).toRange()); + } + return true; + }; + var backspaceDelete$2 = function (editor, forward) { + if (editor.selection.isCollapsed()) { + return backspaceDeleteCaret(editor, forward); + } else { + return backspaceDeleteRange(editor, forward); + } + }; + var $_c7csnv3bje5o2qd6 = { + backspaceDelete: backspaceDelete$2, + paddEmptyElement: paddEmptyElement + }; + + var isText$8 = $_9owqcy1qje5o2q0e.isText; + var startsWithCaretContainer$1 = function (node) { + return isText$8(node) && node.data[0] === $_4md31c21je5o2q5f.ZWSP; + }; + var endsWithCaretContainer$1 = function (node) { + return isText$8(node) && node.data[node.data.length - 1] === $_4md31c21je5o2q5f.ZWSP; + }; + var createZwsp = function (node) { + return node.ownerDocument.createTextNode($_4md31c21je5o2q5f.ZWSP); + }; + var insertBefore$1 = function (node) { + if (isText$8(node.previousSibling)) { + if (endsWithCaretContainer$1(node.previousSibling)) { + return node.previousSibling; + } else { + node.previousSibling.appendData($_4md31c21je5o2q5f.ZWSP); + return node.previousSibling; + } + } else if (isText$8(node)) { + if (startsWithCaretContainer$1(node)) { + return node; + } else { + node.insertData(0, $_4md31c21je5o2q5f.ZWSP); + return node; + } + } else { + var newNode = createZwsp(node); + node.parentNode.insertBefore(newNode, node); + return newNode; + } + }; + var insertAfter$1 = function (node) { + if (isText$8(node.nextSibling)) { + if (startsWithCaretContainer$1(node.nextSibling)) { + return node.nextSibling; + } else { + node.nextSibling.insertData(0, $_4md31c21je5o2q5f.ZWSP); + return node.nextSibling; + } + } else if (isText$8(node)) { + if (endsWithCaretContainer$1(node)) { + return node; + } else { + node.appendData($_4md31c21je5o2q5f.ZWSP); + return node; + } + } else { + var newNode = createZwsp(node); + if (node.nextSibling) { + node.parentNode.insertBefore(newNode, node.nextSibling); + } else { + node.parentNode.appendChild(newNode); + } + return newNode; + } + }; + var insertInline$1 = function (before, node) { + return before ? insertBefore$1(node) : insertAfter$1(node); + }; + var insertInlineBefore = $_enfhkv6je5o2ply.curry(insertInline$1, true); + var insertInlineAfter = $_enfhkv6je5o2ply.curry(insertInline$1, false); + + var insertInlinePos = function (pos, before) { + if ($_9owqcy1qje5o2q0e.isText(pos.container())) { + return insertInline$1(before, pos.container()); + } else { + return insertInline$1(before, pos.getNode()); + } + }; + var isPosCaretContainer = function (pos, caret) { + var caretNode = caret.get(); + return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode); + }; + var renderCaret = function (caret, location) { + return location.fold(function (element) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlineBefore(element); + caret.set(text); + return Option.some(CaretPosition$1(text, text.length - 1)); + }, function (element) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(element).map(function (pos) { + if (!isPosCaretContainer(pos, caret)) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlinePos(pos, true); + caret.set(text); + return CaretPosition$1(text, 1); + } else { + return CaretPosition$1(caret.get(), 1); + } + }); + }, function (element) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(element).map(function (pos) { + if (!isPosCaretContainer(pos, caret)) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlinePos(pos, false); + caret.set(text); + return CaretPosition$1(text, text.length - 1); + } else { + return CaretPosition$1(caret.get(), caret.get().length - 1); + } + }); + }, function (element) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlineAfter(element); + caret.set(text); + return Option.some(CaretPosition$1(text, 1)); + }); + }; + var $_5a4sgg3gje5o2qee = { renderCaret: renderCaret }; + + var isInlineBlock = function (node) { + return node && /^(IMG)$/.test(node.nodeName); + }; + var moveStart = function (dom, selection, rng) { + var container = rng.startContainer, offset = rng.startOffset, walker, node, nodes; + if (rng.startContainer === rng.endContainer) { + if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) { + return; + } + } + if (container.nodeType === 3 && offset >= container.nodeValue.length) { + offset = dom.nodeIndex(container); + container = container.parentNode; + } + if (container.nodeType === 1) { + nodes = container.childNodes; + if (offset < nodes.length) { + container = nodes[offset]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + } else { + container = nodes[nodes.length - 1]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + walker.next(true); + } + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3 && !isWhiteSpaceNode(node)) { + rng.setStart(node, 0); + selection.setRng(rng); + return; + } + } + } + }; + var getNonWhiteSpaceSibling = function (node, next, inc) { + if (node) { + next = next ? 'nextSibling' : 'previousSibling'; + for (node = inc ? node : node[next]; node; node = node[next]) { + if (node.nodeType === 1 || !isWhiteSpaceNode(node)) { + return node; + } + } + } + }; + var isTextBlock$1 = function (editor, name) { + if (name.nodeType) { + name = name.nodeName; + } + return !!editor.schema.getTextBlockElements()[name.toLowerCase()]; + }; + var isValid = function (ed, parent, child) { + return ed.schema.isValidChild(parent, child); + }; + var isWhiteSpaceNode = function (node) { + return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue); + }; + var replaceVars = function (value, vars) { + if (typeof value !== 'string') { + value = value(vars); + } else if (vars) { + value = value.replace(/%(\w+)/g, function (str, name) { + return vars[name] || str; + }); + } + return value; + }; + var isEq = function (str1, str2) { + str1 = str1 || ''; + str2 = str2 || ''; + str1 = '' + (str1.nodeName || str1); + str2 = '' + (str2.nodeName || str2); + return str1.toLowerCase() === str2.toLowerCase(); + }; + var normalizeStyleValue = function (dom, value, name) { + if (name === 'color' || name === 'backgroundColor') { + value = dom.toHex(value); + } + if (name === 'fontWeight' && value === 700) { + value = 'bold'; + } + if (name === 'fontFamily') { + value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ','); + } + return '' + value; + }; + var getStyle = function (dom, node, name) { + return normalizeStyleValue(dom, dom.getStyle(node, name), name); + }; + var getTextDecoration = function (dom, node) { + var decoration; + dom.getParent(node, function (n) { + decoration = dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); + return decoration; + }; + var getParents$1 = function (dom, node, selector) { + return dom.getParents(node, selector, dom.getRoot()); + }; + var $_b2hqtg3lje5o2qft = { + isInlineBlock: isInlineBlock, + moveStart: moveStart, + getNonWhiteSpaceSibling: getNonWhiteSpaceSibling, + isTextBlock: isTextBlock$1, + isValid: isValid, + isWhiteSpaceNode: isWhiteSpaceNode, + replaceVars: replaceVars, + isEq: isEq, + normalizeStyleValue: normalizeStyleValue, + getStyle: getStyle, + getTextDecoration: getTextDecoration, + getParents: getParents$1 + }; + + var isBookmarkNode$2 = $_83h91t2jje5o2q8n.isBookmarkNode; + var getParents$2 = $_b2hqtg3lje5o2qft.getParents; + var isWhiteSpaceNode$1 = $_b2hqtg3lje5o2qft.isWhiteSpaceNode; + var isTextBlock$2 = $_b2hqtg3lje5o2qft.isTextBlock; + var findLeaf = function (node, offset) { + if (typeof offset === 'undefined') { + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + while (node && node.hasChildNodes()) { + node = node.childNodes[offset]; + if (node) { + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + } + return { + node: node, + offset: offset + }; + }; + var excludeTrailingWhitespace = function (endContainer, endOffset) { + var leaf = findLeaf(endContainer, endOffset); + if (leaf.node) { + while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) { + leaf = findLeaf(leaf.node.previousSibling); + } + if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { + if (leaf.offset > 1) { + endContainer = leaf.node; + endContainer.splitText(leaf.offset - 1); + } + } + } + return endContainer; + }; + var isBogusBr = function (node) { + return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling; + }; + var findParentContentEditable = function (dom, node) { + var parent = node; + while (parent) { + if (parent.nodeType === 1 && dom.getContentEditable(parent)) { + return dom.getContentEditable(parent) === 'false' ? parent : node; + } + parent = parent.parentNode; + } + return node; + }; + var findSpace = function (start, remove, node, offset) { + var pos, pos2; + var str = node.nodeValue; + if (typeof offset === 'undefined') { + offset = start ? str.length : 0; + } + if (start) { + pos = str.lastIndexOf(' ', offset); + pos2 = str.lastIndexOf('\xA0', offset); + pos = pos > pos2 ? pos : pos2; + if (pos !== -1 && !remove) { + pos++; + } + } else { + pos = str.indexOf(' ', offset); + pos2 = str.indexOf('\xA0', offset); + pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2; + } + return pos; + }; + var findWordEndPoint = function (dom, body, container, offset, start, remove) { + var walker, node, pos, lastTextNode; + if (container.nodeType === 3) { + pos = findSpace(start, remove, container, offset); + if (pos !== -1) { + return { + container: container, + offset: pos + }; + } + lastTextNode = container; + } + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body); + while (node = walker[start ? 'prev' : 'next']()) { + if (node.nodeType === 3) { + lastTextNode = node; + pos = findSpace(start, remove, node); + if (pos !== -1) { + return { + container: node, + offset: pos + }; + } + } else if (dom.isBlock(node)) { + break; + } + } + if (lastTextNode) { + if (start) { + offset = 0; + } else { + offset = lastTextNode.length; + } + return { + container: lastTextNode, + offset: offset + }; + } + }; + var findSelectorEndPoint = function (dom, format, rng, container, siblingName) { + var parents, i, y, curFormat; + if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) { + container = container[siblingName]; + } + parents = getParents$2(dom, container); + for (i = 0; i < parents.length; i++) { + for (y = 0; y < format.length; y++) { + curFormat = format[y]; + if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) { + continue; + } + if (dom.is(parents[i], curFormat.selector)) { + return parents[i]; + } + } + } + return container; + }; + var findBlockEndPoint = function (editor, format, container, siblingName) { + var node; + var dom = editor.dom; + var root = dom.getRoot(); + if (!format[0].wrapper) { + node = dom.getParent(container, format[0].block, root); + } + if (!node) { + var scopeRoot = dom.getParent(container, 'LI,TD,TH'); + node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) { + return node !== root && isTextBlock$2(editor, node); + }, scopeRoot); + } + if (node && format[0].wrapper) { + node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node; + } + if (!node) { + node = container; + while (node[siblingName] && !dom.isBlock(node[siblingName])) { + node = node[siblingName]; + if ($_b2hqtg3lje5o2qft.isEq(node, 'br')) { + break; + } + } + } + return node || container; + }; + var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) { + var container, parent, sibling, siblingName, root; + container = parent = start ? startContainer : endContainer; + siblingName = start ? 'previousSibling' : 'nextSibling'; + root = dom.getRoot(); + if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) { + if (start ? startOffset > 0 : endOffset < container.nodeValue.length) { + return container; + } + } + while (true) { + if (!format[0].block_expand && dom.isBlock(parent)) { + return parent; + } + for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) { + if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) { + return parent; + } + } + if (parent === root || parent.parentNode === root) { + container = parent; + break; + } + parent = parent.parentNode; + } + return container; + }; + var expandRng = function (editor, rng, format, remove) { + var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; + var dom = editor.dom; + if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) { + startContainer = getNode(startContainer, startOffset); + if (startContainer.nodeType === 3) { + startOffset = 0; + } + } + if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) { + endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1); + if (endContainer.nodeType === 3) { + endOffset = endContainer.nodeValue.length; + } + } + startContainer = findParentContentEditable(dom, startContainer); + endContainer = findParentContentEditable(dom, endContainer); + if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) { + startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode; + startContainer = startContainer.nextSibling || startContainer; + if (startContainer.nodeType === 3) { + startOffset = 0; + } + } + if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) { + endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode; + endContainer = endContainer.previousSibling || endContainer; + if (endContainer.nodeType === 3) { + endOffset = endContainer.length; + } + } + if (format[0].inline) { + if (rng.collapsed) { + endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove); + if (endPoint) { + startContainer = endPoint.container; + startOffset = endPoint.offset; + } + endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove); + if (endPoint) { + endContainer = endPoint.container; + endOffset = endPoint.offset; + } + } + endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset); + } + if (format[0].inline || format[0].block_expand) { + if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) { + startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true); + } + if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) { + endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false); + } + } + if (format[0].selector && format[0].expand !== false && !format[0].inline) { + startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling'); + endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling'); + } + if (format[0].block || format[0].selector) { + startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling'); + endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling'); + if (format[0].block) { + if (!dom.isBlock(startContainer)) { + startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true); + } + if (!dom.isBlock(endContainer)) { + endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false); + } + } + } + if (startContainer.nodeType === 1) { + startOffset = dom.nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + if (endContainer.nodeType === 1) { + endOffset = dom.nodeIndex(endContainer) + 1; + endContainer = endContainer.parentNode; + } + return { + startContainer: startContainer, + startOffset: startOffset, + endContainer: endContainer, + endOffset: endOffset + }; + }; + var $_8wd5fu3kje5o2qfi = { expandRng: expandRng }; + + var isEq$1 = $_b2hqtg3lje5o2qft.isEq; + var matchesUnInheritedFormatSelector = function (ed, node, name) { + var formatList = ed.formatter.get(name); + if (formatList) { + for (var i = 0; i < formatList.length; i++) { + if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) { + return true; + } + } + } + return false; + }; + var matchParents = function (editor, node, name, vars) { + var root = editor.dom.getRoot(); + if (node === root) { + return false; + } + node = editor.dom.getParent(node, function (node) { + if (matchesUnInheritedFormatSelector(editor, node, name)) { + return true; + } + return node.parentNode === root || !!matchNode(editor, node, name, vars, true); + }); + return matchNode(editor, node, name, vars); + }; + var matchName = function (dom, node, format) { + if (isEq$1(node, format.inline)) { + return true; + } + if (isEq$1(node, format.block)) { + return true; + } + if (format.selector) { + return node.nodeType === 1 && dom.is(node, format.selector); + } + }; + var matchItems = function (dom, node, format, itemName, similar, vars) { + var key, value; + var items = format[itemName]; + var i; + if (format.onmatch) { + return format.onmatch(node, format, itemName); + } + if (items) { + if (typeof items.length === 'undefined') { + for (key in items) { + if (items.hasOwnProperty(key)) { + if (itemName === 'attributes') { + value = dom.getAttrib(node, key); + } else { + value = $_b2hqtg3lje5o2qft.getStyle(dom, node, key); + } + if (similar && !value && !format.exact) { + return; + } + if ((!similar || format.exact) && !isEq$1(value, $_b2hqtg3lje5o2qft.normalizeStyleValue(dom, $_b2hqtg3lje5o2qft.replaceVars(items[key], vars), key))) { + return; + } + } + } + } else { + for (i = 0; i < items.length; i++) { + if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : $_b2hqtg3lje5o2qft.getStyle(dom, node, items[i])) { + return format; + } + } + } + } + return format; + }; + var matchNode = function (ed, node, name, vars, similar) { + var formatList = ed.formatter.get(name); + var format, i, x, classes; + var dom = ed.dom; + if (formatList && node) { + for (i = 0; i < formatList.length; i++) { + format = formatList[i]; + if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) { + if (classes = format.classes) { + for (x = 0; x < classes.length; x++) { + if (!ed.dom.hasClass(node, classes[x])) { + return; + } + } + } + return format; + } + } + } + }; + var match = function (editor, name, vars, node) { + var startNode; + if (node) { + return matchParents(editor, node, name, vars); + } + node = editor.selection.getNode(); + if (matchParents(editor, node, name, vars)) { + return true; + } + startNode = editor.selection.getStart(); + if (startNode !== node) { + if (matchParents(editor, startNode, name, vars)) { + return true; + } + } + return false; + }; + var matchAll = function (editor, names, vars) { + var startElement; + var matchedFormatNames = []; + var checkedMap = {}; + startElement = editor.selection.getStart(); + editor.dom.getParent(startElement, function (node) { + var i, name; + for (i = 0; i < names.length; i++) { + name = names[i]; + if (!checkedMap[name] && matchNode(editor, node, name, vars)) { + checkedMap[name] = true; + matchedFormatNames.push(name); + } + } + }, editor.dom.getRoot()); + return matchedFormatNames; + }; + var canApply = function (editor, name) { + var formatList = editor.formatter.get(name); + var startNode, parents, i, x, selector; + var dom = editor.dom; + if (formatList) { + startNode = editor.selection.getStart(); + parents = $_b2hqtg3lje5o2qft.getParents(dom, startNode); + for (x = formatList.length - 1; x >= 0; x--) { + selector = formatList[x].selector; + if (!selector || formatList[x].defaultBlock) { + return true; + } + for (i = parents.length - 1; i >= 0; i--) { + if (dom.is(parents[i], selector)) { + return true; + } + } + } + } + return false; + }; + var $_g32xfv3mje5o2qg1 = { + matchNode: matchNode, + matchName: matchName, + match: match, + matchAll: matchAll, + canApply: canApply, + matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector + }; + + var splitText = function (node, offset) { + return node.splitText(offset); + }; + var split$1 = function (rng) { + var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; + if (startContainer === endContainer && $_9owqcy1qje5o2q0e.isText(startContainer)) { + if (startOffset > 0 && startOffset < startContainer.nodeValue.length) { + endContainer = splitText(startContainer, startOffset); + startContainer = endContainer.previousSibling; + if (endOffset > startOffset) { + endOffset = endOffset - startOffset; + startContainer = endContainer = splitText(endContainer, endOffset).previousSibling; + endOffset = endContainer.nodeValue.length; + startOffset = 0; + } else { + endOffset = 0; + } + } + } else { + if ($_9owqcy1qje5o2q0e.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) { + startContainer = splitText(startContainer, startOffset); + startOffset = 0; + } + if ($_9owqcy1qje5o2q0e.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) { + endContainer = splitText(endContainer, endOffset).previousSibling; + endOffset = endContainer.nodeValue.length; + } + } + return { + startContainer: startContainer, + startOffset: startOffset, + endContainer: endContainer, + endOffset: endOffset + }; + }; + var $_3ksquu3nje5o2qg7 = { split: split$1 }; + + var ZWSP$1 = $_4md31c21je5o2q5f.ZWSP; + var CARET_ID = '_mce_caret'; + var importNode = function (ownerDocument, node) { + return ownerDocument.importNode(node, true); + }; + var isCaretNode = function (node) { + return node.nodeType === 1 && node.id === CARET_ID; + }; + var getEmptyCaretContainers = function (node) { + var nodes = []; + while (node) { + if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) { + return []; + } + if (node.nodeType === 1) { + nodes.push(node); + } + node = node.firstChild; + } + return nodes; + }; + var isCaretContainerEmpty = function (node) { + return getEmptyCaretContainers(node).length > 0; + }; + var findFirstTextNode = function (node) { + var walker; + if (node) { + walker = new TreeWalker(node, node); + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3) { + return node; + } + } + } + return null; + }; + var createCaretContainer = function (fill) { + var caretContainer = $_5tcb2dyje5o2pwu.fromTag('span'); + $_3uo9pl14je5o2pxq.setAll(caretContainer, { + 'id': CARET_ID, + 'data-mce-bogus': '1', + 'data-mce-type': 'format-caret' + }); + if (fill) { + $_elbl2s2oje5o2q9z.append(caretContainer, $_5tcb2dyje5o2pwu.fromText(ZWSP$1)); + } + return caretContainer; + }; + var getParentCaretContainer = function (body, node) { + while (node && node !== body) { + if (node.id === CARET_ID) { + return node; + } + node = node.parentNode; + } + return null; + }; + var trimZwspFromCaretContainer = function (caretContainerNode) { + var textNode = findFirstTextNode(caretContainerNode); + if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) { + textNode.deleteData(0, 1); + } + return textNode; + }; + var removeCaretContainerNode = function (dom, selection, node, moveCaret) { + var rng, block, textNode; + rng = selection.getRng(true); + block = dom.getParent(node, dom.isBlock); + if (isCaretContainerEmpty(node)) { + if (moveCaret !== false) { + rng.setStartBefore(node); + rng.setEndBefore(node); + } + dom.remove(node); + } else { + textNode = trimZwspFromCaretContainer(node); + if (rng.startContainer === textNode && rng.startOffset > 0) { + rng.setStart(textNode, rng.startOffset - 1); + } + if (rng.endContainer === textNode && rng.endOffset > 0) { + rng.setEnd(textNode, rng.endOffset - 1); + } + dom.remove(node, true); + } + if (block && dom.isEmpty(block)) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr($_5tcb2dyje5o2pwu.fromDom(block)); + } + selection.setRng(rng); + }; + var removeCaretContainer = function (body, dom, selection, node, moveCaret) { + if (!node) { + node = getParentCaretContainer(body, selection.getStart()); + if (!node) { + while (node = dom.get(CARET_ID)) { + removeCaretContainerNode(dom, selection, node, false); + } + } + } else { + removeCaretContainerNode(dom, selection, node, moveCaret); + } + }; + var insertCaretContainerNode = function (editor, caretContainer, formatNode) { + var dom = editor.dom, block = dom.getParent(formatNode, $_ghq3nq25je5o2q5q.curry($_b2hqtg3lje5o2qft.isTextBlock, editor)); + if (block && dom.isEmpty(block)) { + formatNode.parentNode.replaceChild(caretContainer, formatNode); + } else { + $_4kbg8z2nje5o2q9s.removeTrailingBr($_5tcb2dyje5o2pwu.fromDom(formatNode)); + if (dom.isEmpty(formatNode)) { + formatNode.parentNode.replaceChild(caretContainer, formatNode); + } else { + dom.insertAfter(caretContainer, formatNode); + } + } + }; + var appendNode = function (parentNode, node) { + parentNode.appendChild(node); + return node; + }; + var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) { + var innerMostFormatNode = $_bwcteb4je5o2pl4.foldr(formatNodes, function (parentNode, formatNode) { + return appendNode(parentNode, formatNode.cloneNode(false)); + }, caretContainer); + return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1)); + }; + var applyCaretFormat = function (editor, name, vars) { + var rng, caretContainer, textNode, offset, bookmark, container, text; + var selection = editor.selection; + rng = selection.getRng(true); + offset = rng.startOffset; + container = rng.startContainer; + text = container.nodeValue; + caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart()); + if (caretContainer) { + textNode = findFirstTextNode(caretContainer); + } + var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/; + if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) { + bookmark = selection.getBookmark(); + rng.collapse(true); + rng = $_8wd5fu3kje5o2qfi.expandRng(editor, rng, editor.formatter.get(name)); + rng = $_3ksquu3nje5o2qg7.split(rng); + editor.formatter.apply(name, vars, rng); + selection.moveToBookmark(bookmark); + } else { + if (!caretContainer || textNode.nodeValue !== ZWSP$1) { + caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom()); + textNode = caretContainer.firstChild; + rng.insertNode(caretContainer); + offset = 1; + editor.formatter.apply(name, vars, caretContainer); + } else { + editor.formatter.apply(name, vars, caretContainer); + } + selection.setCursorLocation(textNode, offset); + } + }; + var removeCaretFormat = function (editor, name, vars, similar) { + var dom = editor.dom, selection = editor.selection; + var container, offset, bookmark; + var hasContentAfter, node, formatNode; + var parents = [], rng = selection.getRng(); + var caretContainer; + container = rng.startContainer; + offset = rng.startOffset; + node = container; + if (container.nodeType === 3) { + if (offset !== container.nodeValue.length) { + hasContentAfter = true; + } + node = node.parentNode; + } + while (node) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, node, name, vars, similar)) { + formatNode = node; + break; + } + if (node.nextSibling) { + hasContentAfter = true; + } + parents.push(node); + node = node.parentNode; + } + if (!formatNode) { + return; + } + if (hasContentAfter) { + bookmark = selection.getBookmark(); + rng.collapse(true); + var expandedRng = $_8wd5fu3kje5o2qfi.expandRng(editor, rng, editor.formatter.get(name), true); + expandedRng = $_3ksquu3nje5o2qg7.split(expandedRng); + editor.formatter.remove(name, vars, expandedRng); + selection.moveToBookmark(bookmark); + } else { + caretContainer = getParentCaretContainer(editor.getBody(), formatNode); + var newCaretContainer = createCaretContainer(false).dom(); + var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer); + if (caretContainer) { + insertCaretContainerNode(editor, newCaretContainer, caretContainer); + } else { + insertCaretContainerNode(editor, newCaretContainer, formatNode); + } + removeCaretContainerNode(dom, selection, caretContainer, false); + selection.setCursorLocation(caretNode, 1); + if (dom.isEmpty(formatNode)) { + dom.remove(formatNode); + } + } + }; + var disableCaretContainer = function (body, dom, selection, keyCode) { + removeCaretContainer(body, dom, selection, null, false); + if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) { + removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart())); + } + if (keyCode === 37 || keyCode === 39) { + removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart())); + } + }; + var setup = function (editor) { + var dom = editor.dom, selection = editor.selection; + var body = editor.getBody(); + editor.on('mouseup keydown', function (e) { + disableCaretContainer(body, dom, selection, e.keyCode); + }); + }; + var replaceWithCaretFormat = function (targetNode, formatNodes) { + var caretContainer = createCaretContainer(false); + var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom()); + $_elbl2s2oje5o2q9z.before($_5tcb2dyje5o2pwu.fromDom(targetNode), caretContainer); + $_cr1seh2pje5o2qa1.remove($_5tcb2dyje5o2pwu.fromDom(targetNode)); + return CaretPosition$1(innerMost, 0); + }; + var isFormatElement = function (editor, element) { + var inlineElements = editor.schema.getTextInlineElements(); + return inlineElements.hasOwnProperty($_95wn8qzje5o2px0.name(element)) && !isCaretNode(element.dom()) && !$_9owqcy1qje5o2q0e.isBogus(element.dom()); + }; + var $_4066yu3jje5o2qev = { + setup: setup, + applyCaretFormat: applyCaretFormat, + removeCaretFormat: removeCaretFormat, + isCaretNode: isCaretNode, + getParentCaretContainer: getParentCaretContainer, + replaceWithCaretFormat: replaceWithCaretFormat, + isFormatElement: isFormatElement + }; + + var evaluateUntil = function (fns, args) { + for (var i = 0; i < fns.length; i++) { + var result = fns[i].apply(null, args); + if (result.isSome()) { + return result; + } + } + return Option.none(); + }; + var $_cq1fkk3oje5o2qg9 = { evaluateUntil: evaluateUntil }; + + var Location = $_e73lvt3dje5o2qdq.generate([ + { before: ['element'] }, + { start: ['element'] }, + { end: ['element'] }, + { after: ['element'] } + ]); + var rescope = function (rootNode, node) { + var parentBlock = getParentBlock(node, rootNode); + return parentBlock ? parentBlock : rootNode; + }; + var before$3 = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeForwards(pos); + var scope = rescope(rootNode, nPos.container()); + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, scope, nPos).fold(function () { + return $_g2kzjo2bje5o2q7n.nextPosition(scope, nPos).bind($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.findRootInline, isInlineTarget, scope)).map(function (inline) { + return Location.before(inline); + }); + }, Option.none); + }; + var isNotInsideFormatCaretContainer = function (rootNode, elm) { + return $_4066yu3jje5o2qev.getParentCaretContainer(rootNode, elm) === null; + }; + var findInsideRootInline = function (isInlineTarget, rootNode, pos) { + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, pos).filter($_enfhkv6je5o2ply.curry(isNotInsideFormatCaretContainer, rootNode)); + }; + var start = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeBackwards(pos); + return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { + var prevPos = $_g2kzjo2bje5o2q7n.prevPosition(inline, nPos); + return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none(); + }); + }; + var end = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeForwards(pos); + return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { + var nextPos = $_g2kzjo2bje5o2q7n.nextPosition(inline, nPos); + return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none(); + }); + }; + var after$3 = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeBackwards(pos); + var scope = rescope(rootNode, nPos.container()); + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, scope, nPos).fold(function () { + return $_g2kzjo2bje5o2q7n.prevPosition(scope, nPos).bind($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.findRootInline, isInlineTarget, scope)).map(function (inline) { + return Location.after(inline); + }); + }, Option.none); + }; + var isValidLocation = function (location) { + return $_6skw9732je5o2qbp.isRtl(getElement(location)) === false; + }; + var readLocation = function (isInlineTarget, rootNode, pos) { + var location = $_cq1fkk3oje5o2qg9.evaluateUntil([ + before$3, + start, + end, + after$3 + ], [ + isInlineTarget, + rootNode, + pos + ]); + return location.filter(isValidLocation); + }; + var getElement = function (location) { + return location.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var getName = function (location) { + return location.fold($_enfhkv6je5o2ply.constant('before'), $_enfhkv6je5o2ply.constant('start'), $_enfhkv6je5o2ply.constant('end'), $_enfhkv6je5o2ply.constant('after')); + }; + var outside = function (location) { + return location.fold(Location.before, Location.before, Location.after, Location.after); + }; + var inside = function (location) { + return location.fold(Location.start, Location.start, Location.end, Location.end); + }; + var isEq$2 = function (location1, location2) { + return getName(location1) === getName(location2) && getElement(location1) === getElement(location2); + }; + var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) { + return $_c8weyc2eje5o2q85.liftN([ + $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, from), + $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, to) + ], function (fromInline, toInline) { + if (fromInline !== toInline && $_6skw9732je5o2qbp.hasSameParentBlock(rootNode, fromInline, toInline)) { + return Location.after(forward ? fromInline : toInline); + } else { + return location; + } + }).getOr(location); + }; + var skipNoMovement = function (fromLocation, toLocation) { + return fromLocation.fold($_enfhkv6je5o2ply.constant(true), function (fromLocation) { + return !isEq$2(fromLocation, toLocation); + }); + }; + var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) { + var from = $_6skw9732je5o2qbp.normalizePosition(forward, pos); + var to = $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, from).map($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.normalizePosition, forward)); + var location = to.fold(function () { + return fromLocation.map(outside); + }, function (to) { + return readLocation(isInlineTarget, rootNode, to).map($_enfhkv6je5o2ply.curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter($_enfhkv6je5o2ply.curry(skipNoMovement, fromLocation)); + }); + return location.filter(isValidLocation); + }; + var findLocationSimple = function (forward, location) { + if (forward) { + return location.fold($_enfhkv6je5o2ply.compose(Option.some, Location.start), Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.after), Option.none); + } else { + return location.fold(Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.before), Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.end)); + } + }; + var findLocation = function (forward, isInlineTarget, rootNode, pos) { + var from = $_6skw9732je5o2qbp.normalizePosition(forward, pos); + var fromLocation = readLocation(isInlineTarget, rootNode, from); + return readLocation(isInlineTarget, rootNode, from).bind($_enfhkv6je5o2ply.curry(findLocationSimple, forward)).orThunk(function () { + return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos); + }); + }; + var $_62vpc23ije5o2qem = { + readLocation: readLocation, + findLocation: findLocation, + prevLocation: $_enfhkv6je5o2ply.curry(findLocation, false), + nextLocation: $_enfhkv6je5o2ply.curry(findLocation, true), + getElement: getElement, + outside: outside, + inside: inside + }; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + var clone = function () { + return Cell(get()); + }; + return { + get: get, + set: set, + clone: clone + }; + }; + + var hasSelectionModifyApi = function (editor) { + return $_be3q8w12je5o2pxj.isFunction(editor.selection.getSel().modify); + }; + var moveRel = function (forward, selection, pos) { + var delta = forward ? 1 : -1; + selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange()); + selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word'); + return true; + }; + var moveByWord = function (forward, editor) { + var rng = editor.selection.getRng(); + var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng); + if (!hasSelectionModifyApi(editor)) { + return false; + } else if (forward && isBeforeInline(pos)) { + return moveRel(true, editor.selection, pos); + } else if (!forward && isAfterInline(pos)) { + return moveRel(false, editor.selection, pos); + } else { + return false; + } + }; + var $_ffszpz3rje5o2qgl = { + hasSelectionModifyApi: hasSelectionModifyApi, + moveByWord: moveByWord + }; + + var setCaretPosition = function (editor, pos) { + var rng = editor.dom.createRng(); + rng.setStart(pos.container(), pos.offset()); + rng.setEnd(pos.container(), pos.offset()); + editor.selection.setRng(rng); + }; + var isFeatureEnabled = function (editor) { + return editor.settings.inline_boundaries !== false; + }; + var setSelected = function (state, elm) { + if (state) { + elm.setAttribute('data-mce-selected', 'inline-boundary'); + } else { + elm.removeAttribute('data-mce-selected'); + } + }; + var renderCaretLocation = function (editor, caret, location) { + return $_5a4sgg3gje5o2qee.renderCaret(caret, location).map(function (pos) { + setCaretPosition(editor, pos); + return location; + }); + }; + var findLocation$1 = function (editor, caret, forward) { + var rootNode = editor.getBody(); + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var location = $_62vpc23ije5o2qem.findLocation(forward, isInlineTarget, rootNode, from); + return location.bind(function (location) { + return renderCaretLocation(editor, caret, location); + }); + }; + var toggleInlines = function (isInlineTarget, dom, elms) { + var selectedInlines = $_bwcteb4je5o2pl4.filter(dom.select('*[data-mce-selected="inline-boundary"]'), isInlineTarget); + var targetInlines = $_bwcteb4je5o2pl4.filter(elms, isInlineTarget); + $_bwcteb4je5o2pl4.each($_bwcteb4je5o2pl4.difference(selectedInlines, targetInlines), $_enfhkv6je5o2ply.curry(setSelected, false)); + $_bwcteb4je5o2pl4.each($_bwcteb4je5o2pl4.difference(targetInlines, selectedInlines), $_enfhkv6je5o2ply.curry(setSelected, true)); + }; + var safeRemoveCaretContainer = function (editor, caret) { + if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) { + var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + if (CaretPosition$1.isTextPosition(pos) && $_6skw9732je5o2qbp.isAtZwsp(pos) === false) { + setCaretPosition(editor, $_3djwbs29je5o2q74.removeAndReposition(caret.get(), pos)); + caret.set(null); + } + } + }; + var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) { + if (editor.selection.isCollapsed()) { + var inlines = $_bwcteb4je5o2pl4.filter(elms, isInlineTarget); + $_bwcteb4je5o2pl4.each(inlines, function (inline) { + var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) { + return renderCaretLocation(editor, caret, location); + }); + }); + } + }; + var move = function (editor, caret, forward) { + return function () { + return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false; + }; + }; + var moveWord = function (forward, editor, caret) { + return function () { + return isFeatureEnabled(editor) ? $_ffszpz3rje5o2qgl.moveByWord(forward, editor) : false; + }; + }; + var setupSelectedState = function (editor) { + var caret = Cell(null); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + editor.on('NodeChange', function (e) { + if (isFeatureEnabled(editor)) { + toggleInlines(isInlineTarget, editor.dom, e.parents); + safeRemoveCaretContainer(editor, caret); + renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents); + } + }); + return caret; + }; + var $_2dnted3pje5o2qgc = { + move: move, + moveNextWord: $_enfhkv6je5o2ply.curry(moveWord, true), + movePrevWord: $_enfhkv6je5o2ply.curry(moveWord, false), + setupSelectedState: setupSelectedState, + setCaretPosition: setCaretPosition + }; + + var isFeatureEnabled$1 = function (editor) { + return editor.settings.inline_boundaries !== false; + }; + var rangeFromPositions = function (from, to) { + var range = document.createRange(); + range.setStart(from.container(), from.offset()); + range.setEnd(to.container(), to.offset()); + return range; + }; + var hasOnlyTwoOrLessPositionsLeft = function (elm) { + return $_c8weyc2eje5o2q85.liftN([ + $_g2kzjo2bje5o2q7n.firstPositionIn(elm), + $_g2kzjo2bje5o2q7n.lastPositionIn(elm) + ], function (firstPos, lastPos) { + var normalizedFirstPos = $_6skw9732je5o2qbp.normalizePosition(true, firstPos); + var normalizedLastPos = $_6skw9732je5o2qbp.normalizePosition(false, lastPos); + return $_g2kzjo2bje5o2q7n.nextPosition(elm, normalizedFirstPos).map(function (pos) { + return pos.isEqual(normalizedLastPos); + }).getOr(true); + }).getOr(true); + }; + var setCaretLocation = function (editor, caret) { + return function (location) { + return $_5a4sgg3gje5o2qee.renderCaret(caret, location).map(function (pos) { + $_2dnted3pje5o2qgc.setCaretPosition(editor, pos); + return true; + }).getOr(false); + }; + }; + var deleteFromTo = function (editor, caret, from, to) { + var rootNode = editor.getBody(); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + editor.undoManager.ignore(function () { + editor.selection.setRng(rangeFromPositions(from, to)); + editor.execCommand('Delete'); + $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_62vpc23ije5o2qem.inside).map(setCaretLocation(editor, caret)); + }); + editor.nodeChanged(); + }; + var rescope$1 = function (rootNode, node) { + var parentBlock = getParentBlock(node, rootNode); + return parentBlock ? parentBlock : rootNode; + }; + var backspaceDeleteCollapsed = function (editor, caret, forward, from) { + var rootNode = rescope$1(editor.getBody(), from.container()); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var fromLocation = $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, from); + return fromLocation.bind(function (location) { + if (forward) { + return location.fold($_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.inside(location))), Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.outside(location))), Option.none); + } else { + return location.fold(Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.outside(location))), Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.inside(location)))); + } + }).map(setCaretLocation(editor, caret)).getOrThunk(function () { + var toPosition = $_g2kzjo2bje5o2q7n.navigate(forward, rootNode, from); + var toLocation = toPosition.bind(function (pos) { + return $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, pos); + }); + if (fromLocation.isSome() && toLocation.isSome()) { + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, from).map(function (elm) { + if (hasOnlyTwoOrLessPositionsLeft(elm)) { + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(elm)); + return true; + } else { + return false; + } + }).getOr(false); + } else { + return toLocation.bind(function (_) { + return toPosition.map(function (to) { + if (forward) { + deleteFromTo(editor, caret, from, to); + } else { + deleteFromTo(editor, caret, to, from); + } + return true; + }); + }).getOr(false); + } + }); + }; + var backspaceDelete$3 = function (editor, caret, forward) { + if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return backspaceDeleteCollapsed(editor, caret, forward, from); + } + return false; + }; + var $_bzwx3b3fje5o2qe7 = { backspaceDelete: backspaceDelete$3 }; + + var tableCellRng = $_86drv18je5o2pyn.immutable('start', 'end'); + var tableSelection = $_86drv18je5o2pyn.immutable('rng', 'table', 'cells'); + var deleteAction = $_e73lvt3dje5o2qdq.generate([ + { removeTable: ['element'] }, + { emptyCells: ['cells'] } + ]); + var isRootFromElement = function (root) { + return $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, root); + }; + var getClosestCell$1 = function (container, isRoot) { + return $_9fzewc37je5o2qck.closest($_5tcb2dyje5o2pwu.fromDom(container), 'td,th', isRoot); + }; + var getClosestTable = function (cell, isRoot) { + return $_9fzewc37je5o2qck.ancestor(cell, 'table', isRoot); + }; + var isExpandedCellRng = function (cellRng) { + return $_7oppmo1dje5o2pz1.eq(cellRng.start(), cellRng.end()) === false; + }; + var getTableFromCellRng = function (cellRng, isRoot) { + return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) { + return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) { + return $_7oppmo1dje5o2pz1.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none(); + }); + }); + }; + var getTableCells = function (table) { + return $_b4jhpu2gje5o2q8e.descendants(table, 'td,th'); + }; + var getCellRangeFromStartTable = function (cellRng, isRoot) { + return getClosestTable(cellRng.start(), isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.last(getTableCells(table)).map(function (endCell) { + return tableCellRng(cellRng.start(), endCell); + }); + }); + }; + var partialSelection = function (isRoot, rng) { + var startCell = getClosestCell$1(rng.startContainer, isRoot); + var endCell = getClosestCell$1(rng.endContainer, isRoot); + return rng.collapsed ? Option.none() : $_c8weyc2eje5o2q85.liftN([ + startCell, + endCell + ], tableCellRng).fold(function () { + return startCell.fold(function () { + return endCell.bind(function (endCell) { + return getClosestTable(endCell, isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.head(getTableCells(table)).map(function (startCell) { + return tableCellRng(startCell, endCell); + }); + }); + }); + }, function (startCell) { + return getClosestTable(startCell, isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.last(getTableCells(table)).map(function (endCell) { + return tableCellRng(startCell, endCell); + }); + }); + }); + }, function (cellRng) { + return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot); + }); + }; + var isWithinSameTable = function (isRoot, cellRng) { + return getTableFromCellRng(cellRng, isRoot).isSome(); + }; + var getCellRng = function (rng, isRoot) { + var startCell = getClosestCell$1(rng.startContainer, isRoot); + var endCell = getClosestCell$1(rng.endContainer, isRoot); + return $_c8weyc2eje5o2q85.liftN([ + startCell, + endCell + ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) { + return isWithinSameTable(isRoot, cellRng); + }).orThunk(function () { + return partialSelection(isRoot, rng); + }); + }; + var getTableSelectionFromCellRng = function (cellRng, isRoot) { + return getTableFromCellRng(cellRng, isRoot).map(function (table) { + return tableSelection(cellRng, table, getTableCells(table)); + }); + }; + var getTableSelectionFromRng = function (root, rng) { + var isRoot = isRootFromElement(root); + return getCellRng(rng, isRoot).bind(function (cellRng) { + return getTableSelectionFromCellRng(cellRng, isRoot); + }); + }; + var getCellIndex = function (cells, cell) { + return $_bwcteb4je5o2pl4.findIndex(cells, function (x) { + return $_7oppmo1dje5o2pz1.eq(x, cell); + }); + }; + var getSelectedCells = function (tableSelection) { + return $_c8weyc2eje5o2q85.liftN([ + getCellIndex(tableSelection.cells(), tableSelection.rng().start()), + getCellIndex(tableSelection.cells(), tableSelection.rng().end()) + ], function (startIndex, endIndex) { + return tableSelection.cells().slice(startIndex, endIndex + 1); + }); + }; + var getAction = function (tableSelection) { + return getSelectedCells(tableSelection).map(function (selected) { + var cells = tableSelection.cells(); + return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected); + }); + }; + var getActionFromCells = function (cells) { + return deleteAction.emptyCells(cells); + }; + var getActionFromRange = function (root, rng) { + return getTableSelectionFromRng(root, rng).bind(getAction); + }; + var $_fdeflh3tje5o2qh0 = { + getActionFromRange: getActionFromRange, + getActionFromCells: getActionFromCells + }; + + var getRanges = function (selection) { + var ranges = []; + if (selection) { + for (var i = 0; i < selection.rangeCount; i++) { + ranges.push(selection.getRangeAt(i)); + } + } + return ranges; + }; + var getSelectedNodes = function (ranges) { + return $_bwcteb4je5o2pl4.bind(ranges, function (range) { + var node = getSelectedNode(range); + return node ? [$_5tcb2dyje5o2pwu.fromDom(node)] : []; + }); + }; + var hasMultipleRanges = function (selection) { + return getRanges(selection).length > 1; + }; + var $_b8hi2e3vje5o2qhh = { + getRanges: getRanges, + getSelectedNodes: getSelectedNodes, + hasMultipleRanges: hasMultipleRanges + }; + + var getCellsFromRanges = function (ranges) { + return $_bwcteb4je5o2pl4.filter($_b8hi2e3vje5o2qhh.getSelectedNodes(ranges), isTableCell); + }; + var getCellsFromElement = function (elm) { + var selectedCells = $_b4jhpu2gje5o2q8e.descendants(elm, 'td[data-mce-selected],th[data-mce-selected]'); + return selectedCells; + }; + var getCellsFromElementOrRanges = function (ranges, element) { + var selectedCells = getCellsFromElement(element); + var rangeCells = getCellsFromRanges(ranges); + return selectedCells.length > 0 ? selectedCells : rangeCells; + }; + var getCellsFromEditor = function (editor) { + return getCellsFromElementOrRanges($_b8hi2e3vje5o2qhh.getRanges(editor.selection.getSel()), $_5tcb2dyje5o2pwu.fromDom(editor.getBody())); + }; + var $_9il6og3uje5o2qhd = { + getCellsFromRanges: getCellsFromRanges, + getCellsFromElement: getCellsFromElement, + getCellsFromElementOrRanges: getCellsFromElementOrRanges, + getCellsFromEditor: getCellsFromEditor + }; + + var emptyCells = function (editor, cells) { + $_bwcteb4je5o2pl4.each(cells, $_4kbg8z2nje5o2q9s.fillWithPaddingBr); + editor.selection.setCursorLocation(cells[0].dom(), 0); + return true; + }; + var deleteTableElement = function (editor, table) { + $_8fuvl23eje5o2qdv.deleteElement(editor, false, table); + return true; + }; + var deleteCellRange = function (editor, rootElm, rng) { + return $_fdeflh3tje5o2qh0.getActionFromRange(rootElm, rng).map(function (action) { + return action.fold($_enfhkv6je5o2ply.curry(deleteTableElement, editor), $_enfhkv6je5o2ply.curry(emptyCells, editor)); + }); + }; + var deleteCaptionRange = function (editor, caption) { + return emptyElement(editor, caption); + }; + var deleteTableRange = function (editor, rootElm, rng, startElm) { + return getParentCaption(rootElm, startElm).fold(function () { + return deleteCellRange(editor, rootElm, rng); + }, function (caption) { + return deleteCaptionRange(editor, caption); + }).getOr(false); + }; + var deleteRange$1 = function (editor, startElm) { + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var rng = editor.selection.getRng(); + var selectedCells = $_9il6og3uje5o2qhd.getCellsFromEditor(editor); + return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm); + }; + var getParentCell = function (rootElm, elm) { + return $_bwcteb4je5o2pl4.find($_yqcmh39je5o2qcw.parentsAndSelf(elm, rootElm), isTableCell); + }; + var getParentCaption = function (rootElm, elm) { + return $_bwcteb4je5o2pl4.find($_yqcmh39je5o2qcw.parentsAndSelf(elm, rootElm), function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'caption'; + }); + }; + var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) { + return $_g2kzjo2bje5o2q7n.navigate(forward, editor.getBody(), from).bind(function (to) { + return getParentCell(rootElm, $_5tcb2dyje5o2pwu.fromDom(to.getNode())).map(function (toCell) { + return $_7oppmo1dje5o2pz1.eq(toCell, fromCell) === false; + }); + }); + }; + var emptyElement = function (editor, elm) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr(elm); + editor.selection.setCursorLocation(elm.dom(), 0); + return Option.some(true); + }; + var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(fromCaption.dom()).bind(function (first) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(fromCaption.dom()).map(function (last) { + return forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first); + }); + }).getOr(true); + }; + var emptyCaretCaption = function (editor, elm) { + return emptyElement(editor, elm); + }; + var validateCaretCaption = function (rootElm, fromCaption, to) { + return getParentCaption(rootElm, $_5tcb2dyje5o2pwu.fromDom(to.getNode())).map(function (toCaption) { + return $_7oppmo1dje5o2pz1.eq(toCaption, fromCaption) === false; + }); + }; + var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) { + return $_g2kzjo2bje5o2q7n.navigate(forward, editor.getBody(), from).bind(function (to) { + return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to); + }).or(Option.some(true)); + }; + var deleteCaretCells = function (editor, forward, rootElm, startElm) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return getParentCell(rootElm, startElm).bind(function (fromCell) { + return $_dizx5c35je5o2qcb.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from); + }); + }; + var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return $_dizx5c35je5o2qcb.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from); + }; + var deleteCaret = function (editor, forward, startElm) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + return getParentCaption(rootElm, startElm).fold(function () { + return deleteCaretCells(editor, forward, rootElm, startElm); + }, function (fromCaption) { + return deleteCaretCaption(editor, forward, rootElm, fromCaption); + }).getOr(false); + }; + var backspaceDelete$4 = function (editor, forward) { + var startElm = $_5tcb2dyje5o2pwu.fromDom(editor.selection.getStart(true)); + var cells = $_9il6og3uje5o2qhd.getCellsFromEditor(editor); + return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm); + }; + var $_8pfx7e3sje5o2qgp = { backspaceDelete: backspaceDelete$4 }; + + var nativeCommand = function (editor, command) { + editor.getDoc().execCommand(command, false, null); + }; + var deleteCommand = function (editor) { + if ($_c7csnv3bje5o2qd6.backspaceDelete(editor, false)) { + return; + } else if ($_bzwx3b3fje5o2qe7.backspaceDelete(editor, false)) { + return; + } else if ($_3qfe0j2xje5o2qao.backspaceDelete(editor, false)) { + return; + } else if ($_8pfx7e3sje5o2qgp.backspaceDelete(editor)) { + return; + } else if ($_a476lo3aje5o2qd0.backspaceDelete(editor, false)) { + return; + } else { + nativeCommand(editor, 'Delete'); + $_7twey62zje5o2qay.paddEmptyBody(editor); + } + }; + var forwardDeleteCommand = function (editor) { + if ($_c7csnv3bje5o2qd6.backspaceDelete(editor, true)) { + return; + } else if ($_bzwx3b3fje5o2qe7.backspaceDelete(editor, true)) { + return; + } else if ($_3qfe0j2xje5o2qao.backspaceDelete(editor, true)) { + return; + } else if ($_8pfx7e3sje5o2qgp.backspaceDelete(editor)) { + return; + } else if ($_a476lo3aje5o2qd0.backspaceDelete(editor, true)) { + return; + } else { + nativeCommand(editor, 'ForwardDelete'); + } + }; + var $_e390q12wje5o2qam = { + deleteCommand: deleteCommand, + forwardDeleteCommand: forwardDeleteCommand + }; + + var isEq$3 = function (rng1, rng2) { + return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset); + }; + var $_aieo7z3yje5o2qlw = { isEq: isEq$3 }; + + var position = $_86drv18je5o2pyn.immutable('container', 'offset'); + var findParent = function (node, rootNode, predicate) { + while (node && node !== rootNode) { + if (predicate(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var hasParent = function (node, rootNode, predicate) { + return findParent(node, rootNode, predicate) !== null; + }; + var hasParentWithName = function (node, rootNode, name) { + return hasParent(node, rootNode, function (node) { + return node.nodeName === name; + }); + }; + var isTable$2 = function (node) { + return node && node.nodeName === 'TABLE'; + }; + var isTableCell$3 = function (node) { + return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); + }; + var isCeFalseCaretContainer = function (node, rootNode) { + return isCaretContainer(node) && hasParent(node, rootNode, $_4066yu3jje5o2qev.isCaretNode) === false; + }; + var hasBrBeforeAfter = function (dom, node, left) { + var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot()); + while (node = walker[left ? 'prev' : 'next']()) { + if ($_9owqcy1qje5o2q0e.isBr(node)) { + return true; + } + } + }; + var isPrevNode = function (node, name) { + return node.previousSibling && node.previousSibling.nodeName === name; + }; + var hasContentEditableFalseParent = function (body, node) { + while (node && node !== body) { + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(node)) { + return true; + } + node = node.parentNode; + } + return false; + }; + var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) { + var walker, lastInlineElement, parentBlockContainer; + var body = dom.getRoot(); + var node; + var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body; + if (left && $_9owqcy1qje5o2q0e.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) { + return Option.some(position(startNode.parentNode, dom.nodeIndex(startNode))); + } + walker = new TreeWalker(startNode, parentBlockContainer); + while (node = walker[left ? 'prev' : 'next']()) { + if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) { + return Option.none(); + } + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + if (hasParentWithName(node, body, 'A') === false) { + return Option.some(position(node, left ? node.nodeValue.length : 0)); + } + return Option.none(); + } + if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) { + return Option.none(); + } + lastInlineElement = node; + } + if (collapsed && lastInlineElement) { + return Option.some(position(lastInlineElement, 0)); + } + return Option.none(); + }; + var normalizeEndPoint = function (dom, collapsed, start, rng) { + var container, offset, walker; + var body = dom.getRoot(); + var node, nonEmptyElementsMap; + var directionLeft, isAfterNode, normalized = false; + container = rng[(start ? 'start' : 'end') + 'Container']; + offset = rng[(start ? 'start' : 'end') + 'Offset']; + isAfterNode = $_9owqcy1qje5o2q0e.isElement(container) && offset === container.childNodes.length; + nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + directionLeft = start; + if (isCaretContainer(container)) { + return Option.none(); + } + if ($_9owqcy1qje5o2q0e.isElement(container) && offset > container.childNodes.length - 1) { + directionLeft = false; + } + if ($_9owqcy1qje5o2q0e.isDocument(container)) { + container = body; + offset = 0; + } + if (container === body) { + if (directionLeft) { + node = container.childNodes[offset > 0 ? offset - 1 : 0]; + if (node) { + if (isCaretContainer(node)) { + return Option.none(); + } + if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) { + return Option.none(); + } + } + } + if (container.hasChildNodes()) { + offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1); + container = container.childNodes[offset]; + offset = $_9owqcy1qje5o2q0e.isText(container) && isAfterNode ? container.data.length : 0; + if (!collapsed && container === body.lastChild && isTable$2(container)) { + return Option.none(); + } + if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) { + return Option.none(); + } + if (container.hasChildNodes() && isTable$2(container) === false) { + node = container; + walker = new TreeWalker(container, body); + do { + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(node) || isCaretContainer(node)) { + normalized = false; + break; + } + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + offset = directionLeft ? 0 : node.nodeValue.length; + container = node; + normalized = true; + break; + } + if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) { + offset = dom.nodeIndex(node); + container = node.parentNode; + if ((node.nodeName === 'IMG' || node.nodeName === 'PRE') && !directionLeft) { + offset++; + } + normalized = true; + break; + } + } while (node = directionLeft ? walker.next() : walker.prev()); + } + } + } + if (collapsed) { + if ($_9owqcy1qje5o2q0e.isText(container) && offset === 0) { + findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + if ($_9owqcy1qje5o2q0e.isElement(container)) { + node = container.childNodes[offset]; + if (!node) { + node = container.childNodes[offset - 1]; + } + if (node && $_9owqcy1qje5o2q0e.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) { + findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + } + } + if (directionLeft && !collapsed && $_9owqcy1qje5o2q0e.isText(container) && offset === container.nodeValue.length) { + findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + return normalized ? Option.some(position(container, offset)) : Option.none(); + }; + var normalize$1 = function (dom, rng) { + var collapsed = rng.collapsed, normRng = rng.cloneRange(); + normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) { + normRng.setStart(pos.container(), pos.offset()); + }); + if (!collapsed) { + normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) { + normRng.setEnd(pos.container(), pos.offset()); + }); + } + if (collapsed) { + normRng.collapse(true); + } + return $_aieo7z3yje5o2qlw.isEq(rng, normRng) ? Option.none() : Option.some(normRng); + }; + var $_1t8l6x3xje5o2qlk = { normalize: normalize$1 }; + + var hasRightSideContent = function (schema, container, parentBlock) { + var walker = new TreeWalker(container, parentBlock); + var node; + var nonEmptyElementsMap = schema.getNonEmptyElements(); + while (node = walker.next()) { + if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) { + return true; + } + } + }; + var scrollToBr = function (dom, selection, brElm) { + var marker = dom.create('span', {}, ' '); + brElm.parentNode.insertBefore(marker, brElm); + selection.scrollIntoView(marker); + dom.remove(marker); + }; + var moveSelectionToBr = function (dom, selection, brElm, extraBr) { + var rng = dom.createRng(); + if (!extraBr) { + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + } else { + rng.setStartBefore(brElm); + rng.setEndBefore(brElm); + } + selection.setRng(rng); + }; + var insertBrAtCaret = function (editor, evt) { + var selection = editor.selection, dom = editor.dom; + var brElm, extraBr; + var rng = selection.getRng(); + $_1t8l6x3xje5o2qlk.normalize(dom, rng).each(function (normRng) { + rng.setStart(normRng.startContainer, normRng.startOffset); + rng.setEnd(normRng.endContainer, normRng.endOffset); + }); + var offset = rng.startOffset; + var container = rng.startContainer; + if (container.nodeType === 1 && container.hasChildNodes()) { + var isAfterLastNodeInContainer = offset > container.childNodes.length - 1; + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + if (isAfterLastNodeInContainer && container.nodeType === 3) { + offset = container.nodeValue.length; + } else { + offset = 0; + } + } + var parentBlock = dom.getParent(container, dom.isBlock); + var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; + var isControlKey = evt && evt.ctrlKey; + if (containerBlockName === 'LI' && !isControlKey) { + parentBlock = containerBlock; + } + if (container && container.nodeType === 3 && offset >= container.nodeValue.length) { + if (!hasRightSideContent(editor.schema, container, parentBlock)) { + brElm = dom.create('br'); + rng.insertNode(brElm); + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + extraBr = true; + } + } + brElm = dom.create('br'); + rng.insertNode(brElm); + scrollToBr(dom, selection, brElm); + moveSelectionToBr(dom, selection, brElm, extraBr); + editor.undoManager.add(); + }; + var insertBrBefore = function (editor, inline) { + var br = $_5tcb2dyje5o2pwu.fromTag('br'); + $_elbl2s2oje5o2q9z.before($_5tcb2dyje5o2pwu.fromDom(inline), br); + editor.undoManager.add(); + }; + var insertBrAfter = function (editor, inline) { + if (!hasBrAfter(editor.getBody(), inline)) { + $_elbl2s2oje5o2q9z.after($_5tcb2dyje5o2pwu.fromDom(inline), $_5tcb2dyje5o2pwu.fromTag('br')); + } + var br = $_5tcb2dyje5o2pwu.fromTag('br'); + $_elbl2s2oje5o2q9z.after($_5tcb2dyje5o2pwu.fromDom(inline), br); + scrollToBr(editor.dom, editor.selection, br.dom()); + moveSelectionToBr(editor.dom, editor.selection, br.dom(), false); + editor.undoManager.add(); + }; + var isBeforeBr = function (pos) { + return $_9owqcy1qje5o2q0e.isBr(pos.getNode()); + }; + var hasBrAfter = function (rootNode, startNode) { + if (isBeforeBr(CaretPosition$1.after(startNode))) { + return true; + } else { + return $_g2kzjo2bje5o2q7n.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) { + return $_9owqcy1qje5o2q0e.isBr(pos.getNode()); + }).getOr(false); + } + }; + var isAnchorLink = function (elm) { + return elm && elm.nodeName === 'A' && 'href' in elm; + }; + var isInsideAnchor = function (location) { + return location.fold($_enfhkv6je5o2ply.constant(false), isAnchorLink, isAnchorLink, $_enfhkv6je5o2ply.constant(false)); + }; + var readInlineAnchorLocation = function (editor) { + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var position = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor); + }; + var insertBrOutsideAnchor = function (editor, location) { + location.fold($_enfhkv6je5o2ply.noop, $_enfhkv6je5o2ply.curry(insertBrBefore, editor), $_enfhkv6je5o2ply.curry(insertBrAfter, editor), $_enfhkv6je5o2ply.noop); + }; + var insert = function (editor, evt) { + var anchorLocation = readInlineAnchorLocation(editor); + if (anchorLocation.isSome()) { + anchorLocation.each($_enfhkv6je5o2ply.curry(insertBrOutsideAnchor, editor)); + } else { + insertBrAtCaret(editor, evt); + } + }; + var $_1esduy3wje5o2qhl = { insert: insert }; + + var adt = $_e73lvt3dje5o2qdq.generate([ + { 'before': ['element'] }, + { + 'on': [ + 'element', + 'offset' + ] + }, + { after: ['element'] } + ]); + var cata = function (subject, onBefore, onOn, onAfter) { + return subject.fold(onBefore, onOn, onAfter); + }; + var getStart = function (situ) { + return situ.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var $_78xwh641je5o2qmd = { + before: adt.before, + on: adt.on, + after: adt.after, + cata: cata, + getStart: getStart + }; + + var type$1 = $_e73lvt3dje5o2qdq.generate([ + { domRange: ['rng'] }, + { + relative: [ + 'startSitu', + 'finishSitu' + ] + }, + { + exact: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var range$1 = $_86drv18je5o2pyn.immutable('start', 'soffset', 'finish', 'foffset'); + var exactFromRange = function (simRange) { + return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset()); + }; + var getStart$1 = function (selection) { + return selection.match({ + domRange: function (rng) { + return $_5tcb2dyje5o2pwu.fromDom(rng.startContainer); + }, + relative: function (startSitu, finishSitu) { + return $_78xwh641je5o2qmd.getStart(startSitu); + }, + exact: function (start, soffset, finish, foffset) { + return start; + } + }); + }; + var getWin = function (selection) { + var start = getStart$1(selection); + return $_a6mttx17je5o2pyd.defaultView(start); + }; + var $_8b9nu40je5o2qm8 = { + domRange: type$1.domRange, + relative: type$1.relative, + exact: type$1.exact, + exactFromRange: exactFromRange, + range: range$1, + getWin: getWin + }; + + var browser$3 = $_2hq237mje5o2pvu.detect().browser; + var clamp = function (offset, element) { + var max = $_95wn8qzje5o2px0.isText(element) ? $_3600ts2rje5o2qa7.get(element).length : $_a6mttx17je5o2pyd.children(element).length + 1; + if (offset > max) { + return max; + } else if (offset < 0) { + return 0; + } + return offset; + }; + var normalizeRng = function (rng) { + return $_8b9nu40je5o2qm8.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish())); + }; + var isOrContains = function (root, elm) { + return $_7oppmo1dje5o2pz1.contains(root, elm) || $_7oppmo1dje5o2pz1.eq(root, elm); + }; + var isRngInRoot = function (root) { + return function (rng) { + return isOrContains(root, rng.start()) && isOrContains(root, rng.finish()); + }; + }; + var shouldStore = function (editor) { + return editor.inline === true || browser$3.isIE(); + }; + var nativeRangeToSelectionRange = function (r) { + return $_8b9nu40je5o2qm8.range($_5tcb2dyje5o2pwu.fromDom(r.startContainer), r.startOffset, $_5tcb2dyje5o2pwu.fromDom(r.endContainer), r.endOffset); + }; + var readRange = function (win) { + var selection = win.getSelection(); + var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0)); + return rng.map(nativeRangeToSelectionRange); + }; + var getBookmark$2 = function (root) { + var win = $_a6mttx17je5o2pyd.defaultView(root); + return readRange(win.dom()).filter(isRngInRoot(root)); + }; + var validate = function (root, bookmark) { + return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng); + }; + var bookmarkToNativeRng = function (bookmark) { + var rng = document.createRange(); + rng.setStart(bookmark.start().dom(), bookmark.soffset()); + rng.setEnd(bookmark.finish().dom(), bookmark.foffset()); + return Option.some(rng); + }; + var store = function (editor) { + var newBookmark = shouldStore(editor) ? getBookmark$2($_5tcb2dyje5o2pwu.fromDom(editor.getBody())) : Option.none(); + editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; + }; + var storeNative = function (editor, rng) { + var root = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var range = shouldStore(editor) ? Option.from(rng) : Option.none(); + var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root)); + editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; + }; + var getRng = function (editor) { + var bookmark = editor.bookmark ? editor.bookmark : Option.none(); + return bookmark.bind($_enfhkv6je5o2ply.curry(validate, $_5tcb2dyje5o2pwu.fromDom(editor.getBody()))).bind(bookmarkToNativeRng); + }; + var restore = function (editor) { + getRng(editor).each(function (rng) { + editor.selection.setRng(rng); + }); + }; + var $_fnd7h33zje5o2qly = { + store: store, + storeNative: storeNative, + readRange: readRange, + restore: restore, + getRng: getRng, + getBookmark: getBookmark$2, + validate: validate + }; + + var indentElement = function (dom, command, useMargin, value, unit, element) { + if (dom.getContentEditable(element) === 'false') { + return; + } + if (element.nodeName !== 'LI') { + var indentStyleName = useMargin ? 'margin' : 'padding'; + indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName; + indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left'; + if (command === 'outdent') { + var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value); + dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : ''); + } else { + var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit; + dom.setStyle(element, indentStyleName, styleValue); + } + } + }; + var handle = function (editor, command) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter; + var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0]; + var indentValue = parseInt(settings.indentation, 10); + var useMargin = editor.getParam('indent_use_margin', false); + if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) { + if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) { + formatter.apply('div'); + } + $_bwcteb4je5o2pl4.each(selection.getSelectedBlocks(), function (element) { + return indentElement(dom, command, useMargin, indentValue, indentUnit, element); + }); + } + }; + + var each$9 = $_a5gegtjje5o2pum.each; + var extend$2 = $_a5gegtjje5o2pum.extend; + var map$2 = $_a5gegtjje5o2pum.map; + var inArray$2 = $_a5gegtjje5o2pum.inArray; + var explode$2 = $_a5gegtjje5o2pum.explode; + var TRUE = true; + var FALSE = false; + function EditorCommands (editor) { + var dom, selection, formatter; + var commands = { + state: {}, + exec: {}, + value: {} + }; + var settings = editor.settings, bookmark; + editor.on('PreInit', function () { + dom = editor.dom; + selection = editor.selection; + settings = editor.settings; + formatter = editor.formatter; + }); + var execCommand = function (command, ui, value, args) { + var func, customCommand, state = false; + if (editor.removed) { + return; + } + if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) { + editor.focus(); + } else { + $_fnd7h33zje5o2qly.restore(editor); + } + args = editor.fire('BeforeExecCommand', { + command: command, + ui: ui, + value: value + }); + if (args.isDefaultPrevented()) { + return false; + } + customCommand = command.toLowerCase(); + if (func = commands.exec[customCommand]) { + func(customCommand, ui, value); + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + each$9(editor.plugins, function (p) { + if (p.execCommand && p.execCommand(command, ui, value)) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + state = true; + return false; + } + }); + if (state) { + return state; + } + if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + try { + state = editor.getDoc().execCommand(command, ui, value); + } catch (ex) { + } + if (state) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + return false; + }; + var queryCommandState = function (command) { + var func; + if (editor.quirks.isHidden() || editor.removed) { + return; + } + command = command.toLowerCase(); + if (func = commands.state[command]) { + return func(command); + } + try { + return editor.getDoc().queryCommandState(command); + } catch (ex) { + } + return false; + }; + var queryCommandValue = function (command) { + var func; + if (editor.quirks.isHidden() || editor.removed) { + return; + } + command = command.toLowerCase(); + if (func = commands.value[command]) { + return func(command); + } + try { + return editor.getDoc().queryCommandValue(command); + } catch (ex) { + } + }; + var addCommands = function (commandList, type) { + type = type || 'exec'; + each$9(commandList, function (callback, command) { + each$9(command.toLowerCase().split(','), function (command) { + commands[type][command] = callback; + }); + }); + }; + var addCommand = function (command, callback, scope) { + command = command.toLowerCase(); + commands.exec[command] = function (command, ui, value, args) { + return callback.call(scope || editor, ui, value, args); + }; + }; + var queryCommandSupported = function (command) { + command = command.toLowerCase(); + if (commands.exec[command]) { + return true; + } + try { + return editor.getDoc().queryCommandSupported(command); + } catch (ex) { + } + return false; + }; + var addQueryStateHandler = function (command, callback, scope) { + command = command.toLowerCase(); + commands.state[command] = function () { + return callback.call(scope || editor); + }; + }; + var addQueryValueHandler = function (command, callback, scope) { + command = command.toLowerCase(); + commands.value[command] = function () { + return callback.call(scope || editor); + }; + }; + var hasCustomCommand = function (command) { + command = command.toLowerCase(); + return !!commands.exec[command]; + }; + extend$2(this, { + execCommand: execCommand, + queryCommandState: queryCommandState, + queryCommandValue: queryCommandValue, + queryCommandSupported: queryCommandSupported, + addCommands: addCommands, + addCommand: addCommand, + addQueryStateHandler: addQueryStateHandler, + addQueryValueHandler: addQueryValueHandler, + hasCustomCommand: hasCustomCommand + }); + var execNativeCommand = function (command, ui, value) { + if (ui === undefined) { + ui = FALSE; + } + if (value === undefined) { + value = null; + } + return editor.getDoc().execCommand(command, ui, value); + }; + var isFormatMatch = function (name) { + return formatter.match(name); + }; + var toggleFormat = function (name, value) { + formatter.toggle(name, value ? { value: value } : undefined); + editor.nodeChanged(); + }; + var storeSelection = function (type) { + bookmark = selection.getBookmark(type); + }; + var restoreSelection = function () { + selection.moveToBookmark(bookmark); + }; + addCommands({ + 'mceResetDesignMode,mceBeginUndoLevel': function () { + }, + 'mceEndUndoLevel,mceAddUndoLevel': function () { + editor.undoManager.add(); + }, + 'Cut,Copy,Paste': function (command) { + var doc = editor.getDoc(); + var failed; + try { + execNativeCommand(command); + } catch (ex) { + failed = TRUE; + } + if (command === 'paste' && !doc.queryCommandEnabled(command)) { + failed = true; + } + if (failed || !doc.queryCommandSupported(command)) { + var msg = editor.translate('Your browser doesn\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.'); + if ($_9bd8pn9je5o2pp2.mac) { + msg = msg.replace(/Ctrl\+/g, '\u2318+'); + } + editor.notificationManager.open({ + text: msg, + type: 'error' + }); + } + }, + 'unlink': function () { + if (selection.isCollapsed()) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a'); + if (elm) { + editor.dom.remove(elm, true); + } + return; + } + formatter.remove('link'); + }, + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) { + var align = command.substring(7); + if (align === 'full') { + align = 'justify'; + } + each$9('left,center,right,justify'.split(','), function (name) { + if (align !== name) { + formatter.remove('align' + name); + } + }); + if (align !== 'none') { + toggleFormat('align' + align); + } + }, + 'InsertUnorderedList,InsertOrderedList': function (command) { + var listElm, listParent; + execNativeCommand(command); + listElm = dom.getParent(selection.getNode(), 'ol,ul'); + if (listElm) { + listParent = listElm.parentNode; + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { + storeSelection(); + dom.split(listParent, listElm); + restoreSelection(); + } + } + }, + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { + toggleFormat(command); + }, + 'ForeColor,HiliteColor,FontName': function (command, ui, value) { + toggleFormat(command, value); + }, + 'FontSize': function (command, ui, value) { + var fontClasses, fontSizes; + if (value >= 1 && value <= 7) { + fontSizes = explode$2(settings.font_size_style_values); + fontClasses = explode$2(settings.font_size_classes); + if (fontClasses) { + value = fontClasses[value - 1] || value; + } else { + value = fontSizes[value - 1] || value; + } + } + toggleFormat(command, value); + }, + 'RemoveFormat': function (command) { + formatter.remove(command); + }, + 'mceBlockQuote': function () { + toggleFormat('blockquote'); + }, + 'FormatBlock': function (command, ui, value) { + return toggleFormat(value || 'p'); + }, + 'mceCleanup': function () { + var bookmark = selection.getBookmark(); + editor.setContent(editor.getContent({ cleanup: TRUE }), { cleanup: TRUE }); + selection.moveToBookmark(bookmark); + }, + 'mceRemoveNode': function (command, ui, value) { + var node = value || selection.getNode(); + if (node !== editor.getBody()) { + storeSelection(); + editor.dom.remove(node, TRUE); + restoreSelection(); + } + }, + 'mceSelectNodeDepth': function (command, ui, value) { + var counter = 0; + dom.getParent(selection.getNode(), function (node) { + if (node.nodeType === 1 && counter++ === value) { + selection.select(node); + return FALSE; + } + }, editor.getBody()); + }, + 'mceSelectNode': function (command, ui, value) { + selection.select(value); + }, + 'mceInsertContent': function (command, ui, value) { + $_d42uuu1wje5o2q4b.insertAtCaret(editor, value); + }, + 'mceInsertRawHTML': function (command, ui, value) { + selection.setContent('tiny_mce_marker'); + editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function () { + return value; + })); + }, + 'mceToggleFormat': function (command, ui, value) { + toggleFormat(value); + }, + 'mceSetContent': function (command, ui, value) { + editor.setContent(value); + }, + 'Indent,Outdent': function (command) { + handle(editor, command); + }, + 'mceRepaint': function () { + }, + 'InsertHorizontalRule': function () { + editor.execCommand('mceInsertContent', false, '<hr />'); + }, + 'mceToggleVisualAid': function () { + editor.hasVisual = !editor.hasVisual; + editor.addVisual(); + }, + 'mceReplaceContent': function (command, ui, value) { + editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({ format: 'text' }))); + }, + 'mceInsertLink': function (command, ui, value) { + var anchor; + if (typeof value === 'string') { + value = { href: value }; + } + anchor = dom.getParent(selection.getNode(), 'a'); + value.href = value.href.replace(' ', '%20'); + if (!anchor || !value.href) { + formatter.remove('link'); + } + if (value.href) { + formatter.apply('link', value, anchor); + } + }, + 'selectAll': function () { + var editingHost = dom.getParent(selection.getStart(), $_9owqcy1qje5o2q0e.isContentEditableTrue); + if (editingHost) { + var rng = dom.createRng(); + rng.selectNodeContents(editingHost); + selection.setRng(rng); + } + }, + 'delete': function () { + $_e390q12wje5o2qam.deleteCommand(editor); + }, + 'forwardDelete': function () { + $_e390q12wje5o2qam.forwardDeleteCommand(editor); + }, + 'mceNewDocument': function () { + editor.setContent(''); + }, + 'InsertLineBreak': function (command, ui, value) { + $_1esduy3wje5o2qhl.insert(editor, value); + return true; + } + }); + addCommands({ + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function (command) { + var name = 'align' + command.substring(7); + var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks(); + var matches = map$2(nodes, function (node) { + return !!formatter.matchNode(node, name); + }); + return inArray$2(matches, TRUE) !== -1; + }, + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { + return isFormatMatch(command); + }, + 'mceBlockQuote': function () { + return isFormatMatch('blockquote'); + }, + 'Outdent': function () { + var node; + if (settings.inline_styles) { + if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { + return TRUE; + } + if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { + return TRUE; + } + } + return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'); + }, + 'InsertUnorderedList,InsertOrderedList': function (command) { + var list = dom.getParent(selection.getNode(), 'ul,ol'); + return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL'); + } + }, 'state'); + addCommands({ + 'FontSize,FontName': function (command) { + var value = 0, parent; + if (parent = dom.getParent(selection.getNode(), 'span')) { + if (command === 'fontsize') { + value = parent.style.fontSize; + } else { + value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); + } + } + return value; + } + }, 'value'); + addCommands({ + Undo: function () { + editor.undoManager.undo(); + }, + Redo: function () { + editor.undoManager.redo(); + } + }); + } + + var nativeEvents = $_a5gegtjje5o2pum.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' '); + var Dispatcher = function (settings) { + var self = this; + var scope, bindings = {}, toggleEvent; + var returnFalse = function () { + return false; + }; + var returnTrue = function () { + return true; + }; + settings = settings || {}; + scope = settings.scope || self; + toggleEvent = settings.toggleEvent || returnFalse; + var fire = function (name, args) { + var handlers, i, l, callback; + name = name.toLowerCase(); + args = args || {}; + args.type = name; + if (!args.target) { + args.target = scope; + } + if (!args.preventDefault) { + args.preventDefault = function () { + args.isDefaultPrevented = returnTrue; + }; + args.stopPropagation = function () { + args.isPropagationStopped = returnTrue; + }; + args.stopImmediatePropagation = function () { + args.isImmediatePropagationStopped = returnTrue; + }; + args.isDefaultPrevented = returnFalse; + args.isPropagationStopped = returnFalse; + args.isImmediatePropagationStopped = returnFalse; + } + if (settings.beforeFire) { + settings.beforeFire(args); + } + handlers = bindings[name]; + if (handlers) { + for (i = 0, l = handlers.length; i < l; i++) { + callback = handlers[i]; + if (callback.once) { + off(name, callback.func); + } + if (args.isImmediatePropagationStopped()) { + args.stopPropagation(); + return args; + } + if (callback.func.call(scope, args) === false) { + args.preventDefault(); + return args; + } + } + } + return args; + }; + var on = function (name, callback, prepend, extra) { + var handlers, names, i; + if (callback === false) { + callback = returnFalse; + } + if (callback) { + callback = { func: callback }; + if (extra) { + $_a5gegtjje5o2pum.extend(callback, extra); + } + names = name.toLowerCase().split(' '); + i = names.length; + while (i--) { + name = names[i]; + handlers = bindings[name]; + if (!handlers) { + handlers = bindings[name] = []; + toggleEvent(name, true); + } + if (prepend) { + handlers.unshift(callback); + } else { + handlers.push(callback); + } + } + } + return self; + }; + var off = function (name, callback) { + var i, handlers, bindingName, names, hi; + if (name) { + names = name.toLowerCase().split(' '); + i = names.length; + while (i--) { + name = names[i]; + handlers = bindings[name]; + if (!name) { + for (bindingName in bindings) { + toggleEvent(bindingName, false); + delete bindings[bindingName]; + } + return self; + } + if (handlers) { + if (!callback) { + handlers.length = 0; + } else { + hi = handlers.length; + while (hi--) { + if (handlers[hi].func === callback) { + handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1)); + bindings[name] = handlers; + } + } + } + if (!handlers.length) { + toggleEvent(name, false); + delete bindings[name]; + } + } + } + } else { + for (name in bindings) { + toggleEvent(name, false); + } + bindings = {}; + } + return self; + }; + var once = function (name, callback, prepend) { + return on(name, callback, prepend, { once: true }); + }; + var has = function (name) { + name = name.toLowerCase(); + return !(!bindings[name] || bindings[name].length === 0); + }; + self.fire = fire; + self.on = on; + self.off = off; + self.once = once; + self.has = has; + }; + Dispatcher.isNative = function (name) { + return !!nativeEvents[name.toLowerCase()]; + }; + + var getEventDispatcher = function (obj) { + if (!obj._eventDispatcher) { + obj._eventDispatcher = new Dispatcher({ + scope: obj, + toggleEvent: function (name, state) { + if (Dispatcher.isNative(name) && obj.toggleNativeEvent) { + obj.toggleNativeEvent(name, state); + } + } + }); + } + return obj._eventDispatcher; + }; + var $_8mfz0u44je5o2qmp = { + fire: function (name, args, bubble) { + var self = this; + if (self.removed && name !== 'remove') { + return args; + } + args = getEventDispatcher(self).fire(name, args, bubble); + if (bubble !== false && self.parent) { + var parent_1 = self.parent(); + while (parent_1 && !args.isPropagationStopped()) { + parent_1.fire(name, args, false); + parent_1 = parent_1.parent(); + } + } + return args; + }, + on: function (name, callback, prepend) { + return getEventDispatcher(this).on(name, callback, prepend); + }, + off: function (name, callback) { + return getEventDispatcher(this).off(name, callback); + }, + once: function (name, callback) { + return getEventDispatcher(this).once(name, callback); + }, + hasEventListeners: function (name) { + return getEventDispatcher(this).has(name); + } + }; + + var DOM$1 = DOMUtils.DOM; + var customEventRootDelegates; + var getEventTarget = function (editor, eventName) { + if (eventName === 'selectionchange') { + return editor.getDoc(); + } + if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) { + return editor.getDoc().documentElement; + } + if (editor.settings.event_root) { + if (!editor.eventRoot) { + editor.eventRoot = DOM$1.select(editor.settings.event_root)[0]; + } + return editor.eventRoot; + } + return editor.getBody(); + }; + var bindEventDelegate = function (editor, eventName) { + var eventRootElm, delegate; + var isListening = function (editor) { + return !editor.hidden && !editor.readonly; + }; + if (!editor.delegates) { + editor.delegates = {}; + } + if (editor.delegates[eventName] || editor.removed) { + return; + } + eventRootElm = getEventTarget(editor, eventName); + if (editor.settings.event_root) { + if (!customEventRootDelegates) { + customEventRootDelegates = {}; + editor.editorManager.on('removeEditor', function () { + var name; + if (!editor.editorManager.activeEditor) { + if (customEventRootDelegates) { + for (name in customEventRootDelegates) { + editor.dom.unbind(getEventTarget(editor, name)); + } + customEventRootDelegates = null; + } + } + }); + } + if (customEventRootDelegates[eventName]) { + return; + } + delegate = function (e) { + var target = e.target; + var editors = editor.editorManager.get(); + var i = editors.length; + while (i--) { + var body = editors[i].getBody(); + if (body === target || DOM$1.isChildOf(target, body)) { + if (isListening(editors[i])) { + editors[i].fire(eventName, e); + } + } + } + }; + customEventRootDelegates[eventName] = delegate; + DOM$1.bind(eventRootElm, eventName, delegate); + } else { + delegate = function (e) { + if (isListening(editor)) { + editor.fire(eventName, e); + } + }; + DOM$1.bind(eventRootElm, eventName, delegate); + editor.delegates[eventName] = delegate; + } + }; + var EditorObservable = { + bindPendingEventDelegates: function () { + var self = this; + $_a5gegtjje5o2pum.each(self._pendingNativeEvents, function (name) { + bindEventDelegate(self, name); + }); + }, + toggleNativeEvent: function (name, state) { + var self = this; + if (name === 'focus' || name === 'blur') { + return; + } + if (state) { + if (self.initialized) { + bindEventDelegate(self, name); + } else { + if (!self._pendingNativeEvents) { + self._pendingNativeEvents = [name]; + } else { + self._pendingNativeEvents.push(name); + } + } + } else if (self.initialized) { + self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); + delete self.delegates[name]; + } + }, + unbindAllNativeEvents: function () { + var self = this; + var body = self.getBody(); + var dom = self.dom; + var name; + if (self.delegates) { + for (name in self.delegates) { + self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); + } + delete self.delegates; + } + if (!self.inline && body && dom) { + body.onload = null; + dom.unbind(self.getWin()); + dom.unbind(self.getDoc()); + } + if (dom) { + dom.unbind(body); + dom.unbind(self.getContainer()); + } + } + }; + EditorObservable = $_a5gegtjje5o2pum.extend({}, $_8mfz0u44je5o2qmp, EditorObservable); + var EditorObservable$1 = EditorObservable; + + var setEditorCommandState = function (editor, cmd, state) { + try { + editor.getDoc().execCommand(cmd, false, state); + } catch (ex) { + } + }; + var clickBlocker = function (editor) { + var target, handler; + target = editor.getBody(); + handler = function (e) { + if (editor.dom.getParents(e.target, 'a').length > 0) { + e.preventDefault(); + } + }; + editor.dom.bind(target, 'click', handler); + return { + unbind: function () { + editor.dom.unbind(target, 'click', handler); + } + }; + }; + var toggleReadOnly = function (editor, state) { + if (editor._clickBlocker) { + editor._clickBlocker.unbind(); + editor._clickBlocker = null; + } + if (state) { + editor._clickBlocker = clickBlocker(editor); + editor.selection.controlSelection.hideResizeRect(); + editor.readonly = true; + editor.getBody().contentEditable = false; + } else { + editor.readonly = false; + editor.getBody().contentEditable = true; + setEditorCommandState(editor, 'StyleWithCSS', false); + setEditorCommandState(editor, 'enableInlineTableEditing', false); + setEditorCommandState(editor, 'enableObjectResizing', false); + editor.focus(); + editor.nodeChanged(); + } + }; + var setMode = function (editor, mode) { + var currentMode = editor.readonly ? 'readonly' : 'design'; + if (mode === currentMode) { + return; + } + if (editor.initialized) { + toggleReadOnly(editor, mode === 'readonly'); + } else { + editor.on('init', function () { + toggleReadOnly(editor, mode === 'readonly'); + }); + } + editor.fire('SwitchMode', { mode: mode }); + }; + var $_7uzwj846je5o2qmw = { setMode: setMode }; + + var each$10 = $_a5gegtjje5o2pum.each; + var explode$3 = $_a5gegtjje5o2pum.explode; + var keyCodeLookup = { + f9: 120, + f10: 121, + f11: 122 + }; + var modifierNames = $_a5gegtjje5o2pum.makeMap('alt,ctrl,shift,meta,access'); + function Shortcuts (editor) { + var self = this; + var shortcuts = {}; + var pendingPatterns = []; + var parseShortcut = function (pattern) { + var id, key; + var shortcut = {}; + each$10(explode$3(pattern, '+'), function (value) { + if (value in modifierNames) { + shortcut[value] = true; + } else { + if (/^[0-9]{2,}$/.test(value)) { + shortcut.keyCode = parseInt(value, 10); + } else { + shortcut.charCode = value.charCodeAt(0); + shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0); + } + } + }); + id = [shortcut.keyCode]; + for (key in modifierNames) { + if (shortcut[key]) { + id.push(key); + } else { + shortcut[key] = false; + } + } + shortcut.id = id.join(','); + if (shortcut.access) { + shortcut.alt = true; + if ($_9bd8pn9je5o2pp2.mac) { + shortcut.ctrl = true; + } else { + shortcut.shift = true; + } + } + if (shortcut.meta) { + if ($_9bd8pn9je5o2pp2.mac) { + shortcut.meta = true; + } else { + shortcut.ctrl = true; + shortcut.meta = false; + } + } + return shortcut; + }; + var createShortcut = function (pattern, desc, cmdFunc, scope) { + var shortcuts; + shortcuts = $_a5gegtjje5o2pum.map(explode$3(pattern, '>'), parseShortcut); + shortcuts[shortcuts.length - 1] = $_a5gegtjje5o2pum.extend(shortcuts[shortcuts.length - 1], { + func: cmdFunc, + scope: scope || editor + }); + return $_a5gegtjje5o2pum.extend(shortcuts[0], { + desc: editor.translate(desc), + subpatterns: shortcuts.slice(1) + }); + }; + var hasModifier = function (e) { + return e.altKey || e.ctrlKey || e.metaKey; + }; + var isFunctionKey = function (e) { + return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123; + }; + var matchShortcut = function (e, shortcut) { + if (!shortcut) { + return false; + } + if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) { + return false; + } + if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) { + return false; + } + if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) { + e.preventDefault(); + return true; + } + return false; + }; + var executeShortcutAction = function (shortcut) { + return shortcut.func ? shortcut.func.call(shortcut.scope) : null; + }; + editor.on('keyup keypress keydown', function (e) { + if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) { + each$10(shortcuts, function (shortcut) { + if (matchShortcut(e, shortcut)) { + pendingPatterns = shortcut.subpatterns.slice(0); + if (e.type === 'keydown') { + executeShortcutAction(shortcut); + } + return true; + } + }); + if (matchShortcut(e, pendingPatterns[0])) { + if (pendingPatterns.length === 1) { + if (e.type === 'keydown') { + executeShortcutAction(pendingPatterns[0]); + } + } + pendingPatterns.shift(); + } + } + }); + self.add = function (pattern, desc, cmdFunc, scope) { + var cmd; + cmd = cmdFunc; + if (typeof cmdFunc === 'string') { + cmdFunc = function () { + editor.execCommand(cmd, false, null); + }; + } else if ($_a5gegtjje5o2pum.isArray(cmd)) { + cmdFunc = function () { + editor.execCommand(cmd[0], cmd[1], cmd[2]); + }; + } + each$10(explode$3($_a5gegtjje5o2pum.trim(pattern.toLowerCase())), function (pattern) { + var shortcut = createShortcut(pattern, desc, cmdFunc, scope); + shortcuts[shortcut.id] = shortcut; + }); + return true; + }; + self.remove = function (pattern) { + var shortcut = createShortcut(pattern); + if (shortcuts[shortcut.id]) { + delete shortcuts[shortcut.id]; + return true; + } + return false; + }; + } + + var any$1 = function (predicate) { + return $_au2qfe30je5o2qb4.first(predicate).isSome(); + }; + var ancestor$3 = function (scope, predicate, isRoot) { + return $_au2qfe30je5o2qb4.ancestor(scope, predicate, isRoot).isSome(); + }; + var closest$3 = function (scope, predicate, isRoot) { + return $_au2qfe30je5o2qb4.closest(scope, predicate, isRoot).isSome(); + }; + var sibling$4 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.sibling(scope, predicate).isSome(); + }; + var child$4 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.child(scope, predicate).isSome(); + }; + var descendant$3 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.descendant(scope, predicate).isSome(); + }; + var $_byozzr4aje5o2qnk = { + any: any$1, + ancestor: ancestor$3, + closest: closest$3, + sibling: sibling$4, + child: child$4, + descendant: descendant$3 + }; + + var focus = function (element) { + element.dom().focus(); + }; + var blur = function (element) { + element.dom().blur(); + }; + var hasFocus = function (element) { + var doc = $_a6mttx17je5o2pyd.owner(element).dom(); + return element.dom() === doc.activeElement; + }; + var active = function (_doc) { + var doc = _doc !== undefined ? _doc.dom() : document; + return Option.from(doc.activeElement).map($_5tcb2dyje5o2pwu.fromDom); + }; + var focusInside = function (element) { + var doc = $_a6mttx17je5o2pyd.owner(element); + var inside = active(doc).filter(function (a) { + return $_byozzr4aje5o2qnk.closest(a, $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, element)); + }); + inside.fold(function () { + focus(element); + }, $_enfhkv6je5o2ply.noop); + }; + var search = function (element) { + return active($_a6mttx17je5o2pyd.owner(element)).filter(function (e) { + return element.dom().contains(e.dom()); + }); + }; + var $_7ndv7y49je5o2qng = { + hasFocus: hasFocus, + focus: focus, + blur: blur, + active: active, + search: search, + focusInside: focusInside + }; + + var getContentEditableHost = function (editor, node) { + return editor.dom.getParent(node, function (node) { + return editor.dom.getContentEditable(node) === 'true'; + }); + }; + var getCollapsedNode = function (rng) { + return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map($_5tcb2dyje5o2pwu.fromDom) : Option.none(); + }; + var getFocusInElement = function (root, rng) { + return getCollapsedNode(rng).bind(function (node) { + if (isTableSection(node)) { + return Option.some(node); + } else if ($_7oppmo1dje5o2pz1.contains(root, node) === false) { + return Option.some(root); + } else { + return Option.none(); + } + }); + }; + var normalizeSelection = function (editor, rng) { + getFocusInElement($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), rng).bind(function (elm) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(elm.dom()); + }).fold(function () { + return editor.selection.normalize(); + }, function (caretPos) { + return editor.selection.setRng(caretPos.toRange()); + }); + }; + var focusBody = function (body) { + if (body.setActive) { + try { + body.setActive(); + } catch (ex) { + body.focus(); + } + } else { + body.focus(); + } + }; + var hasElementFocus = function (elm) { + return $_7ndv7y49je5o2qng.hasFocus(elm) || $_7ndv7y49je5o2qng.search(elm).isSome(); + }; + var hasIframeFocus = function (editor) { + return editor.iframeElement && $_7ndv7y49je5o2qng.hasFocus($_5tcb2dyje5o2pwu.fromDom(editor.iframeElement)); + }; + var hasInlineFocus = function (editor) { + var rawBody = editor.getBody(); + return rawBody && hasElementFocus($_5tcb2dyje5o2pwu.fromDom(rawBody)); + }; + var hasFocus$1 = function (editor) { + return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor); + }; + var focusEditor = function (editor) { + var selection = editor.selection, contentEditable = editor.settings.content_editable; + var body = editor.getBody(); + var contentEditableHost, rng = selection.getRng(); + editor.quirks.refreshContentEditable(); + contentEditableHost = getContentEditableHost(editor, selection.getNode()); + if (editor.$.contains(body, contentEditableHost)) { + focusBody(contentEditableHost); + normalizeSelection(editor, rng); + activateEditor(editor); + return; + } + if (editor.bookmark !== undefined && hasFocus$1(editor) === false) { + $_fnd7h33zje5o2qly.getRng(editor).each(function (bookmarkRng) { + editor.selection.setRng(bookmarkRng); + rng = bookmarkRng; + }); + } + if (!contentEditable) { + if (!$_9bd8pn9je5o2pp2.opera) { + focusBody(body); + } + editor.getWin().focus(); + } + if ($_9bd8pn9je5o2pp2.gecko || contentEditable) { + focusBody(body); + normalizeSelection(editor, rng); + } + activateEditor(editor); + }; + var activateEditor = function (editor) { + editor.editorManager.setActive(editor); + }; + var focus$1 = function (editor, skipFocus) { + if (editor.removed) { + return; + } + skipFocus ? activateEditor(editor) : focusEditor(editor); + }; + var $_llx5i48je5o2qna = { + focus: focus$1, + hasFocus: hasFocus$1 + }; + + var getProp = function (propName, elm) { + var rawElm = elm.dom(); + return rawElm[propName]; + }; + var getComputedSizeProp = function (propName, elm) { + return parseInt($_1ioope11je5o2px4.get(elm, propName), 10); + }; + var getClientWidth = $_enfhkv6je5o2ply.curry(getProp, 'clientWidth'); + var getClientHeight = $_enfhkv6je5o2ply.curry(getProp, 'clientHeight'); + var getMarginTop = $_enfhkv6je5o2ply.curry(getComputedSizeProp, 'margin-top'); + var getMarginLeft = $_enfhkv6je5o2ply.curry(getComputedSizeProp, 'margin-left'); + var getBoundingClientRect$1 = function (elm) { + return elm.dom().getBoundingClientRect(); + }; + var isInsideElementContentArea = function (bodyElm, clientX, clientY) { + var clientWidth = getClientWidth(bodyElm); + var clientHeight = getClientHeight(bodyElm); + return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight; + }; + var transpose = function (inline, elm, clientX, clientY) { + var clientRect = getBoundingClientRect$1(elm); + var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0; + var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0; + var x = clientX - deltaX; + var y = clientY - deltaY; + return { + x: x, + y: y + }; + }; + var isXYInContentArea = function (editor, clientX, clientY) { + var bodyElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var targetElm = editor.inline ? bodyElm : $_a6mttx17je5o2pyd.documentElement(bodyElm); + var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY); + return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y); + }; + var fromDomSafe = function (node) { + return Option.from(node).map($_5tcb2dyje5o2pwu.fromDom); + }; + var isEditorAttachedToDom = function (editor) { + var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer(); + return fromDomSafe(rawContainer).map(function (container) { + return $_7oppmo1dje5o2pz1.contains($_a6mttx17je5o2pyd.owner(container), container); + }).getOr(false); + }; + var $_3f7nxx4dje5o2qoa = { + isXYInContentArea: isXYInContentArea, + isEditorAttachedToDom: isEditorAttachedToDom + }; + + function NotificationManagerImpl () { + var unimplemented = function () { + throw new Error('Theme did not provide a NotificationManager implementation.'); + }; + return { + open: unimplemented, + close: unimplemented, + reposition: unimplemented, + getArgs: unimplemented + }; + } + + function NotificationManager (editor) { + var notifications = []; + var getImplementation = function () { + var theme = editor.theme; + return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl(); + }; + var getTopNotification = function () { + return Option.from(notifications[0]); + }; + var isEqual = function (a, b) { + return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout; + }; + var reposition = function () { + if (notifications.length > 0) { + getImplementation().reposition(notifications); + } + }; + var addNotification = function (notification) { + notifications.push(notification); + }; + var closeNotification = function (notification) { + $_bwcteb4je5o2pl4.findIndex(notifications, function (otherNotification) { + return otherNotification === notification; + }).each(function (index) { + notifications.splice(index, 1); + }); + }; + var open = function (args) { + if (editor.removed || !$_3f7nxx4dje5o2qoa.isEditorAttachedToDom(editor)) { + return; + } + return $_bwcteb4je5o2pl4.find(notifications, function (notification) { + return isEqual(getImplementation().getArgs(notification), args); + }).getOrThunk(function () { + editor.editorManager.setActive(editor); + var notification = getImplementation().open(args, function () { + closeNotification(notification); + reposition(); + }); + addNotification(notification); + reposition(); + return notification; + }); + }; + var close = function () { + getTopNotification().each(function (notification) { + getImplementation().close(notification); + closeNotification(notification); + reposition(); + }); + }; + var getNotifications = function () { + return notifications; + }; + var registerEvents = function (editor) { + editor.on('SkinLoaded', function () { + var serviceMessage = editor.settings.service_message; + if (serviceMessage) { + open({ + text: serviceMessage, + type: 'warning', + timeout: 0, + icon: '' + }); + } + }); + editor.on('ResizeEditor ResizeWindow', function () { + $_db41wogje5o2ps3.requestAnimationFrame(reposition); + }); + editor.on('remove', function () { + $_bwcteb4je5o2pl4.each(notifications, function (notification) { + getImplementation().close(notification); + }); + }); + }; + registerEvents(editor); + return { + open: open, + close: close, + getNotifications: getNotifications + }; + } + + function WindowManagerImpl () { + var unimplemented = function () { + throw new Error('Theme did not provide a WindowManager implementation.'); + }; + return { + open: unimplemented, + alert: unimplemented, + confirm: unimplemented, + close: unimplemented, + getParams: unimplemented, + setParams: unimplemented + }; + } + + function WindowManager (editor) { + var windows = []; + var getImplementation = function () { + var theme = editor.theme; + return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl(); + }; + var funcBind = function (scope, f) { + return function () { + return f ? f.apply(scope, arguments) : undefined; + }; + }; + var fireOpenEvent = function (win) { + editor.fire('OpenWindow', { win: win }); + }; + var fireCloseEvent = function (win) { + editor.fire('CloseWindow', { win: win }); + }; + var addWindow = function (win) { + windows.push(win); + fireOpenEvent(win); + }; + var closeWindow = function (win) { + $_bwcteb4je5o2pl4.findIndex(windows, function (otherWindow) { + return otherWindow === win; + }).each(function (index) { + windows.splice(index, 1); + fireCloseEvent(win); + if (windows.length === 0) { + editor.focus(); + } + }); + }; + var getTopWindow = function () { + return Option.from(windows[windows.length - 1]); + }; + var open = function (args, params) { + editor.editorManager.setActive(editor); + $_fnd7h33zje5o2qly.store(editor); + var win = getImplementation().open(args, params, closeWindow); + addWindow(win); + return win; + }; + var alert = function (message, callback, scope) { + var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow); + addWindow(win); + }; + var confirm = function (message, callback, scope) { + var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow); + addWindow(win); + }; + var close = function () { + getTopWindow().each(function (win) { + getImplementation().close(win); + closeWindow(win); + }); + }; + var getParams = function () { + return getTopWindow().map(getImplementation().getParams).getOr(null); + }; + var setParams = function (params) { + getTopWindow().each(function (win) { + getImplementation().setParams(win, params); + }); + }; + var getWindows = function () { + return windows; + }; + editor.on('remove', function () { + $_bwcteb4je5o2pl4.each(windows.slice(0), function (win) { + getImplementation().close(win); + }); + }); + return { + windows: windows, + open: open, + alert: alert, + confirm: confirm, + close: close, + getParams: getParams, + setParams: setParams, + getWindows: getWindows + }; + } + + var PluginManager = AddOnManager.PluginManager; + var resolvePluginName = function (targetUrl, suffix) { + for (var name_1 in PluginManager.urls) { + var matchUrl = PluginManager.urls[name_1] + '/plugin' + suffix + '.js'; + if (matchUrl === targetUrl) { + return name_1; + } + } + return null; + }; + var pluginUrlToMessage = function (editor, url) { + var plugin = resolvePluginName(url, editor.suffix); + return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url; + }; + var displayNotification = function (editor, message) { + editor.notificationManager.open({ + type: 'error', + text: message + }); + }; + var displayError = function (editor, message) { + if (editor._skinLoaded) { + displayNotification(editor, message); + } else { + editor.on('SkinLoaded', function () { + displayNotification(editor, message); + }); + } + }; + var uploadError = function (editor, message) { + displayError(editor, 'Failed to upload image: ' + message); + }; + var pluginLoadError = function (editor, url) { + displayError(editor, pluginUrlToMessage(editor, url)); + }; + var initError = function (message) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var console = window.console; + if (console) { + if (console.error) { + console.error.apply(console, arguments); + } else { + console.log.apply(console, arguments); + } + } + }; + var $_axrd1j4hje5o2qor = { + pluginLoadError: pluginLoadError, + uploadError: uploadError, + displayError: displayError, + initError: initError + }; + + var PluginManager$1 = AddOnManager.PluginManager; + + var ThemeManager = AddOnManager.ThemeManager; + + function XMLHttpRequest () { + var f = $_lmz5vbje5o2pp9.getOrDie('XMLHttpRequest'); + return new f(); + } + + function Uploader (uploadStatus, settings) { + var pendingPromises = {}; + var pathJoin = function (path1, path2) { + if (path1) { + return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, ''); + } + return path2; + }; + var defaultHandler = function (blobInfo, success, failure, progress) { + var xhr, formData; + xhr = new XMLHttpRequest(); + xhr.open('POST', settings.url); + xhr.withCredentials = settings.credentials; + xhr.upload.onprogress = function (e) { + progress(e.loaded / e.total * 100); + }; + xhr.onerror = function () { + failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); + }; + xhr.onload = function () { + var json; + if (xhr.status < 200 || xhr.status >= 300) { + failure('HTTP Error: ' + xhr.status); + return; + } + json = JSON.parse(xhr.responseText); + if (!json || typeof json.location !== 'string') { + failure('Invalid JSON: ' + xhr.responseText); + return; + } + success(pathJoin(settings.basePath, json.location)); + }; + formData = new FormData(); + formData.append('file', blobInfo.blob(), blobInfo.filename()); + xhr.send(formData); + }; + var noUpload = function () { + return new promiseObj(function (resolve) { + resolve([]); + }); + }; + var handlerSuccess = function (blobInfo, url) { + return { + url: url, + blobInfo: blobInfo, + status: true + }; + }; + var handlerFailure = function (blobInfo, error) { + return { + url: '', + blobInfo: blobInfo, + status: false, + error: error + }; + }; + var resolvePending = function (blobUri, result) { + $_a5gegtjje5o2pum.each(pendingPromises[blobUri], function (resolve) { + resolve(result); + }); + delete pendingPromises[blobUri]; + }; + var uploadBlobInfo = function (blobInfo, handler, openNotification) { + uploadStatus.markPending(blobInfo.blobUri()); + return new promiseObj(function (resolve) { + var notification, progress; + var noop = function () { + }; + try { + var closeNotification_1 = function () { + if (notification) { + notification.close(); + progress = noop; + } + }; + var success = function (url) { + closeNotification_1(); + uploadStatus.markUploaded(blobInfo.blobUri(), url); + resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url)); + resolve(handlerSuccess(blobInfo, url)); + }; + var failure = function (error) { + closeNotification_1(); + uploadStatus.removeFailed(blobInfo.blobUri()); + resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error)); + resolve(handlerFailure(blobInfo, error)); + }; + progress = function (percent) { + if (percent < 0 || percent > 100) { + return; + } + if (!notification) { + notification = openNotification(); + } + notification.progressBar.value(percent); + }; + handler(blobInfo, success, failure, progress); + } catch (ex) { + resolve(handlerFailure(blobInfo, ex.message)); + } + }); + }; + var isDefaultHandler = function (handler) { + return handler === defaultHandler; + }; + var pendingUploadBlobInfo = function (blobInfo) { + var blobUri = blobInfo.blobUri(); + return new promiseObj(function (resolve) { + pendingPromises[blobUri] = pendingPromises[blobUri] || []; + pendingPromises[blobUri].push(resolve); + }); + }; + var uploadBlobs = function (blobInfos, openNotification) { + blobInfos = $_a5gegtjje5o2pum.grep(blobInfos, function (blobInfo) { + return !uploadStatus.isUploaded(blobInfo.blobUri()); + }); + return promiseObj.all($_a5gegtjje5o2pum.map(blobInfos, function (blobInfo) { + return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification); + })); + }; + var upload = function (blobInfos, openNotification) { + return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification); + }; + settings = $_a5gegtjje5o2pum.extend({ + credentials: false, + handler: defaultHandler + }, settings); + return { upload: upload }; + } + + function Blob (parts, properties) { + var f = $_lmz5vbje5o2pp9.getOrDie('Blob'); + return new f(parts, properties); + } + + function FileReader () { + var f = $_lmz5vbje5o2pp9.getOrDie('FileReader'); + return new f(); + } + + function Uint8Array (arr) { + var f = $_lmz5vbje5o2pp9.getOrDie('Uint8Array'); + return new f(arr); + } + + var requestAnimationFrame$1 = function (callback) { + var f = $_lmz5vbje5o2pp9.getOrDie('requestAnimationFrame'); + f(callback); + }; + var atob = function (base64) { + var f = $_lmz5vbje5o2pp9.getOrDie('atob'); + return f(base64); + }; + var $_9okclz4uje5o2qq7 = { + atob: atob, + requestAnimationFrame: requestAnimationFrame$1 + }; + + var blobUriToBlob = function (url) { + return new promiseObj(function (resolve, reject) { + var rejectWithError = function () { + reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.'); + }; + try { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'blob'; + xhr.onload = function () { + if (this.status === 200) { + resolve(this.response); + } else { + rejectWithError(); + } + }; + xhr.onerror = rejectWithError; + xhr.send(); + } catch (ex) { + rejectWithError(); + } + }); + }; + var parseDataUri = function (uri) { + var type, matches; + uri = decodeURIComponent(uri).split(','); + matches = /data:([^;]+)/.exec(uri[0]); + if (matches) { + type = matches[1]; + } + return { + type: type, + data: uri[1] + }; + }; + var dataUriToBlob = function (uri) { + return new promiseObj(function (resolve) { + var str, arr, i; + uri = parseDataUri(uri); + try { + str = $_9okclz4uje5o2qq7.atob(uri.data); + } catch (e) { + resolve(new Blob([])); + return; + } + arr = new Uint8Array(str.length); + for (i = 0; i < arr.length; i++) { + arr[i] = str.charCodeAt(i); + } + resolve(new Blob([arr], { type: uri.type })); + }); + }; + var uriToBlob = function (url) { + if (url.indexOf('blob:') === 0) { + return blobUriToBlob(url); + } + if (url.indexOf('data:') === 0) { + return dataUriToBlob(url); + } + return null; + }; + var blobToDataUri = function (blob) { + return new promiseObj(function (resolve) { + var reader = new FileReader(); + reader.onloadend = function () { + resolve(reader.result); + }; + reader.readAsDataURL(blob); + }); + }; + var $_8a34kg4qje5o2qpz = { + uriToBlob: uriToBlob, + blobToDataUri: blobToDataUri, + parseDataUri: parseDataUri + }; + + var count = 0; + var uniqueId = function (prefix) { + return (prefix || 'blobid') + count++; + }; + var imageToBlobInfo = function (blobCache, img, resolve, reject) { + var base64, blobInfo; + if (img.src.indexOf('blob:') === 0) { + blobInfo = blobCache.getByUri(img.src); + if (blobInfo) { + resolve({ + image: img, + blobInfo: blobInfo + }); + } else { + $_8a34kg4qje5o2qpz.uriToBlob(img.src).then(function (blob) { + $_8a34kg4qje5o2qpz.blobToDataUri(blob).then(function (dataUri) { + base64 = $_8a34kg4qje5o2qpz.parseDataUri(dataUri).data; + blobInfo = blobCache.create(uniqueId(), blob, base64); + blobCache.add(blobInfo); + resolve({ + image: img, + blobInfo: blobInfo + }); + }); + }, function (err) { + reject(err); + }); + } + return; + } + base64 = $_8a34kg4qje5o2qpz.parseDataUri(img.src).data; + blobInfo = blobCache.findFirst(function (cachedBlobInfo) { + return cachedBlobInfo.base64() === base64; + }); + if (blobInfo) { + resolve({ + image: img, + blobInfo: blobInfo + }); + } else { + $_8a34kg4qje5o2qpz.uriToBlob(img.src).then(function (blob) { + blobInfo = blobCache.create(uniqueId(), blob, base64); + blobCache.add(blobInfo); + resolve({ + image: img, + blobInfo: blobInfo + }); + }, function (err) { + reject(err); + }); + } + }; + var getAllImages = function (elm) { + return elm ? elm.getElementsByTagName('img') : []; + }; + function ImageScanner (uploadStatus, blobCache) { + var cachedPromises = {}; + var findAll = function (elm, predicate) { + var images; + if (!predicate) { + predicate = $_ghq3nq25je5o2q5q.constant(true); + } + images = $_c2vc3pkje5o2puw.filter(getAllImages(elm), function (img) { + var src = img.src; + if (!$_9bd8pn9je5o2pp2.fileApi) { + return false; + } + if (img.hasAttribute('data-mce-bogus')) { + return false; + } + if (img.hasAttribute('data-mce-placeholder')) { + return false; + } + if (!src || src === $_9bd8pn9je5o2pp2.transparentSrc) { + return false; + } + if (src.indexOf('blob:') === 0) { + return !uploadStatus.isUploaded(src); + } + if (src.indexOf('data:') === 0) { + return predicate(img); + } + return false; + }); + var promises = $_c2vc3pkje5o2puw.map(images, function (img) { + if (cachedPromises[img.src]) { + return new promiseObj(function (resolve) { + cachedPromises[img.src].then(function (imageInfo) { + if (typeof imageInfo === 'string') { + return imageInfo; + } + resolve({ + image: img, + blobInfo: imageInfo.blobInfo + }); + }); + }); + } + var newPromise = new promiseObj(function (resolve, reject) { + imageToBlobInfo(blobCache, img, resolve, reject); + }).then(function (result) { + delete cachedPromises[result.image.src]; + return result; + }).catch(function (error) { + delete cachedPromises[img.src]; + return error; + }); + cachedPromises[img.src] = newPromise; + return newPromise; + }); + return promiseObj.all(promises); + }; + return { findAll: findAll }; + } + + var count$1 = 0; + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 4294967295).toString(36); + }; + var now = new Date().getTime(); + return 's' + now.toString(36) + rnd() + rnd() + rnd(); + }; + var uuid = function (prefix) { + return prefix + count$1++ + seed(); + }; + var $_2bgddd4wje5o2qqo = { uuid: uuid }; + + function BlobCache () { + var cache = []; + var constant = $_ghq3nq25je5o2q5q.constant; + var mimeToExt = function (mime) { + var mimes = { + 'image/jpeg': 'jpg', + 'image/jpg': 'jpg', + 'image/gif': 'gif', + 'image/png': 'png' + }; + return mimes[mime.toLowerCase()] || 'dat'; + }; + var create = function (o, blob, base64, filename) { + return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({ + id: o, + name: filename, + blob: blob, + base64: base64 + }); + }; + var toBlobInfo = function (o) { + var id, name; + if (!o.blob || !o.base64) { + throw new Error('blob and base64 representations of the image are required for BlobInfo to be created'); + } + id = o.id || $_2bgddd4wje5o2qqo.uuid('blobid'); + name = o.name || id; + return { + id: constant(id), + name: constant(name), + filename: constant(name + '.' + mimeToExt(o.blob.type)), + blob: constant(o.blob), + base64: constant(o.base64), + blobUri: constant(o.blobUri || $_g0v736aje5o2pp8.createObjectURL(o.blob)), + uri: constant(o.uri) + }; + }; + var add = function (blobInfo) { + if (!get(blobInfo.id())) { + cache.push(blobInfo); + } + }; + var get = function (id) { + return findFirst(function (cachedBlobInfo) { + return cachedBlobInfo.id() === id; + }); + }; + var findFirst = function (predicate) { + return $_c2vc3pkje5o2puw.filter(cache, predicate)[0]; + }; + var getByUri = function (blobUri) { + return findFirst(function (blobInfo) { + return blobInfo.blobUri() === blobUri; + }); + }; + var removeByUri = function (blobUri) { + cache = $_c2vc3pkje5o2puw.filter(cache, function (blobInfo) { + if (blobInfo.blobUri() === blobUri) { + $_g0v736aje5o2pp8.revokeObjectURL(blobInfo.blobUri()); + return false; + } + return true; + }); + }; + var destroy = function () { + $_c2vc3pkje5o2puw.each(cache, function (cachedBlobInfo) { + $_g0v736aje5o2pp8.revokeObjectURL(cachedBlobInfo.blobUri()); + }); + cache = []; + }; + return { + create: create, + add: add, + get: get, + getByUri: getByUri, + findFirst: findFirst, + removeByUri: removeByUri, + destroy: destroy + }; + } + + function UploadStatus () { + var PENDING = 1, UPLOADED = 2; + var blobUriStatuses = {}; + var createStatus = function (status, resultUri) { + return { + status: status, + resultUri: resultUri + }; + }; + var hasBlobUri = function (blobUri) { + return blobUri in blobUriStatuses; + }; + var getResultUri = function (blobUri) { + var result = blobUriStatuses[blobUri]; + return result ? result.resultUri : null; + }; + var isPending = function (blobUri) { + return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false; + }; + var isUploaded = function (blobUri) { + return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false; + }; + var markPending = function (blobUri) { + blobUriStatuses[blobUri] = createStatus(PENDING, null); + }; + var markUploaded = function (blobUri, resultUri) { + blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri); + }; + var removeFailed = function (blobUri) { + delete blobUriStatuses[blobUri]; + }; + var destroy = function () { + blobUriStatuses = {}; + }; + return { + hasBlobUri: hasBlobUri, + getResultUri: getResultUri, + isPending: isPending, + isUploaded: isUploaded, + markPending: markPending, + markUploaded: markUploaded, + removeFailed: removeFailed, + destroy: destroy + }; + } + + function EditorUpload (editor) { + var blobCache = BlobCache(); + var uploader, imageScanner; + var settings = editor.settings; + var uploadStatus = UploadStatus(); + var aliveGuard = function (callback) { + return function (result) { + if (editor.selection) { + return callback(result); + } + return []; + }; + }; + var cacheInvalidator = function () { + return '?' + new Date().getTime(); + }; + var replaceString = function (content, search, replace) { + var index = 0; + do { + index = content.indexOf(search, index); + if (index !== -1) { + content = content.substring(0, index) + replace + content.substr(index + search.length); + index += replace.length - search.length + 1; + } + } while (index !== -1); + return content; + }; + var replaceImageUrl = function (content, targetUrl, replacementUrl) { + content = replaceString(content, 'src="' + targetUrl + '"', 'src="' + replacementUrl + '"'); + content = replaceString(content, 'data-mce-src="' + targetUrl + '"', 'data-mce-src="' + replacementUrl + '"'); + return content; + }; + var replaceUrlInUndoStack = function (targetUrl, replacementUrl) { + $_c2vc3pkje5o2puw.each(editor.undoManager.data, function (level) { + if (level.type === 'fragmented') { + level.fragments = $_c2vc3pkje5o2puw.map(level.fragments, function (fragment) { + return replaceImageUrl(fragment, targetUrl, replacementUrl); + }); + } else { + level.content = replaceImageUrl(level.content, targetUrl, replacementUrl); + } + }); + }; + var openNotification = function () { + return editor.notificationManager.open({ + text: editor.translate('Image uploading...'), + type: 'info', + timeout: -1, + progressBar: true + }); + }; + var replaceImageUri = function (image, resultUri) { + blobCache.removeByUri(image.src); + replaceUrlInUndoStack(image.src, resultUri); + editor.$(image).attr({ + 'src': settings.images_reuse_filename ? resultUri + cacheInvalidator() : resultUri, + 'data-mce-src': editor.convertURL(resultUri, 'src') + }); + }; + var uploadImages = function (callback) { + if (!uploader) { + uploader = Uploader(uploadStatus, { + url: settings.images_upload_url, + basePath: settings.images_upload_base_path, + credentials: settings.images_upload_credentials, + handler: settings.images_upload_handler + }); + } + return scanForImages().then(aliveGuard(function (imageInfos) { + var blobInfos; + blobInfos = $_c2vc3pkje5o2puw.map(imageInfos, function (imageInfo) { + return imageInfo.blobInfo; + }); + return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) { + var filteredResult = $_c2vc3pkje5o2puw.map(result, function (uploadInfo, index) { + var image = imageInfos[index].image; + if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) { + replaceImageUri(image, uploadInfo.url); + } else if (uploadInfo.error) { + $_axrd1j4hje5o2qor.uploadError(editor, uploadInfo.error); + } + return { + element: image, + status: uploadInfo.status + }; + }); + if (callback) { + callback(filteredResult); + } + return filteredResult; + })); + })); + }; + var uploadImagesAuto = function (callback) { + if (settings.automatic_uploads !== false) { + return uploadImages(callback); + } + }; + var isValidDataUriImage = function (imgElm) { + return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true; + }; + var scanForImages = function () { + if (!imageScanner) { + imageScanner = ImageScanner(uploadStatus, blobCache); + } + return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) { + result = $_c2vc3pkje5o2puw.filter(result, function (resultItem) { + if (typeof resultItem === 'string') { + $_axrd1j4hje5o2qor.displayError(editor, resultItem); + return false; + } + return true; + }); + $_c2vc3pkje5o2puw.each(result, function (resultItem) { + replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri()); + resultItem.image.src = resultItem.blobInfo.blobUri(); + resultItem.image.removeAttribute('data-mce-src'); + }); + return result; + })); + }; + var destroy = function () { + blobCache.destroy(); + uploadStatus.destroy(); + imageScanner = uploader = null; + }; + var replaceBlobUris = function (content) { + return content.replace(/src="(blob:[^"]+)"/g, function (match, blobUri) { + var resultUri = uploadStatus.getResultUri(blobUri); + if (resultUri) { + return 'src="' + resultUri + '"'; + } + var blobInfo = blobCache.getByUri(blobUri); + if (!blobInfo) { + blobInfo = $_c2vc3pkje5o2puw.reduce(editor.editorManager.get(), function (result, editor) { + return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri); + }, null); + } + if (blobInfo) { + return 'src="data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '"'; + } + return match; + }); + }; + editor.on('setContent', function () { + if (editor.settings.automatic_uploads !== false) { + uploadImagesAuto(); + } else { + scanForImages(); + } + }); + editor.on('RawSaveContent', function (e) { + e.content = replaceBlobUris(e.content); + }); + editor.on('getContent', function (e) { + if (e.source_view || e.format === 'raw') { + return; + } + e.content = replaceBlobUris(e.content); + }); + editor.on('PostRender', function () { + editor.parser.addNodeFilter('img', function (images) { + $_c2vc3pkje5o2puw.each(images, function (img) { + var src = img.attr('src'); + if (blobCache.getByUri(src)) { + return; + } + var resultUri = uploadStatus.getResultUri(src); + if (resultUri) { + img.attr('src', resultUri); + } + }); + }); + }); + return { + blobCache: blobCache, + uploadImages: uploadImages, + uploadImagesAuto: uploadImagesAuto, + scanForImages: scanForImages, + destroy: destroy + }; + } + + var isBlockElement = function (blockElements, node) { + return blockElements.hasOwnProperty(node.nodeName); + }; + var isValidTarget = function (blockElements, node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + return true; + } else if ($_9owqcy1qje5o2q0e.isElement(node)) { + return !isBlockElement(blockElements, node) && !$_83h91t2jje5o2q8n.isBookmarkNode(node); + } else { + return false; + } + }; + var hasBlockParent = function (blockElements, root, node) { + return $_bwcteb4je5o2pl4.exists($_yqcmh39je5o2qcw.parents($_5tcb2dyje5o2pwu.fromDom(node), $_5tcb2dyje5o2pwu.fromDom(root)), function (elm) { + return isBlockElement(blockElements, elm.dom()); + }); + }; + var shouldRemoveTextNode = function (blockElements, node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + if (node.nodeValue.length === 0) { + return true; + } else if (/^\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) { + return true; + } + } + return false; + }; + var addRootBlocks = function (editor) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection; + var schema = editor.schema, blockElements = schema.getBlockElements(); + var node = selection.getStart(); + var rootNode = editor.getBody(); + var rng; + var startContainer, startOffset, endContainer, endOffset, rootBlockNode; + var tempNode, wrapped, restoreSelection; + var rootNodeName, forcedRootBlock; + forcedRootBlock = settings.forced_root_block; + if (!node || !$_9owqcy1qje5o2q0e.isElement(node) || !forcedRootBlock) { + return; + } + rootNodeName = rootNode.nodeName.toLowerCase(); + if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) { + return; + } + rng = selection.getRng(); + startContainer = rng.startContainer; + startOffset = rng.startOffset; + endContainer = rng.endContainer; + endOffset = rng.endOffset; + restoreSelection = $_llx5i48je5o2qna.hasFocus(editor); + node = rootNode.firstChild; + while (node) { + if (isValidTarget(blockElements, node)) { + if (shouldRemoveTextNode(blockElements, node)) { + tempNode = node; + node = node.nextSibling; + dom.remove(tempNode); + continue; + } + if (!rootBlockNode) { + rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs); + node.parentNode.insertBefore(rootBlockNode, node); + wrapped = true; + } + tempNode = node; + node = node.nextSibling; + rootBlockNode.appendChild(tempNode); + } else { + rootBlockNode = null; + node = node.nextSibling; + } + } + if (wrapped && restoreSelection) { + rng.setStart(startContainer, startOffset); + rng.setEnd(endContainer, endOffset); + selection.setRng(rng); + editor.nodeChanged(); + } + }; + var setup$1 = function (editor) { + if (editor.settings.forced_root_block) { + editor.on('NodeChange', $_enfhkv6je5o2ply.curry(addRootBlocks, editor)); + } + }; + var $_fekqo94yje5o2qqs = { setup: setup$1 }; + + function NodeChange (editor) { + var lastRng, lastPath = []; + var isSameElementPath = function (startElm) { + var i, currentPath; + currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm); + if (currentPath.length === lastPath.length) { + for (i = currentPath.length; i >= 0; i--) { + if (currentPath[i] !== lastPath[i]) { + break; + } + } + if (i === -1) { + lastPath = currentPath; + return true; + } + } + lastPath = currentPath; + return false; + }; + if (!('onselectionchange' in editor.getDoc())) { + editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) { + var nativeRng, fakeRng; + nativeRng = editor.selection.getRng(); + fakeRng = { + startContainer: nativeRng.startContainer, + startOffset: nativeRng.startOffset, + endContainer: nativeRng.endContainer, + endOffset: nativeRng.endOffset + }; + if (e.type === 'nodechange' || !$_aieo7z3yje5o2qlw.isEq(fakeRng, lastRng)) { + editor.fire('SelectionChange'); + } + lastRng = fakeRng; + }); + } + editor.on('contextmenu', function () { + editor.fire('SelectionChange'); + }); + editor.on('SelectionChange', function () { + var startElm = editor.selection.getStart(true); + if (!startElm || !$_9bd8pn9je5o2pp2.range && editor.selection.isCollapsed()) { + return; + } + if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) { + editor.nodeChanged({ selectionChange: true }); + } + }); + editor.on('MouseUp', function (e) { + if (!e.isDefaultPrevented()) { + if (editor.selection.getNode().nodeName === 'IMG') { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + editor.nodeChanged(); + }); + } else { + editor.nodeChanged(); + } + } + }); + this.nodeChanged = function (args) { + var selection = editor.selection; + var node, parents, root; + if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) { + root = editor.getBody(); + node = selection.getStart(true) || root; + if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) { + node = root; + } + parents = []; + editor.dom.getParent(node, function (node) { + if (node === root) { + return true; + } + parents.push(node); + }); + args = args || {}; + args.element = node; + args.parents = parents; + editor.fire('NodeChange', args); + } + }; + } + + var getAbsolutePosition = function (elm) { + var doc, docElem, win, clientRect; + clientRect = elm.getBoundingClientRect(); + doc = elm.ownerDocument; + docElem = doc.documentElement; + win = doc.defaultView; + return { + top: clientRect.top + win.pageYOffset - docElem.clientTop, + left: clientRect.left + win.pageXOffset - docElem.clientLeft + }; + }; + var getBodyPosition = function (editor) { + return editor.inline ? getAbsolutePosition(editor.getBody()) : { + left: 0, + top: 0 + }; + }; + var getScrollPosition = function (editor) { + var body = editor.getBody(); + return editor.inline ? { + left: body.scrollLeft, + top: body.scrollTop + } : { + left: 0, + top: 0 + }; + }; + var getBodyScroll = function (editor) { + var body = editor.getBody(), docElm = editor.getDoc().documentElement; + var inlineScroll = { + left: body.scrollLeft, + top: body.scrollTop + }; + var iframeScroll = { + left: body.scrollLeft || docElm.scrollLeft, + top: body.scrollTop || docElm.scrollTop + }; + return editor.inline ? inlineScroll : iframeScroll; + }; + var getMousePosition = function (editor, event) { + if (event.target.ownerDocument !== editor.getDoc()) { + var iframePosition = getAbsolutePosition(editor.getContentAreaContainer()); + var scrollPosition = getBodyScroll(editor); + return { + left: event.pageX - iframePosition.left + scrollPosition.left, + top: event.pageY - iframePosition.top + scrollPosition.top + }; + } + return { + left: event.pageX, + top: event.pageY + }; + }; + var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) { + return { + pageX: mousePosition.left - bodyPosition.left + scrollPosition.left, + pageY: mousePosition.top - bodyPosition.top + scrollPosition.top + }; + }; + var calc = function (editor, event) { + return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event)); + }; + var $_f685v452je5o2qrw = { calc: calc }; + + var isContentEditableFalse$7 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isContentEditableTrue$4 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isDraggable = function (rootElm, elm) { + return isContentEditableFalse$7(elm) && elm !== rootElm; + }; + var isValidDropTarget = function (editor, targetElement, dragElement) { + if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) { + return false; + } + if (isContentEditableFalse$7(targetElement)) { + return false; + } + return true; + }; + var cloneElement = function (elm) { + var cloneElm = elm.cloneNode(true); + cloneElm.removeAttribute('data-mce-selected'); + return cloneElm; + }; + var createGhost = function (editor, elm, width, height) { + var clonedElm = elm.cloneNode(true); + editor.dom.setStyles(clonedElm, { + width: width, + height: height + }); + editor.dom.setAttrib(clonedElm, 'data-mce-selected', null); + var ghostElm = editor.dom.create('div', { + 'class': 'mce-drag-container', + 'data-mce-bogus': 'all', + 'unselectable': 'on', + 'contenteditable': 'false' + }); + editor.dom.setStyles(ghostElm, { + position: 'absolute', + opacity: 0.5, + overflow: 'hidden', + border: 0, + padding: 0, + margin: 0, + width: width, + height: height + }); + editor.dom.setStyles(clonedElm, { + margin: 0, + boxSizing: 'border-box' + }); + ghostElm.appendChild(clonedElm); + return ghostElm; + }; + var appendGhostToBody = function (ghostElm, bodyElm) { + if (ghostElm.parentNode !== bodyElm) { + bodyElm.appendChild(ghostElm); + } + }; + var moveGhost = function (ghostElm, position, width, height, maxX, maxY) { + var overflowX = 0, overflowY = 0; + ghostElm.style.left = position.pageX + 'px'; + ghostElm.style.top = position.pageY + 'px'; + if (position.pageX + width > maxX) { + overflowX = position.pageX + width - maxX; + } + if (position.pageY + height > maxY) { + overflowY = position.pageY + height - maxY; + } + ghostElm.style.width = width - overflowX + 'px'; + ghostElm.style.height = height - overflowY + 'px'; + }; + var removeElement = function (elm) { + if (elm && elm.parentNode) { + elm.parentNode.removeChild(elm); + } + }; + var isLeftMouseButtonPressed = function (e) { + return e.button === 0; + }; + var hasDraggableElement = function (state) { + return state.element; + }; + var applyRelPos = function (state, position) { + return { + pageX: position.pageX - state.relX, + pageY: position.pageY + 5 + }; + }; + var start$1 = function (state, editor) { + return function (e) { + if (isLeftMouseButtonPressed(e)) { + var ceElm = $_c2vc3pkje5o2puw.find(editor.dom.getParents(e.target), $_ghq3nq25je5o2q5q.or(isContentEditableFalse$7, isContentEditableTrue$4)); + if (isDraggable(editor.getBody(), ceElm)) { + var elmPos = editor.dom.getPos(ceElm); + var bodyElm = editor.getBody(); + var docElm = editor.getDoc().documentElement; + state.element = ceElm; + state.screenX = e.screenX; + state.screenY = e.screenY; + state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2; + state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2; + state.relX = e.pageX - elmPos.x; + state.relY = e.pageY - elmPos.y; + state.width = ceElm.offsetWidth; + state.height = ceElm.offsetHeight; + state.ghost = createGhost(editor, ceElm, state.width, state.height); + } + } + }; + }; + var move$1 = function (state, editor) { + var throttledPlaceCaretAt = $_db41wogje5o2ps3.throttle(function (clientX, clientY) { + editor._selectionOverrides.hideFakeCaret(); + editor.selection.placeCaretAt(clientX, clientY); + }, 0); + return function (e) { + var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY)); + if (hasDraggableElement(state) && !state.dragging && movement > 10) { + var args = editor.fire('dragstart', { target: state.element }); + if (args.isDefaultPrevented()) { + return; + } + state.dragging = true; + editor.focus(); + } + if (state.dragging) { + var targetPos = applyRelPos(state, $_f685v452je5o2qrw.calc(editor, e)); + appendGhostToBody(state.ghost, editor.getBody()); + moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY); + throttledPlaceCaretAt(e.clientX, e.clientY); + } + }; + }; + var getRawTarget = function (selection) { + var rng = selection.getSel().getRangeAt(0); + var startContainer = rng.startContainer; + return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer; + }; + var drop = function (state, editor) { + return function (e) { + if (state.dragging) { + if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) { + var targetClone_1 = cloneElement(state.element); + var args = editor.fire('drop', { + targetClone: targetClone_1, + clientX: e.clientX, + clientY: e.clientY + }); + if (!args.isDefaultPrevented()) { + targetClone_1 = args.targetClone; + editor.undoManager.transact(function () { + removeElement(state.element); + editor.insertContent(editor.dom.getOuterHTML(targetClone_1)); + editor._selectionOverrides.hideFakeCaret(); + }); + } + } + } + removeDragState(state); + }; + }; + var stop = function (state, editor) { + return function () { + removeDragState(state); + if (state.dragging) { + editor.fire('dragend'); + } + }; + }; + var removeDragState = function (state) { + state.dragging = false; + state.element = null; + removeElement(state.ghost); + }; + var bindFakeDragEvents = function (editor) { + var state = {}; + var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument; + pageDom = DOMUtils.DOM; + rootDocument = document; + dragStartHandler = start$1(state, editor); + dragHandler = move$1(state, editor); + dropHandler = drop(state, editor); + dragEndHandler = stop(state, editor); + editor.on('mousedown', dragStartHandler); + editor.on('mousemove', dragHandler); + editor.on('mouseup', dropHandler); + pageDom.bind(rootDocument, 'mousemove', dragHandler); + pageDom.bind(rootDocument, 'mouseup', dragEndHandler); + editor.on('remove', function () { + pageDom.unbind(rootDocument, 'mousemove', dragHandler); + pageDom.unbind(rootDocument, 'mouseup', dragEndHandler); + }); + }; + var blockIeDrop = function (editor) { + editor.on('drop', function (e) { + var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null; + if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) { + e.preventDefault(); + } + }); + }; + var init = function (editor) { + bindFakeDragEvents(editor); + blockIeDrop(editor); + }; + var $_dmqizi51je5o2qrp = { init: init }; + + var getNodeClientRects = function (node) { + var toArrayWithNode = function (clientRects) { + return $_c2vc3pkje5o2puw.map(clientRects, function (clientRect) { + clientRect = clone$1(clientRect); + clientRect.node = node; + return clientRect; + }); + }; + if ($_9owqcy1qje5o2q0e.isElement(node)) { + return toArrayWithNode(node.getClientRects()); + } + if ($_9owqcy1qje5o2q0e.isText(node)) { + var rng = node.ownerDocument.createRange(); + rng.setStart(node, 0); + rng.setEnd(node, node.data.length); + return toArrayWithNode(rng.getClientRects()); + } + }; + var getClientRects = function (node) { + return $_c2vc3pkje5o2puw.reduce(node, function (result, node) { + return result.concat(getNodeClientRects(node)); + }, []); + }; + + var VDirection; + (function (VDirection) { + VDirection[VDirection['Up'] = -1] = 'Up'; + VDirection[VDirection['Down'] = 1] = 'Down'; + }(VDirection || (VDirection = {}))); + var findUntil = function (direction, root, predicateFn, node) { + while (node = findNode(node, direction, isEditableCaretCandidate, root)) { + if (predicateFn(node)) { + return; + } + } + }; + var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) { + var line = 0, node; + var result = []; + var targetClientRect; + var add = function (node) { + var i, clientRect, clientRects; + clientRects = getClientRects([node]); + if (direction === -1) { + clientRects = clientRects.reverse(); + } + for (i = 0; i < clientRects.length; i++) { + clientRect = clientRects[i]; + if (isBeflowFn(clientRect, targetClientRect)) { + continue; + } + if (result.length > 0 && isAboveFn(clientRect, $_c2vc3pkje5o2puw.last(result))) { + line++; + } + clientRect.line = line; + if (predicateFn(clientRect)) { + return true; + } + result.push(clientRect); + } + }; + targetClientRect = $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + if (!targetClientRect) { + return result; + } + node = caretPosition.getNode(); + add(node); + findUntil(direction, root, add, node); + return result; + }; + var aboveLineNumber = function (lineNumber, clientRect) { + return clientRect.line > lineNumber; + }; + var isLineNumber = function (lineNumber, clientRect) { + return clientRect.line === lineNumber; + }; + var upUntil = $_enfhkv6je5o2ply.curry(walkUntil, VDirection.Up, isAbove, isBelow); + var downUntil = $_enfhkv6je5o2ply.curry(walkUntil, VDirection.Down, isBelow, isAbove); + var positionsUntil = function (direction, root, predicateFn, node) { + var caretWalker = CaretWalker(root); + var walkFn, isBelowFn, isAboveFn, caretPosition; + var result = []; + var line = 0, clientRect, targetClientRect; + var getClientRect = function (caretPosition) { + if (direction === 1) { + return $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + } + return $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + }; + if (direction === 1) { + walkFn = caretWalker.next; + isBelowFn = isBelow; + isAboveFn = isAbove; + caretPosition = CaretPosition$1.after(node); + } else { + walkFn = caretWalker.prev; + isBelowFn = isAbove; + isAboveFn = isBelow; + caretPosition = CaretPosition$1.before(node); + } + targetClientRect = getClientRect(caretPosition); + do { + if (!caretPosition.isVisible()) { + continue; + } + clientRect = getClientRect(caretPosition); + if (isAboveFn(clientRect, targetClientRect)) { + continue; + } + if (result.length > 0 && isBelowFn(clientRect, $_c2vc3pkje5o2puw.last(result))) { + line++; + } + clientRect = clone$1(clientRect); + clientRect.position = caretPosition; + clientRect.line = line; + if (predicateFn(clientRect)) { + return result; + } + result.push(clientRect); + } while (caretPosition = walkFn(caretPosition)); + return result; + }; + var isAboveLine = function (lineNumber) { + return function (clientRect) { + return aboveLineNumber(lineNumber, clientRect); + }; + }; + var isLine = function (lineNumber) { + return function (clientRect) { + return isLineNumber(lineNumber, clientRect); + }; + }; + + var isContentEditableFalse$8 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var findNode$1 = findNode; + var distanceToRectLeft = function (clientRect, clientX) { + return Math.abs(clientRect.left - clientX); + }; + var distanceToRectRight = function (clientRect, clientX) { + return Math.abs(clientRect.right - clientX); + }; + var isInside = function (clientX, clientRect) { + return clientX >= clientRect.left && clientX <= clientRect.right; + }; + var findClosestClientRect = function (clientRects, clientX) { + return $_c2vc3pkje5o2puw.reduce(clientRects, function (oldClientRect, clientRect) { + var oldDistance, newDistance; + oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX)); + newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX)); + if (isInside(clientX, clientRect)) { + return clientRect; + } + if (isInside(clientX, oldClientRect)) { + return oldClientRect; + } + if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) { + return clientRect; + } + if (newDistance < oldDistance) { + return clientRect; + } + return oldClientRect; + }); + }; + var walkUntil$1 = function (direction, root, predicateFn, node) { + while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) { + if (predicateFn(node)) { + return; + } + } + }; + var findLineNodeRects = function (root, targetNodeRect) { + var clientRects = []; + var collect = function (checkPosFn, node) { + var lineRects; + lineRects = $_c2vc3pkje5o2puw.filter(getClientRects([node]), function (clientRect) { + return !checkPosFn(clientRect, targetNodeRect); + }); + clientRects = clientRects.concat(lineRects); + return lineRects.length === 0; + }; + clientRects.push(targetNodeRect); + walkUntil$1(VDirection.Up, root, $_enfhkv6je5o2ply.curry(collect, isAbove), targetNodeRect.node); + walkUntil$1(VDirection.Down, root, $_enfhkv6je5o2ply.curry(collect, isBelow), targetNodeRect.node); + return clientRects; + }; + var getFakeCaretTargets = function (root) { + return $_c2vc3pkje5o2puw.filter($_c2vc3pkje5o2puw.toArray(root.getElementsByTagName('*')), isFakeCaretTarget); + }; + var caretInfo = function (clientRect, clientX) { + return { + node: clientRect.node, + before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX) + }; + }; + var closestCaret = function (root, clientX, clientY) { + var closestNodeRect; + var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root)); + var targetNodeRects = $_c2vc3pkje5o2puw.filter(contentEditableFalseNodeRects, function (rect) { + return clientY >= rect.top && clientY <= rect.bottom; + }); + closestNodeRect = findClosestClientRect(targetNodeRects, clientX); + if (closestNodeRect) { + closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX); + if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) { + return caretInfo(closestNodeRect, clientX); + } + } + return null; + }; + + var isXYWithinRange = function (clientX, clientY, range) { + if (range.collapsed) { + return false; + } + return $_bwcteb4je5o2pl4.foldl(range.getClientRects(), function (state, rect) { + return state || containsXY(rect, clientX, clientY); + }, false); + }; + var $_40xr2y56je5o2qsc = { isXYWithinRange: isXYWithinRange }; + + var adaptable = function (fn, rate) { + var timer = null; + var args = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + args = null; + } + }; + var throttle = function () { + args = arguments; + if (timer === null) { + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + } + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var first$3 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = arguments; + if (timer === null) { + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + } + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var last$3 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = arguments; + if (timer !== null) + clearTimeout(timer); + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var $_7qjijn58je5o2qsg = { + adaptable: adaptable, + first: first$3, + last: last$3 + }; + + var setup$2 = function (editor) { + var renderFocusCaret = $_7qjijn58je5o2qsg.first(function () { + if (!editor.removed) { + var rng = editor.selection.getRng(); + if (rng.collapsed) { + var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false); + editor.selection.setRng(caretRange); + } + } + }, 0); + editor.on('focus', function () { + renderFocusCaret.throttle(); + }); + editor.on('blur', function () { + renderFocusCaret.cancel(); + }); + }; + var $_ceg6uc57je5o2qse = { setup: setup$2 }; + + var $_99mhlk59je5o2qss = { + BACKSPACE: 8, + DELETE: 46, + DOWN: 40, + ENTER: 13, + LEFT: 37, + RIGHT: 39, + SPACEBAR: 32, + TAB: 9, + UP: 38, + modifierPressed: function (e) { + return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e); + }, + metaKeyPressed: function (e) { + return $_9bd8pn9je5o2pp2.mac ? e.metaKey : e.ctrlKey && !e.altKey; + } + }; + + var isContentEditableTrue$5 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$9 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isAfterContentEditableFalse$1 = isAfterContentEditableFalse; + var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse; + var SelectionOverrides = function (editor) { + var isBlock = function (node) { + return editor.dom.isBlock(node); + }; + var rootNode = editor.getBody(); + var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () { + return $_llx5i48je5o2qna.hasFocus(editor); + }); + var realSelectionId = 'sel-' + editor.dom.uniqueId(); + var selectedContentEditableNode; + var isFakeSelectionElement = function (elm) { + return editor.dom.hasClass(elm, 'mce-offscreen-selection'); + }; + var getRealSelectionElement = function () { + var container = editor.dom.get(realSelectionId); + return container ? container.getElementsByTagName('*')[0] : container; + }; + var setRange = function (range) { + if (range) { + editor.selection.setRng(range); + } + }; + var getRange = function () { + return editor.selection.getRng(); + }; + var showCaret$$1 = function (direction, node, before, scrollIntoView) { + if (scrollIntoView === void 0) { + scrollIntoView = true; + } + var e; + e = editor.fire('ShowCaret', { + target: node, + direction: direction, + before: before + }); + if (e.isDefaultPrevented()) { + return null; + } + if (scrollIntoView) { + editor.selection.scrollIntoView(node, direction === -1); + } + return fakeCaret.show(before, node); + }; + var getNormalizedRangeEndPoint$$1 = function (direction, range) { + range = normalizeRange(direction, rootNode, range); + if (direction === -1) { + return CaretPosition$1.fromRangeStart(range); + } + return CaretPosition$1.fromRangeEnd(range); + }; + var showBlockCaretContainer = function (blockCaretContainer) { + if (blockCaretContainer.hasAttribute('data-mce-caret')) { + showCaretContainerBlock(blockCaretContainer); + setRange(getRange()); + editor.selection.scrollIntoView(blockCaretContainer[0]); + } + }; + var registerEvents = function () { + var getContentEditableRoot = function (node) { + var root = editor.getBody(); + while (node && node !== root) { + if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + editor.on('mouseup', function (e) { + var range = getRange(); + if (range.collapsed && $_3f7nxx4dje5o2qoa.isXYInContentArea(editor, e.clientX, e.clientY)) { + setRange(renderCaretAtRange(editor, range, false)); + } + }); + editor.on('click', function (e) { + var contentEditableRoot; + contentEditableRoot = getContentEditableRoot(e.target); + if (contentEditableRoot) { + if (isContentEditableFalse$9(contentEditableRoot)) { + e.preventDefault(); + editor.focus(); + } + if (isContentEditableTrue$5(contentEditableRoot)) { + if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) { + removeContentEditableSelection(); + } + } + } + }); + editor.on('blur NewBlock', function () { + removeContentEditableSelection(); + }); + var handleTouchSelect = function (editor) { + var moved = false; + editor.on('touchstart', function () { + moved = false; + }); + editor.on('touchmove', function () { + moved = true; + }); + editor.on('touchend', function (e) { + var contentEditableRoot = getContentEditableRoot(e.target); + if (isContentEditableFalse$9(contentEditableRoot)) { + if (!moved) { + e.preventDefault(); + setContentEditableSelection(selectNode(editor, contentEditableRoot)); + } + } + }); + }; + var hasNormalCaretPosition = function (elm) { + var caretWalker = CaretWalker(elm); + if (!elm.firstChild) { + return false; + } + var startPos = CaretPosition$1.before(elm.firstChild); + var newPos = caretWalker.next(startPos); + return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos); + }; + var isInSameBlock$$1 = function (node1, node2) { + var block1 = editor.dom.getParent(node1, editor.dom.isBlock); + var block2 = editor.dom.getParent(node2, editor.dom.isBlock); + return block1 === block2; + }; + var hasBetterMouseTarget = function (targetNode, caretNode) { + var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock); + var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock); + return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock); + }; + handleTouchSelect(editor); + editor.on('mousedown', function (e) { + var contentEditableRoot; + var targetElm = e.target; + if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) { + return; + } + if ($_3f7nxx4dje5o2qoa.isXYInContentArea(editor, e.clientX, e.clientY) === false) { + return; + } + contentEditableRoot = getContentEditableRoot(targetElm); + if (contentEditableRoot) { + if (isContentEditableFalse$9(contentEditableRoot)) { + e.preventDefault(); + setContentEditableSelection(selectNode(editor, contentEditableRoot)); + } else { + removeContentEditableSelection(); + if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !$_40xr2y56je5o2qsc.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) { + editor.selection.placeCaretAt(e.clientX, e.clientY); + } + } + } else if (isFakeCaretTarget(targetElm) === false) { + removeContentEditableSelection(); + hideFakeCaret(); + var caretInfo = closestCaret(rootNode, e.clientX, e.clientY); + if (caretInfo) { + if (!hasBetterMouseTarget(e.target, caretInfo.node)) { + e.preventDefault(); + var range = showCaret$$1(1, caretInfo.node, caretInfo.before, false); + editor.getBody().focus(); + setRange(range); + } + } + } + }); + editor.on('keypress', function (e) { + if ($_99mhlk59je5o2qss.modifierPressed(e)) { + return; + } + switch (e.keyCode) { + default: + if (isContentEditableFalse$9(editor.selection.getNode())) { + e.preventDefault(); + } + break; + } + }); + editor.on('getSelectionRange', function (e) { + var rng = e.range; + if (selectedContentEditableNode) { + if (!selectedContentEditableNode.parentNode) { + selectedContentEditableNode = null; + return; + } + rng = rng.cloneRange(); + rng.selectNode(selectedContentEditableNode); + e.range = rng; + } + }); + editor.on('setSelectionRange', function (e) { + var rng; + rng = setContentEditableSelection(e.range, e.forward); + if (rng) { + e.range = rng; + } + }); + editor.on('AfterSetSelectionRange', function (e) { + var rng = e.range; + if (!isRangeInCaretContainer(rng)) { + hideFakeCaret(); + } + if (!isFakeSelectionElement(rng.startContainer.parentNode)) { + removeContentEditableSelection(); + } + }); + editor.on('copy', function (e) { + var clipboardData = e.clipboardData; + if (!e.isDefaultPrevented() && e.clipboardData && !$_9bd8pn9je5o2pp2.ie) { + var realSelectionElement = getRealSelectionElement(); + if (realSelectionElement) { + e.preventDefault(); + clipboardData.clearData(); + clipboardData.setData('text/html', realSelectionElement.outerHTML); + clipboardData.setData('text/plain', realSelectionElement.outerText); + } + } + }); + $_dmqizi51je5o2qrp.init(editor); + $_ceg6uc57je5o2qse.setup(editor); + }; + var addCss = function () { + var styles = editor.contentStyles, rootClass = '.mce-content-body'; + styles.push(fakeCaret.getCss()); + styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}'); + }; + var isWithinCaretContainer = function (node) { + return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node); + }; + var isRangeInCaretContainer = function (rng) { + return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer); + }; + var setContentEditableSelection = function (range, forward) { + var node; + var $ = editor.$; + var dom = editor.dom; + var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone; + if (!range) { + return null; + } + if (range.collapsed) { + if (!isRangeInCaretContainer(range)) { + if (forward === false) { + caretPosition = getNormalizedRangeEndPoint$$1(-1, range); + if (isFakeCaretTarget(caretPosition.getNode(true))) { + return showCaret$$1(-1, caretPosition.getNode(true), false, false); + } + if (isFakeCaretTarget(caretPosition.getNode())) { + return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + } else { + caretPosition = getNormalizedRangeEndPoint$$1(1, range); + if (isFakeCaretTarget(caretPosition.getNode())) { + return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + if (isFakeCaretTarget(caretPosition.getNode(true))) { + return showCaret$$1(1, caretPosition.getNode(true), false, false); + } + } + } + return null; + } + startContainer = range.startContainer; + startOffset = range.startOffset; + endOffset = range.endOffset; + if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) { + startContainer = startContainer.parentNode; + startOffset = dom.nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + if (startContainer.nodeType !== 1) { + return null; + } + if (endOffset === startOffset + 1) { + node = startContainer.childNodes[startOffset]; + } + if (!isContentEditableFalse$9(node)) { + return null; + } + targetClone = origTargetClone = node.cloneNode(true); + e = editor.fire('ObjectSelected', { + target: node, + targetClone: targetClone + }); + if (e.isDefaultPrevented()) { + return null; + } + $realSelectionContainer = $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () { + return $([]); + }, function (elm) { + return $([elm.dom()]); + }); + targetClone = e.targetClone; + if ($realSelectionContainer.length === 0) { + $realSelectionContainer = $('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr('id', realSelectionId); + $realSelectionContainer.appendTo(editor.getBody()); + } + range = editor.dom.createRng(); + if (targetClone === origTargetClone && $_9bd8pn9je5o2pp2.ie) { + $realSelectionContainer.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xA0</p>').append(targetClone); + range.setStartAfter($realSelectionContainer[0].firstChild.firstChild); + range.setEndAfter(targetClone); + } else { + $realSelectionContainer.empty().append('\xA0').append(targetClone).append('\xA0'); + range.setStart($realSelectionContainer[0].firstChild, 1); + range.setEnd($realSelectionContainer[0].lastChild, 0); + } + $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y }); + $realSelectionContainer[0].focus(); + sel = editor.selection.getSel(); + sel.removeAllRanges(); + sel.addRange(range); + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) { + $_3uo9pl14je5o2pxq.remove(elm, 'data-mce-selected'); + }); + node.setAttribute('data-mce-selected', '1'); + selectedContentEditableNode = node; + hideFakeCaret(); + return range; + }; + var removeContentEditableSelection = function () { + if (selectedContentEditableNode) { + selectedContentEditableNode.removeAttribute('data-mce-selected'); + $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '#' + realSelectionId).each($_cr1seh2pje5o2qa1.remove); + selectedContentEditableNode = null; + } + }; + var destroy = function () { + fakeCaret.destroy(); + selectedContentEditableNode = null; + }; + var hideFakeCaret = function () { + fakeCaret.hide(); + }; + if ($_9bd8pn9je5o2pp2.ceFalse) { + registerEvents(); + addCss(); + } + return { + showCaret: showCaret$$1, + showBlockCaretContainer: showBlockCaretContainer, + hideFakeCaret: hideFakeCaret, + destroy: destroy + }; + }; + + var each$11 = $_a5gegtjje5o2pum.each; + var isValidPrefixAttrName = function (name) { + return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0; + }; + var trimComments = function (text) { + return text.replace(/<!--|-->/g, ''); + }; + var findEndTagIndex = function (schema, html, startIndex) { + var count = 1, index, matches, tokenRegExp, shortEndedElements; + shortEndedElements = schema.getShortEndedElements(); + tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g; + tokenRegExp.lastIndex = index = startIndex; + while (matches = tokenRegExp.exec(html)) { + index = tokenRegExp.lastIndex; + if (matches[1] === '/') { + count--; + } else if (!matches[1]) { + if (matches[2] in shortEndedElements) { + continue; + } + count++; + } + if (count === 0) { + break; + } + } + return index; + }; + function SaxParser(settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var noop = function () { + }; + settings = settings || {}; + if (settings.fix_self_closing !== false) { + settings.fix_self_closing = true; + } + each$11('comment cdata text start end pi doctype'.split(' '), function (name) { + if (name) { + self[name] = settings[name] || noop; + } + }); + var comment = settings.comment ? settings.comment : noop; + var cdata = settings.cdata ? settings.cdata : noop; + var text = settings.text ? settings.text : noop; + var start = settings.start ? settings.start : noop; + var end = settings.end ? settings.end : noop; + var pi = settings.pi ? settings.pi : noop; + var doctype = settings.doctype ? settings.doctype : noop; + var parse = function (html) { + var matches, index = 0, value, endRegExp; + var stack = []; + var attrList, i, textData, name; + var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded; + var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns; + var attributesRequired, attributesDefault, attributesForced, processHtml; + var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0; + var decode = $_fzh4ld1rje5o2q0t.decode; + var fixSelfClosing; + var filteredUrlAttrs = $_a5gegtjje5o2pum.makeMap('src,href,data,background,formaction,poster'); + var scriptUriRegExp = /((java|vb)script|mhtml):/i, dataUriRegExp = /^data:/i; + var processEndTag = function (name) { + var pos, i; + pos = stack.length; + while (pos--) { + if (stack[pos].name === name) { + break; + } + } + if (pos >= 0) { + for (i = stack.length - 1; i >= pos; i--) { + name = stack[i]; + if (name.valid) { + end(name.name); + } + } + stack.length = pos; + } + }; + var parseAttribute = function (match, name, value, val2, val3) { + var attrRule, i; + var trimRegExp = /[\s\u0000-\u001F]+/g; + name = name.toLowerCase(); + value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); + if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) { + attrRule = validAttributesMap[name]; + if (!attrRule && validAttributePatterns) { + i = validAttributePatterns.length; + while (i--) { + attrRule = validAttributePatterns[i]; + if (attrRule.pattern.test(name)) { + break; + } + } + if (i === -1) { + attrRule = null; + } + } + if (!attrRule) { + return; + } + if (attrRule.validValues && !(value in attrRule.validValues)) { + return; + } + } + if (filteredUrlAttrs[name] && !settings.allow_script_urls) { + var uri = value.replace(trimRegExp, ''); + try { + uri = decodeURIComponent(uri); + } catch (ex) { + uri = unescape(uri); + } + if (scriptUriRegExp.test(uri)) { + return; + } + if (!settings.allow_html_data_urls && dataUriRegExp.test(uri) && !/^data:image\//i.test(uri)) { + return; + } + } + if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) { + return; + } + attrList.map[name] = value; + attrList.push({ + name: name, + value: value + }); + }; + tokenRegExp = new RegExp('<(?:' + '(?:!--([\\w\\W]*?)-->)|' + '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + '(?:!DOCTYPE([\\w\\W]*?)>)|' + '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + '(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + ')', 'g'); + attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g; + shortEndedElements = schema.getShortEndedElements(); + selfClosing = settings.self_closing_elements || schema.getSelfClosingElements(); + fillAttrsMap = schema.getBoolAttrs(); + validate = settings.validate; + removeInternalElements = settings.remove_internals; + fixSelfClosing = settings.fix_self_closing; + specialElements = schema.getSpecialElements(); + processHtml = html + '>'; + while (matches = tokenRegExp.exec(processHtml)) { + if (index < matches.index) { + text(decode(html.substr(index, matches.index - index))); + } + if (value = matches[6]) { + value = value.toLowerCase(); + if (value.charAt(0) === ':') { + value = value.substr(1); + } + processEndTag(value); + } else if (value = matches[7]) { + if (matches.index + matches[0].length > html.length) { + text(decode(html.substr(matches.index))); + index = matches.index + matches[0].length; + continue; + } + value = value.toLowerCase(); + if (value.charAt(0) === ':') { + value = value.substr(1); + } + isShortEnded = value in shortEndedElements; + if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) { + processEndTag(value); + } + if (!validate || (elementRule = schema.getElementRule(value))) { + isValidElement = true; + if (validate) { + validAttributesMap = elementRule.attributes; + validAttributePatterns = elementRule.attributePatterns; + } + if (attribsValue = matches[8]) { + isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; + if (isInternalElement && removeInternalElements) { + isValidElement = false; + } + attrList = []; + attrList.map = {}; + attribsValue.replace(attrRegExp, parseAttribute); + } else { + attrList = []; + attrList.map = {}; + } + if (validate && !isInternalElement) { + attributesRequired = elementRule.attributesRequired; + attributesDefault = elementRule.attributesDefault; + attributesForced = elementRule.attributesForced; + anyAttributesRequired = elementRule.removeEmptyAttrs; + if (anyAttributesRequired && !attrList.length) { + isValidElement = false; + } + if (attributesForced) { + i = attributesForced.length; + while (i--) { + attr = attributesForced[i]; + name = attr.name; + attrValue = attr.value; + if (attrValue === '{$uid}') { + attrValue = 'mce_' + idCount++; + } + attrList.map[name] = attrValue; + attrList.push({ + name: name, + value: attrValue + }); + } + } + if (attributesDefault) { + i = attributesDefault.length; + while (i--) { + attr = attributesDefault[i]; + name = attr.name; + if (!(name in attrList.map)) { + attrValue = attr.value; + if (attrValue === '{$uid}') { + attrValue = 'mce_' + idCount++; + } + attrList.map[name] = attrValue; + attrList.push({ + name: name, + value: attrValue + }); + } + } + } + if (attributesRequired) { + i = attributesRequired.length; + while (i--) { + if (attributesRequired[i] in attrList.map) { + break; + } + } + if (i === -1) { + isValidElement = false; + } + } + if (attr = attrList.map['data-mce-bogus']) { + if (attr === 'all') { + index = findEndTagIndex(schema, html, tokenRegExp.lastIndex); + tokenRegExp.lastIndex = index; + continue; + } + isValidElement = false; + } + } + if (isValidElement) { + start(value, attrList, isShortEnded); + } + } else { + isValidElement = false; + } + if (endRegExp = specialElements[value]) { + endRegExp.lastIndex = index = matches.index + matches[0].length; + if (matches = endRegExp.exec(html)) { + if (isValidElement) { + textData = html.substr(index, matches.index - index); + } + index = matches.index + matches[0].length; + } else { + textData = html.substr(index); + index = html.length; + } + if (isValidElement) { + if (textData.length > 0) { + text(textData, true); + } + end(value); + } + tokenRegExp.lastIndex = index; + continue; + } + if (!isShortEnded) { + if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) { + stack.push({ + name: value, + valid: isValidElement + }); + } else if (isValidElement) { + end(value); + } + } + } else if (value = matches[1]) { + if (value.charAt(0) === '>') { + value = ' ' + value; + } + if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') { + value = ' ' + value; + } + comment(value); + } else if (value = matches[2]) { + cdata(trimComments(value)); + } else if (value = matches[3]) { + doctype(value); + } else if (value = matches[4]) { + pi(value, matches[5]); + } + index = matches.index + matches[0].length; + } + if (index < html.length) { + text(decode(html.substr(index))); + } + for (i = stack.length - 1; i >= 0; i--) { + value = stack[i]; + if (value.valid) { + end(value.name); + } + } + }; + return { parse: parse }; + } + (function (SaxParser) { + SaxParser.findEndTag = findEndTagIndex; + }(SaxParser || (SaxParser = {}))); + var SaxParser$1 = SaxParser; + + var trimHtml = function (tempAttrs, html) { + var trimContentRegExp = new RegExp(['\\s?(' + tempAttrs.join('|') + ')="[^"]+"'].join('|'), 'gi'); + return html.replace(trimContentRegExp, ''); + }; + var trimInternal = function (serializer, html) { + var content = html; + var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g; + var endTagIndex, index, matchLength, matches, shortEndedElements; + var schema = serializer.schema; + content = trimHtml(serializer.getTempAttrs(), content); + shortEndedElements = schema.getShortEndedElements(); + while (matches = bogusAllRegExp.exec(content)) { + index = bogusAllRegExp.lastIndex; + matchLength = matches[0].length; + if (shortEndedElements[matches[1]]) { + endTagIndex = index; + } else { + endTagIndex = SaxParser$1.findEndTag(schema, content, index); + } + content = content.substring(0, index - matchLength) + content.substring(endTagIndex); + bogusAllRegExp.lastIndex = index - matchLength; + } + return content; + }; + var trimExternal = function (serializer, html) { + return $_4md31c21je5o2q5f.trim(trimInternal(serializer, html)); + }; + var $_15ih885cje5o2qt6 = { + trimExternal: trimExternal, + trimInternal: trimInternal + }; + + var KEEP = 0; + var INSERT = 1; + var DELETE = 2; + var diff = function (left, right) { + var size = left.length + right.length + 2; + var vDown = new Array(size); + var vUp = new Array(size); + var snake = function (start, end, diag) { + return { + start: start, + end: end, + diag: diag + }; + }; + var buildScript = function (start1, end1, start2, end2, script) { + var middle = getMiddleSnake(start1, end1, start2, end2); + if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) { + var i = start1; + var j = start2; + while (i < end1 || j < end2) { + if (i < end1 && j < end2 && left[i] === right[j]) { + script.push([ + KEEP, + left[i] + ]); + ++i; + ++j; + } else { + if (end1 - start1 > end2 - start2) { + script.push([ + DELETE, + left[i] + ]); + ++i; + } else { + script.push([ + INSERT, + right[j] + ]); + ++j; + } + } + } + } else { + buildScript(start1, middle.start, start2, middle.start - middle.diag, script); + for (var i2 = middle.start; i2 < middle.end; ++i2) { + script.push([ + KEEP, + left[i2] + ]); + } + buildScript(middle.end, end1, middle.end - middle.diag, end2, script); + } + }; + var buildSnake = function (start, diag, end1, end2) { + var end = start; + while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) { + ++end; + } + return snake(start, end, diag); + }; + var getMiddleSnake = function (start1, end1, start2, end2) { + var m = end1 - start1; + var n = end2 - start2; + if (m === 0 || n === 0) { + return null; + } + var delta = m - n; + var sum = n + m; + var offset = (sum % 2 === 0 ? sum : sum + 1) / 2; + vDown[1 + offset] = start1; + vUp[1 + offset] = end1 + 1; + var d, k, i, x, y; + for (d = 0; d <= offset; ++d) { + for (k = -d; k <= d; k += 2) { + i = k + offset; + if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) { + vDown[i] = vDown[i + 1]; + } else { + vDown[i] = vDown[i - 1] + 1; + } + x = vDown[i]; + y = x - start1 + start2 - k; + while (x < end1 && y < end2 && left[x] === right[y]) { + vDown[i] = ++x; + ++y; + } + if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) { + if (vUp[i - delta] <= vDown[i]) { + return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2); + } + } + } + for (k = delta - d; k <= delta + d; k += 2) { + i = k + offset - delta; + if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) { + vUp[i] = vUp[i + 1] - 1; + } else { + vUp[i] = vUp[i - 1]; + } + x = vUp[i] - 1; + y = x - start1 + start2 - k; + while (x >= start1 && y >= start2 && left[x] === right[y]) { + vUp[i] = x--; + y--; + } + if (delta % 2 === 0 && -d <= k && k <= d) { + if (vUp[i] <= vDown[i + delta]) { + return buildSnake(vUp[i], k + start1 - start2, end1, end2); + } + } + } + } + }; + var script = []; + buildScript(0, left.length, 0, right.length, script); + return script; + }; + var $_gf7th55fje5o2qtr = { + KEEP: KEEP, + DELETE: DELETE, + INSERT: INSERT, + diff: diff + }; + + var getOuterHtml = function (elm) { + if (elm.nodeType === 1) { + return elm.outerHTML; + } else if (elm.nodeType === 3) { + return $_fzh4ld1rje5o2q0t.encodeRaw(elm.data, false); + } else if (elm.nodeType === 8) { + return '<!--' + elm.data + '-->'; + } + return ''; + }; + var createFragment$1 = function (html) { + var frag, node, container; + container = document.createElement('div'); + frag = document.createDocumentFragment(); + if (html) { + container.innerHTML = html; + } + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }; + var insertAt = function (elm, html, index) { + var fragment = createFragment$1(html); + if (elm.hasChildNodes() && index < elm.childNodes.length) { + var target = elm.childNodes[index]; + target.parentNode.insertBefore(fragment, target); + } else { + elm.appendChild(fragment); + } + }; + var removeAt = function (elm, index) { + if (elm.hasChildNodes() && index < elm.childNodes.length) { + var target = elm.childNodes[index]; + target.parentNode.removeChild(target); + } + }; + var applyDiff = function (diff, elm) { + var index = 0; + $_c2vc3pkje5o2puw.each(diff, function (action) { + if (action[0] === $_gf7th55fje5o2qtr.KEEP) { + index++; + } else if (action[0] === $_gf7th55fje5o2qtr.INSERT) { + insertAt(elm, action[1], index); + index++; + } else if (action[0] === $_gf7th55fje5o2qtr.DELETE) { + removeAt(elm, index); + } + }); + }; + var read$2 = function (elm) { + return $_c2vc3pkje5o2puw.filter($_c2vc3pkje5o2puw.map(elm.childNodes, getOuterHtml), function (item) { + return item.length > 0; + }); + }; + var write = function (fragments, elm) { + var currentFragments = $_c2vc3pkje5o2puw.map(elm.childNodes, getOuterHtml); + applyDiff($_gf7th55fje5o2qtr.diff(currentFragments, fragments), elm); + return elm; + }; + var $_fjm93l5eje5o2qto = { + read: read$2, + write: write + }; + + var hasIframes = function (html) { + return html.indexOf('</iframe>') !== -1; + }; + var createFragmentedLevel = function (fragments) { + return { + type: 'fragmented', + fragments: fragments, + content: '', + bookmark: null, + beforeBookmark: null + }; + }; + var createCompleteLevel = function (content) { + return { + type: 'complete', + fragments: null, + content: content, + bookmark: null, + beforeBookmark: null + }; + }; + var createFromEditor = function (editor) { + var fragments, content, trimmedFragments; + fragments = $_fjm93l5eje5o2qto.read(editor.getBody()); + trimmedFragments = $_bwcteb4je5o2pl4.bind(fragments, function (html) { + var trimmed = $_15ih885cje5o2qt6.trimInternal(editor.serializer, html); + return trimmed.length > 0 ? [trimmed] : []; + }); + content = trimmedFragments.join(''); + return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content); + }; + var applyToEditor = function (editor, level, before) { + if (level.type === 'fragmented') { + $_fjm93l5eje5o2qto.write(level.fragments, editor.getBody()); + } else { + editor.setContent(level.content, { format: 'raw' }); + } + editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark); + }; + var getLevelContent = function (level) { + return level.type === 'fragmented' ? level.fragments.join('') : level.content; + }; + var isEq$4 = function (level1, level2) { + return !!level1 && !!level2 && getLevelContent(level1) === getLevelContent(level2); + }; + var $_dv64z5bje5o2qt3 = { + createFragmentedLevel: createFragmentedLevel, + createCompleteLevel: createCompleteLevel, + createFromEditor: createFromEditor, + applyToEditor: applyToEditor, + isEq: isEq$4 + }; + + function UndoManager (editor) { + var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0; + var isUnlocked = function () { + return locks === 0; + }; + var setTyping = function (typing) { + if (isUnlocked()) { + self.typing = typing; + } + }; + var setDirty = function (state) { + editor.setDirty(state); + }; + var addNonTypingUndoLevel = function (e) { + setTyping(false); + self.add({}, e); + }; + var endTyping = function () { + if (self.typing) { + setTyping(false); + self.add(); + } + }; + editor.on('init', function () { + self.add(); + }); + editor.on('BeforeExecCommand', function (e) { + var cmd = e.command; + if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { + endTyping(); + self.beforeChange(); + } + }); + editor.on('ExecCommand', function (e) { + var cmd = e.command; + if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { + addNonTypingUndoLevel(e); + } + }); + editor.on('ObjectResizeStart Cut', function () { + self.beforeChange(); + }); + editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel); + editor.on('DragEnd', addNonTypingUndoLevel); + editor.on('KeyUp', function (e) { + var keyCode = e.keyCode; + if (e.isDefaultPrevented()) { + return; + } + if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) { + addNonTypingUndoLevel(); + editor.nodeChanged(); + } + if (keyCode === 46 || keyCode === 8) { + editor.nodeChanged(); + } + if (isFirstTypedCharacter && self.typing && $_dv64z5bje5o2qt3.isEq($_dv64z5bje5o2qt3.createFromEditor(editor), data[0]) === false) { + if (editor.isDirty() === false) { + setDirty(true); + editor.fire('change', { + level: data[0], + lastLevel: null + }); + } + editor.fire('TypingUndo'); + isFirstTypedCharacter = false; + editor.nodeChanged(); + } + }); + editor.on('KeyDown', function (e) { + var keyCode = e.keyCode; + if (e.isDefaultPrevented()) { + return; + } + if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) { + if (self.typing) { + addNonTypingUndoLevel(e); + } + return; + } + var modKey = e.ctrlKey && !e.altKey || e.metaKey; + if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) { + self.beforeChange(); + setTyping(true); + self.add({}, e); + isFirstTypedCharacter = true; + } + }); + editor.on('MouseDown', function (e) { + if (self.typing) { + addNonTypingUndoLevel(e); + } + }); + var isInsertReplacementText = function (event) { + return event.inputType === 'insertReplacementText'; + }; + var isInsertTextDataNull = function (event) { + return event.inputType === 'insertText' && event.data === null; + }; + editor.on('input', function (e) { + if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) { + addNonTypingUndoLevel(e); + } + }); + editor.addShortcut('meta+z', '', 'Undo'); + editor.addShortcut('meta+y,meta+shift+z', '', 'Redo'); + editor.on('AddUndo Undo Redo ClearUndos', function (e) { + if (!e.isDefaultPrevented()) { + editor.nodeChanged(); + } + }); + self = { + data: data, + typing: false, + beforeChange: function () { + if (isUnlocked()) { + beforeBookmark = $_9eyzd52kje5o2q8r.getUndoBookmark(editor.selection); + } + }, + add: function (level, event) { + var i; + var settings = editor.settings; + var lastLevel, currentLevel; + currentLevel = $_dv64z5bje5o2qt3.createFromEditor(editor); + level = level || {}; + level = $_a5gegtjje5o2pum.extend(level, currentLevel); + if (isUnlocked() === false || editor.removed) { + return null; + } + lastLevel = data[index]; + if (editor.fire('BeforeAddUndo', { + level: level, + lastLevel: lastLevel, + originalEvent: event + }).isDefaultPrevented()) { + return null; + } + if (lastLevel && $_dv64z5bje5o2qt3.isEq(lastLevel, level)) { + return null; + } + if (data[index]) { + data[index].beforeBookmark = beforeBookmark; + } + if (settings.custom_undo_redo_levels) { + if (data.length > settings.custom_undo_redo_levels) { + for (i = 0; i < data.length - 1; i++) { + data[i] = data[i + 1]; + } + data.length--; + index = data.length; + } + } + level.bookmark = $_9eyzd52kje5o2q8r.getUndoBookmark(editor.selection); + if (index < data.length - 1) { + data.length = index + 1; + } + data.push(level); + index = data.length - 1; + var args = { + level: level, + lastLevel: lastLevel, + originalEvent: event + }; + editor.fire('AddUndo', args); + if (index > 0) { + setDirty(true); + editor.fire('change', args); + } + return level; + }, + undo: function () { + var level; + if (self.typing) { + self.add(); + self.typing = false; + setTyping(false); + } + if (index > 0) { + level = data[--index]; + $_dv64z5bje5o2qt3.applyToEditor(editor, level, true); + setDirty(true); + editor.fire('undo', { level: level }); + } + return level; + }, + redo: function () { + var level; + if (index < data.length - 1) { + level = data[++index]; + $_dv64z5bje5o2qt3.applyToEditor(editor, level, false); + setDirty(true); + editor.fire('redo', { level: level }); + } + return level; + }, + clear: function () { + data = []; + index = 0; + self.typing = false; + self.data = data; + editor.fire('ClearUndos'); + }, + hasUndo: function () { + return index > 0 || self.typing && data[0] && !$_dv64z5bje5o2qt3.isEq($_dv64z5bje5o2qt3.createFromEditor(editor), data[0]); + }, + hasRedo: function () { + return index < data.length - 1 && !self.typing; + }, + transact: function (callback) { + endTyping(); + self.beforeChange(); + self.ignore(callback); + return self.add(); + }, + ignore: function (callback) { + try { + locks++; + callback(); + } finally { + locks--; + } + }, + extra: function (callback1, callback2) { + var lastLevel, bookmark; + if (self.transact(callback1)) { + bookmark = data[index].bookmark; + lastLevel = data[index - 1]; + $_dv64z5bje5o2qt3.applyToEditor(editor, lastLevel, true); + if (self.transact(callback2)) { + data[index - 1].beforeBookmark = bookmark; + } + } + } + }; + return self; + } + + var postProcessHooks = {}; + var filter$2 = $_c2vc3pkje5o2puw.filter; + var each$12 = $_c2vc3pkje5o2puw.each; + var addPostProcessHook = function (name, hook) { + var hooks = postProcessHooks[name]; + if (!hooks) { + postProcessHooks[name] = hooks = []; + } + postProcessHooks[name].push(hook); + }; + var postProcess = function (name, editor) { + each$12(postProcessHooks[name], function (hook) { + hook(editor); + }); + }; + addPostProcessHook('pre', function (editor) { + var rng = editor.selection.getRng(); + var isPre, blocks; + var hasPreSibling = function (pre) { + return isPre(pre.previousSibling) && $_c2vc3pkje5o2puw.indexOf(blocks, pre.previousSibling) !== -1; + }; + var joinPre = function (pre1, pre2) { + DomQuery(pre2).remove(); + DomQuery(pre1).append('<br><br>').append(pre2.childNodes); + }; + isPre = $_9owqcy1qje5o2q0e.matchNodeNames('pre'); + if (!rng.collapsed) { + blocks = editor.selection.getSelectedBlocks(); + each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) { + joinPre(pre.previousSibling, pre); + }); + } + }); + var $_6kqshy5ije5o2qu7 = { postProcess: postProcess }; + + var each$13 = $_a5gegtjje5o2pum.each; + var getEndChild = function (container, index) { + var childNodes = container.childNodes; + index--; + if (index > childNodes.length - 1) { + index = childNodes.length - 1; + } else if (index < 0) { + index = 0; + } + return childNodes[index] || container; + }; + var walk$2 = function (dom, rng, callback) { + var startContainer = rng.startContainer; + var startOffset = rng.startOffset; + var endContainer = rng.endContainer; + var endOffset = rng.endOffset; + var ancestor; + var startPoint; + var endPoint; + var node; + var parent; + var siblings; + var nodes; + nodes = dom.select('td[data-mce-selected],th[data-mce-selected]'); + if (nodes.length > 0) { + each$13(nodes, function (node) { + callback([node]); + }); + return; + } + var exclude = function (nodes) { + var node; + node = nodes[0]; + if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) { + nodes.splice(0, 1); + } + node = nodes[nodes.length - 1]; + if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) { + nodes.splice(nodes.length - 1, 1); + } + return nodes; + }; + var collectSiblings = function (node, name, endNode) { + var siblings = []; + for (; node && node !== endNode; node = node[name]) { + siblings.push(node); + } + return siblings; + }; + var findEndPoint = function (node, root) { + do { + if (node.parentNode === root) { + return node; + } + node = node.parentNode; + } while (node); + }; + var walkBoundary = function (startNode, endNode, next) { + var siblingName = next ? 'nextSibling' : 'previousSibling'; + for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) { + parent = node.parentNode; + siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName); + if (siblings.length) { + if (!next) { + siblings.reverse(); + } + callback(exclude(siblings)); + } + } + }; + if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) { + startContainer = startContainer.childNodes[startOffset]; + } + if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) { + endContainer = getEndChild(endContainer, endOffset); + } + if (startContainer === endContainer) { + return callback(exclude([startContainer])); + } + ancestor = dom.findCommonAncestor(startContainer, endContainer); + for (node = startContainer; node; node = node.parentNode) { + if (node === endContainer) { + return walkBoundary(startContainer, ancestor, true); + } + if (node === ancestor) { + break; + } + } + for (node = endContainer; node; node = node.parentNode) { + if (node === startContainer) { + return walkBoundary(endContainer, ancestor); + } + if (node === ancestor) { + break; + } + } + startPoint = findEndPoint(startContainer, ancestor) || startContainer; + endPoint = findEndPoint(endContainer, ancestor) || endContainer; + walkBoundary(startContainer, startPoint, true); + siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint); + if (siblings.length) { + callback(exclude(siblings)); + } + walkBoundary(endContainer, endPoint); + }; + var $_1jk9p5lje5o2qv9 = { walk: walk$2 }; + + var MCE_ATTR_RE = /^(src|href|style)$/; + var each$14 = $_a5gegtjje5o2pum.each; + var isEq$5 = $_b2hqtg3lje5o2qft.isEq; + var isTableCell$4 = function (node) { + return /^(TH|TD)$/.test(node.nodeName); + }; + var getContainer = function (ed, rng, start) { + var container, offset, lastIdx; + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + if ($_9owqcy1qje5o2q0e.isElement(container)) { + lastIdx = container.childNodes.length - 1; + if (!start && offset) { + offset--; + } + container = container.childNodes[offset > lastIdx ? lastIdx : offset]; + } + if ($_9owqcy1qje5o2q0e.isText(container) && start && offset >= container.nodeValue.length) { + container = new TreeWalker(container, ed.getBody()).next() || container; + } + if ($_9owqcy1qje5o2q0e.isText(container) && !start && offset === 0) { + container = new TreeWalker(container, ed.getBody()).prev() || container; + } + return container; + }; + var wrap$2 = function (dom, node, name, attrs) { + var wrapper = dom.create(name, attrs); + node.parentNode.insertBefore(wrapper, node); + wrapper.appendChild(node); + return wrapper; + }; + var matchName$1 = function (dom, node, format) { + if (isEq$5(node, format.inline)) { + return true; + } + if (isEq$5(node, format.block)) { + return true; + } + if (format.selector) { + return $_9owqcy1qje5o2q0e.isElement(node) && dom.is(node, format.selector); + } + }; + var isColorFormatAndAnchor = function (node, format) { + return format.links && node.tagName === 'A'; + }; + var find$4 = function (dom, node, next, inc) { + node = $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node, next, inc); + return !node || (node.nodeName === 'BR' || dom.isBlock(node)); + }; + var removeNode$1 = function (ed, node, format) { + var parentNode = node.parentNode; + var rootBlockElm; + var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block; + if (format.block) { + if (!forcedRootBlock) { + if (dom.isBlock(node) && !dom.isBlock(parentNode)) { + if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) { + node.insertBefore(dom.create('br'), node.firstChild); + } + if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) { + node.appendChild(dom.create('br')); + } + } + } else { + if (parentNode === dom.getRoot()) { + if (!format.list_block || !isEq$5(node, format.list_block)) { + each$14($_a5gegtjje5o2pum.grep(node.childNodes), function (node) { + if ($_b2hqtg3lje5o2qft.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) { + if (!rootBlockElm) { + rootBlockElm = wrap$2(dom, node, forcedRootBlock); + dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs); + } else { + rootBlockElm.appendChild(node); + } + } else { + rootBlockElm = 0; + } + }); + } + } + } + } + if (format.selector && format.inline && !isEq$5(format.inline, node)) { + return; + } + dom.remove(node, 1); + }; + var removeFormat = function (ed, format, vars, node, compareNode) { + var i, attrs, stylesModified; + var dom = ed.dom; + if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) { + return false; + } + if (format.remove !== 'all') { + each$14(format.styles, function (value, name) { + value = $_b2hqtg3lje5o2qft.normalizeStyleValue(dom, $_b2hqtg3lje5o2qft.replaceVars(value, vars), name); + if (typeof name === 'number') { + name = value; + compareNode = 0; + } + if (format.remove_similar || (!compareNode || isEq$5($_b2hqtg3lje5o2qft.getStyle(dom, compareNode, name), value))) { + dom.setStyle(node, name, ''); + } + stylesModified = 1; + }); + if (stylesModified && dom.getAttrib(node, 'style') === '') { + node.removeAttribute('style'); + node.removeAttribute('data-mce-style'); + } + each$14(format.attributes, function (value, name) { + var valueOut; + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (typeof name === 'number') { + name = value; + compareNode = 0; + } + if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) { + if (name === 'class') { + value = dom.getAttrib(node, name); + if (value) { + valueOut = ''; + each$14(value.split(/\s+/), function (cls) { + if (/mce\-\w+/.test(cls)) { + valueOut += (valueOut ? ' ' : '') + cls; + } + }); + if (valueOut) { + dom.setAttrib(node, name, valueOut); + return; + } + } + } + if (name === 'class') { + node.removeAttribute('className'); + } + if (MCE_ATTR_RE.test(name)) { + node.removeAttribute('data-mce-' + name); + } + node.removeAttribute(name); + } + }); + each$14(format.classes, function (value) { + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (!compareNode || dom.hasClass(compareNode, value)) { + dom.removeClass(node, value); + } + }); + attrs = dom.getAttribs(node); + for (i = 0; i < attrs.length; i++) { + var attrName = attrs[i].nodeName; + if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) { + return false; + } + } + } + if (format.remove !== 'none') { + removeNode$1(ed, node, format); + return true; + } + }; + var findFormatRoot = function (editor, container, name, vars, similar) { + var formatRoot; + each$14($_b2hqtg3lje5o2qft.getParents(editor.dom, container.parentNode).reverse(), function (parent) { + var format; + if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') { + format = $_g32xfv3mje5o2qg1.matchNode(editor, parent, name, vars, similar); + if (format && format.split !== false) { + formatRoot = parent; + } + } + }); + return formatRoot; + }; + var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) { + var parent, clone, lastClone, firstClone, i, formatRootParent; + var dom = editor.dom; + if (formatRoot) { + formatRootParent = formatRoot.parentNode; + for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) { + clone = dom.clone(parent, false); + for (i = 0; i < formatList.length; i++) { + if (removeFormat(editor, formatList[i], vars, clone, clone)) { + clone = 0; + break; + } + } + if (clone) { + if (lastClone) { + clone.appendChild(lastClone); + } + if (!firstClone) { + firstClone = clone; + } + lastClone = clone; + } + } + if (split && (!format.mixed || !dom.isBlock(formatRoot))) { + container = dom.split(formatRoot, container); + } + if (lastClone) { + target.parentNode.insertBefore(lastClone, target); + firstClone.appendChild(target); + } + } + return container; + }; + var remove$4 = function (ed, name, vars, node, similar) { + var formatList = ed.formatter.get(name), format = formatList[0]; + var bookmark, rng, contentEditable = true; + var dom = ed.dom; + var selection = ed.selection; + var splitToFormatRoot = function (container) { + var formatRoot = findFormatRoot(ed, container, name, vars, similar); + return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars); + }; + var process = function (node) { + var children, i, l, lastContentEditable, hasContentEditableState; + if ($_9owqcy1qje5o2q0e.isElement(node) && dom.getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = dom.getContentEditable(node) === 'true'; + hasContentEditableState = true; + } + children = $_a5gegtjje5o2pum.grep(node.childNodes); + if (contentEditable && !hasContentEditableState) { + for (i = 0, l = formatList.length; i < l; i++) { + if (removeFormat(ed, formatList[i], vars, node, node)) { + break; + } + } + } + if (format.deep) { + if (children.length) { + for (i = 0, l = children.length; i < l; i++) { + process(children[i]); + } + if (hasContentEditableState) { + contentEditable = lastContentEditable; + } + } + } + }; + var unwrap = function (start) { + var node = dom.get(start ? '_start' : '_end'); + var out = node[start ? 'firstChild' : 'lastChild']; + if ($_83h91t2jje5o2q8n.isBookmarkNode(out)) { + out = out[start ? 'firstChild' : 'lastChild']; + } + if ($_9owqcy1qje5o2q0e.isText(out) && out.data.length === 0) { + out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling; + } + dom.remove(node, true); + return out; + }; + var removeRngStyle = function (rng) { + var startContainer, endContainer; + var commonAncestorContainer = rng.commonAncestorContainer; + rng = $_8wd5fu3kje5o2qfi.expandRng(ed, rng, formatList, true); + if (format.split) { + startContainer = getContainer(ed, rng, true); + endContainer = getContainer(ed, rng); + if (startContainer !== endContainer) { + if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) { + if (startContainer.nodeName === 'TR') { + startContainer = startContainer.firstChild.firstChild || startContainer; + } else { + startContainer = startContainer.firstChild || startContainer; + } + } + if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) { + endContainer = endContainer.firstChild || endContainer; + } + if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) { + startContainer = wrap$2(dom, startContainer, 'span', { + 'id': '_start', + 'data-mce-type': 'bookmark' + }); + splitToFormatRoot(startContainer); + startContainer = unwrap(true); + return; + } + startContainer = wrap$2(dom, startContainer, 'span', { + 'id': '_start', + 'data-mce-type': 'bookmark' + }); + endContainer = wrap$2(dom, endContainer, 'span', { + 'id': '_end', + 'data-mce-type': 'bookmark' + }); + splitToFormatRoot(startContainer); + splitToFormatRoot(endContainer); + startContainer = unwrap(true); + endContainer = unwrap(); + } else { + startContainer = endContainer = splitToFormatRoot(startContainer); + } + rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer; + rng.startOffset = dom.nodeIndex(startContainer); + rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer; + rng.endOffset = dom.nodeIndex(endContainer) + 1; + } + $_1jk9p5lje5o2qv9.walk(dom, rng, function (nodes) { + each$14(nodes, function (node) { + process(node); + if ($_9owqcy1qje5o2q0e.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_b2hqtg3lje5o2qft.getTextDecoration(dom, node.parentNode) === 'underline') { + removeFormat(ed, { + deep: false, + exact: true, + inline: 'span', + styles: { textDecoration: 'underline' } + }, null, node); + } + }); + }); + }; + if (node) { + if (node.nodeType) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + removeRngStyle(rng); + } else { + removeRngStyle(node); + } + return; + } + if (dom.getContentEditable(selection.getNode()) === 'false') { + node = selection.getNode(); + for (var i = 0, l = formatList.length; i < l; i++) { + if (formatList[i].ceFalseOverride) { + if (removeFormat(ed, formatList[i], vars, node, node)) { + break; + } + } + } + return; + } + if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { + bookmark = selection.getBookmark(); + removeRngStyle(selection.getRng()); + selection.moveToBookmark(bookmark); + if (format.inline && $_g32xfv3mje5o2qg1.match(ed, name, vars, selection.getStart())) { + $_b2hqtg3lje5o2qft.moveStart(dom, selection, selection.getRng()); + } + ed.nodeChanged(); + } else { + $_4066yu3jje5o2qev.removeCaretFormat(ed, name, vars, similar); + } + }; + var $_2afve25kje5o2qul = { + removeFormat: removeFormat, + remove: remove$4 + }; + + var each$15 = $_a5gegtjje5o2pum.each; + var isElementNode = function (node) { + return node && node.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(node) && !$_4066yu3jje5o2qev.isCaretNode(node) && !$_9owqcy1qje5o2q0e.isBogus(node); + }; + var findElementSibling = function (node, siblingName) { + var sibling; + for (sibling = node; sibling; sibling = sibling[siblingName]) { + if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) { + return node; + } + if (sibling.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(sibling)) { + return sibling; + } + } + return node; + }; + var mergeSiblingsNodes = function (dom, prev, next) { + var sibling, tmpSibling; + var elementUtils = new ElementUtils(dom); + if (prev && next) { + prev = findElementSibling(prev, 'previousSibling'); + next = findElementSibling(next, 'nextSibling'); + if (elementUtils.compare(prev, next)) { + for (sibling = prev.nextSibling; sibling && sibling !== next;) { + tmpSibling = sibling; + sibling = sibling.nextSibling; + prev.appendChild(tmpSibling); + } + dom.remove(next); + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.grep(next.childNodes), function (node) { + prev.appendChild(node); + }); + return prev; + } + } + return next; + }; + var processChildElements = function (node, filter, process) { + each$15(node.childNodes, function (node) { + if (isElementNode(node)) { + if (filter(node)) { + process(node); + } + if (node.hasChildNodes()) { + processChildElements(node, filter, process); + } + } + }); + }; + var hasStyle = function (dom, name) { + return $_enfhkv6je5o2ply.curry(function (name, node) { + return !!(node && $_b2hqtg3lje5o2qft.getStyle(dom, node, name)); + }, name); + }; + var applyStyle = function (dom, name, value) { + return $_enfhkv6je5o2ply.curry(function (name, value, node) { + dom.setStyle(node, name, value); + if (node.getAttribute('style') === '') { + node.removeAttribute('style'); + } + unwrapEmptySpan(dom, node); + }, name, value); + }; + var unwrapEmptySpan = function (dom, node) { + if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) { + dom.remove(node, true); + } + }; + var processUnderlineAndColor = function (dom, node) { + var textDecoration; + if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { + textDecoration = $_b2hqtg3lje5o2qft.getTextDecoration(dom, node.parentNode); + if (dom.getStyle(node, 'color') && textDecoration) { + dom.setStyle(node, 'text-decoration', textDecoration); + } else if (dom.getStyle(node, 'text-decoration') === textDecoration) { + dom.setStyle(node, 'text-decoration', null); + } + } + }; + var mergeUnderlineAndColor = function (dom, format, vars, node) { + if (format.styles.color || format.styles.textDecoration) { + $_a5gegtjje5o2pum.walk(node, $_enfhkv6je5o2ply.curry(processUnderlineAndColor, dom), 'childNodes'); + processUnderlineAndColor(dom, node); + } + }; + var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) { + if (format.styles && format.styles.backgroundColor) { + processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', $_b2hqtg3lje5o2qft.replaceVars(format.styles.backgroundColor, vars))); + } + }; + var mergeSubSup = function (dom, format, vars, node) { + if (format.inline === 'sub' || format.inline === 'sup') { + processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', '')); + dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true); + } + }; + var mergeSiblings = function (dom, format, vars, node) { + if (node && format.merge_siblings !== false) { + node = mergeSiblingsNodes(dom, $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node), node); + node = mergeSiblingsNodes(dom, node, $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node, true)); + } + }; + var clearChildStyles = function (dom, format, node) { + if (format.clear_child_styles) { + var selector = format.links ? '*:not(a)' : '*'; + each$15(dom.select(selector, node), function (node) { + if (isElementNode(node)) { + each$15(format.styles, function (value, name) { + dom.setStyle(node, name, ''); + }); + } + }); + } + }; + var mergeWithChildren = function (editor, formatList, vars, node) { + each$15(formatList, function (format) { + each$15(editor.dom.select(format.inline, node), function (child) { + if (!isElementNode(child)) { + return; + } + $_2afve25kje5o2qul.removeFormat(editor, format, vars, child, format.exact ? child : null); + }); + clearChildStyles(editor.dom, format, node); + }); + }; + var mergeWithParents = function (editor, format, name, vars, node) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, node.parentNode, name, vars)) { + if ($_2afve25kje5o2qul.removeFormat(editor, format, vars, node)) { + return; + } + } + if (format.merge_with_parents) { + editor.dom.getParent(node.parentNode, function (parent) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, parent, name, vars)) { + $_2afve25kje5o2qul.removeFormat(editor, format, vars, node); + return true; + } + }); + } + }; + var $_ddwhlm5jje5o2qua = { + mergeWithChildren: mergeWithChildren, + mergeUnderlineAndColor: mergeUnderlineAndColor, + mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize, + mergeSubSup: mergeSubSup, + mergeSiblings: mergeSiblings, + mergeWithParents: mergeWithParents + }; + + var each$16 = $_a5gegtjje5o2pum.each; + var isElementNode$1 = function (node) { + return node && node.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(node) && !$_4066yu3jje5o2qev.isCaretNode(node) && !$_9owqcy1qje5o2q0e.isBogus(node); + }; + var applyFormat = function (ed, name, vars, node) { + var formatList = ed.formatter.get(name); + var format = formatList[0]; + var bookmark, rng; + var isCollapsed = !node && ed.selection.isCollapsed(); + var dom = ed.dom, selection = ed.selection; + var setElementFormat = function (elm, fmt) { + fmt = fmt || format; + if (elm) { + if (fmt.onformat) { + fmt.onformat(elm, fmt, vars, node); + } + each$16(fmt.styles, function (value, name) { + dom.setStyle(elm, name, $_b2hqtg3lje5o2qft.replaceVars(value, vars)); + }); + if (fmt.styles) { + var styleVal = dom.getAttrib(elm, 'style'); + if (styleVal) { + elm.setAttribute('data-mce-style', styleVal); + } + } + each$16(fmt.attributes, function (value, name) { + dom.setAttrib(elm, name, $_b2hqtg3lje5o2qft.replaceVars(value, vars)); + }); + each$16(fmt.classes, function (value) { + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (!dom.hasClass(elm, value)) { + dom.addClass(elm, value); + } + }); + } + }; + var applyNodeStyle = function (formatList, node) { + var found = false; + if (!format.selector) { + return false; + } + each$16(formatList, function (format) { + if ('collapsed' in format && format.collapsed !== isCollapsed) { + return; + } + if (dom.is(node, format.selector) && !$_4066yu3jje5o2qev.isCaretNode(node)) { + setElementFormat(node, format); + found = true; + return false; + } + }); + return found; + }; + var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) { + var newWrappers = []; + var wrapName, wrapElm, contentEditable = true; + wrapName = format.inline || format.block; + wrapElm = dom.create(wrapName); + setElementFormat(wrapElm); + $_1jk9p5lje5o2qv9.walk(dom, rng, function (nodes) { + var currentWrapElm; + var process = function (node) { + var nodeName, parentName, hasContentEditableState, lastContentEditable; + lastContentEditable = contentEditable; + nodeName = node.nodeName.toLowerCase(); + parentName = node.parentNode.nodeName.toLowerCase(); + if (node.nodeType === 1 && dom.getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = dom.getContentEditable(node) === 'true'; + hasContentEditableState = true; + } + if ($_b2hqtg3lje5o2qft.isEq(nodeName, 'br')) { + currentWrapElm = 0; + if (format.block) { + dom.remove(node); + } + return; + } + if (format.wrapper && $_g32xfv3mje5o2qg1.matchNode(ed, node, name, vars)) { + currentWrapElm = 0; + return; + } + if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_b2hqtg3lje5o2qft.isTextBlock(ed, nodeName) && $_b2hqtg3lje5o2qft.isValid(ed, parentName, wrapName)) { + node = dom.rename(node, wrapName); + setElementFormat(node); + newWrappers.push(node); + currentWrapElm = 0; + return; + } + if (format.selector) { + var found = applyNodeStyle(formatList, node); + if (!format.inline || found) { + currentWrapElm = 0; + return; + } + } + if (contentEditable && !hasContentEditableState && $_b2hqtg3lje5o2qft.isValid(ed, wrapName, nodeName) && $_b2hqtg3lje5o2qft.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !$_4066yu3jje5o2qev.isCaretNode(node) && (!format.inline || !dom.isBlock(node))) { + if (!currentWrapElm) { + currentWrapElm = dom.clone(wrapElm, false); + node.parentNode.insertBefore(currentWrapElm, node); + newWrappers.push(currentWrapElm); + } + currentWrapElm.appendChild(node); + } else { + currentWrapElm = 0; + each$16($_a5gegtjje5o2pum.grep(node.childNodes), process); + if (hasContentEditableState) { + contentEditable = lastContentEditable; + } + currentWrapElm = 0; + } + }; + each$16(nodes, process); + }); + if (format.links === true) { + each$16(newWrappers, function (node) { + var process = function (node) { + if (node.nodeName === 'A') { + setElementFormat(node, format); + } + each$16($_a5gegtjje5o2pum.grep(node.childNodes), process); + }; + process(node); + }); + } + each$16(newWrappers, function (node) { + var childCount; + var getChildCount = function (node) { + var count = 0; + each$16(node.childNodes, function (node) { + if (!$_b2hqtg3lje5o2qft.isWhiteSpaceNode(node) && !$_83h91t2jje5o2q8n.isBookmarkNode(node)) { + count++; + } + }); + return count; + }; + var getChildElementNode = function (root) { + var child = false; + each$16(root.childNodes, function (node) { + if (isElementNode$1(node)) { + child = node; + return false; + } + }); + return child; + }; + var mergeStyles = function (node) { + var child, clone; + child = getChildElementNode(node); + if (child && !$_83h91t2jje5o2q8n.isBookmarkNode(child) && $_g32xfv3mje5o2qg1.matchName(dom, child, format)) { + clone = dom.clone(child, false); + setElementFormat(clone); + dom.replace(clone, node, true); + dom.remove(child, 1); + } + return clone || node; + }; + childCount = getChildCount(node); + if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) { + dom.remove(node, 1); + return; + } + if (format.inline || format.wrapper) { + if (!format.exact && childCount === 1) { + node = mergeStyles(node); + } + $_ddwhlm5jje5o2qua.mergeWithChildren(ed, formatList, vars, node); + $_ddwhlm5jje5o2qua.mergeWithParents(ed, format, name, vars, node); + $_ddwhlm5jje5o2qua.mergeBackgroundColorAndFontSize(dom, format, vars, node); + $_ddwhlm5jje5o2qua.mergeSubSup(dom, format, vars, node); + $_ddwhlm5jje5o2qua.mergeSiblings(dom, format, vars, node); + } + }); + }; + if (dom.getContentEditable(selection.getNode()) === 'false') { + node = selection.getNode(); + for (var i = 0, l = formatList.length; i < l; i++) { + if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) { + setElementFormat(node, formatList[i]); + return; + } + } + return; + } + if (format) { + if (node) { + if (node.nodeType) { + if (!applyNodeStyle(formatList, node)) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + applyRngStyle(dom, $_8wd5fu3kje5o2qfi.expandRng(ed, rng, formatList), null, true); + } + } else { + applyRngStyle(dom, node, null, true); + } + } else { + if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { + var curSelNode = ed.selection.getNode(); + if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) { + applyFormat(ed, formatList[0].defaultBlock); + } + ed.selection.setRng($_8xjhg22vje5o2qak.normalize(ed.selection.getRng())); + bookmark = selection.getBookmark(); + applyRngStyle(dom, $_8wd5fu3kje5o2qfi.expandRng(ed, selection.getRng(), formatList), bookmark); + if (format.styles) { + $_ddwhlm5jje5o2qua.mergeUnderlineAndColor(dom, format, vars, curSelNode); + } + selection.moveToBookmark(bookmark); + $_b2hqtg3lje5o2qft.moveStart(dom, selection, selection.getRng()); + ed.nodeChanged(); + } else { + $_4066yu3jje5o2qev.applyCaretFormat(ed, name, vars); + } + } + $_6kqshy5ije5o2qu7.postProcess(name, ed); + } + }; + var $_a1bxau5hje5o2qu0 = { applyFormat: applyFormat }; + + var each$17 = $_a5gegtjje5o2pum.each; + var setup$3 = function (formatChangeData, editor) { + var currentFormats = {}; + formatChangeData.set({}); + editor.on('NodeChange', function (e) { + var parents = $_b2hqtg3lje5o2qft.getParents(editor.dom, e.element); + var matchedFormats = {}; + parents = $_a5gegtjje5o2pum.grep(parents, function (node) { + return node.nodeType === 1 && !node.getAttribute('data-mce-bogus'); + }); + each$17(formatChangeData.get(), function (callbacks, format) { + each$17(parents, function (node) { + if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) { + if (!currentFormats[format]) { + each$17(callbacks, function (callback) { + callback(true, { + node: node, + format: format, + parents: parents + }); + }); + currentFormats[format] = callbacks; + } + matchedFormats[format] = callbacks; + return false; + } + if ($_g32xfv3mje5o2qg1.matchesUnInheritedFormatSelector(editor, node, format)) { + return false; + } + }); + }); + each$17(currentFormats, function (callbacks, format) { + if (!matchedFormats[format]) { + delete currentFormats[format]; + each$17(callbacks, function (callback) { + callback(false, { + node: e.element, + format: format, + parents: parents + }); + }); + } + }); + }); + }; + var addListeners = function (formatChangeData, formats, callback, similar) { + var formatChangeItems = formatChangeData.get(); + each$17(formats.split(','), function (format) { + if (!formatChangeItems[format]) { + formatChangeItems[format] = []; + formatChangeItems[format].similar = similar; + } + formatChangeItems[format].push(callback); + }); + formatChangeData.set(formatChangeItems); + }; + var formatChanged = function (editor, formatChangeState, formats, callback, similar) { + if (formatChangeState.get() === null) { + setup$3(formatChangeState, editor); + } + addListeners(formatChangeState, formats, callback, similar); + }; + var $_eb5vf85mje5o2qvd = { formatChanged: formatChanged }; + + var get$4 = function (dom) { + var formats = { + valigntop: [{ + selector: 'td,th', + styles: { verticalAlign: 'top' } + }], + valignmiddle: [{ + selector: 'td,th', + styles: { verticalAlign: 'middle' } + }], + valignbottom: [{ + selector: 'td,th', + styles: { verticalAlign: 'bottom' } + }], + alignleft: [ + { + selector: 'figure.image', + collapsed: false, + classes: 'align-left', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'left' }, + inherit: false, + preview: false, + defaultBlock: 'div' + }, + { + selector: 'img,table', + collapsed: false, + styles: { float: 'left' }, + preview: 'font-family font-size' + } + ], + aligncenter: [ + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'center' }, + inherit: false, + preview: 'font-family font-size', + defaultBlock: 'div' + }, + { + selector: 'figure.image', + collapsed: false, + classes: 'align-center', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'img', + collapsed: false, + styles: { + display: 'block', + marginLeft: 'auto', + marginRight: 'auto' + }, + preview: false + }, + { + selector: 'table', + collapsed: false, + styles: { + marginLeft: 'auto', + marginRight: 'auto' + }, + preview: 'font-family font-size' + } + ], + alignright: [ + { + selector: 'figure.image', + collapsed: false, + classes: 'align-right', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'right' }, + inherit: false, + preview: 'font-family font-size', + defaultBlock: 'div' + }, + { + selector: 'img,table', + collapsed: false, + styles: { float: 'right' }, + preview: 'font-family font-size' + } + ], + alignjustify: [{ + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'justify' }, + inherit: false, + defaultBlock: 'div', + preview: 'font-family font-size' + }], + bold: [ + { + inline: 'strong', + remove: 'all' + }, + { + inline: 'span', + styles: { fontWeight: 'bold' } + }, + { + inline: 'b', + remove: 'all' + } + ], + italic: [ + { + inline: 'em', + remove: 'all' + }, + { + inline: 'span', + styles: { fontStyle: 'italic' } + }, + { + inline: 'i', + remove: 'all' + } + ], + underline: [ + { + inline: 'span', + styles: { textDecoration: 'underline' }, + exact: true + }, + { + inline: 'u', + remove: 'all' + } + ], + strikethrough: [ + { + inline: 'span', + styles: { textDecoration: 'line-through' }, + exact: true + }, + { + inline: 'strike', + remove: 'all' + } + ], + forecolor: { + inline: 'span', + styles: { color: '%value' }, + links: true, + remove_similar: true, + clear_child_styles: true + }, + hilitecolor: { + inline: 'span', + styles: { backgroundColor: '%value' }, + links: true, + remove_similar: true, + clear_child_styles: true + }, + fontname: { + inline: 'span', + toggle: false, + styles: { fontFamily: '%value' }, + clear_child_styles: true + }, + fontsize: { + inline: 'span', + toggle: false, + styles: { fontSize: '%value' }, + clear_child_styles: true + }, + fontsize_class: { + inline: 'span', + attributes: { class: '%value' } + }, + blockquote: { + block: 'blockquote', + wrapper: 1, + remove: 'all' + }, + subscript: { inline: 'sub' }, + superscript: { inline: 'sup' }, + code: { inline: 'code' }, + link: { + inline: 'a', + selector: 'a', + remove: 'all', + split: true, + deep: true, + onmatch: function () { + return true; + }, + onformat: function (elm, fmt, vars) { + $_a5gegtjje5o2pum.each(vars, function (value, key) { + dom.setAttrib(elm, key, value); + }); + } + }, + removeformat: [ + { + selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins', + remove: 'all', + split: true, + expand: false, + block_expand: true, + deep: true + }, + { + selector: 'span', + attributes: [ + 'style', + 'class' + ], + remove: 'empty', + split: true, + expand: false, + deep: true + }, + { + selector: '*', + attributes: [ + 'style', + 'class' + ], + split: false, + expand: false, + deep: true + } + ] + }; + $_a5gegtjje5o2pum.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function (name) { + formats[name] = { + block: name, + remove: 'all' + }; + }); + return formats; + }; + var $_1t175j5oje5o2qvi = { get: get$4 }; + + function FormatRegistry (editor) { + var formats = {}; + var get = function (name) { + return name ? formats[name] : formats; + }; + var register = function (name, format) { + if (name) { + if (typeof name !== 'string') { + $_a5gegtjje5o2pum.each(name, function (format, name) { + register(name, format); + }); + } else { + format = format.length ? format : [format]; + $_a5gegtjje5o2pum.each(format, function (format) { + if (typeof format.deep === 'undefined') { + format.deep = !format.selector; + } + if (typeof format.split === 'undefined') { + format.split = !format.selector || format.inline; + } + if (typeof format.remove === 'undefined' && format.selector && !format.inline) { + format.remove = 'none'; + } + if (format.selector && format.inline) { + format.mixed = true; + format.block_expand = true; + } + if (typeof format.classes === 'string') { + format.classes = format.classes.split(/\s+/); + } + }); + formats[name] = format; + } + } + }; + var unregister = function (name) { + if (name && formats[name]) { + delete formats[name]; + } + return formats; + }; + register($_1t175j5oje5o2qvi.get(editor.dom)); + register(editor.settings.formats); + return { + get: get, + register: register, + unregister: unregister + }; + } + + var each$18 = $_a5gegtjje5o2pum.each; + var dom = DOMUtils.DOM; + var parsedSelectorToHtml = function (ancestry, editor) { + var elm, item, fragment; + var schema = editor && editor.schema || Schema({}); + var decorate = function (elm, item) { + if (item.classes.length) { + dom.addClass(elm, item.classes.join(' ')); + } + dom.setAttribs(elm, item.attrs); + }; + var createElement = function (sItem) { + var elm; + item = typeof sItem === 'string' ? { + name: sItem, + classes: [], + attrs: {} + } : sItem; + elm = dom.create(item.name); + decorate(elm, item); + return elm; + }; + var getRequiredParent = function (elm, candidate) { + var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm; + var elmRule = schema.getElementRule(name); + var parentsRequired = elmRule && elmRule.parentsRequired; + if (parentsRequired && parentsRequired.length) { + return candidate && $_a5gegtjje5o2pum.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0]; + } else { + return false; + } + }; + var wrapInHtml = function (elm, ancestry, siblings) { + var parent, parentCandidate, parentRequired; + var ancestor = ancestry.length > 0 && ancestry[0]; + var ancestorName = ancestor && ancestor.name; + parentRequired = getRequiredParent(elm, ancestorName); + if (parentRequired) { + if (ancestorName === parentRequired) { + parentCandidate = ancestry[0]; + ancestry = ancestry.slice(1); + } else { + parentCandidate = parentRequired; + } + } else if (ancestor) { + parentCandidate = ancestry[0]; + ancestry = ancestry.slice(1); + } else if (!siblings) { + return elm; + } + if (parentCandidate) { + parent = createElement(parentCandidate); + parent.appendChild(elm); + } + if (siblings) { + if (!parent) { + parent = dom.create('div'); + parent.appendChild(elm); + } + $_a5gegtjje5o2pum.each(siblings, function (sibling) { + var siblingElm = createElement(sibling); + parent.insertBefore(siblingElm, elm); + }); + } + return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings); + }; + if (ancestry && ancestry.length) { + item = ancestry[0]; + elm = createElement(item); + fragment = dom.create('div'); + fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings)); + return fragment; + } else { + return ''; + } + }; + var selectorToHtml = function (selector, editor) { + return parsedSelectorToHtml(parseSelector(selector), editor); + }; + var parseSelectorItem = function (item) { + var tagName; + var obj = { + classes: [], + attrs: {} + }; + item = obj.selector = $_a5gegtjje5o2pum.trim(item); + if (item !== '*') { + tagName = item.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function ($0, $1, $2, $3, $4) { + switch ($1) { + case '#': + obj.attrs.id = $2; + break; + case '.': + obj.classes.push($2); + break; + case ':': + if ($_a5gegtjje5o2pum.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) { + obj.attrs[$2] = $2; + } + break; + } + if ($3 === '[') { + var m = $4.match(/([\w\-]+)(?:\=\"([^\"]+))?/); + if (m) { + obj.attrs[m[1]] = m[2]; + } + } + return ''; + }); + } + obj.name = tagName || 'div'; + return obj; + }; + var parseSelector = function (selector) { + if (!selector || typeof selector !== 'string') { + return []; + } + selector = selector.split(/\s*,\s*/)[0]; + selector = selector.replace(/\s*(~\+|~|\+|>)\s*/g, '$1'); + return $_a5gegtjje5o2pum.map(selector.split(/(?:>|\s+(?![^\[\]]+\]))/), function (item) { + var siblings = $_a5gegtjje5o2pum.map(item.split(/(?:~\+|~|\+)/), parseSelectorItem); + var obj = siblings.pop(); + if (siblings.length) { + obj.siblings = siblings; + } + return obj; + }).reverse(); + }; + var getCssText = function (editor, format) { + var name, previewFrag, previewElm, items; + var previewCss = '', parentFontSize, previewStyles; + previewStyles = editor.settings.preview_styles; + if (previewStyles === false) { + return ''; + } + if (typeof previewStyles !== 'string') { + previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow'; + } + var removeVars = function (val) { + return val.replace(/%(\w+)/g, ''); + }; + if (typeof format === 'string') { + format = editor.formatter.get(format); + if (!format) { + return; + } + format = format[0]; + } + if ('preview' in format) { + previewStyles = format.preview; + if (previewStyles === false) { + return ''; + } + } + name = format.block || format.inline || 'span'; + items = parseSelector(format.selector); + if (items.length) { + if (!items[0].name) { + items[0].name = name; + } + name = format.selector; + previewFrag = parsedSelectorToHtml(items, editor); + } else { + previewFrag = parsedSelectorToHtml([name], editor); + } + previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild; + each$18(format.styles, function (value, name) { + value = removeVars(value); + if (value) { + dom.setStyle(previewElm, name, value); + } + }); + each$18(format.attributes, function (value, name) { + value = removeVars(value); + if (value) { + dom.setAttrib(previewElm, name, value); + } + }); + each$18(format.classes, function (value) { + value = removeVars(value); + if (!dom.hasClass(previewElm, value)) { + dom.addClass(previewElm, value); + } + }); + editor.fire('PreviewFormats'); + dom.setStyles(previewFrag, { + position: 'absolute', + left: -65535 + }); + editor.getBody().appendChild(previewFrag); + parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true); + parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0; + each$18(previewStyles.split(' '), function (name) { + var value = dom.getStyle(previewElm, name, true); + if (name === 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) { + value = dom.getStyle(editor.getBody(), name, true); + if (dom.toHex(value).toLowerCase() === '#ffffff') { + return; + } + } + if (name === 'color') { + if (dom.toHex(value).toLowerCase() === '#000000') { + return; + } + } + if (name === 'font-size') { + if (/em|%$/.test(value)) { + if (parentFontSize === 0) { + return; + } + value = parseFloat(value) / (/%$/.test(value) ? 100 : 1); + value = value * parentFontSize + 'px'; + } + } + if (name === 'border' && value) { + previewCss += 'padding:0 2px;'; + } + previewCss += name + ':' + value + ';'; + }); + editor.fire('AfterPreviewFormats'); + dom.remove(previewFrag); + return previewCss; + }; + var $_f93fum5pje5o2qvn = { + getCssText: getCssText, + parseSelector: parseSelector, + selectorToHtml: selectorToHtml + }; + + var toggle = function (editor, formats, name, vars, node) { + var fmt = formats.get(name); + if ($_g32xfv3mje5o2qg1.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) { + $_2afve25kje5o2qul.remove(editor, name, vars, node); + } else { + $_a1bxau5hje5o2qu0.applyFormat(editor, name, vars, node); + } + }; + var $_bzwbov5qje5o2qvu = { toggle: toggle }; + + var setup$4 = function (editor) { + editor.addShortcut('meta+b', '', 'Bold'); + editor.addShortcut('meta+i', '', 'Italic'); + editor.addShortcut('meta+u', '', 'Underline'); + for (var i = 1; i <= 6; i++) { + editor.addShortcut('access+' + i, '', [ + 'FormatBlock', + false, + 'h' + i + ]); + } + editor.addShortcut('access+7', '', [ + 'FormatBlock', + false, + 'p' + ]); + editor.addShortcut('access+8', '', [ + 'FormatBlock', + false, + 'div' + ]); + editor.addShortcut('access+9', '', [ + 'FormatBlock', + false, + 'address' + ]); + }; + var $_2qm5rd5rje5o2qvv = { setup: setup$4 }; + + function Formatter (editor) { + var formats = FormatRegistry(editor); + var formatChangeState = Cell(null); + $_2qm5rd5rje5o2qvv.setup(editor); + $_4066yu3jje5o2qev.setup(editor); + return { + get: formats.get, + register: formats.register, + unregister: formats.unregister, + apply: $_enfhkv6je5o2ply.curry($_a1bxau5hje5o2qu0.applyFormat, editor), + remove: $_enfhkv6je5o2ply.curry($_2afve25kje5o2qul.remove, editor), + toggle: $_enfhkv6je5o2ply.curry($_bzwbov5qje5o2qvu.toggle, editor, formats), + match: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.match, editor), + matchAll: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.matchAll, editor), + matchNode: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.matchNode, editor), + canApply: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.canApply, editor), + formatChanged: $_enfhkv6je5o2ply.curry($_eb5vf85mje5o2qvd.formatChanged, editor, formatChangeState), + getCssText: $_enfhkv6je5o2ply.curry($_f93fum5pje5o2qvn.getCssText, editor) + }; + } + + var shallow = function (old, nu) { + return nu; + }; + var deep = function (old, nu) { + var bothObjects = $_be3q8w12je5o2pxj.isObject(old) && $_be3q8w12je5o2pxj.isObject(nu); + return bothObjects ? deepMerge(old, nu) : nu; + }; + var baseMerge = function (merger) { + return function () { + var objects = new Array(arguments.length); + for (var i = 0; i < objects.length; i++) + objects[i] = arguments[i]; + if (objects.length === 0) + throw new Error('Can\'t merge zero objects'); + var ret = {}; + for (var j = 0; j < objects.length; j++) { + var curObject = objects[j]; + for (var key in curObject) + if (curObject.hasOwnProperty(key)) { + ret[key] = merger(ret[key], curObject[key]); + } + } + return ret; + }; + }; + var deepMerge = baseMerge(deep); + var merge = baseMerge(shallow); + var $_atjucy5uje5o2qw2 = { + deepMerge: deepMerge, + merge: merge + }; + + var firePreProcess = function (editor, args) { + return editor.fire('PreProcess', args); + }; + var firePostProcess = function (editor, args) { + return editor.fire('PostProcess', args); + }; + var fireRemove = function (editor) { + return editor.fire('remove'); + }; + var $_d6jl355vje5o2qw5 = { + firePreProcess: firePreProcess, + firePostProcess: firePostProcess, + fireRemove: fireRemove + }; + + var register = function (htmlParser, settings, dom) { + htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.attr('tabindex', node.attributes.map['data-mce-tabindex']); + node.attr(name, null); + } + }); + htmlParser.addAttributeFilter('src,href,style', function (nodes, name) { + var i = nodes.length, node, value; + var internalName = 'data-mce-' + name; + var urlConverter = settings.url_converter; + var urlConverterScope = settings.url_converter_scope; + while (i--) { + node = nodes[i]; + value = node.attributes.map[internalName]; + if (value !== undefined) { + node.attr(name, value.length > 0 ? value : null); + node.attr(internalName, null); + } else { + value = node.attributes.map[name]; + if (name === 'style') { + value = dom.serializeStyle(dom.parseStyle(value), node.name); + } else if (urlConverter) { + value = urlConverter.call(urlConverterScope, value, name, node.name); + } + node.attr(name, value.length > 0 ? value : null); + } + } + }); + htmlParser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, value; + while (i--) { + node = nodes[i]; + value = node.attr('class'); + if (value) { + value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ''); + node.attr('class', value.length > 0 ? value : null); + } + } + }); + htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) { + node.remove(); + } + } + }); + htmlParser.addNodeFilter('noscript', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i].firstChild; + if (node) { + node.value = $_fzh4ld1rje5o2q0t.decode(node.value); + } + } + }); + htmlParser.addNodeFilter('script,style', function (nodes, name) { + var i = nodes.length, node, value, type; + var trim = function (value) { + return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n').replace(/^[\r\n]*|[\r\n]*$/g, '').replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '').replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, ''); + }; + while (i--) { + node = nodes[i]; + value = node.firstChild ? node.firstChild.value : ''; + if (name === 'script') { + type = node.attr('type'); + if (type) { + node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\-/, '')); + } + if (settings.element_format === 'xhtml' && value.length > 0) { + node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>'; + } + } else { + if (settings.element_format === 'xhtml' && value.length > 0) { + node.firstChild.value = '<!--\n' + trim(value) + '\n-->'; + } + } + } + }); + htmlParser.addNodeFilter('#comment', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.value.indexOf('[CDATA[') === 0) { + node.name = '#cdata'; + node.type = 4; + node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, ''); + } else if (node.value.indexOf('mce:protected ') === 0) { + node.name = '#text'; + node.type = 3; + node.raw = true; + node.value = unescape(node.value).substr(14); + } + } + }); + htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.type === 7) { + node.remove(); + } else if (node.type === 1) { + if (name === 'input' && !('type' in node.attributes.map)) { + node.attr('type', 'text'); + } + } + } + }); + htmlParser.addAttributeFilter('data-mce-type', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + if (node.attr('data-mce-type') === 'format-caret') { + if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) { + node.remove(); + } else { + node.unwrap(); + } + } + }); + }); + htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) { + var i = nodes.length; + while (i--) { + nodes[i].attr(name, null); + } + }); + }; + var trimTrailingBr = function (rootNode) { + var brNode1, brNode2; + var isBr = function (node) { + return node && node.name === 'br'; + }; + brNode1 = rootNode.lastChild; + if (isBr(brNode1)) { + brNode2 = brNode1.prev; + if (isBr(brNode2)) { + brNode1.remove(); + brNode2.remove(); + } + } + }; + var $_97epr95wje5o2qw7 = { + register: register, + trimTrailingBr: trimTrailingBr + }; + + var preProcess = function (editor, node, args) { + var impl, doc, oldDoc; + var dom = editor.dom; + node = node.cloneNode(true); + impl = document.implementation; + if (impl.createHTMLDocument) { + doc = impl.createHTMLDocument(''); + $_a5gegtjje5o2pum.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) { + doc.body.appendChild(doc.importNode(node, true)); + }); + if (node.nodeName !== 'BODY') { + node = doc.body.firstChild; + } else { + node = doc.body; + } + oldDoc = dom.doc; + dom.doc = doc; + } + $_d6jl355vje5o2qw5.firePreProcess(editor, $_atjucy5uje5o2qw2.merge(args, { node: node })); + if (oldDoc) { + dom.doc = oldDoc; + } + return node; + }; + var shouldFireEvent = function (editor, args) { + return editor && editor.hasEventListeners('PreProcess') && !args.no_events; + }; + var process = function (editor, node, args) { + return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node; + }; + var $_70hszr5xje5o2qwd = { process: process }; + + var removeAttrs = function (node, names) { + $_bwcteb4je5o2pl4.each(names, function (name) { + node.attr(name, null); + }); + }; + var addFontToSpansFilter = function (domParser, styles, fontSizes) { + domParser.addNodeFilter('font', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + var props = styles.parse(node.attr('style')); + var color = node.attr('color'); + var face = node.attr('face'); + var size = node.attr('size'); + if (color) { + props.color = color; + } + if (face) { + props['font-family'] = face; + } + if (size) { + props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1]; + } + node.name = 'span'; + node.attr('style', styles.serialize(props)); + removeAttrs(node, [ + 'color', + 'face', + 'size' + ]); + }); + }); + }; + var addStrikeToSpanFilter = function (domParser, styles) { + domParser.addNodeFilter('strike', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + var props = styles.parse(node.attr('style')); + props['text-decoration'] = 'line-through'; + node.name = 'span'; + node.attr('style', styles.serialize(props)); + }); + }); + }; + var addFilters = function (domParser, settings) { + var styles = Styles(); + if (settings.convert_fonts_to_spans) { + addFontToSpansFilter(domParser, styles, $_a5gegtjje5o2pum.explode(settings.font_size_legacy_values)); + } + addStrikeToSpanFilter(domParser, styles); + }; + var register$1 = function (domParser, settings) { + if (settings.inline_styles) { + addFilters(domParser, settings); + } + }; + var $_6tznke5zje5o2qx6 = { register: register$1 }; + + var whiteSpaceRegExp$3 = /^[ \t\r\n]*$/; + var typeLookup = { + '#text': 3, + '#comment': 8, + '#cdata': 4, + '#pi': 7, + '#doctype': 10, + '#document-fragment': 11 + }; + var walk$3 = function (node, root, prev) { + var sibling; + var parent; + var startName = prev ? 'lastChild' : 'firstChild'; + var siblingName = prev ? 'prev' : 'next'; + if (node[startName]) { + return node[startName]; + } + if (node !== root) { + sibling = node[siblingName]; + if (sibling) { + return sibling; + } + for (parent = node.parent; parent && parent !== root; parent = parent.parent) { + sibling = parent[siblingName]; + if (sibling) { + return sibling; + } + } + } + }; + var Node$2 = function () { + function Node(name, type) { + this.name = name; + this.type = type; + if (type === 1) { + this.attributes = []; + this.attributes.map = {}; + } + } + Node.create = function (name, attrs) { + var node, attrName; + node = new Node(name, typeLookup[name] || 1); + if (attrs) { + for (attrName in attrs) { + node.attr(attrName, attrs[attrName]); + } + } + return node; + }; + Node.prototype.replace = function (node) { + var self = this; + if (node.parent) { + node.remove(); + } + self.insert(node, self); + self.remove(); + return self; + }; + Node.prototype.attr = function (name, value) { + var self = this; + var attrs, i; + if (typeof name !== 'string') { + for (i in name) { + self.attr(i, name[i]); + } + return self; + } + if (attrs = self.attributes) { + if (value !== undefined) { + if (value === null) { + if (name in attrs.map) { + delete attrs.map[name]; + i = attrs.length; + while (i--) { + if (attrs[i].name === name) { + attrs = attrs.splice(i, 1); + return self; + } + } + } + return self; + } + if (name in attrs.map) { + i = attrs.length; + while (i--) { + if (attrs[i].name === name) { + attrs[i].value = value; + break; + } + } + } else { + attrs.push({ + name: name, + value: value + }); + } + attrs.map[name] = value; + return self; + } + return attrs.map[name]; + } + }; + Node.prototype.clone = function () { + var self = this; + var clone = new Node(self.name, self.type); + var i, l, selfAttrs, selfAttr, cloneAttrs; + if (selfAttrs = self.attributes) { + cloneAttrs = []; + cloneAttrs.map = {}; + for (i = 0, l = selfAttrs.length; i < l; i++) { + selfAttr = selfAttrs[i]; + if (selfAttr.name !== 'id') { + cloneAttrs[cloneAttrs.length] = { + name: selfAttr.name, + value: selfAttr.value + }; + cloneAttrs.map[selfAttr.name] = selfAttr.value; + } + } + clone.attributes = cloneAttrs; + } + clone.value = self.value; + clone.shortEnded = self.shortEnded; + return clone; + }; + Node.prototype.wrap = function (wrapper) { + var self = this; + self.parent.insert(wrapper, self); + wrapper.append(self); + return self; + }; + Node.prototype.unwrap = function () { + var self = this; + var node, next; + for (node = self.firstChild; node;) { + next = node.next; + self.insert(node, self, true); + node = next; + } + self.remove(); + }; + Node.prototype.remove = function () { + var self = this, parent = self.parent, next = self.next, prev = self.prev; + if (parent) { + if (parent.firstChild === self) { + parent.firstChild = next; + if (next) { + next.prev = null; + } + } else { + prev.next = next; + } + if (parent.lastChild === self) { + parent.lastChild = prev; + if (prev) { + prev.next = null; + } + } else { + next.prev = prev; + } + self.parent = self.next = self.prev = null; + } + return self; + }; + Node.prototype.append = function (node) { + var self = this; + var last; + if (node.parent) { + node.remove(); + } + last = self.lastChild; + if (last) { + last.next = node; + node.prev = last; + self.lastChild = node; + } else { + self.lastChild = self.firstChild = node; + } + node.parent = self; + return node; + }; + Node.prototype.insert = function (node, refNode, before) { + var parent; + if (node.parent) { + node.remove(); + } + parent = refNode.parent || this; + if (before) { + if (refNode === parent.firstChild) { + parent.firstChild = node; + } else { + refNode.prev.next = node; + } + node.prev = refNode.prev; + node.next = refNode; + refNode.prev = node; + } else { + if (refNode === parent.lastChild) { + parent.lastChild = node; + } else { + refNode.next.prev = node; + } + node.next = refNode.next; + node.prev = refNode; + refNode.next = node; + } + node.parent = parent; + return node; + }; + Node.prototype.getAll = function (name) { + var self = this; + var node; + var collection = []; + for (node = self.firstChild; node; node = walk$3(node, self)) { + if (node.name === name) { + collection.push(node); + } + } + return collection; + }; + Node.prototype.empty = function () { + var self = this; + var nodes, i, node; + if (self.firstChild) { + nodes = []; + for (node = self.firstChild; node; node = walk$3(node, self)) { + nodes.push(node); + } + i = nodes.length; + while (i--) { + node = nodes[i]; + node.parent = node.firstChild = node.lastChild = node.next = node.prev = null; + } + } + self.firstChild = self.lastChild = null; + return self; + }; + Node.prototype.isEmpty = function (elements, whitespace, predicate) { + var self = this; + var node = self.firstChild, i, name; + whitespace = whitespace || {}; + if (node) { + do { + if (node.type === 1) { + if (node.attributes.map['data-mce-bogus']) { + continue; + } + if (elements[node.name]) { + return false; + } + i = node.attributes.length; + while (i--) { + name = node.attributes[i].name; + if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) { + return false; + } + } + } + if (node.type === 8) { + return false; + } + if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) { + return false; + } + if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) { + return false; + } + if (predicate && predicate(node)) { + return false; + } + } while (node = walk$3(node, self)); + } + return true; + }; + Node.prototype.walk = function (prev) { + return walk$3(this, null, prev); + }; + return Node; + }(); + + var paddEmptyNode = function (settings, args, blockElements, node) { + var brPreferred = settings.padd_empty_with_br || args.insert; + if (brPreferred && blockElements[node.name]) { + node.empty().append(new Node$2('br', 1)).shortEnded = true; + } else { + node.empty().append(new Node$2('#text', 3)).value = '\xA0'; + } + }; + var isPaddedWithNbsp = function (node) { + return hasOnlyChild(node, '#text') && node.firstChild.value === '\xA0'; + }; + var hasOnlyChild = function (node, name) { + return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name; + }; + var isPadded = function (schema, node) { + var rule = schema.getElementRule(node.name); + return rule && rule.paddEmpty; + }; + var isEmpty$1 = function (schema, nonEmptyElements, whitespaceElements, node) { + return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) { + return isPadded(schema, node); + }); + }; + var isLineBreakNode = function (node, blockElements) { + return node && (blockElements[node.name] || node.name === 'br'); + }; + + var register$2 = function (parser, settings) { + var schema = parser.schema; + if (settings.remove_trailing_brs) { + parser.addNodeFilter('br', function (nodes, _, args) { + var i; + var l = nodes.length; + var node; + var blockElements = $_a5gegtjje5o2pum.extend({}, schema.getBlockElements()); + var nonEmptyElements = schema.getNonEmptyElements(); + var parent, lastParent, prev, prevName; + var whiteSpaceElements = schema.getNonEmptyElements(); + var elementRule, textNode; + blockElements.body = 1; + for (i = 0; i < l; i++) { + node = nodes[i]; + parent = node.parent; + if (blockElements[node.parent.name] && node === parent.lastChild) { + prev = node.prev; + while (prev) { + prevName = prev.name; + if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') { + if (prevName !== 'br') { + break; + } + if (prevName === 'br') { + node = null; + break; + } + } + prev = prev.prev; + } + if (node) { + node.remove(); + if (isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, parent)) { + elementRule = schema.getElementRule(parent.name); + if (elementRule) { + if (elementRule.removeEmpty) { + parent.remove(); + } else if (elementRule.paddEmpty) { + paddEmptyNode(settings, args, blockElements, parent); + } + } + } + } + } else { + lastParent = node; + while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) { + lastParent = parent; + if (blockElements[parent.name]) { + break; + } + parent = parent.parent; + } + if (lastParent === parent && settings.padd_empty_with_br !== true) { + textNode = new Node$2('#text', 3); + textNode.value = '\xA0'; + node.replace(textNode); + } + } + } + }); + } + parser.addAttributeFilter('href', function (nodes) { + var i = nodes.length, node; + var appendRel = function (rel) { + var parts = rel.split(' ').filter(function (p) { + return p.length > 0; + }); + return parts.concat(['noopener']).sort().join(' '); + }; + var addNoOpener = function (rel) { + var newRel = rel ? $_a5gegtjje5o2pum.trim(rel) : ''; + if (!/\b(noopener)\b/g.test(newRel)) { + return appendRel(newRel); + } else { + return newRel; + } + }; + if (!settings.allow_unsafe_link_target) { + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.attr('target') === '_blank') { + node.attr('rel', addNoOpener(node.attr('rel'))); + } + } + } + }); + if (!settings.allow_html_in_named_anchor) { + parser.addAttributeFilter('id,name', function (nodes) { + var i = nodes.length, sibling, prevSibling, parent, node; + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.firstChild && !node.attr('href')) { + parent = node.parent; + sibling = node.lastChild; + do { + prevSibling = sibling.prev; + parent.insert(sibling, node); + sibling = prevSibling; + } while (sibling); + } + } + }); + } + if (settings.fix_list_elements) { + parser.addNodeFilter('ul,ol', function (nodes) { + var i = nodes.length, node, parentNode; + while (i--) { + node = nodes[i]; + parentNode = node.parent; + if (parentNode.name === 'ul' || parentNode.name === 'ol') { + if (node.prev && node.prev.name === 'li') { + node.prev.append(node); + } else { + var li = new Node$2('li', 1); + li.attr('style', 'list-style-type: none'); + node.wrap(li); + } + } + } + }); + } + if (settings.validate && schema.getValidClasses()) { + parser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, classList, ci, className, classValue; + var validClasses = schema.getValidClasses(); + var validClassesMap, valid; + while (i--) { + node = nodes[i]; + classList = node.attr('class').split(' '); + classValue = ''; + for (ci = 0; ci < classList.length; ci++) { + className = classList[ci]; + valid = false; + validClassesMap = validClasses['*']; + if (validClassesMap && validClassesMap[className]) { + valid = true; + } + validClassesMap = validClasses[node.name]; + if (!valid && validClassesMap && validClassesMap[className]) { + valid = true; + } + if (valid) { + if (classValue) { + classValue += ' '; + } + classValue += className; + } + } + if (!classValue.length) { + classValue = null; + } + node.attr('class', classValue); + } + }); + } + }; + + var makeMap$4 = $_a5gegtjje5o2pum.makeMap; + var each$19 = $_a5gegtjje5o2pum.each; + var explode$4 = $_a5gegtjje5o2pum.explode; + var extend$3 = $_a5gegtjje5o2pum.extend; + function DomParser (settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var nodeFilters = {}; + var attributeFilters = []; + var matchedNodes = {}; + var matchedAttributes = {}; + settings = settings || {}; + settings.validate = 'validate' in settings ? settings.validate : true; + settings.root_name = settings.root_name || 'body'; + var fixInvalidChildren = function (nodes) { + var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i; + var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode; + nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table'); + nonEmptyElements = schema.getNonEmptyElements(); + whitespaceElements = schema.getWhiteSpaceElements(); + textBlockElements = schema.getTextBlockElements(); + specialElements = schema.getSpecialElements(); + for (ni = 0; ni < nodes.length; ni++) { + node = nodes[ni]; + if (!node.parent || node.fixed) { + continue; + } + if (textBlockElements[node.name] && node.parent.name === 'li') { + sibling = node.next; + while (sibling) { + if (textBlockElements[sibling.name]) { + sibling.name = 'li'; + sibling.fixed = true; + node.parent.insert(sibling, node.parent); + } else { + break; + } + sibling = sibling.next; + } + node.unwrap(node); + continue; + } + parents = [node]; + for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) { + parents.push(parent); + } + if (parent && parents.length > 1) { + parents.reverse(); + newParent = currentNode = filterNode(parents[0].clone()); + for (i = 0; i < parents.length - 1; i++) { + if (schema.isValidChild(currentNode.name, parents[i].name)) { + tempNode = filterNode(parents[i].clone()); + currentNode.append(tempNode); + } else { + tempNode = currentNode; + } + for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) { + nextNode = childNode.next; + tempNode.append(childNode); + childNode = nextNode; + } + currentNode = tempNode; + } + if (!isEmpty$1(schema, nonEmptyElements, whitespaceElements, newParent)) { + parent.insert(newParent, parents[0], true); + parent.insert(node, newParent); + } else { + parent.insert(node, parents[0], true); + } + parent = parents[0]; + if (isEmpty$1(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) { + parent.empty().remove(); + } + } else if (node.parent) { + if (node.name === 'li') { + sibling = node.prev; + if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { + sibling.append(node); + continue; + } + sibling = node.next; + if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { + sibling.insert(node, sibling.firstChild, true); + continue; + } + node.wrap(filterNode(new Node$2('ul', 1))); + continue; + } + if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) { + node.wrap(filterNode(new Node$2('div', 1))); + } else { + if (specialElements[node.name]) { + node.empty().remove(); + } else { + node.unwrap(); + } + } + } + } + }; + var filterNode = function (node) { + var i, name, list; + if (name in nodeFilters) { + list = matchedNodes[name]; + if (list) { + list.push(node); + } else { + matchedNodes[name] = [node]; + } + } + i = attributeFilters.length; + while (i--) { + name = attributeFilters[i].name; + if (name in node.attributes.map) { + list = matchedAttributes[name]; + if (list) { + list.push(node); + } else { + matchedAttributes[name] = [node]; + } + } + } + return node; + }; + var addNodeFilter = function (name, callback) { + each$19(explode$4(name), function (name) { + var list = nodeFilters[name]; + if (!list) { + nodeFilters[name] = list = []; + } + list.push(callback); + }); + }; + var getNodeFilters = function () { + var out = []; + for (var name_1 in nodeFilters) { + if (nodeFilters.hasOwnProperty(name_1)) { + out.push({ + name: name_1, + callbacks: nodeFilters[name_1] + }); + } + } + return out; + }; + var addAttributeFilter = function (name, callback) { + each$19(explode$4(name), function (name) { + var i; + for (i = 0; i < attributeFilters.length; i++) { + if (attributeFilters[i].name === name) { + attributeFilters[i].callbacks.push(callback); + return; + } + } + attributeFilters.push({ + name: name, + callbacks: [callback] + }); + }); + }; + var getAttributeFilters = function () { + return [].concat(attributeFilters); + }; + var parse = function (html, args) { + var parser, nodes, i, l, fi, fl, list, name; + var blockElements; + var invalidChildren = []; + var isInWhiteSpacePreservedElement; + var node; + args = args || {}; + matchedNodes = {}; + matchedAttributes = {}; + blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements()); + var nonEmptyElements = schema.getNonEmptyElements(); + var children = schema.children; + var validate = settings.validate; + var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block; + var whiteSpaceElements = schema.getWhiteSpaceElements(); + var startWhiteSpaceRegExp = /^[ \t\r\n]+/; + var endWhiteSpaceRegExp = /[ \t\r\n]+$/; + var allWhiteSpaceRegExp = /[ \t\r\n]+/g; + var isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/; + var addRootBlocks = function () { + var node = rootNode.firstChild, next, rootBlockNode; + var trim = function (rootBlockNode) { + if (rootBlockNode) { + node = rootBlockNode.firstChild; + if (node && node.type === 3) { + node.value = node.value.replace(startWhiteSpaceRegExp, ''); + } + node = rootBlockNode.lastChild; + if (node && node.type === 3) { + node.value = node.value.replace(endWhiteSpaceRegExp, ''); + } + } + }; + if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) { + return; + } + while (node) { + next = node.next; + if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) { + if (!rootBlockNode) { + rootBlockNode = createNode(rootBlockName, 1); + rootBlockNode.attr(settings.forced_root_block_attrs); + rootNode.insert(rootBlockNode, node); + rootBlockNode.append(node); + } else { + rootBlockNode.append(node); + } + } else { + trim(rootBlockNode); + rootBlockNode = null; + } + node = next; + } + trim(rootBlockNode); + }; + var createNode = function (name, type) { + var node = new Node$2(name, type); + var list; + if (name in nodeFilters) { + list = matchedNodes[name]; + if (list) { + list.push(node); + } else { + matchedNodes[name] = [node]; + } + } + return node; + }; + var removeWhitespaceBefore = function (node) { + var textNode, textNodeNext, textVal, sibling; + var blockElements = schema.getBlockElements(); + for (textNode = node.prev; textNode && textNode.type === 3;) { + textVal = textNode.value.replace(endWhiteSpaceRegExp, ''); + if (textVal.length > 0) { + textNode.value = textVal; + return; + } + textNodeNext = textNode.next; + if (textNodeNext) { + if (textNodeNext.type === 3 && textNodeNext.value.length) { + textNode = textNode.prev; + continue; + } + if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') { + textNode = textNode.prev; + continue; + } + } + sibling = textNode.prev; + textNode.remove(); + textNode = sibling; + } + }; + var cloneAndExcludeBlocks = function (input) { + var name; + var output = {}; + for (name in input) { + if (name !== 'li' && name !== 'p') { + output[name] = input[name]; + } + } + return output; + }; + parser = SaxParser$1({ + validate: validate, + allow_script_urls: settings.allow_script_urls, + allow_conditional_comments: settings.allow_conditional_comments, + self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()), + cdata: function (text) { + node.append(createNode('#cdata', 4)).value = text; + }, + text: function (text, raw) { + var textNode; + if (!isInWhiteSpacePreservedElement) { + text = text.replace(allWhiteSpaceRegExp, ' '); + if (isLineBreakNode(node.lastChild, blockElements)) { + text = text.replace(startWhiteSpaceRegExp, ''); + } + } + if (text.length !== 0) { + textNode = createNode('#text', 3); + textNode.raw = !!raw; + node.append(textNode).value = text; + } + }, + comment: function (text) { + node.append(createNode('#comment', 8)).value = text; + }, + pi: function (name, text) { + node.append(createNode(name, 7)).value = text; + removeWhitespaceBefore(node); + }, + doctype: function (text) { + var newNode; + newNode = node.append(createNode('#doctype', 10)); + newNode.value = text; + removeWhitespaceBefore(node); + }, + start: function (name, attrs, empty) { + var newNode, attrFiltersLen, elementRule, attrName, parent; + elementRule = validate ? schema.getElementRule(name) : {}; + if (elementRule) { + newNode = createNode(elementRule.outputName || name, 1); + newNode.attributes = attrs; + newNode.shortEnded = empty; + node.append(newNode); + parent = children[node.name]; + if (parent && children[newNode.name] && !parent[newNode.name]) { + invalidChildren.push(newNode); + } + attrFiltersLen = attributeFilters.length; + while (attrFiltersLen--) { + attrName = attributeFilters[attrFiltersLen].name; + if (attrName in attrs.map) { + list = matchedAttributes[attrName]; + if (list) { + list.push(newNode); + } else { + matchedAttributes[attrName] = [newNode]; + } + } + } + if (blockElements[name]) { + removeWhitespaceBefore(newNode); + } + if (!empty) { + node = newNode; + } + if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { + isInWhiteSpacePreservedElement = true; + } + } + }, + end: function (name) { + var textNode, elementRule, text, sibling, tempNode; + elementRule = validate ? schema.getElementRule(name) : {}; + if (elementRule) { + if (blockElements[name]) { + if (!isInWhiteSpacePreservedElement) { + textNode = node.firstChild; + if (textNode && textNode.type === 3) { + text = textNode.value.replace(startWhiteSpaceRegExp, ''); + if (text.length > 0) { + textNode.value = text; + textNode = textNode.next; + } else { + sibling = textNode.next; + textNode.remove(); + textNode = sibling; + while (textNode && textNode.type === 3) { + text = textNode.value; + sibling = textNode.next; + if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { + textNode.remove(); + textNode = sibling; + } + textNode = sibling; + } + } + } + textNode = node.lastChild; + if (textNode && textNode.type === 3) { + text = textNode.value.replace(endWhiteSpaceRegExp, ''); + if (text.length > 0) { + textNode.value = text; + textNode = textNode.prev; + } else { + sibling = textNode.prev; + textNode.remove(); + textNode = sibling; + while (textNode && textNode.type === 3) { + text = textNode.value; + sibling = textNode.prev; + if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { + textNode.remove(); + textNode = sibling; + } + textNode = sibling; + } + } + } + } + } + if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { + isInWhiteSpacePreservedElement = false; + } + if (elementRule.removeEmpty && isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, node)) { + if (!node.attributes.map.name && !node.attr('id')) { + tempNode = node.parent; + if (blockElements[node.name]) { + node.empty().remove(); + } else { + node.unwrap(); + } + node = tempNode; + return; + } + } + if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, node))) { + paddEmptyNode(settings, args, blockElements, node); + } + node = node.parent; + } + } + }, schema); + var rootNode = node = new Node$2(args.context || settings.root_name, 11); + parser.parse(html); + if (validate && invalidChildren.length) { + if (!args.context) { + fixInvalidChildren(invalidChildren); + } else { + args.invalid = true; + } + } + if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) { + addRootBlocks(); + } + if (!args.invalid) { + for (name in matchedNodes) { + list = nodeFilters[name]; + nodes = matchedNodes[name]; + fi = nodes.length; + while (fi--) { + if (!nodes[fi].parent) { + nodes.splice(fi, 1); + } + } + for (i = 0, l = list.length; i < l; i++) { + list[i](nodes, name, args); + } + } + for (i = 0, l = attributeFilters.length; i < l; i++) { + list = attributeFilters[i]; + if (list.name in matchedAttributes) { + nodes = matchedAttributes[list.name]; + fi = nodes.length; + while (fi--) { + if (!nodes[fi].parent) { + nodes.splice(fi, 1); + } + } + for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) { + list.callbacks[fi](nodes, list.name, args); + } + } + } + } + return rootNode; + }; + var exports = { + schema: schema, + addAttributeFilter: addAttributeFilter, + getAttributeFilters: getAttributeFilters, + addNodeFilter: addNodeFilter, + getNodeFilters: getNodeFilters, + filterNode: filterNode, + parse: parse + }; + register$2(exports, settings); + $_6tznke5zje5o2qx6.register(exports, settings); + return exports; + } + + var addTempAttr = function (htmlParser, tempAttrs, name) { + if ($_a5gegtjje5o2pum.inArray(tempAttrs, name) === -1) { + htmlParser.addAttributeFilter(name, function (nodes, name) { + var i = nodes.length; + while (i--) { + nodes[i].attr(name, null); + } + }); + tempAttrs.push(name); + } + }; + var postProcess$1 = function (editor, args, content) { + if (!args.no_events && editor) { + var outArgs = $_d6jl355vje5o2qw5.firePostProcess(editor, $_atjucy5uje5o2qw2.merge(args, { content: content })); + return outArgs.content; + } else { + return content; + } + }; + var getHtmlFromNode = function (dom, node, args) { + var html = $_4md31c21je5o2q5f.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)); + return args.selection ? html : $_a5gegtjje5o2pum.trim(html); + }; + var parseHtml = function (htmlParser, dom, html, args) { + var parserArgs = args.selection ? $_atjucy5uje5o2qw2.merge({ forced_root_block: false }, args) : args; + var rootNode = htmlParser.parse(html, parserArgs); + $_97epr95wje5o2qw7.trimTrailingBr(rootNode); + return rootNode; + }; + var serializeNode = function (settings, schema, node) { + var htmlSerializer = HtmlSerializer(settings, schema); + return htmlSerializer.serialize(node); + }; + var toHtml = function (editor, settings, schema, rootNode, args) { + var content = serializeNode(settings, schema, rootNode); + return postProcess$1(editor, args, content); + }; + function DomSerializer (settings, editor) { + var dom, schema, htmlParser; + var tempAttrs = ['data-mce-selected']; + dom = editor && editor.dom ? editor.dom : DOMUtils.DOM; + schema = editor && editor.schema ? editor.schema : Schema(settings); + settings.entity_encoding = settings.entity_encoding || 'named'; + settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true; + htmlParser = DomParser(settings, schema); + $_97epr95wje5o2qw7.register(htmlParser, settings, dom); + var serialize = function (node, parserArgs) { + var args = $_atjucy5uje5o2qw2.merge({ format: 'html' }, parserArgs ? parserArgs : {}); + var targetNode = $_70hszr5xje5o2qwd.process(editor, node, args); + var html = getHtmlFromNode(dom, targetNode, args); + var rootNode = parseHtml(htmlParser, dom, html, args); + return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args); + }; + return { + schema: schema, + addNodeFilter: htmlParser.addNodeFilter, + addAttributeFilter: htmlParser.addAttributeFilter, + serialize: serialize, + addRules: function (rules) { + schema.addValidElements(rules); + }, + setRules: function (rules) { + schema.setValidElements(rules); + }, + addTempAttr: $_enfhkv6je5o2ply.curry(addTempAttr, htmlParser, tempAttrs), + getTempAttrs: function () { + return tempAttrs; + } + }; + } + + function DomSerializer$1 (settings, editor) { + var domSerializer = DomSerializer(settings, editor); + return { + schema: domSerializer.schema, + addNodeFilter: domSerializer.addNodeFilter, + addAttributeFilter: domSerializer.addAttributeFilter, + serialize: domSerializer.serialize, + addRules: domSerializer.addRules, + setRules: domSerializer.setRules, + addTempAttr: domSerializer.addTempAttr, + getTempAttrs: domSerializer.getTempAttrs + }; + } + + var findBlockCaretContainer = function (editor) { + return $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '*[data-mce-caret]').fold($_enfhkv6je5o2ply.constant(null), function (elm) { + return elm.dom(); + }); + }; + var removeIeControlRect = function (editor) { + editor.selection.setRng(editor.selection.getRng()); + }; + var showBlockCaretContainer = function (editor, blockCaretContainer) { + if (blockCaretContainer.hasAttribute('data-mce-caret')) { + showCaretContainerBlock(blockCaretContainer); + removeIeControlRect(editor); + editor.selection.scrollIntoView(blockCaretContainer); + } + }; + var handleBlockContainer = function (editor, e) { + var blockCaretContainer = findBlockCaretContainer(editor); + if (!blockCaretContainer) { + return; + } + if (e.type === 'compositionstart') { + e.preventDefault(); + e.stopPropagation(); + showBlockCaretContainer(editor, blockCaretContainer); + return; + } + if (hasContent(blockCaretContainer)) { + showBlockCaretContainer(editor, blockCaretContainer); + } + }; + var setup$5 = function (editor) { + editor.on('keyup compositionstart', $_enfhkv6je5o2ply.curry(handleBlockContainer, editor)); + }; + var $_acfnaa63je5o2qxq = { setup: setup$5 }; + + function BookmarkManager(selection) { + return { + getBookmark: $_enfhkv6je5o2ply.curry($_83h91t2jje5o2q8n.getBookmark, selection), + moveToBookmark: $_enfhkv6je5o2ply.curry($_83h91t2jje5o2q8n.moveToBookmark, selection) + }; + } + (function (BookmarkManager) { + BookmarkManager.isBookmarkNode = $_83h91t2jje5o2q8n.isBookmarkNode; + }(BookmarkManager || (BookmarkManager = {}))); + var BookmarkManager$1 = BookmarkManager; + + var isContentEditableFalse$10 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isContentEditableTrue$6 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var getContentEditableRoot$1 = function (root, node) { + while (node && node !== root) { + if (isContentEditableTrue$6(node) || isContentEditableFalse$10(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var ControlSelection = function (selection, editor) { + var dom = editor.dom, each = $_a5gegtjje5o2pum.each; + var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle; + var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted; + var width, height; + var editableDoc = editor.getDoc(), rootDocument = document; + var abs = Math.abs, round = Math.round, rootElement = editor.getBody(); + var startScrollWidth, startScrollHeight; + resizeHandles = { + nw: [ + 0, + 0, + -1, + -1 + ], + ne: [ + 1, + 0, + 1, + -1 + ], + se: [ + 1, + 1, + 1, + 1 + ], + sw: [ + 0, + 1, + -1, + 1 + ] + }; + var rootClass = '.mce-content-body'; + editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + ($_9bd8pn9je5o2pp2.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}'); + var isImage = function (elm) { + return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image')); + }; + var isEventOnImageOutsideRange = function (evt, range) { + return isImage(evt.target) && !$_40xr2y56je5o2qsc.isXYWithinRange(evt.clientX, evt.clientY, range); + }; + var contextMenuSelectImage = function (evt) { + var target = evt.target; + if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) { + evt.preventDefault(); + editor.selection.select(target); + } + }; + var getResizeTarget = function (elm) { + return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm; + }; + var isResizable = function (elm) { + var selector = editor.settings.object_resizing; + if (selector === false || $_9bd8pn9je5o2pp2.iOS) { + return false; + } + if (typeof selector !== 'string') { + selector = 'table,img,figure.image,div'; + } + if (elm.getAttribute('data-mce-resize') === 'false') { + return false; + } + if (elm === editor.getBody()) { + return false; + } + return $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(elm), selector); + }; + var resizeGhostElement = function (e) { + var deltaX, deltaY, proportional; + var resizeHelperX, resizeHelperY; + deltaX = e.screenX - startX; + deltaY = e.screenY - startY; + width = deltaX * selectedHandle[2] + startW; + height = deltaY * selectedHandle[3] + startH; + width = width < 5 ? 5 : width; + height = height < 5 ? 5 : height; + if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) { + proportional = !$_99mhlk59je5o2qss.modifierPressed(e); + } else { + proportional = $_99mhlk59je5o2qss.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0; + } + if (proportional) { + if (abs(deltaX) > abs(deltaY)) { + height = round(width * ratio); + width = round(height / ratio); + } else { + width = round(height / ratio); + height = round(width * ratio); + } + } + dom.setStyles(getResizeTarget(selectedElmGhost), { + width: width, + height: height + }); + resizeHelperX = selectedHandle.startPos.x + deltaX; + resizeHelperY = selectedHandle.startPos.y + deltaY; + resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0; + resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0; + dom.setStyles(resizeHelper, { + left: resizeHelperX, + top: resizeHelperY, + display: 'block' + }); + resizeHelper.innerHTML = width + ' × ' + height; + if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) { + dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width)); + } + if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) { + dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height)); + } + deltaX = rootElement.scrollWidth - startScrollWidth; + deltaY = rootElement.scrollHeight - startScrollHeight; + if (deltaX + deltaY !== 0) { + dom.setStyles(resizeHelper, { + left: resizeHelperX - deltaX, + top: resizeHelperY - deltaY + }); + } + if (!resizeStarted) { + editor.fire('ObjectResizeStart', { + target: selectedElm, + width: startW, + height: startH + }); + resizeStarted = true; + } + }; + var endGhostResize = function () { + resizeStarted = false; + var setSizeProp = function (name, value) { + if (value) { + if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) { + dom.setStyle(getResizeTarget(selectedElm), name, value); + } else { + dom.setAttrib(getResizeTarget(selectedElm), name, value); + } + } + }; + setSizeProp('width', width); + setSizeProp('height', height); + dom.unbind(editableDoc, 'mousemove', resizeGhostElement); + dom.unbind(editableDoc, 'mouseup', endGhostResize); + if (rootDocument !== editableDoc) { + dom.unbind(rootDocument, 'mousemove', resizeGhostElement); + dom.unbind(rootDocument, 'mouseup', endGhostResize); + } + dom.remove(selectedElmGhost); + dom.remove(resizeHelper); + showResizeRect(selectedElm); + editor.fire('ObjectResized', { + target: selectedElm, + width: width, + height: height + }); + dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style')); + editor.nodeChanged(); + }; + var showResizeRect = function (targetElm) { + var position, targetWidth, targetHeight, e, rect; + hideResizeRect(); + unbindResizeHandleEvents(); + position = dom.getPos(targetElm, rootElement); + selectedElmX = position.x; + selectedElmY = position.y; + rect = targetElm.getBoundingClientRect(); + targetWidth = rect.width || rect.right - rect.left; + targetHeight = rect.height || rect.bottom - rect.top; + if (selectedElm !== targetElm) { + selectedElm = targetElm; + width = height = 0; + } + e = editor.fire('ObjectSelected', { target: targetElm }); + if (isResizable(targetElm) && !e.isDefaultPrevented()) { + each(resizeHandles, function (handle, name) { + var handleElm; + var startDrag = function (e) { + startX = e.screenX; + startY = e.screenY; + startW = getResizeTarget(selectedElm).clientWidth; + startH = getResizeTarget(selectedElm).clientHeight; + ratio = startH / startW; + selectedHandle = handle; + handle.startPos = { + x: targetWidth * handle[0] + selectedElmX, + y: targetHeight * handle[1] + selectedElmY + }; + startScrollWidth = rootElement.scrollWidth; + startScrollHeight = rootElement.scrollHeight; + selectedElmGhost = selectedElm.cloneNode(true); + dom.addClass(selectedElmGhost, 'mce-clonedresizable'); + dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all'); + selectedElmGhost.contentEditable = false; + selectedElmGhost.unSelectabe = true; + dom.setStyles(selectedElmGhost, { + left: selectedElmX, + top: selectedElmY, + margin: 0 + }); + selectedElmGhost.removeAttribute('data-mce-selected'); + rootElement.appendChild(selectedElmGhost); + dom.bind(editableDoc, 'mousemove', resizeGhostElement); + dom.bind(editableDoc, 'mouseup', endGhostResize); + if (rootDocument !== editableDoc) { + dom.bind(rootDocument, 'mousemove', resizeGhostElement); + dom.bind(rootDocument, 'mouseup', endGhostResize); + } + resizeHelper = dom.add(rootElement, 'div', { + 'class': 'mce-resize-helper', + 'data-mce-bogus': 'all' + }, startW + ' × ' + startH); + }; + handleElm = dom.get('mceResizeHandle' + name); + if (handleElm) { + dom.remove(handleElm); + } + handleElm = dom.add(rootElement, 'div', { + 'id': 'mceResizeHandle' + name, + 'data-mce-bogus': 'all', + 'class': 'mce-resizehandle', + 'unselectable': true, + 'style': 'cursor:' + name + '-resize; margin:0; padding:0' + }); + if ($_9bd8pn9je5o2pp2.ie) { + handleElm.contentEditable = false; + } + dom.bind(handleElm, 'mousedown', function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + startDrag(e); + }); + handle.elm = handleElm; + dom.setStyles(handleElm, { + left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2, + top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2 + }); + }); + } else { + hideResizeRect(); + } + selectedElm.setAttribute('data-mce-selected', '1'); + }; + var hideResizeRect = function () { + var name, handleElm; + unbindResizeHandleEvents(); + if (selectedElm) { + selectedElm.removeAttribute('data-mce-selected'); + } + for (name in resizeHandles) { + handleElm = dom.get('mceResizeHandle' + name); + if (handleElm) { + dom.unbind(handleElm); + dom.remove(handleElm); + } + } + }; + var updateResizeRect = function (e) { + var startElm, controlElm; + var isChildOrEqual = function (node, parent) { + if (node) { + do { + if (node === parent) { + return true; + } + } while (node = node.parentNode); + } + }; + if (resizeStarted || editor.removed) { + return; + } + each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) { + img.removeAttribute('data-mce-selected'); + }); + controlElm = e.type === 'mousedown' ? e.target : selection.getNode(); + controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0]; + if (isChildOrEqual(controlElm, rootElement)) { + disableGeckoResize(); + startElm = selection.getStart(true); + if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) { + showResizeRect(controlElm); + return; + } + } + hideResizeRect(); + }; + var isWithinContentEditableFalse = function (elm) { + return isContentEditableFalse$10(getContentEditableRoot$1(editor.getBody(), elm)); + }; + var unbindResizeHandleEvents = function () { + for (var name_1 in resizeHandles) { + var handle = resizeHandles[name_1]; + if (handle.elm) { + dom.unbind(handle.elm); + delete handle.elm; + } + } + }; + var disableGeckoResize = function () { + try { + editor.getDoc().execCommand('enableObjectResizing', false, false); + } catch (ex) { + } + }; + editor.on('init', function () { + disableGeckoResize(); + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie >= 11) { + editor.on('mousedown click', function (e) { + var target = e.target, nodeName = target.nodeName; + if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) { + if (e.button !== 2) { + editor.selection.select(target, nodeName === 'TABLE'); + } + if (e.type === 'mousedown') { + editor.nodeChanged(); + } + } + }); + editor.dom.bind(rootElement, 'mscontrolselect', function (e) { + var delayedSelect = function (node) { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + editor.selection.select(node); + }); + }; + if (isWithinContentEditableFalse(e.target)) { + e.preventDefault(); + delayedSelect(e.target); + return; + } + if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) { + e.preventDefault(); + if (e.target.tagName === 'IMG') { + delayedSelect(e.target); + } + } + }); + } + var throttledUpdateResizeRect = $_db41wogje5o2ps3.throttle(function (e) { + if (!editor.composing) { + updateResizeRect(e); + } + }); + editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect); + editor.on('keyup compositionend', function (e) { + if (selectedElm && selectedElm.nodeName === 'TABLE') { + throttledUpdateResizeRect(e); + } + }); + editor.on('hide blur', hideResizeRect); + editor.on('contextmenu', contextMenuSelectImage); + }); + editor.on('remove', unbindResizeHandleEvents); + var destroy = function () { + selectedElm = selectedElmGhost = null; + }; + return { + isResizable: isResizable, + showResizeRect: showResizeRect, + hideResizeRect: hideResizeRect, + updateResizeRect: updateResizeRect, + destroy: destroy + }; + }; + + var getPos$1 = function (elm) { + var x = 0, y = 0; + var offsetParent = elm; + while (offsetParent && offsetParent.nodeType) { + x += offsetParent.offsetLeft || 0; + y += offsetParent.offsetTop || 0; + offsetParent = offsetParent.offsetParent; + } + return { + x: x, + y: y + }; + }; + var fireScrollIntoViewEvent = function (editor, elm, alignToTop) { + var scrollEvent = { + elm: elm, + alignToTop: alignToTop + }; + editor.fire('scrollIntoView', scrollEvent); + return scrollEvent.isDefaultPrevented(); + }; + var scrollIntoView = function (editor, elm, alignToTop) { + var y, viewPort; + var dom = editor.dom; + var root = dom.getRoot(); + var viewPortY, viewPortH, offsetY = 0; + if (fireScrollIntoViewEvent(editor, elm, alignToTop)) { + return; + } + if (!$_9owqcy1qje5o2q0e.isElement(elm)) { + return; + } + if (alignToTop === false) { + offsetY = elm.offsetHeight; + } + if (root.nodeName !== 'BODY') { + var scrollContainer = editor.selection.getScrollContainer(); + if (scrollContainer) { + y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY; + viewPortH = scrollContainer.clientHeight; + viewPortY = scrollContainer.scrollTop; + if (y < viewPortY || y + 25 > viewPortY + viewPortH) { + scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25; + } + return; + } + } + viewPort = dom.getViewPort(editor.getWin()); + y = dom.getPos(elm).y + offsetY; + viewPortY = viewPort.y; + viewPortH = viewPort.h; + if (y < viewPort.y || y + 25 > viewPortY + viewPortH) { + editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25); + } + }; + var $_82tr6v67je5o2qyr = { scrollIntoView: scrollIntoView }; + + var hasCeProperty = function (node) { + return $_9owqcy1qje5o2q0e.isContentEditableTrue(node) || $_9owqcy1qje5o2q0e.isContentEditableFalse(node); + }; + var findParent$1 = function (node, rootNode, predicate) { + while (node && node !== rootNode) { + if (predicate(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var findClosestIeRange = function (clientX, clientY, doc) { + var element, rng, rects; + element = doc.elementFromPoint(clientX, clientY); + rng = doc.body.createTextRange(); + if (!element || element.tagName === 'HTML') { + element = doc.body; + } + rng.moveToElementText(element); + rects = $_a5gegtjje5o2pum.toArray(rng.getClientRects()); + rects = rects.sort(function (a, b) { + a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY)); + b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY)); + return a - b; + }); + if (rects.length > 0) { + clientY = (rects[0].bottom + rects[0].top) / 2; + try { + rng.moveToPoint(clientX, clientY); + rng.collapse(true); + return rng; + } catch (ex) { + } + } + return null; + }; + var moveOutOfContentEditableFalse = function (rng, rootNode) { + var parentElement = rng && rng.parentElement ? rng.parentElement() : null; + return $_9owqcy1qje5o2q0e.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng; + }; + var fromPoint$1 = function (clientX, clientY, doc) { + var rng, point; + var pointDoc = doc; + if (pointDoc.caretPositionFromPoint) { + point = pointDoc.caretPositionFromPoint(clientX, clientY); + if (point) { + rng = doc.createRange(); + rng.setStart(point.offsetNode, point.offset); + rng.collapse(true); + } + } else if (doc.caretRangeFromPoint) { + rng = doc.caretRangeFromPoint(clientX, clientY); + } else if (pointDoc.body.createTextRange) { + rng = pointDoc.body.createTextRange(); + try { + rng.moveToPoint(clientX, clientY); + rng.collapse(true); + } catch (ex) { + rng = findClosestIeRange(clientX, clientY, doc); + } + return moveOutOfContentEditableFalse(rng, doc.body); + } + return rng; + }; + var $_drs2u868je5o2qyu = { fromPoint: fromPoint$1 }; + + var processRanges = function (editor, ranges) { + return $_bwcteb4je5o2pl4.map(ranges, function (range) { + var evt = editor.fire('GetSelectionRange', { range: range }); + return evt.range !== range ? evt.range : range; + }); + }; + var $_fe3rbo69je5o2qzb = { processRanges: processRanges }; + + var clone$2 = function (original, deep) { + return $_5tcb2dyje5o2pwu.fromDom(original.dom().cloneNode(deep)); + }; + var shallow$1 = function (original) { + return clone$2(original, false); + }; + var deep$1 = function (original) { + return clone$2(original, true); + }; + var shallowAs = function (original, tag) { + var nu = $_5tcb2dyje5o2pwu.fromTag(tag); + var attributes = $_3uo9pl14je5o2pxq.clone(original); + $_3uo9pl14je5o2pxq.setAll(nu, attributes); + return nu; + }; + var copy$1 = function (original, tag) { + var nu = shallowAs(original, tag); + var cloneChildren = $_a6mttx17je5o2pyd.children(deep$1(original)); + $_93ro7k2qje5o2qa4.append(nu, cloneChildren); + return nu; + }; + var mutate = function (original, tag) { + var nu = shallowAs(original, tag); + $_elbl2s2oje5o2q9z.before(original, nu); + var children = $_a6mttx17je5o2pyd.children(original); + $_93ro7k2qje5o2qa4.append(nu, children); + $_cr1seh2pje5o2qa1.remove(original); + return nu; + }; + var $_cpi15k6cje5o2qzr = { + shallow: shallow$1, + shallowAs: shallowAs, + deep: deep$1, + copy: copy$1, + mutate: mutate + }; + + var fromElements = function (elements, scope) { + var doc = scope || document; + var fragment = doc.createDocumentFragment(); + $_bwcteb4je5o2pl4.each(elements, function (element) { + fragment.appendChild(element.dom()); + }); + return $_5tcb2dyje5o2pwu.fromDom(fragment); + }; + var $_g8hjki6dje5o2qzt = { fromElements: fromElements }; + + var getStartNode = function (rng) { + var sc = rng.startContainer, so = rng.startOffset; + if ($_9owqcy1qje5o2q0e.isText(sc)) { + return so === 0 ? Option.some($_5tcb2dyje5o2pwu.fromDom(sc)) : Option.none(); + } else { + return Option.from(sc.childNodes[so]).map($_5tcb2dyje5o2pwu.fromDom); + } + }; + var getEndNode = function (rng) { + var ec = rng.endContainer, eo = rng.endOffset; + if ($_9owqcy1qje5o2q0e.isText(ec)) { + return eo === ec.data.length ? Option.some($_5tcb2dyje5o2pwu.fromDom(ec)) : Option.none(); + } else { + return Option.from(ec.childNodes[eo - 1]).map($_5tcb2dyje5o2pwu.fromDom); + } + }; + var getFirstChildren = function (node) { + return $_a6mttx17je5o2pyd.firstChild(node).fold($_enfhkv6je5o2ply.constant([node]), function (child) { + return [node].concat(getFirstChildren(child)); + }); + }; + var getLastChildren$1 = function (node) { + return $_a6mttx17je5o2pyd.lastChild(node).fold($_enfhkv6je5o2ply.constant([node]), function (child) { + if ($_95wn8qzje5o2px0.name(child) === 'br') { + return $_a6mttx17je5o2pyd.prevSibling(child).map(function (sibling) { + return [node].concat(getLastChildren$1(sibling)); + }).getOr([]); + } else { + return [node].concat(getLastChildren$1(child)); + } + }); + }; + var hasAllContentsSelected = function (elm, rng) { + return $_c8weyc2eje5o2q85.liftN([ + getStartNode(rng), + getEndNode(rng) + ], function (startNode, endNode) { + var start = $_bwcteb4je5o2pl4.find(getFirstChildren(elm), $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, startNode)); + var end = $_bwcteb4je5o2pl4.find(getLastChildren$1(elm), $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, endNode)); + return start.isSome() && end.isSome(); + }).getOr(false); + }; + var moveEndPoint$1 = function (dom, rng, node, start) { + var root = node, walker = new TreeWalker(node, root); + var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + do { + if (node.nodeType === 3 && $_a5gegtjje5o2pum.trim(node.nodeValue).length !== 0) { + if (start) { + rng.setStart(node, 0); + } else { + rng.setEnd(node, node.nodeValue.length); + } + return; + } + if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) { + if (start) { + rng.setStartBefore(node); + } else { + if (node.nodeName === 'BR') { + rng.setEndBefore(node); + } else { + rng.setEndAfter(node); + } + } + return; + } + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) { + if (start) { + rng.setStart(node, 0); + } else { + rng.setEnd(node, 0); + } + return; + } + } while (node = start ? walker.next() : walker.prev()); + if (root.nodeName === 'BODY') { + if (start) { + rng.setStart(root, 0); + } else { + rng.setEnd(root, root.childNodes.length); + } + } + }; + + var tableModel = $_86drv18je5o2pyn.immutable('element', 'width', 'rows'); + var tableRow = $_86drv18je5o2pyn.immutable('element', 'cells'); + var cellPosition = $_86drv18je5o2pyn.immutable('x', 'y'); + var getSpan = function (td, key) { + var value = parseInt($_3uo9pl14je5o2pxq.get(td, key), 10); + return isNaN(value) ? 1 : value; + }; + var fillout = function (table, x, y, tr, td) { + var rowspan = getSpan(td, 'rowspan'); + var colspan = getSpan(td, 'colspan'); + var rows = table.rows(); + for (var y2 = y; y2 < y + rowspan; y2++) { + if (!rows[y2]) { + rows[y2] = tableRow($_cpi15k6cje5o2qzr.deep(tr), []); + } + for (var x2 = x; x2 < x + colspan; x2++) { + var cells = rows[y2].cells(); + cells[x2] = y2 === y && x2 === x ? td : $_cpi15k6cje5o2qzr.shallow(td); + } + } + }; + var cellExists = function (table, x, y) { + var rows = table.rows(); + var cells = rows[y] ? rows[y].cells() : []; + return !!cells[x]; + }; + var skipCellsX = function (table, x, y) { + while (cellExists(table, x, y)) { + x++; + } + return x; + }; + var getWidth = function (rows) { + return $_bwcteb4je5o2pl4.foldl(rows, function (acc, row) { + return row.cells().length > acc ? row.cells().length : acc; + }, 0); + }; + var findElementPos = function (table, element) { + var rows = table.rows(); + for (var y = 0; y < rows.length; y++) { + var cells = rows[y].cells(); + for (var x = 0; x < cells.length; x++) { + if ($_7oppmo1dje5o2pz1.eq(cells[x], element)) { + return Option.some(cellPosition(x, y)); + } + } + } + return Option.none(); + }; + var extractRows = function (table, sx, sy, ex, ey) { + var newRows = []; + var rows = table.rows(); + for (var y = sy; y <= ey; y++) { + var cells = rows[y].cells(); + var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1); + newRows.push(tableRow(rows[y].element(), slice)); + } + return newRows; + }; + var subTable = function (table, startPos, endPos) { + var sx = startPos.x(), sy = startPos.y(); + var ex = endPos.x(), ey = endPos.y(); + var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy); + return tableModel(table.element(), getWidth(newRows), newRows); + }; + var createDomTable = function (table, rows) { + var tableElement = $_cpi15k6cje5o2qzr.shallow(table.element()); + var tableBody = $_5tcb2dyje5o2pwu.fromTag('tbody'); + $_93ro7k2qje5o2qa4.append(tableBody, rows); + $_elbl2s2oje5o2q9z.append(tableElement, tableBody); + return tableElement; + }; + var modelRowsToDomRows = function (table) { + return $_bwcteb4je5o2pl4.map(table.rows(), function (row) { + var cells = $_bwcteb4je5o2pl4.map(row.cells(), function (cell) { + var td = $_cpi15k6cje5o2qzr.deep(cell); + $_3uo9pl14je5o2pxq.remove(td, 'colspan'); + $_3uo9pl14je5o2pxq.remove(td, 'rowspan'); + return td; + }); + var tr = $_cpi15k6cje5o2qzr.shallow(row.element()); + $_93ro7k2qje5o2qa4.append(tr, cells); + return tr; + }); + }; + var fromDom$1 = function (tableElm) { + var table = tableModel($_cpi15k6cje5o2qzr.shallow(tableElm), 0, []); + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(tableElm, 'tr'), function (tr, y) { + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(tr, 'td,th'), function (td, x) { + fillout(table, skipCellsX(table, x, y), y, tr, td); + }); + }); + return tableModel(table.element(), getWidth(table.rows()), table.rows()); + }; + var toDom = function (table) { + return createDomTable(table, modelRowsToDomRows(table)); + }; + var subsection = function (table, startElement, endElement) { + return findElementPos(table, startElement).bind(function (startPos) { + return findElementPos(table, endElement).map(function (endPos) { + return subTable(table, startPos, endPos); + }); + }); + }; + var $_drw27r6fje5o2r07 = { + fromDom: fromDom$1, + toDom: toDom, + subsection: subsection + }; + + var findParentListContainer = function (parents) { + return $_bwcteb4je5o2pl4.find(parents, function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'ul' || $_95wn8qzje5o2px0.name(elm) === 'ol'; + }); + }; + var getFullySelectedListWrappers = function (parents, rng) { + return $_bwcteb4je5o2pl4.find(parents, function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'li' && hasAllContentsSelected(elm, rng); + }).fold($_enfhkv6je5o2ply.constant([]), function (li) { + return findParentListContainer(parents).map(function (listCont) { + return [ + $_5tcb2dyje5o2pwu.fromTag('li'), + $_5tcb2dyje5o2pwu.fromTag($_95wn8qzje5o2px0.name(listCont)) + ]; + }).getOr([]); + }); + }; + var wrap$3 = function (innerElm, elms) { + var wrapped = $_bwcteb4je5o2pl4.foldl(elms, function (acc, elm) { + $_elbl2s2oje5o2q9z.append(elm, acc); + return elm; + }, innerElm); + return elms.length > 0 ? $_g8hjki6dje5o2qzt.fromElements([wrapped]) : wrapped; + }; + var directListWrappers = function (commonAnchorContainer) { + if (isListItem(commonAnchorContainer)) { + return $_a6mttx17je5o2pyd.parent(commonAnchorContainer).filter(isList).fold($_enfhkv6je5o2ply.constant([]), function (listElm) { + return [ + commonAnchorContainer, + listElm + ]; + }); + } else { + return isList(commonAnchorContainer) ? [commonAnchorContainer] : []; + } + }; + var getWrapElements = function (rootNode, rng) { + var commonAnchorContainer = $_5tcb2dyje5o2pwu.fromDom(rng.commonAncestorContainer); + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(commonAnchorContainer, rootNode); + var wrapElements = $_bwcteb4je5o2pl4.filter(parents, function (elm) { + return isInline(elm) || isHeading(elm); + }); + var listWrappers = getFullySelectedListWrappers(parents, rng); + var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer)); + return $_bwcteb4je5o2pl4.map(allWrappers, $_cpi15k6cje5o2qzr.shallow); + }; + var emptyFragment = function () { + return $_g8hjki6dje5o2qzt.fromElements([]); + }; + var getFragmentFromRange = function (rootNode, rng) { + return wrap$3($_5tcb2dyje5o2pwu.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng)); + }; + var getParentTable = function (rootElm, cell) { + return $_9fzewc37je5o2qck.ancestor(cell, 'table', $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, rootElm)); + }; + var getTableFragment = function (rootNode, selectedTableCells) { + return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) { + var firstCell = selectedTableCells[0]; + var lastCell = selectedTableCells[selectedTableCells.length - 1]; + var fullTableModel = $_drw27r6fje5o2r07.fromDom(tableElm); + return $_drw27r6fje5o2r07.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) { + return $_g8hjki6dje5o2qzt.fromElements([$_drw27r6fje5o2r07.toDom(sectionedTableModel)]); + }); + }).getOrThunk(emptyFragment); + }; + var getSelectionFragment = function (rootNode, ranges) { + return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]); + }; + var read$3 = function (rootNode, ranges) { + var selectedCells = $_9il6og3uje5o2qhd.getCellsFromElementOrRanges(ranges, rootNode); + return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges); + }; + var $_51h1rc6bje5o2qzh = { read: read$3 }; + + var getContent = function (editor, args) { + var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body'); + var sel = editor.selection.getSel(); + var fragment; + var ranges = $_fe3rbo69je5o2qzb.processRanges(editor, $_b8hi2e3vje5o2qhh.getRanges(sel)); + args = args || {}; + args.get = true; + args.format = args.format || 'html'; + args.selection = true; + args = editor.fire('BeforeGetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('GetContent', args); + return args.content; + } + if (args.format === 'text') { + return editor.selection.isCollapsed() ? '' : $_4md31c21je5o2q5f.trim(rng.text || (sel.toString ? sel.toString() : '')); + } + if (rng.cloneContents) { + fragment = args.contextual ? $_51h1rc6bje5o2qzh.read($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents(); + if (fragment) { + tmpElm.appendChild(fragment); + } + } else if (rng.item !== undefined || rng.htmlText !== undefined) { + tmpElm.innerHTML = '<br>' + (rng.item ? rng.item(0).outerHTML : rng.htmlText); + tmpElm.removeChild(tmpElm.firstChild); + } else { + tmpElm.innerHTML = rng.toString(); + } + args.getInner = true; + var content = editor.selection.serializer.serialize(tmpElm, args); + if (args.format === 'tree') { + return content; + } + args.content = editor.selection.isCollapsed() ? '' : content; + editor.fire('GetContent', args); + return args.content; + }; + var $_b349jo6aje5o2qzd = { getContent: getContent }; + + var setContent = function (editor, content, args) { + var rng = editor.selection.getRng(), caretNode; + var doc = editor.getDoc(); + var frag, temp; + args = args || { format: 'html' }; + args.set = true; + args.selection = true; + args.content = content; + if (!args.no_events) { + args = editor.fire('BeforeSetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('SetContent', args); + return; + } + } + content = args.content; + if (rng.insertNode) { + content += '<span id="__caret">_</span>'; + if (rng.startContainer === doc && rng.endContainer === doc) { + doc.body.innerHTML = content; + } else { + rng.deleteContents(); + if (doc.body.childNodes.length === 0) { + doc.body.innerHTML = content; + } else { + if (rng.createContextualFragment) { + rng.insertNode(rng.createContextualFragment(content)); + } else { + frag = doc.createDocumentFragment(); + temp = doc.createElement('div'); + frag.appendChild(temp); + temp.outerHTML = content; + rng.insertNode(frag); + } + } + } + caretNode = editor.dom.get('__caret'); + rng = doc.createRange(); + rng.setStartBefore(caretNode); + rng.setEndBefore(caretNode); + editor.selection.setRng(rng); + editor.dom.remove('__caret'); + try { + editor.selection.setRng(rng); + } catch (ex) { + } + } else { + if (rng.item) { + doc.execCommand('Delete', false, null); + rng = editor.getRng(); + } + if (/^\s+/.test(content)) { + rng.pasteHTML('<span id="__mce_tmp">_</span>' + content); + editor.dom.remove('__mce_tmp'); + } else { + rng.pasteHTML(content); + } + } + if (!args.no_events) { + editor.fire('SetContent', args); + } + }; + var $_e4xow86gje5o2r0i = { setContent: setContent }; + + var getEndpointElement = function (root, rng, start, real, resolve) { + var container = start ? rng.startContainer : rng.endContainer; + var offset = start ? rng.startOffset : rng.endOffset; + return Option.from(container).map($_5tcb2dyje5o2pwu.fromDom).map(function (elm) { + return !real || !rng.collapsed ? $_a6mttx17je5o2pyd.child(elm, resolve(elm, offset)).getOr(elm) : elm; + }).bind(function (elm) { + return $_95wn8qzje5o2px0.isElement(elm) ? Option.some(elm) : $_a6mttx17je5o2pyd.parent(elm); + }).map(function (elm) { + return elm.dom(); + }).getOr(root); + }; + var getStart$2 = function (root, rng, real) { + return getEndpointElement(root, rng, true, real, function (elm, offset) { + return Math.min($_a6mttx17je5o2pyd.childNodesCount(elm), offset); + }); + }; + var getEnd = function (root, rng, real) { + return getEndpointElement(root, rng, false, real, function (elm, offset) { + return offset > 0 ? offset - 1 : offset; + }); + }; + var skipEmptyTextNodes = function (node, forwards) { + var orig = node; + while (node && $_9owqcy1qje5o2q0e.isText(node) && node.length === 0) { + node = forwards ? node.nextSibling : node.previousSibling; + } + return node || orig; + }; + var getNode$1 = function (root, rng) { + var elm, startContainer, endContainer, startOffset, endOffset; + if (!rng) { + return root; + } + startContainer = rng.startContainer; + endContainer = rng.endContainer; + startOffset = rng.startOffset; + endOffset = rng.endOffset; + elm = rng.commonAncestorContainer; + if (!rng.collapsed) { + if (startContainer === endContainer) { + if (endOffset - startOffset < 2) { + if (startContainer.hasChildNodes()) { + elm = startContainer.childNodes[startOffset]; + } + } + } + if (startContainer.nodeType === 3 && endContainer.nodeType === 3) { + if (startContainer.length === startOffset) { + startContainer = skipEmptyTextNodes(startContainer.nextSibling, true); + } else { + startContainer = startContainer.parentNode; + } + if (endOffset === 0) { + endContainer = skipEmptyTextNodes(endContainer.previousSibling, false); + } else { + endContainer = endContainer.parentNode; + } + if (startContainer && startContainer === endContainer) { + return startContainer; + } + } + } + if (elm && elm.nodeType === 3) { + return elm.parentNode; + } + return elm; + }; + var getSelectedBlocks = function (dom, rng, startElm, endElm) { + var node, root; + var selectedBlocks = []; + root = dom.getRoot(); + startElm = dom.getParent(startElm || getStart$2(root, rng, false), dom.isBlock); + endElm = dom.getParent(endElm || getEnd(root, rng, false), dom.isBlock); + if (startElm && startElm !== root) { + selectedBlocks.push(startElm); + } + if (startElm && endElm && startElm !== endElm) { + node = startElm; + var walker = new TreeWalker(startElm, root); + while ((node = walker.next()) && node !== endElm) { + if (dom.isBlock(node)) { + selectedBlocks.push(node); + } + } + } + if (endElm && startElm !== endElm && endElm !== root) { + selectedBlocks.push(endElm); + } + return selectedBlocks; + }; + var select$1 = function (dom, node, content) { + return Option.from(node).map(function (node) { + var idx = dom.nodeIndex(node); + var rng = dom.createRng(); + rng.setStart(node.parentNode, idx); + rng.setEnd(node.parentNode, idx + 1); + if (content) { + moveEndPoint$1(dom, rng, node, true); + moveEndPoint$1(dom, rng, node, false); + } + return rng; + }); + }; + + var each$20 = $_a5gegtjje5o2pum.each; + var isNativeIeSelection = function (rng) { + return !!rng.select; + }; + var isAttachedToDom = function (node) { + return !!(node && node.ownerDocument) && $_7oppmo1dje5o2pz1.contains($_5tcb2dyje5o2pwu.fromDom(node.ownerDocument), $_5tcb2dyje5o2pwu.fromDom(node)); + }; + var isValidRange = function (rng) { + if (!rng) { + return false; + } else if (isNativeIeSelection(rng)) { + return true; + } else { + return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer); + } + }; + var Selection$1 = function (dom, win, serializer, editor) { + var bookmarkManager, controlSelection; + var selectedRange, explicitRange, selectorChangedData; + var setCursorLocation = function (node, offset) { + var rng = dom.createRng(); + if (!node) { + moveEndPoint$1(dom, rng, editor.getBody(), true); + setRng(rng); + } else { + rng.setStart(node, offset); + rng.setEnd(node, offset); + setRng(rng); + collapse(false); + } + }; + var getContent = function (args) { + return $_b349jo6aje5o2qzd.getContent(editor, args); + }; + var setContent = function (content, args) { + return $_e4xow86gje5o2r0i.setContent(editor, content, args); + }; + var getStart = function (real) { + return getStart$2(editor.getBody(), getRng(), real); + }; + var getEnd$$1 = function (real) { + return getEnd(editor.getBody(), getRng(), real); + }; + var getBookmark = function (type, normalized) { + return bookmarkManager.getBookmark(type, normalized); + }; + var moveToBookmark = function (bookmark) { + return bookmarkManager.moveToBookmark(bookmark); + }; + var select = function (node, content) { + select$1(dom, node, content).each(setRng); + return node; + }; + var isCollapsed = function () { + var rng = getRng(), sel = getSel(); + if (!rng || rng.item) { + return false; + } + if (rng.compareEndPoints) { + return rng.compareEndPoints('StartToEnd', rng) === 0; + } + return !sel || rng.collapsed; + }; + var collapse = function (toStart) { + var rng = getRng(); + rng.collapse(!!toStart); + setRng(rng); + }; + var getSel = function () { + return win.getSelection ? win.getSelection() : win.document.selection; + }; + var getRng = function () { + var selection, rng, elm, doc; + var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) { + try { + return sourceRange.compareBoundaryPoints(how, destinationRange); + } catch (ex) { + return -1; + } + }; + if (!win) { + return null; + } + doc = win.document; + if (typeof doc === 'undefined' || doc === null) { + return null; + } + if (editor.bookmark !== undefined && $_llx5i48je5o2qna.hasFocus(editor) === false) { + var bookmark = $_fnd7h33zje5o2qly.getRng(editor); + if (bookmark.isSome()) { + return bookmark.map(function (r) { + return $_fe3rbo69je5o2qzb.processRanges(editor, [r])[0]; + }).getOr(doc.createRange()); + } + } + try { + if (selection = getSel()) { + if (selection.rangeCount > 0) { + rng = selection.getRangeAt(0); + } else { + rng = selection.createRange ? selection.createRange() : doc.createRange(); + } + } + } catch (ex) { + } + rng = $_fe3rbo69je5o2qzb.processRanges(editor, [rng])[0]; + if (!rng) { + rng = doc.createRange ? doc.createRange() : doc.body.createTextRange(); + } + if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) { + elm = dom.getRoot(); + rng.setStart(elm, 0); + rng.setEnd(elm, 0); + } + if (selectedRange && explicitRange) { + if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) { + rng = explicitRange; + } else { + selectedRange = null; + explicitRange = null; + } + } + return rng; + }; + var setRng = function (rng, forward) { + var sel, node, evt; + if (!isValidRange(rng)) { + return; + } + var ieRange = isNativeIeSelection(rng) ? rng : null; + if (ieRange) { + explicitRange = null; + try { + ieRange.select(); + } catch (ex) { + } + return; + } + sel = getSel(); + evt = editor.fire('SetSelectionRange', { + range: rng, + forward: forward + }); + rng = evt.range; + if (sel) { + explicitRange = rng; + try { + sel.removeAllRanges(); + sel.addRange(rng); + } catch (ex) { + } + if (forward === false && sel.extend) { + sel.collapse(rng.endContainer, rng.endOffset); + sel.extend(rng.startContainer, rng.startOffset); + } + selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null; + } + if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !$_9bd8pn9je5o2pp2.ie) { + if (rng.endOffset - rng.startOffset < 2) { + if (rng.startContainer.hasChildNodes()) { + node = rng.startContainer.childNodes[rng.startOffset]; + if (node && node.tagName === 'IMG') { + sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset); + if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) { + sel.setBaseAndExtent(node, 0, node, 1); + } + } + } + } + } + editor.fire('AfterSetSelectionRange', { + range: rng, + forward: forward + }); + }; + var setNode = function (elm) { + setContent(dom.getOuterHTML(elm)); + return elm; + }; + var getNode = function () { + return getNode$1(editor.getBody(), getRng()); + }; + var getSelectedBlocks$$1 = function (startElm, endElm) { + return getSelectedBlocks(dom, getRng(), startElm, endElm); + }; + var isForward = function () { + var sel = getSel(); + var anchorRange, focusRange; + if (!sel || !sel.anchorNode || !sel.focusNode) { + return true; + } + anchorRange = dom.createRng(); + anchorRange.setStart(sel.anchorNode, sel.anchorOffset); + anchorRange.collapse(true); + focusRange = dom.createRng(); + focusRange.setStart(sel.focusNode, sel.focusOffset); + focusRange.collapse(true); + return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0; + }; + var normalize = function () { + var rng = getRng(); + if (!$_b8hi2e3vje5o2qhh.hasMultipleRanges(getSel())) { + var normRng = $_1t8l6x3xje5o2qlk.normalize(dom, rng); + normRng.each(function (normRng) { + setRng(normRng, isForward()); + }); + return normRng.getOr(rng); + } + return rng; + }; + var selectorChanged = function (selector, callback) { + var currentSelectors; + if (!selectorChangedData) { + selectorChangedData = {}; + currentSelectors = {}; + editor.on('NodeChange', function (e) { + var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {}; + each$20(selectorChangedData, function (callbacks, selector) { + each$20(parents, function (node) { + if (dom.is(node, selector)) { + if (!currentSelectors[selector]) { + each$20(callbacks, function (callback) { + callback(true, { + node: node, + selector: selector, + parents: parents + }); + }); + currentSelectors[selector] = callbacks; + } + matchedSelectors[selector] = callbacks; + return false; + } + }); + }); + each$20(currentSelectors, function (callbacks, selector) { + if (!matchedSelectors[selector]) { + delete currentSelectors[selector]; + each$20(callbacks, function (callback) { + callback(false, { + node: node, + selector: selector, + parents: parents + }); + }); + } + }); + }); + } + if (!selectorChangedData[selector]) { + selectorChangedData[selector] = []; + } + selectorChangedData[selector].push(callback); + return exports; + }; + var getScrollContainer = function () { + var scrollContainer, node = dom.getRoot(); + while (node && node.nodeName !== 'BODY') { + if (node.scrollHeight > node.clientHeight) { + scrollContainer = node; + break; + } + node = node.parentNode; + } + return scrollContainer; + }; + var scrollIntoView = function (elm, alignToTop) { + return $_82tr6v67je5o2qyr.scrollIntoView(editor, elm, alignToTop); + }; + var placeCaretAt = function (clientX, clientY) { + return setRng($_drs2u868je5o2qyu.fromPoint(clientX, clientY, editor.getDoc())); + }; + var getBoundingClientRect = function () { + var rng = getRng(); + return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect(); + }; + var destroy = function () { + win = selectedRange = explicitRange = null; + controlSelection.destroy(); + }; + var exports = { + bookmarkManager: null, + controlSelection: null, + dom: dom, + win: win, + serializer: serializer, + editor: editor, + collapse: collapse, + setCursorLocation: setCursorLocation, + getContent: getContent, + setContent: setContent, + getBookmark: getBookmark, + moveToBookmark: moveToBookmark, + select: select, + isCollapsed: isCollapsed, + isForward: isForward, + setNode: setNode, + getNode: getNode, + getSel: getSel, + setRng: setRng, + getRng: getRng, + getStart: getStart, + getEnd: getEnd$$1, + getSelectedBlocks: getSelectedBlocks$$1, + normalize: normalize, + selectorChanged: selectorChanged, + getScrollContainer: getScrollContainer, + scrollIntoView: scrollIntoView, + placeCaretAt: placeCaretAt, + getBoundingClientRect: getBoundingClientRect, + destroy: destroy + }; + bookmarkManager = BookmarkManager$1(exports); + controlSelection = ControlSelection(exports, editor); + exports.bookmarkManager = bookmarkManager; + exports.controlSelection = controlSelection; + return exports; + }; + + var isContentEditableFalse$11 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var getSelectedNode$1 = getSelectedNode; + var isAfterContentEditableFalse$2 = isAfterContentEditableFalse; + var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse; + var getVisualCaretPosition = function (walkFn, caretPosition) { + while (caretPosition = walkFn(caretPosition)) { + if (caretPosition.isVisible()) { + return caretPosition; + } + } + return caretPosition; + }; + var isMoveInsideSameBlock = function (from, to) { + var inSameBlock = isInSameBlock(from, to); + if (!inSameBlock && $_9owqcy1qje5o2q0e.isBr(from.getNode())) { + return true; + } + return inSameBlock; + }; + var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) { + var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock; + var forwards = direction === HDirection.Forwards; + var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2; + if (!range.collapsed) { + node = getSelectedNode$1(range); + if (isContentEditableFalse$11(node)) { + return showCaret(direction, editor, node, direction === HDirection.Backwards, true); + } + } + rangeIsInContainerBlock = isRangeInCaretContainerBlock(range); + caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); + if (isBeforeContentEditableFalseFn(caretPosition)) { + return selectNode(editor, caretPosition.getNode(!forwards)); + } + caretPosition = getNextPosFn(caretPosition); + if (!caretPosition) { + if (rangeIsInContainerBlock) { + return range; + } + return null; + } + if (isBeforeContentEditableFalseFn(caretPosition)) { + return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true); + } + peekCaretPosition = getNextPosFn(caretPosition); + if (isBeforeContentEditableFalseFn(peekCaretPosition)) { + if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) { + return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true); + } + } + if (rangeIsInContainerBlock) { + return renderRangeCaret(editor, caretPosition.toRange(), true); + } + return null; + }; + var moveToCeFalseVertically = function (direction, editor, walkerFn, range) { + var caretPosition, linePositions, nextLinePositions; + var closestNextLineRect, caretClientRect, clientX; + var dist1, dist2, contentEditableFalseNode; + contentEditableFalseNode = getSelectedNode$1(range); + caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); + linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition); + nextLinePositions = $_c2vc3pkje5o2puw.filter(linePositions, isLine(1)); + caretClientRect = $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) { + contentEditableFalseNode = caretPosition.getNode(); + } + if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) { + contentEditableFalseNode = caretPosition.getNode(true); + } + if (!caretClientRect) { + return null; + } + clientX = caretClientRect.left; + closestNextLineRect = findClosestClientRect(nextLinePositions, clientX); + if (closestNextLineRect) { + if (isContentEditableFalse$11(closestNextLineRect.node)) { + dist1 = Math.abs(clientX - closestNextLineRect.left); + dist2 = Math.abs(clientX - closestNextLineRect.right); + return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true); + } + } + if (contentEditableFalseNode) { + var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode); + closestNextLineRect = findClosestClientRect($_c2vc3pkje5o2puw.filter(caretPositions, isLine(1)), clientX); + if (closestNextLineRect) { + return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); + } + closestNextLineRect = $_c2vc3pkje5o2puw.last($_c2vc3pkje5o2puw.filter(caretPositions, isLine(0))); + if (closestNextLineRect) { + return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); + } + } + }; + var createTextBlock = function (editor) { + var textBlock = editor.dom.create(editor.settings.forced_root_block); + if (!$_9bd8pn9je5o2pp2.ie || $_9bd8pn9je5o2pp2.ie >= 11) { + textBlock.innerHTML = '<br data-mce-bogus="1">'; + } + return textBlock; + }; + var exitPreBlock = function (editor, direction, range) { + var pre, caretPos, newBlock; + var caretWalker = CaretWalker(editor.getBody()); + var getNextVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.next); + var getPrevVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.prev); + if (range.collapsed && editor.settings.forced_root_block) { + pre = editor.dom.getParent(range.startContainer, 'PRE'); + if (!pre) { + return; + } + if (direction === 1) { + caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); + } else { + caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); + } + if (!caretPos) { + newBlock = createTextBlock(editor); + if (direction === 1) { + editor.$(pre).after(newBlock); + } else { + editor.$(pre).before(newBlock); + } + editor.selection.select(newBlock, true); + editor.selection.collapse(); + } + } + }; + var getHorizontalRange = function (editor, forward) { + var caretWalker = CaretWalker(editor.getBody()); + var getNextVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.next); + var getPrevVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.prev); + var newRange; + var direction = forward ? HDirection.Forwards : HDirection.Backwards; + var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition; + var range = editor.selection.getRng(); + newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range); + if (newRange) { + return newRange; + } + newRange = exitPreBlock(editor, direction, range); + if (newRange) { + return newRange; + } + return null; + }; + var getVerticalRange = function (editor, down) { + var newRange; + var direction = down ? 1 : -1; + var walkerFn = down ? downUntil : upUntil; + var range = editor.selection.getRng(); + newRange = moveToCeFalseVertically(direction, editor, walkerFn, range); + if (newRange) { + return newRange; + } + newRange = exitPreBlock(editor, direction, range); + if (newRange) { + return newRange; + } + return null; + }; + var moveH$1 = function (editor, forward) { + return function () { + var newRng = getHorizontalRange(editor, forward); + if (newRng) { + editor.selection.setRng(newRng); + return true; + } else { + return false; + } + }; + }; + var moveV$1 = function (editor, down) { + return function () { + var newRng = getVerticalRange(editor, down); + if (newRng) { + editor.selection.setRng(newRng); + return true; + } else { + return false; + } + }; + }; + + var defaultPatterns = function (patterns) { + return $_bwcteb4je5o2pl4.map(patterns, function (pattern) { + return $_atjucy5uje5o2qw2.merge({ + shiftKey: false, + altKey: false, + ctrlKey: false, + metaKey: false, + keyCode: 0, + action: $_enfhkv6je5o2ply.noop + }, pattern); + }); + }; + var matchesEvent = function (pattern, evt) { + return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey; + }; + var match$1 = function (patterns, evt) { + return $_bwcteb4je5o2pl4.bind(defaultPatterns(patterns), function (pattern) { + return matchesEvent(pattern, evt) ? [pattern] : []; + }); + }; + var action = function (f) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return f.apply(null, args); + }; + }; + var execute = function (patterns, evt) { + return $_bwcteb4je5o2pl4.find(match$1(patterns, evt), function (pattern) { + return pattern.action(); + }); + }; + var $_fc81iw6lje5o2r1d = { + match: match$1, + action: action, + execute: execute + }; + + var executeKeydownOverride = function (editor, caret, evt) { + var os = $_2hq237mje5o2pvu.detect().os; + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: moveH$1(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: moveH$1(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.UP, + action: moveV$1(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DOWN, + action: moveV$1(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: moveH(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: moveH(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.UP, + action: moveV(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DOWN, + action: moveV(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: $_2dnted3pje5o2qgc.move(editor, caret, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: $_2dnted3pje5o2qgc.move(editor, caret, false) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + ctrlKey: !os.isOSX(), + altKey: os.isOSX(), + action: $_2dnted3pje5o2qgc.moveNextWord(editor, caret) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + ctrlKey: !os.isOSX(), + altKey: os.isOSX(), + action: $_2dnted3pje5o2qgc.movePrevWord(editor, caret) + } + ], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var setup$6 = function (editor, caret) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride(editor, caret, evt); + } + }); + }; + var $_a5oax76jje5o2r0t = { setup: setup$6 }; + + var getParentInlines = function (rootElm, startElm) { + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(startElm, rootElm); + return $_bwcteb4je5o2pl4.findIndex(parents, isBlock).fold($_enfhkv6je5o2ply.constant(parents), function (index) { + return parents.slice(0, index); + }); + }; + var hasOnlyOneChild$1 = function (elm) { + return $_a6mttx17je5o2pyd.children(elm).length === 1; + }; + var deleteLastPosition = function (forward, editor, target, parentInlines) { + var isFormatElement = $_enfhkv6je5o2ply.curry($_4066yu3jje5o2qev.isFormatElement, editor); + var formatNodes = $_bwcteb4je5o2pl4.map($_bwcteb4je5o2pl4.filter(parentInlines, isFormatElement), function (elm) { + return elm.dom(); + }); + if (formatNodes.length === 0) { + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, target); + } else { + var pos = $_4066yu3jje5o2qev.replaceWithCaretFormat(target.dom(), formatNodes); + editor.selection.setRng(pos.toRange()); + } + }; + var deleteCaret$1 = function (editor, forward) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var startElm = $_5tcb2dyje5o2pwu.fromDom(editor.selection.getStart()); + var parentInlines = $_bwcteb4je5o2pl4.filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1); + return $_bwcteb4je5o2pl4.last(parentInlines).map(function (target) { + var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + if ($_7twey62zje5o2qay.willDeleteLastPositionInElement(forward, fromPos, target.dom())) { + deleteLastPosition(forward, editor, target, parentInlines); + return true; + } else { + return false; + } + }).getOr(false); + }; + var backspaceDelete$5 = function (editor, forward) { + return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false; + }; + var $_f5ktyq6nje5o2r1k = { backspaceDelete: backspaceDelete$5 }; + + var executeKeydownOverride$1 = function (editor, caret, evt) { + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_bzwx3b3fje5o2qe7.backspaceDelete, editor, caret, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_bzwx3b3fje5o2qe7.backspaceDelete, editor, caret, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_a476lo3aje5o2qd0.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_a476lo3aje5o2qd0.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_3qfe0j2xje5o2qao.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_3qfe0j2xje5o2qao.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_8pfx7e3sje5o2qgp.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_8pfx7e3sje5o2qgp.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_f5ktyq6nje5o2r1k.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_f5ktyq6nje5o2r1k.backspaceDelete, editor, true) + } + ], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var executeKeyupOverride = function (editor, evt) { + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.paddEmptyElement, editor) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.paddEmptyElement, editor) + } + ], evt); + }; + var setup$7 = function (editor, caret) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride$1(editor, caret, evt); + } + }); + editor.on('keyup', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeyupOverride(editor, evt); + } + }); + }; + var $_6wiawx6mje5o2r1h = { setup: setup$7 }; + + var getBodySetting = function (editor, name, defaultValue) { + var value = editor.getParam(name, defaultValue); + if (value.indexOf('=') !== -1) { + var bodyObj = editor.getParam(name, '', 'hash'); + return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue; + } else { + return value; + } + }; + var getIframeAttrs = function (editor) { + return editor.getParam('iframe_attrs', {}); + }; + var getDocType = function (editor) { + return editor.getParam('doctype', '<!DOCTYPE html>'); + }; + var getDocumentBaseUrl = function (editor) { + return editor.getParam('document_base_url', ''); + }; + var getBodyId = function (editor) { + return getBodySetting(editor, 'body_id', 'tinymce'); + }; + var getBodyClass = function (editor) { + return getBodySetting(editor, 'body_class', ''); + }; + var getContentSecurityPolicy = function (editor) { + return editor.getParam('content_security_policy', ''); + }; + var shouldPutBrInPre = function (editor) { + return editor.getParam('br_in_pre', true); + }; + var getForcedRootBlock = function (editor) { + if (editor.getParam('force_p_newlines', false)) { + return 'p'; + } + var block = editor.getParam('forced_root_block', 'p'); + return block === false ? '' : block; + }; + var getForcedRootBlockAttrs = function (editor) { + return editor.getParam('forced_root_block_attrs', {}); + }; + var getBrNewLineSelector = function (editor) { + return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption'); + }; + var getNoNewLineSelector = function (editor) { + return editor.getParam('no_newline_selector', ''); + }; + var shouldKeepStyles = function (editor) { + return editor.getParam('keep_styles', true); + }; + var shouldEndContainerOnEmtpyBlock = function (editor) { + return editor.getParam('end_container_on_empty_block', false); + }; + var $_ahj8826rje5o2r2f = { + getIframeAttrs: getIframeAttrs, + getDocType: getDocType, + getDocumentBaseUrl: getDocumentBaseUrl, + getBodyId: getBodyId, + getBodyClass: getBodyClass, + getContentSecurityPolicy: getContentSecurityPolicy, + shouldPutBrInPre: shouldPutBrInPre, + getForcedRootBlock: getForcedRootBlock, + getForcedRootBlockAttrs: getForcedRootBlockAttrs, + getBrNewLineSelector: getBrNewLineSelector, + getNoNewLineSelector: getNoNewLineSelector, + shouldKeepStyles: shouldKeepStyles, + shouldEndContainerOnEmtpyBlock: shouldEndContainerOnEmtpyBlock + }; + + var firstNonWhiteSpaceNodeSibling = function (node) { + while (node) { + if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\r\n\s]/.test(node.data)) { + return node; + } + node = node.nextSibling; + } + }; + var moveToCaretPosition = function (editor, root) { + var walker, node, rng, lastNode = root, tempElm; + var dom = editor.dom; + var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements(); + if (!root) { + return; + } + if (/^(LI|DT|DD)$/.test(root.nodeName)) { + var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild); + if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) { + root.insertBefore(dom.doc.createTextNode('\xA0'), root.firstChild); + } + } + rng = dom.createRng(); + root.normalize(); + if (root.hasChildNodes()) { + walker = new TreeWalker(root, root); + while (node = walker.current()) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + rng.setStart(node, 0); + rng.setEnd(node, 0); + break; + } + if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) { + rng.setStartBefore(node); + rng.setEndBefore(node); + break; + } + lastNode = node; + node = walker.next(); + } + if (!node) { + rng.setStart(lastNode, 0); + rng.setEnd(lastNode, 0); + } + } else { + if ($_9owqcy1qje5o2q0e.isBr(root)) { + if (root.nextSibling && dom.isBlock(root.nextSibling)) { + rng.setStartBefore(root); + rng.setEndBefore(root); + } else { + rng.setStartAfter(root); + rng.setEndAfter(root); + } + } else { + rng.setStart(root, 0); + rng.setEnd(root, 0); + } + } + editor.selection.setRng(rng); + dom.remove(tempElm); + editor.selection.scrollIntoView(root); + }; + var getEditableRoot = function (dom, node) { + var root = dom.getRoot(); + var parent, editableRoot; + parent = node; + while (parent !== root && dom.getContentEditable(parent) !== 'false') { + if (dom.getContentEditable(parent) === 'true') { + editableRoot = parent; + } + parent = parent.parentNode; + } + return parent !== root ? editableRoot : root; + }; + var getParentBlock$2 = function (editor) { + return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock)); + }; + var getParentBlockName = function (editor) { + return getParentBlock$2(editor).fold($_enfhkv6je5o2ply.constant(''), function (parentBlock) { + return parentBlock.nodeName.toUpperCase(); + }); + }; + var isListItemParentBlock = function (editor) { + return getParentBlock$2(editor).filter(function (elm) { + return isListItem($_5tcb2dyje5o2pwu.fromDom(elm)); + }).isSome(); + }; + var $_f0yz616tje5o2r2l = { + moveToCaretPosition: moveToCaretPosition, + getEditableRoot: getEditableRoot, + getParentBlock: getParentBlock$2, + getParentBlockName: getParentBlockName, + isListItemParentBlock: isListItemParentBlock + }; + + var hasFirstChild = function (elm, name) { + return elm.firstChild && elm.firstChild.nodeName === name; + }; + var hasParent$1 = function (elm, parentName) { + return elm && elm.parentNode && elm.parentNode.nodeName === parentName; + }; + var isListBlock = function (elm) { + return elm && /^(OL|UL|LI)$/.test(elm.nodeName); + }; + var isNestedList = function (elm) { + return isListBlock(elm) && isListBlock(elm.parentNode); + }; + var getContainerBlock = function (containerBlock) { + var containerBlockParent = containerBlock.parentNode; + if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) { + return containerBlockParent; + } + return containerBlock; + }; + var isFirstOrLastLi = function (containerBlock, parentBlock, first) { + var node = containerBlock[first ? 'firstChild' : 'lastChild']; + while (node) { + if ($_9owqcy1qje5o2q0e.isElement(node)) { + break; + } + node = node[first ? 'nextSibling' : 'previousSibling']; + } + return node === parentBlock; + }; + var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) { + var dom = editor.dom; + var rng = editor.selection.getRng(); + if (containerBlock === editor.getBody()) { + return; + } + if (isNestedList(containerBlock)) { + newBlockName = 'LI'; + } + var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR'); + if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) { + if (hasParent$1(containerBlock, 'LI')) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + } else { + dom.replace(newBlock, containerBlock); + } + } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) { + if (hasParent$1(containerBlock, 'LI')) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + newBlock.appendChild(dom.doc.createTextNode(' ')); + newBlock.appendChild(containerBlock); + } else { + containerBlock.parentNode.insertBefore(newBlock, containerBlock); + } + } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + } else { + containerBlock = getContainerBlock(containerBlock); + var tmpRng = rng.cloneRange(); + tmpRng.setStartAfter(parentBlock); + tmpRng.setEndAfter(containerBlock); + var fragment = tmpRng.extractContents(); + if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) { + newBlock = fragment.firstChild; + dom.insertAfter(fragment, containerBlock); + } else { + dom.insertAfter(fragment, containerBlock); + dom.insertAfter(newBlock, containerBlock); + } + } + dom.remove(parentBlock); + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + }; + var $_52slpd6sje5o2r2i = { insert: insert$1 }; + + var isEmptyAnchor = function (elm) { + return elm && elm.nodeName === 'A' && $_a5gegtjje5o2pum.trim($_4md31c21je5o2q5f.trim(elm.innerText || elm.textContent)).length === 0; + }; + var isTableCell$5 = function (node) { + return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); + }; + var emptyBlock = function (elm) { + elm.innerHTML = '<br data-mce-bogus="1">'; + }; + var containerAndSiblingName = function (container, nodeName) { + return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName; + }; + var canSplitBlock = function (dom, node) { + return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true'; + }; + var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) { + var node = block; + var firstChilds = []; + var i; + if (!node) { + return; + } + while (node = node.firstChild) { + if (dom.isBlock(node)) { + return; + } + if ($_9owqcy1qje5o2q0e.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) { + firstChilds.push(node); + } + } + i = firstChilds.length; + while (i--) { + node = firstChilds[i]; + if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') { + dom.remove(node); + } else { + if (isEmptyAnchor(node)) { + dom.remove(node); + } + } + } + }; + var normalizeZwspOffset = function (start, container, offset) { + if ($_9owqcy1qje5o2q0e.isText(container) === false) { + return offset; + } else if (start) { + return offset === 1 && container.data.charAt(offset - 1) === $_4md31c21je5o2q5f.ZWSP ? 0 : offset; + } else { + return offset === container.data.length - 1 && container.data.charAt(offset) === $_4md31c21je5o2q5f.ZWSP ? container.data.length : offset; + } + }; + var includeZwspInRange = function (rng) { + var newRng = rng.cloneRange(); + newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset)); + newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset)); + return newRng; + }; + var trimLeadingLineBreaks = function (node) { + do { + if ($_9owqcy1qje5o2q0e.isText(node)) { + node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, ''); + } + node = node.firstChild; + } while (node); + }; + var getEditableRoot$1 = function (dom, node) { + var root = dom.getRoot(); + var parent, editableRoot; + parent = node; + while (parent !== root && dom.getContentEditable(parent) !== 'false') { + if (dom.getContentEditable(parent) === 'true') { + editableRoot = parent; + } + parent = parent.parentNode; + } + return parent !== root ? editableRoot : root; + }; + var setForcedBlockAttrs = function (editor, node) { + var forcedRootBlockName = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) { + editor.dom.setAttribs(node, $_ahj8826rje5o2r2f.getForcedRootBlockAttrs(editor)); + } + }; + var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) { + var newBlock, parentBlock, startNode, node, next, rootBlockName; + var blockName = newBlockName || 'P'; + var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container); + parentBlock = dom.getParent(container, dom.isBlock); + if (!parentBlock || !canSplitBlock(dom, parentBlock)) { + parentBlock = parentBlock || editableRoot; + if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) { + rootBlockName = parentBlock.nodeName.toLowerCase(); + } else { + rootBlockName = parentBlock.parentNode.nodeName.toLowerCase(); + } + if (!parentBlock.hasChildNodes()) { + newBlock = dom.create(blockName); + setForcedBlockAttrs(editor, newBlock); + parentBlock.appendChild(newBlock); + rng.setStart(newBlock, 0); + rng.setEnd(newBlock, 0); + return newBlock; + } + node = container; + while (node.parentNode !== parentBlock) { + node = node.parentNode; + } + while (node && !dom.isBlock(node)) { + startNode = node; + node = node.previousSibling; + } + if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) { + newBlock = dom.create(blockName); + setForcedBlockAttrs(editor, newBlock); + startNode.parentNode.insertBefore(newBlock, startNode); + node = startNode; + while (node && !dom.isBlock(node)) { + next = node.nextSibling; + newBlock.appendChild(node); + node = next; + } + rng.setStart(container, offset); + rng.setEnd(container, offset); + } + } + return container; + }; + var addBrToBlockIfNeeded = function (dom, block) { + var lastChild; + block.normalize(); + lastChild = block.lastChild; + if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) { + dom.add(block, 'br'); + } + }; + var insert$2 = function (editor, evt) { + var tmpRng, editableRoot, container, offset, parentBlock, shiftKey; + var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer; + var dom = editor.dom; + var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(); + var rng = editor.selection.getRng(); + var createNewBlock = function (name) { + var node = container, block, clonedNode, caretNode; + var textInlineElements = schema.getTextInlineElements(); + if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') { + block = dom.create(name || newBlockName); + setForcedBlockAttrs(editor, block); + } else { + block = parentBlock.cloneNode(false); + } + caretNode = block; + if ($_ahj8826rje5o2r2f.shouldKeepStyles(editor) === false) { + dom.setAttrib(block, 'style', null); + dom.setAttrib(block, 'class', null); + } else { + do { + if (textInlineElements[node.nodeName]) { + if ($_4066yu3jje5o2qev.isCaretNode(node)) { + continue; + } + clonedNode = node.cloneNode(false); + dom.setAttrib(clonedNode, 'id', ''); + if (block.hasChildNodes()) { + clonedNode.appendChild(block.firstChild); + block.appendChild(clonedNode); + } else { + caretNode = clonedNode; + block.appendChild(clonedNode); + } + } + } while ((node = node.parentNode) && node !== editableRoot); + } + emptyBlock(caretNode); + return block; + }; + var isCaretAtStartOrEndOfBlock = function (start) { + var walker, node, name, normalizedOffset; + normalizedOffset = normalizeZwspOffset(start, container, offset); + if ($_9owqcy1qje5o2q0e.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) { + return false; + } + if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) { + return true; + } + if (start && $_9owqcy1qje5o2q0e.isElement(container) && container === parentBlock.firstChild) { + return true; + } + if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) { + return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start; + } + walker = new TreeWalker(container, parentBlock); + if ($_9owqcy1qje5o2q0e.isText(container)) { + if (start && normalizedOffset === 0) { + walker.prev(); + } else if (!start && normalizedOffset === container.nodeValue.length) { + walker.next(); + } + } + while (node = walker.current()) { + if ($_9owqcy1qje5o2q0e.isElement(node)) { + if (!node.getAttribute('data-mce-bogus')) { + name = node.nodeName.toLowerCase(); + if (nonEmptyElementsMap[name] && name !== 'br') { + return false; + } + } + } else if ($_9owqcy1qje5o2q0e.isText(node) && !/^[ \t\r\n]*$/.test(node.nodeValue)) { + return false; + } + if (start) { + walker.prev(); + } else { + walker.next(); + } + } + return true; + }; + var insertNewBlockAfter = function () { + if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') { + newBlock = createNewBlock(newBlockName); + } else { + newBlock = createNewBlock(); + } + if ($_ahj8826rje5o2r2f.shouldEndContainerOnEmtpyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) { + newBlock = dom.split(containerBlock, parentBlock); + } else { + dom.insertAfter(newBlock, parentBlock); + } + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + }; + $_1t8l6x3xje5o2qlk.normalize(dom, rng).each(function (normRng) { + rng.setStart(normRng.startContainer, normRng.startOffset); + rng.setEnd(normRng.endContainer, normRng.endOffset); + }); + container = rng.startContainer; + offset = rng.startOffset; + newBlockName = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + shiftKey = evt.shiftKey; + if ($_9owqcy1qje5o2q0e.isElement(container) && container.hasChildNodes()) { + isAfterLastNodeInContainer = offset > container.childNodes.length - 1; + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + if (isAfterLastNodeInContainer && $_9owqcy1qje5o2q0e.isText(container)) { + offset = container.nodeValue.length; + } else { + offset = 0; + } + } + editableRoot = getEditableRoot$1(dom, container); + if (!editableRoot) { + return; + } + if (newBlockName && !shiftKey || !newBlockName && shiftKey) { + container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset); + } + parentBlock = dom.getParent(container, dom.isBlock); + containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; + containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; + if (containerBlockName === 'LI' && !evt.ctrlKey) { + parentBlock = containerBlock; + containerBlock = containerBlock.parentNode; + parentBlockName = containerBlockName; + } + if (/^(LI|DT|DD)$/.test(parentBlockName)) { + if (dom.isEmpty(parentBlock)) { + $_52slpd6sje5o2r2i.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName); + return; + } + } + if (newBlockName && parentBlock === editor.getBody()) { + return; + } + newBlockName = newBlockName || 'P'; + if (isCaretContainerBlock(parentBlock)) { + newBlock = showCaretContainerBlock(parentBlock); + if (dom.isEmpty(parentBlock)) { + emptyBlock(parentBlock); + } + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + } else if (isCaretAtStartOrEndOfBlock()) { + insertNewBlockAfter(); + } else if (isCaretAtStartOrEndOfBlock(true)) { + newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock); + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock); + } else { + tmpRng = includeZwspInRange(rng).cloneRange(); + tmpRng.setEndAfter(parentBlock); + fragment = tmpRng.extractContents(); + trimLeadingLineBreaks(fragment); + newBlock = fragment.firstChild; + dom.insertAfter(fragment, parentBlock); + trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock); + addBrToBlockIfNeeded(dom, parentBlock); + if (dom.isEmpty(parentBlock)) { + emptyBlock(parentBlock); + } + newBlock.normalize(); + if (dom.isEmpty(newBlock)) { + dom.remove(newBlock); + insertNewBlockAfter(); + } else { + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + } + } + dom.setAttrib(newBlock, 'id', ''); + editor.fire('NewBlock', { newBlock: newBlock }); + }; + var $_54gcs16qje5o2r1x = { insert: insert$2 }; + + var matchesSelector = function (editor, selector) { + return $_f0yz616tje5o2r2l.getParentBlock(editor).filter(function (parentBlock) { + return selector.length > 0 && $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(parentBlock), selector); + }).isSome(); + }; + var shouldInsertBr = function (editor) { + return matchesSelector(editor, $_ahj8826rje5o2r2f.getBrNewLineSelector(editor)); + }; + var shouldBlockNewLine = function (editor) { + return matchesSelector(editor, $_ahj8826rje5o2r2f.getNoNewLineSelector(editor)); + }; + var $_23pm1k6vje5o2r2w = { + shouldInsertBr: shouldInsertBr, + shouldBlockNewLine: shouldBlockNewLine + }; + + var newLineAction = $_e73lvt3dje5o2qdq.generate([ + { br: [] }, + { block: [] }, + { none: [] } + ]); + var shouldBlockNewLine$1 = function (editor, shiftKey) { + return $_23pm1k6vje5o2r2w.shouldBlockNewLine(editor); + }; + var isBrMode = function (requiredState) { + return function (editor, shiftKey) { + var brMode = $_ahj8826rje5o2r2f.getForcedRootBlock(editor) === ''; + return brMode === requiredState; + }; + }; + var inListBlock = function (requiredState) { + return function (editor, shiftKey) { + return $_f0yz616tje5o2r2l.isListItemParentBlock(editor) === requiredState; + }; + }; + var inPreBlock = function (requiredState) { + return function (editor, shiftKey) { + var inPre = $_f0yz616tje5o2r2l.getParentBlockName(editor) === 'PRE'; + return inPre === requiredState; + }; + }; + var shouldPutBrInPre$1 = function (requiredState) { + return function (editor, shiftKey) { + return $_ahj8826rje5o2r2f.shouldPutBrInPre(editor) === requiredState; + }; + }; + var inBrContext = function (editor, shiftKey) { + return $_23pm1k6vje5o2r2w.shouldInsertBr(editor); + }; + var hasShiftKey = function (editor, shiftKey) { + return shiftKey; + }; + var canInsertIntoEditableRoot = function (editor) { + var forcedRootBlock = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + var rootEditable = $_f0yz616tje5o2r2l.getEditableRoot(editor.dom, editor.selection.getStart()); + return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P'); + }; + var match$2 = function (predicates, action) { + return function (editor, shiftKey) { + var isMatch = $_bwcteb4je5o2pl4.foldl(predicates, function (res, p) { + return res && p(editor, shiftKey); + }, true); + return isMatch ? Option.some(action) : Option.none(); + }; + }; + var getAction$1 = function (editor, evt) { + return $_cq1fkk3oje5o2qg9.evaluateUntil([ + match$2([shouldBlockNewLine$1], newLineAction.none()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(false), + hasShiftKey + ], newLineAction.br()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(false) + ], newLineAction.block()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(true), + hasShiftKey + ], newLineAction.block()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(true) + ], newLineAction.br()), + match$2([ + inListBlock(true), + hasShiftKey + ], newLineAction.br()), + match$2([inListBlock(true)], newLineAction.block()), + match$2([ + isBrMode(true), + hasShiftKey, + canInsertIntoEditableRoot + ], newLineAction.block()), + match$2([isBrMode(true)], newLineAction.br()), + match$2([inBrContext], newLineAction.br()), + match$2([ + isBrMode(false), + hasShiftKey + ], newLineAction.br()), + match$2([canInsertIntoEditableRoot], newLineAction.block()) + ], [ + editor, + evt.shiftKey + ]).getOr(newLineAction.none()); + }; + var $_3fpic86uje5o2r2r = { getAction: getAction$1 }; + + var insert$3 = function (editor, evt) { + $_3fpic86uje5o2r2r.getAction(editor, evt).fold(function () { + $_1esduy3wje5o2qhl.insert(editor, evt); + }, function () { + $_54gcs16qje5o2r1x.insert(editor, evt); + }, $_enfhkv6je5o2ply.noop); + }; + var $_ccur376pje5o2r1r = { insert: insert$3 }; + + var endTypingLevel = function (undoManager) { + if (undoManager.typing) { + undoManager.typing = false; + undoManager.add(); + } + }; + var handleEnterKeyEvent = function (editor, event) { + if (event.isDefaultPrevented()) { + return; + } + event.preventDefault(); + endTypingLevel(editor.undoManager); + editor.undoManager.transact(function () { + if (editor.selection.isCollapsed() === false) { + editor.execCommand('Delete'); + } + $_ccur376pje5o2r1r.insert(editor, event); + }); + }; + var setup$8 = function (editor) { + editor.on('keydown', function (event) { + if (event.keyCode === $_99mhlk59je5o2qss.ENTER) { + handleEnterKeyEvent(editor, event); + } + }); + }; + var $_8j6q9k6oje5o2r1q = { setup: setup$8 }; + + var isValidInsertPoint = function (location, caretPosition) { + return isAtStartOrEnd(location) && $_9owqcy1qje5o2q0e.isText(caretPosition.container()); + }; + var insertNbspAtPosition = function (editor, caretPosition) { + var container = caretPosition.container(); + var offset = caretPosition.offset(); + container.insertData(offset, '\xA0'); + editor.selection.setCursorLocation(container, offset + 1); + }; + var insertAtLocation = function (editor, caretPosition, location) { + if (isValidInsertPoint(location, caretPosition)) { + insertNbspAtPosition(editor, caretPosition); + return true; + } else { + return false; + } + }; + var insertAtCaret$2 = function (editor) { + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + var boundaryLocation = $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), caretPosition); + return boundaryLocation.map($_enfhkv6je5o2ply.curry(insertAtLocation, editor, caretPosition)).getOr(false); + }; + var isAtStartOrEnd = function (location) { + return location.fold($_enfhkv6je5o2ply.constant(false), $_enfhkv6je5o2ply.constant(true), $_enfhkv6je5o2ply.constant(true), $_enfhkv6je5o2ply.constant(false)); + }; + var insertAtSelection = function (editor) { + return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false; + }; + var $_aorlpm6xje5o2r30 = { insertAtSelection: insertAtSelection }; + + var executeKeydownOverride$2 = function (editor, evt) { + $_fc81iw6lje5o2r1d.execute([{ + keyCode: $_99mhlk59je5o2qss.SPACEBAR, + action: $_fc81iw6lje5o2r1d.action($_aorlpm6xje5o2r30.insertAtSelection, editor) + }], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var setup$9 = function (editor) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride$2(editor, evt); + } + }); + }; + var $_6pyahj6wje5o2r2z = { setup: setup$9 }; + + var setup$10 = function (editor) { + var caret = $_2dnted3pje5o2qgc.setupSelectedState(editor); + $_a5oax76jje5o2r0t.setup(editor, caret); + $_6wiawx6mje5o2r1h.setup(editor, caret); + $_8j6q9k6oje5o2r1q.setup(editor); + $_6pyahj6wje5o2r2z.setup(editor); + }; + var $_b7lkfw6ije5o2r0s = { setup: setup$10 }; + + function Quirks (editor) { + var each = $_a5gegtjje5o2pum.each; + var BACKSPACE = $_99mhlk59je5o2qss.BACKSPACE, DELETE = $_99mhlk59je5o2qss.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser; + var isGecko = $_9bd8pn9je5o2pp2.gecko, isIE = $_9bd8pn9je5o2pp2.ie, isWebKit = $_9bd8pn9je5o2pp2.webkit; + var mceInternalUrlPrefix = 'data:text/mce-internal,'; + var mceInternalDataType = isIE ? 'Text' : 'URL'; + var setEditorCommandState = function (cmd, state) { + try { + editor.getDoc().execCommand(cmd, false, state); + } catch (ex) { + } + }; + var isDefaultPrevented = function (e) { + return e.isDefaultPrevented(); + }; + var setMceInternalContent = function (e) { + var selectionHtml, internalContent; + if (e.dataTransfer) { + if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') { + selection.select(e.target); + } + selectionHtml = editor.selection.getContent(); + if (selectionHtml.length > 0) { + internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml); + e.dataTransfer.setData(mceInternalDataType, internalContent); + } + } + }; + var getMceInternalContent = function (e) { + var internalContent; + if (e.dataTransfer) { + internalContent = e.dataTransfer.getData(mceInternalDataType); + if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) { + internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(','); + return { + id: unescape(internalContent[0]), + html: unescape(internalContent[1]) + }; + } + } + return null; + }; + var insertClipboardContents = function (content, internal) { + if (editor.queryCommandSupported('mceInsertClipboardContent')) { + editor.execCommand('mceInsertClipboardContent', false, { + content: content, + internal: internal + }); + } else { + editor.execCommand('mceInsertContent', false, content); + } + }; + var emptyEditorWhenDeleting = function () { + var serializeRng = function (rng) { + var body = dom.create('body'); + var contents = rng.cloneContents(); + body.appendChild(contents); + return selection.serializer.serialize(body, { format: 'html' }); + }; + var allContentsSelected = function (rng) { + var selection = serializeRng(rng); + var allRng = dom.createRng(); + allRng.selectNode(editor.getBody()); + var allSelection = serializeRng(allRng); + return selection === allSelection; + }; + editor.on('keydown', function (e) { + var keyCode = e.keyCode; + var isCollapsed, body; + if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) { + isCollapsed = editor.selection.isCollapsed(); + body = editor.getBody(); + if (isCollapsed && !dom.isEmpty(body)) { + return; + } + if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) { + return; + } + e.preventDefault(); + editor.setContent(''); + if (body.firstChild && dom.isBlock(body.firstChild)) { + editor.selection.setCursorLocation(body.firstChild, 0); + } else { + editor.selection.setCursorLocation(body, 0); + } + editor.nodeChanged(); + } + }); + }; + var selectAll = function () { + editor.shortcuts.add('meta+a', null, 'SelectAll'); + }; + var inputMethodFocus = function () { + if (!editor.settings.content_editable) { + dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) { + var rng; + if (e.target === editor.getDoc().documentElement) { + rng = selection.getRng(); + editor.getBody().focus(); + if (e.type === 'mousedown') { + if (isCaretContainer(rng.startContainer)) { + return; + } + selection.placeCaretAt(e.clientX, e.clientY); + } else { + selection.setRng(rng); + } + } + }); + } + }; + var removeHrOnBackspace = function () { + editor.on('keydown', function (e) { + if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { + if (!editor.getBody().getElementsByTagName('hr').length) { + return; + } + if (selection.isCollapsed() && selection.getRng().startOffset === 0) { + var node = selection.getNode(); + var previousSibling = node.previousSibling; + if (node.nodeName === 'HR') { + dom.remove(node); + e.preventDefault(); + return; + } + if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') { + dom.remove(previousSibling); + e.preventDefault(); + } + } + } + }); + }; + var focusBody = function () { + if (!Range.prototype.getClientRects) { + editor.on('mousedown', function (e) { + if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') { + var body_1 = editor.getBody(); + body_1.blur(); + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + body_1.focus(); + }); + } + }); + } + }; + var selectControlElements = function () { + editor.on('click', function (e) { + var target = e.target; + if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') { + e.preventDefault(); + editor.selection.select(target); + editor.nodeChanged(); + } + if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) { + e.preventDefault(); + selection.select(target); + } + }); + }; + var removeStylesWhenDeletingAcrossBlockElements = function () { + var getAttributeApplyFunction = function () { + var template = dom.getAttribs(selection.getStart().cloneNode(false)); + return function () { + var target = selection.getStart(); + if (target !== editor.getBody()) { + dom.setAttrib(target, 'style', null); + each(template, function (attr) { + target.setAttributeNode(attr.cloneNode(true)); + }); + } + }; + }; + var isSelectionAcrossElements = function () { + return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock); + }; + editor.on('keypress', function (e) { + var applyAttributes; + if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) { + applyAttributes = getAttributeApplyFunction(); + editor.getDoc().execCommand('delete', false, null); + applyAttributes(); + e.preventDefault(); + return false; + } + }); + dom.bind(editor.getDoc(), 'cut', function (e) { + var applyAttributes; + if (!isDefaultPrevented(e) && isSelectionAcrossElements()) { + applyAttributes = getAttributeApplyFunction(); + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + applyAttributes(); + }); + } + }); + }; + var disableBackspaceIntoATable = function () { + editor.on('keydown', function (e) { + if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { + if (selection.isCollapsed() && selection.getRng().startOffset === 0) { + var previousSibling = selection.getNode().previousSibling; + if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') { + e.preventDefault(); + return false; + } + } + } + }); + }; + var removeBlockQuoteOnBackSpace = function () { + editor.on('keydown', function (e) { + var rng, container, offset, root, parent; + if (isDefaultPrevented(e) || e.keyCode !== $_99mhlk59je5o2qss.BACKSPACE) { + return; + } + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + root = dom.getRoot(); + parent = container; + if (!rng.collapsed || offset !== 0) { + return; + } + while (parent && parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) { + parent = parent.parentNode; + } + if (parent.tagName === 'BLOCKQUOTE') { + editor.formatter.toggle('blockquote', null, parent); + rng = dom.createRng(); + rng.setStart(container, 0); + rng.setEnd(container, 0); + selection.setRng(rng); + } + }); + }; + var setGeckoEditingOptions = function () { + var setOpts = function () { + setEditorCommandState('StyleWithCSS', false); + setEditorCommandState('enableInlineTableEditing', false); + if (!settings.object_resizing) { + setEditorCommandState('enableObjectResizing', false); + } + }; + if (!settings.readonly) { + editor.on('BeforeExecCommand MouseDown', setOpts); + } + }; + var addBrAfterLastLinks = function () { + var fixLinks = function () { + each(dom.select('a'), function (node) { + var parentNode = node.parentNode; + var root = dom.getRoot(); + if (parentNode.lastChild === node) { + while (parentNode && !dom.isBlock(parentNode)) { + if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) { + return; + } + parentNode = parentNode.parentNode; + } + dom.add(parentNode, 'br', { 'data-mce-bogus': 1 }); + } + }); + }; + editor.on('SetContent ExecCommand', function (e) { + if (e.type === 'setcontent' || e.command === 'mceInsertLink') { + fixLinks(); + } + }); + }; + var setDefaultBlockType = function () { + if (settings.forced_root_block) { + editor.on('init', function () { + setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block); + }); + } + }; + var normalizeSelection = function () { + editor.on('keyup focusin mouseup', function (e) { + if (!$_99mhlk59je5o2qss.modifierPressed(e)) { + selection.normalize(); + } + }, true); + }; + var showBrokenImageIcon = function () { + editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}'); + }; + var restoreFocusOnKeyDown = function () { + if (!editor.inline) { + editor.on('keydown', function () { + if (document.activeElement === document.body) { + editor.getWin().focus(); + } + }); + } + }; + var bodyHeight = function () { + if (!editor.inline) { + editor.contentStyles.push('body {min-height: 150px}'); + editor.on('click', function (e) { + var rng; + if (e.target.nodeName === 'HTML') { + if ($_9bd8pn9je5o2pp2.ie > 11) { + editor.getBody().focus(); + return; + } + rng = editor.selection.getRng(); + editor.getBody().focus(); + editor.selection.setRng(rng); + editor.selection.normalize(); + editor.nodeChanged(); + } + }); + } + }; + var blockCmdArrowNavigation = function () { + if ($_9bd8pn9je5o2pp2.mac) { + editor.on('keydown', function (e) { + if ($_99mhlk59je5o2qss.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) { + e.preventDefault(); + editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary'); + } + }); + } + }; + var disableAutoUrlDetect = function () { + setEditorCommandState('AutoUrlDetect', false); + }; + var tapLinksAndImages = function () { + editor.on('click', function (e) { + var elm = e.target; + do { + if (elm.tagName === 'A') { + e.preventDefault(); + return; + } + } while (elm = elm.parentNode); + }); + editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}'); + }; + var blockFormSubmitInsideEditor = function () { + editor.on('init', function () { + editor.dom.bind(editor.getBody(), 'submit', function (e) { + e.preventDefault(); + }); + }); + }; + var removeAppleInterchangeBrs = function () { + parser.addNodeFilter('br', function (nodes) { + var i = nodes.length; + while (i--) { + if (nodes[i].attr('class') === 'Apple-interchange-newline') { + nodes[i].remove(); + } + } + }); + }; + var ieInternalDragAndDrop = function () { + editor.on('dragstart', function (e) { + setMceInternalContent(e); + }); + editor.on('drop', function (e) { + if (!isDefaultPrevented(e)) { + var internalContent = getMceInternalContent(e); + if (internalContent && internalContent.id !== editor.id) { + e.preventDefault(); + var rng = $_drs2u868je5o2qyu.fromPoint(e.x, e.y, editor.getDoc()); + selection.setRng(rng); + insertClipboardContents(internalContent.html, true); + } + } + }); + }; + var refreshContentEditable = function () { + }; + var isHidden = function () { + var sel; + if (!isGecko || editor.removed) { + return 0; + } + sel = editor.selection.getSel(); + return !sel || !sel.rangeCount || sel.rangeCount === 0; + }; + removeBlockQuoteOnBackSpace(); + emptyEditorWhenDeleting(); + if (!$_9bd8pn9je5o2pp2.windowsPhone) { + normalizeSelection(); + } + if (isWebKit) { + inputMethodFocus(); + selectControlElements(); + setDefaultBlockType(); + blockFormSubmitInsideEditor(); + disableBackspaceIntoATable(); + removeAppleInterchangeBrs(); + if ($_9bd8pn9je5o2pp2.iOS) { + restoreFocusOnKeyDown(); + bodyHeight(); + tapLinksAndImages(); + } else { + selectAll(); + } + } + if ($_9bd8pn9je5o2pp2.ie >= 11) { + bodyHeight(); + disableBackspaceIntoATable(); + } + if ($_9bd8pn9je5o2pp2.ie) { + selectAll(); + disableAutoUrlDetect(); + ieInternalDragAndDrop(); + } + if (isGecko) { + removeHrOnBackspace(); + focusBody(); + removeStylesWhenDeletingAcrossBlockElements(); + setGeckoEditingOptions(); + addBrAfterLastLinks(); + showBrokenImageIcon(); + blockCmdArrowNavigation(); + disableBackspaceIntoATable(); + } + return { + refreshContentEditable: refreshContentEditable, + isHidden: isHidden + }; + } + + var DOM$2 = DOMUtils.DOM; + var appendStyle = function (editor, text) { + var head = $_5tcb2dyje5o2pwu.fromDom(editor.getDoc().head); + var tag = $_5tcb2dyje5o2pwu.fromTag('style'); + $_3uo9pl14je5o2pxq.set(tag, 'type', 'text/css'); + $_elbl2s2oje5o2q9z.append(tag, $_5tcb2dyje5o2pwu.fromText(text)); + $_elbl2s2oje5o2q9z.append(head, tag); + }; + var createParser = function (editor) { + var parser = DomParser(editor.settings, editor.schema); + parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name) { + var i = nodes.length, node; + var dom = editor.dom; + var value, internalName; + while (i--) { + node = nodes[i]; + value = node.attr(name); + internalName = 'data-mce-' + name; + if (!node.attributes.map[internalName]) { + if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) { + continue; + } + if (name === 'style') { + value = dom.serializeStyle(dom.parseStyle(value), node.name); + if (!value.length) { + value = null; + } + node.attr(internalName, value); + node.attr(name, value); + } else if (name === 'tabindex') { + node.attr(internalName, value); + node.attr(name, null); + } else { + node.attr(internalName, editor.convertURL(value, name, node.name)); + } + } + } + }); + parser.addNodeFilter('script', function (nodes) { + var i = nodes.length, node, type; + while (i--) { + node = nodes[i]; + type = node.attr('type') || 'no/type'; + if (type.indexOf('mce-') !== 0) { + node.attr('type', 'mce-' + type); + } + } + }); + parser.addNodeFilter('#cdata', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.type = 8; + node.name = '#comment'; + node.value = '[CDATA[' + node.value + ']]'; + } + }); + parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) { + var i = nodes.length, node; + var nonEmptyElements = editor.schema.getNonEmptyElements(); + while (i--) { + node = nodes[i]; + if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) { + node.append(new Node$2('br', 1)).shortEnded = true; + } + } + }); + return parser; + }; + var autoFocus = function (editor) { + if (editor.settings.auto_focus) { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + var focusEditor; + if (editor.settings.auto_focus === true) { + focusEditor = editor; + } else { + focusEditor = editor.editorManager.get(editor.settings.auto_focus); + } + if (!focusEditor.destroyed) { + focusEditor.focus(); + } + }, 100); + } + }; + var initEditor = function (editor) { + editor.bindPendingEventDelegates(); + editor.initialized = true; + editor.fire('init'); + editor.focus(true); + editor.nodeChanged({ initial: true }); + editor.execCallback('init_instance_callback', editor); + autoFocus(editor); + }; + var getStyleSheetLoader = function (editor) { + return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader; + }; + var initContentBody = function (editor, skipWrite) { + var settings = editor.settings; + var targetElm = editor.getElement(); + var doc = editor.getDoc(), body, contentCssText; + if (!settings.inline) { + editor.getElement().style.visibility = editor.orgVisibility; + } + if (!skipWrite && !settings.content_editable) { + doc.open(); + doc.write(editor.iframeHTML); + doc.close(); + } + if (settings.content_editable) { + editor.on('remove', function () { + var bodyEl = this.getBody(); + DOM$2.removeClass(bodyEl, 'mce-content-body'); + DOM$2.removeClass(bodyEl, 'mce-edit-focus'); + DOM$2.setAttrib(bodyEl, 'contentEditable', null); + }); + DOM$2.addClass(targetElm, 'mce-content-body'); + editor.contentDocument = doc = settings.content_document || document; + editor.contentWindow = settings.content_window || window; + editor.bodyElement = targetElm; + settings.content_document = settings.content_window = null; + settings.root_name = targetElm.nodeName.toLowerCase(); + } + body = editor.getBody(); + body.disabled = true; + editor.readonly = settings.readonly; + if (!editor.readonly) { + if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') { + body.style.position = 'relative'; + } + body.contentEditable = editor.getParam('content_editable_state', true); + } + body.disabled = false; + editor.editorUpload = EditorUpload(editor); + editor.schema = Schema(settings); + editor.dom = new DOMUtils(doc, { + keep_values: true, + url_converter: editor.convertURL, + url_converter_scope: editor, + hex_colors: settings.force_hex_style_colors, + class_filter: settings.class_filter, + update_styles: true, + root_element: editor.inline ? editor.getBody() : null, + collect: settings.content_editable, + schema: editor.schema, + onSetAttrib: function (e) { + editor.fire('SetAttrib', e); + } + }); + editor.parser = createParser(editor); + editor.serializer = DomSerializer$1(settings, editor); + editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor); + editor.formatter = Formatter(editor); + editor.undoManager = UndoManager(editor); + editor._nodeChangeDispatcher = new NodeChange(editor); + editor._selectionOverrides = SelectionOverrides(editor); + $_acfnaa63je5o2qxq.setup(editor); + $_b7lkfw6ije5o2r0s.setup(editor); + $_fekqo94yje5o2qqs.setup(editor); + editor.fire('PreInit'); + if (!settings.browser_spellcheck && !settings.gecko_spellcheck) { + doc.body.spellcheck = false; + DOM$2.setAttrib(body, 'spellcheck', 'false'); + } + editor.quirks = Quirks(editor); + editor.fire('PostRender'); + if (settings.directionality) { + body.dir = settings.directionality; + } + if (settings.nowrap) { + body.style.whiteSpace = 'nowrap'; + } + if (settings.protect) { + editor.on('BeforeSetContent', function (e) { + $_a5gegtjje5o2pum.each(settings.protect, function (pattern) { + e.content = e.content.replace(pattern, function (str) { + return '<!--mce:protected ' + escape(str) + '-->'; + }); + }); + }); + } + editor.on('SetContent', function () { + editor.addVisual(editor.getBody()); + }); + if (settings.padd_empty_editor) { + editor.on('PostProcess', function (e) { + e.content = e.content.replace(/^(<p[^>]*>( | |\s|\u00a0|<br \/>|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, ''); + }); + } + editor.load({ + initial: true, + format: 'html' + }); + editor.startContent = editor.getContent({ format: 'raw' }); + editor.on('compositionstart compositionend', function (e) { + editor.composing = e.type === 'compositionstart'; + }); + if (editor.contentStyles.length > 0) { + contentCssText = ''; + $_a5gegtjje5o2pum.each(editor.contentStyles, function (style) { + contentCssText += style + '\r\n'; + }); + editor.dom.addStyle(contentCssText); + } + getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) { + initEditor(editor); + }, function (urls) { + initEditor(editor); + }); + if (settings.content_style) { + appendStyle(editor, settings.content_style); + } + }; + var $_aixfus4lje5o2qp4 = { initContentBody: initContentBody }; + + var DOM$3 = DOMUtils.DOM; + var relaxDomain = function (editor, ifr) { + if (document.domain !== window.location.hostname && $_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 12) { + var bodyUuid = $_2bgddd4wje5o2qqo.uuid('mce'); + editor[bodyUuid] = function () { + $_aixfus4lje5o2qp4.initContentBody(editor); + }; + var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()'; + DOM$3.setAttrib(ifr, 'src', domainRelaxUrl); + return true; + } + return false; + }; + var normalizeHeight = function (height) { + var normalizedHeight = typeof height === 'number' ? height + 'px' : height; + return normalizedHeight ? normalizedHeight : ''; + }; + var createIframeElement = function (id, title, height, customAttrs) { + var iframe = $_5tcb2dyje5o2pwu.fromTag('iframe'); + $_3uo9pl14je5o2pxq.setAll(iframe, customAttrs); + $_3uo9pl14je5o2pxq.setAll(iframe, { + id: id + '_ifr', + frameBorder: '0', + allowTransparency: 'true', + title: title + }); + $_1ioope11je5o2px4.setAll(iframe, { + width: '100%', + height: normalizeHeight(height), + display: 'block' + }); + return iframe; + }; + var getIframeHtml = function (editor) { + var bodyId, bodyClass, iframeHTML; + iframeHTML = $_ahj8826rje5o2r2f.getDocType(editor) + '<html><head>'; + if ($_ahj8826rje5o2r2f.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) { + iframeHTML += '<base href="' + editor.documentBaseURI.getURI() + '" />'; + } + iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'; + bodyId = $_ahj8826rje5o2r2f.getBodyId(editor); + bodyClass = $_ahj8826rje5o2r2f.getBodyClass(editor); + if ($_ahj8826rje5o2r2f.getContentSecurityPolicy(editor)) { + iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + $_ahj8826rje5o2r2f.getContentSecurityPolicy(editor) + '" />'; + } + iframeHTML += '</head><body id="' + bodyId + '" class="mce-content-body ' + bodyClass + '" data-id="' + editor.id + '"><br></body></html>'; + return iframeHTML; + }; + var createIframe = function (editor, o) { + var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help'); + var ifr = createIframeElement(editor.id, title, o.height, $_ahj8826rje5o2r2f.getIframeAttrs(editor)).dom(); + ifr.onload = function () { + ifr.onload = null; + editor.fire('load'); + }; + var isDomainRelaxed = relaxDomain(editor, ifr); + editor.contentAreaContainer = o.iframeContainer; + editor.iframeElement = ifr; + editor.iframeHTML = getIframeHtml(editor); + DOM$3.add(o.iframeContainer, ifr); + return isDomainRelaxed; + }; + var init$1 = function (editor, boxInfo) { + var isDomainRelaxed = createIframe(editor, boxInfo); + if (boxInfo.editorContainer) { + DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay; + editor.hidden = DOM$3.isHidden(boxInfo.editorContainer); + } + editor.getElement().style.display = 'none'; + DOM$3.setAttrib(editor.id, 'aria-hidden', true); + if (!isDomainRelaxed) { + $_aixfus4lje5o2qp4.initContentBody(editor); + } + }; + var $_3w1bbh6zje5o2r3o = { init: init$1 }; + + var DOM$4 = DOMUtils.DOM; + var initPlugin = function (editor, initializedPlugins, plugin) { + var Plugin = PluginManager$1.get(plugin); + var pluginUrl, pluginInstance; + pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, ''); + plugin = $_a5gegtjje5o2pum.trim(plugin); + if (Plugin && $_a5gegtjje5o2pum.inArray(initializedPlugins, plugin) === -1) { + $_a5gegtjje5o2pum.each(PluginManager$1.dependencies(plugin), function (dep) { + initPlugin(editor, initializedPlugins, dep); + }); + if (editor.plugins[plugin]) { + return; + } + pluginInstance = new Plugin(editor, pluginUrl, editor.$); + editor.plugins[plugin] = pluginInstance; + if (pluginInstance.init) { + pluginInstance.init(editor, pluginUrl); + initializedPlugins.push(plugin); + } + } + }; + var trimLegacyPrefix = function (name) { + return name.replace(/^\-/, ''); + }; + var initPlugins = function (editor) { + var initializedPlugins = []; + $_a5gegtjje5o2pum.each(editor.settings.plugins.split(/[ ,]/), function (name) { + initPlugin(editor, initializedPlugins, trimLegacyPrefix(name)); + }); + }; + var initTheme = function (editor) { + var Theme; + var theme = editor.settings.theme; + if ($_be3q8w12je5o2pxj.isString(theme)) { + editor.settings.theme = trimLegacyPrefix(theme); + Theme = ThemeManager.get(theme); + editor.theme = new Theme(editor, ThemeManager.urls[theme]); + if (editor.theme.init) { + editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\/$/, ''), editor.$); + } + } else { + editor.theme = {}; + } + }; + var renderFromLoadedTheme = function (editor) { + var w, h, minHeight, re, info; + var settings = editor.settings; + var elm = editor.getElement(); + w = settings.width || DOM$4.getStyle(elm, 'width') || '100%'; + h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight; + minHeight = settings.min_height || 100; + re = /^[0-9\.]+(|px)$/i; + if (re.test('' + w)) { + w = Math.max(parseInt(w, 10), 100); + } + if (re.test('' + h)) { + h = Math.max(parseInt(h, 10), minHeight); + } + info = editor.theme.renderUI({ + targetNode: elm, + width: w, + height: h, + deltaWidth: settings.delta_width, + deltaHeight: settings.delta_height + }); + if (!settings.content_editable) { + h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : ''); + if (h < minHeight) { + h = minHeight; + } + } + info.height = h; + return info; + }; + var renderFromThemeFunc = function (editor) { + var info; + var elm = editor.getElement(); + info = editor.settings.theme(editor, elm); + if (info.editorContainer.nodeType) { + info.editorContainer.id = info.editorContainer.id || editor.id + '_parent'; + } + if (info.iframeContainer && info.iframeContainer.nodeType) { + info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer'; + } + info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight; + return info; + }; + var createThemeFalseResult = function (element) { + return { + editorContainer: element, + iframeContainer: element + }; + }; + var renderThemeFalseIframe = function (targetElement) { + var iframeContainer = DOM$4.create('div'); + DOM$4.insertAfter(iframeContainer, targetElement); + return createThemeFalseResult(iframeContainer); + }; + var renderThemeFalse = function (editor) { + var targetElement = editor.getElement(); + return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement); + }; + var renderThemeUi = function (editor) { + var settings = editor.settings, elm = editor.getElement(); + editor.orgDisplay = elm.style.display; + if ($_be3q8w12je5o2pxj.isString(settings.theme)) { + return renderFromLoadedTheme(editor); + } else if ($_be3q8w12je5o2pxj.isFunction(settings.theme)) { + return renderFromThemeFunc(editor); + } else { + return renderThemeFalse(editor); + } + }; + var init$2 = function (editor) { + var settings = editor.settings; + var elm = editor.getElement(); + var boxInfo; + editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl; + editor.editorManager.i18n.setCode(settings.language); + settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area')); + editor.fire('ScriptsLoaded'); + initTheme(editor); + initPlugins(editor); + boxInfo = renderThemeUi(editor); + editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null; + if (settings.content_css) { + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.explode(settings.content_css), function (u) { + editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u)); + }); + } + if (settings.content_editable) { + return $_aixfus4lje5o2qp4.initContentBody(editor); + } else { + return $_3w1bbh6zje5o2r3o.init(editor, boxInfo); + } + }; + var $_v6l1f4ije5o2qou = { init: init$2 }; + + var DOM$5 = DOMUtils.DOM; + var hasSkipLoadPrefix = function (name) { + return name.charAt(0) === '-'; + }; + var loadLanguage = function (scriptLoader, editor) { + var settings = editor.settings; + if (settings.language && settings.language !== 'en' && !settings.language_url) { + settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js'; + } + if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) { + scriptLoader.add(settings.language_url); + } + }; + var loadTheme = function (scriptLoader, editor, suffix, callback) { + var settings = editor.settings, theme = settings.theme; + if ($_be3q8w12je5o2pxj.isString(theme)) { + if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) { + var themeUrl = settings.theme_url; + if (themeUrl) { + ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl)); + } else { + ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js'); + } + } + scriptLoader.loadQueue(function () { + ThemeManager.waitFor(theme, callback); + }); + } else { + callback(); + } + }; + var loadPlugins = function (settings, suffix) { + if ($_a5gegtjje5o2pum.isArray(settings.plugins)) { + settings.plugins = settings.plugins.join(' '); + } + $_a5gegtjje5o2pum.each(settings.external_plugins, function (url, name) { + PluginManager$1.load(name, url); + settings.plugins += ' ' + name; + }); + $_a5gegtjje5o2pum.each(settings.plugins.split(/[ ,]/), function (plugin) { + plugin = $_a5gegtjje5o2pum.trim(plugin); + if (plugin && !PluginManager$1.urls[plugin]) { + if (hasSkipLoadPrefix(plugin)) { + plugin = plugin.substr(1, plugin.length); + var dependencies = PluginManager$1.dependencies(plugin); + $_a5gegtjje5o2pum.each(dependencies, function (dep) { + var defaultSettings = { + prefix: 'plugins/', + resource: dep, + suffix: '/plugin' + suffix + '.js' + }; + dep = PluginManager$1.createUrl(defaultSettings, dep); + PluginManager$1.load(dep.resource, dep); + }); + } else { + PluginManager$1.load(plugin, { + prefix: 'plugins/', + resource: plugin, + suffix: '/plugin' + suffix + '.js' + }); + } + } + }); + }; + var loadScripts = function (editor, suffix) { + var scriptLoader = ScriptLoader.ScriptLoader; + loadTheme(scriptLoader, editor, suffix, function () { + loadLanguage(scriptLoader, editor); + loadPlugins(editor.settings, suffix); + scriptLoader.loadQueue(function () { + if (!editor.removed) { + $_v6l1f4ije5o2qou.init(editor); + } + }, editor, function (urls) { + $_axrd1j4hje5o2qor.pluginLoadError(editor, urls[0]); + if (!editor.removed) { + $_v6l1f4ije5o2qou.init(editor); + } + }); + }); + }; + var render = function (editor) { + var settings = editor.settings, id = editor.id; + var readyHandler = function () { + DOM$5.unbind(window, 'ready', readyHandler); + editor.render(); + }; + if (!EventUtils.Event.domLoaded) { + DOM$5.bind(window, 'ready', readyHandler); + return; + } + if (!editor.getElement()) { + return; + } + if (!$_9bd8pn9je5o2pp2.contentEditable) { + return; + } + if (!settings.inline) { + editor.orgVisibility = editor.getElement().style.visibility; + editor.getElement().style.visibility = 'hidden'; + } else { + editor.inline = true; + } + var form = editor.getElement().form || DOM$5.getParent(id, 'form'); + if (form) { + editor.formElement = form; + if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) { + DOM$5.insertAfter(DOM$5.create('input', { + type: 'hidden', + name: id + }), id); + editor.hasHiddenInput = true; + } + editor.formEventDelegate = function (e) { + editor.fire(e.type, e); + }; + DOM$5.bind(form, 'submit reset', editor.formEventDelegate); + editor.on('reset', function () { + editor.setContent(editor.startContent, { format: 'raw' }); + }); + if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) { + form._mceOldSubmit = form.submit; + form.submit = function () { + editor.editorManager.triggerSave(); + editor.setDirty(false); + return form._mceOldSubmit(form); + }; + } + } + editor.windowManager = WindowManager(editor); + editor.notificationManager = NotificationManager(editor); + if (settings.encoding === 'xml') { + editor.on('GetContent', function (e) { + if (e.save) { + e.content = DOM$5.encode(e.content); + } + }); + } + if (settings.add_form_submit_trigger) { + editor.on('submit', function () { + if (editor.initialized) { + editor.save(); + } + }); + } + if (settings.add_unload_trigger) { + editor._beforeUnload = function () { + if (editor.initialized && !editor.destroyed && !editor.isHidden()) { + editor.save({ + format: 'raw', + no_events: true, + set_dirty: false + }); + } + }; + editor.editorManager.on('BeforeUnload', editor._beforeUnload); + } + editor.editorManager.add(editor); + loadScripts(editor, editor.suffix); + }; + var $_4352oh4bje5o2qnn = { render: render }; + + var add = function (editor, name, settings) { + var sidebars = editor.sidebars ? editor.sidebars : []; + sidebars.push({ + name: name, + settings: settings + }); + editor.sidebars = sidebars; + }; + var $_8qp82n70je5o2r3u = { add: add }; + + var each$21 = $_a5gegtjje5o2pum.each; + var trim$4 = $_a5gegtjje5o2pum.trim; + var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' '); + var DEFAULT_PORTS = { + ftp: 21, + http: 80, + https: 443, + mailto: 25 + }; + var URI = function (url, settings) { + var self = this; + var baseUri, baseUrl; + url = trim$4(url); + settings = self.settings = settings || {}; + baseUri = settings.base_uri; + if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) { + self.source = url; + return; + } + var isProtocolRelative = url.indexOf('//') === 0; + if (url.indexOf('/') === 0 && !isProtocolRelative) { + url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url; + } + if (!/^[\w\-]*:?\/\//.test(url)) { + baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory; + if (settings.base_uri.protocol == '') { + url = '//mce_host' + self.toAbsPath(baseUrl, url); + } else { + url = /([^#?]*)([#?]?.*)/.exec(url); + url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, url[1]) + url[2]; + } + } + url = url.replace(/@@/g, '(mce_at)'); + url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url); + each$21(queryParts, function (v, i) { + var part = url[i]; + if (part) { + part = part.replace(/\(mce_at\)/g, '@@'); + } + self[v] = part; + }); + if (baseUri) { + if (!self.protocol) { + self.protocol = baseUri.protocol; + } + if (!self.userInfo) { + self.userInfo = baseUri.userInfo; + } + if (!self.port && self.host === 'mce_host') { + self.port = baseUri.port; + } + if (!self.host || self.host === 'mce_host') { + self.host = baseUri.host; + } + self.source = ''; + } + if (isProtocolRelative) { + self.protocol = ''; + } + }; + URI.prototype = { + setPath: function (path) { + var self = this; + path = /^(.*?)\/?(\w+)?$/.exec(path); + self.path = path[0]; + self.directory = path[1]; + self.file = path[2]; + self.source = ''; + self.getURI(); + }, + toRelative: function (uri) { + var self = this; + var output; + if (uri === './') { + return uri; + } + uri = new URI(uri, { base_uri: self }); + if (uri.host !== 'mce_host' && self.host !== uri.host && uri.host || self.port !== uri.port || self.protocol !== uri.protocol && uri.protocol !== '') { + return uri.getURI(); + } + var tu = self.getURI(), uu = uri.getURI(); + if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) { + return tu; + } + output = self.toRelPath(self.path, uri.path); + if (uri.query) { + output += '?' + uri.query; + } + if (uri.anchor) { + output += '#' + uri.anchor; + } + return output; + }, + toAbsolute: function (uri, noHost) { + uri = new URI(uri, { base_uri: this }); + return uri.getURI(noHost && this.isSameOrigin(uri)); + }, + isSameOrigin: function (uri) { + if (this.host == uri.host && this.protocol == uri.protocol) { + if (this.port == uri.port) { + return true; + } + var defaultPort = DEFAULT_PORTS[this.protocol]; + if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) { + return true; + } + } + return false; + }, + toRelPath: function (base, path) { + var items, breakPoint = 0, out = '', i, l; + base = base.substring(0, base.lastIndexOf('/')); + base = base.split('/'); + items = path.split('/'); + if (base.length >= items.length) { + for (i = 0, l = base.length; i < l; i++) { + if (i >= items.length || base[i] !== items[i]) { + breakPoint = i + 1; + break; + } + } + } + if (base.length < items.length) { + for (i = 0, l = items.length; i < l; i++) { + if (i >= base.length || base[i] !== items[i]) { + breakPoint = i + 1; + break; + } + } + } + if (breakPoint === 1) { + return path; + } + for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) { + out += '../'; + } + for (i = breakPoint - 1, l = items.length; i < l; i++) { + if (i !== breakPoint - 1) { + out += '/' + items[i]; + } else { + out += items[i]; + } + } + return out; + }, + toAbsPath: function (base, path) { + var i, nb = 0, o = [], tr, outPath; + tr = /\/$/.test(path) ? '/' : ''; + base = base.split('/'); + path = path.split('/'); + each$21(base, function (k) { + if (k) { + o.push(k); + } + }); + base = o; + for (i = path.length - 1, o = []; i >= 0; i--) { + if (path[i].length === 0 || path[i] === '.') { + continue; + } + if (path[i] === '..') { + nb++; + continue; + } + if (nb > 0) { + nb--; + continue; + } + o.push(path[i]); + } + i = base.length - nb; + if (i <= 0) { + outPath = o.reverse().join('/'); + } else { + outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/'); + } + if (outPath.indexOf('/') !== 0) { + outPath = '/' + outPath; + } + if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) { + outPath += tr; + } + return outPath; + }, + getURI: function (noProtoHost) { + var s; + var self = this; + if (!self.source || noProtoHost) { + s = ''; + if (!noProtoHost) { + if (self.protocol) { + s += self.protocol + '://'; + } else { + s += '//'; + } + if (self.userInfo) { + s += self.userInfo + '@'; + } + if (self.host) { + s += self.host; + } + if (self.port) { + s += ':' + self.port; + } + } + if (self.path) { + s += self.path; + } + if (self.query) { + s += '?' + self.query; + } + if (self.anchor) { + s += '#' + self.anchor; + } + self.source = s; + } + return self.source; + } + }; + URI.parseDataUri = function (uri) { + var type, matches; + uri = decodeURIComponent(uri).split(','); + matches = /data:([^;]+)/.exec(uri[0]); + if (matches) { + type = matches[1]; + } + return { + type: type, + data: uri[1] + }; + }; + URI.getDocumentBaseUrl = function (loc) { + var baseUrl; + if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') { + baseUrl = loc.href; + } else { + baseUrl = loc.protocol + '//' + loc.host + loc.pathname; + } + if (/^[^:]+:\/\/\/?[^\/]+\//.test(baseUrl)) { + baseUrl = baseUrl.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(baseUrl)) { + baseUrl += '/'; + } + } + return baseUrl; + }; + + var traverse = function (node, fn) { + fn(node); + if (node.firstChild) { + traverse(node.firstChild, fn); + } + if (node.next) { + traverse(node.next, fn); + } + }; + var findMatchingNodes = function (nodeFilters, attributeFilters, node) { + var nodeMatches = {}; + var attrMatches = {}; + var matches = []; + if (node.firstChild) { + traverse(node.firstChild, function (node) { + $_bwcteb4je5o2pl4.each(nodeFilters, function (filter) { + if (filter.name === node.name) { + if (nodeMatches[filter.name]) { + nodeMatches[filter.name].nodes.push(node); + } else { + nodeMatches[filter.name] = { + filter: filter, + nodes: [node] + }; + } + } + }); + $_bwcteb4je5o2pl4.each(attributeFilters, function (filter) { + if (typeof node.attr(filter.name) === 'string') { + if (attrMatches[filter.name]) { + attrMatches[filter.name].nodes.push(node); + } else { + attrMatches[filter.name] = { + filter: filter, + nodes: [node] + }; + } + } + }); + }); + } + for (var name_1 in nodeMatches) { + if (nodeMatches.hasOwnProperty(name_1)) { + matches.push(nodeMatches[name_1]); + } + } + for (var name_2 in attrMatches) { + if (attrMatches.hasOwnProperty(name_2)) { + matches.push(attrMatches[name_2]); + } + } + return matches; + }; + var filter$3 = function (nodeFilters, attributeFilters, node) { + var matches = findMatchingNodes(nodeFilters, attributeFilters, node); + $_bwcteb4je5o2pl4.each(matches, function (match) { + $_bwcteb4je5o2pl4.each(match.filter.callbacks, function (callback) { + callback(match.nodes, match.filter.name, {}); + }); + }); + }; + + var defaultFormat = 'html'; + var isTreeNode = function (content) { + return content instanceof Node$2; + }; + var setContentString = function (editor, content, args) { + var body = editor.getBody(); + var forcedRootBlockName, padd; + if (content.length === 0 || /^\s+$/.test(content)) { + padd = '<br data-mce-bogus="1">'; + if (body.nodeName === 'TABLE') { + content = '<tr><td>' + padd + '</td></tr>'; + } else if (/^(UL|OL)$/.test(body.nodeName)) { + content = '<li>' + padd + '</li>'; + } + forcedRootBlockName = editor.settings.forced_root_block; + if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) { + content = padd; + content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content); + } else if (!content) { + content = '<br data-mce-bogus="1">'; + } + editor.dom.setHTML(body, content); + editor.fire('SetContent', args); + } else { + if (args.format !== 'raw') { + content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, { + isRootContent: true, + insert: true + })); + } + args.content = $_a5gegtjje5o2pum.trim(content); + editor.dom.setHTML(body, args.content); + if (!args.no_events) { + editor.fire('SetContent', args); + } + } + return args.content; + }; + var setContentTree = function (editor, content, args) { + filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content); + var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content); + args.content = $_a5gegtjje5o2pum.trim(html); + editor.dom.setHTML(editor.getBody(), args.content); + if (!args.no_events) { + editor.fire('SetContent', args); + } + return content; + }; + var setContent$1 = function (editor, content, args) { + if (args === void 0) { + args = {}; + } + args.format = args.format ? args.format : defaultFormat; + args.set = true; + args.content = isTreeNode(content) ? '' : content; + if (!isTreeNode(content) && !args.no_events) { + editor.fire('BeforeSetContent', args); + content = args.content; + } + return isTreeNode(content) ? setContentTree(editor, content, args) : setContentString(editor, content, args); + }; + var getContent$1 = function (editor, args) { + if (args === void 0) { + args = {}; + } + var content; + var body = editor.getBody(); + if (editor.removed) { + return ''; + } + args.format = args.format ? args.format : defaultFormat; + args.get = true; + args.getInner = true; + if (!args.no_events) { + editor.fire('BeforeGetContent', args); + } + if (args.format === 'raw') { + content = $_a5gegtjje5o2pum.trim($_15ih885cje5o2qt6.trimExternal(editor.serializer, body.innerHTML)); + } else if (args.format === 'text') { + content = body.innerText || body.textContent; + } else if (args.format === 'tree') { + return editor.serializer.serialize(body, args); + } else { + content = editor.serializer.serialize(body, args); + } + if (args.format !== 'text') { + args.content = $_a5gegtjje5o2pum.trim(content); + } else { + args.content = content; + } + if (!args.no_events) { + editor.fire('GetContent', args); + } + return args.content; + }; + + var DOM$6 = DOMUtils.DOM; + var restoreOriginalStyles = function (editor) { + DOM$6.setStyle(editor.id, 'display', editor.orgDisplay); + }; + var safeDestroy = function (x) { + return Option.from(x).each(function (x) { + return x.destroy(); + }); + }; + var clearDomReferences = function (editor) { + editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null; + editor.bodyElement = editor.contentDocument = editor.contentWindow = null; + editor.iframeElement = editor.targetElm = null; + if (editor.selection) { + editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null; + } + }; + var restoreForm = function (editor) { + var form = editor.formElement; + if (form) { + if (form._mceOldSubmit) { + form.submit = form._mceOldSubmit; + form._mceOldSubmit = null; + } + DOM$6.unbind(form, 'submit reset', editor.formEventDelegate); + } + }; + var remove$5 = function (editor) { + if (!editor.removed) { + var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload; + var body = editor.getBody(); + var element = editor.getElement(); + if (body) { + editor.save(); + } + editor.removed = 1; + editor.unbindAllNativeEvents(); + if (editor.hasHiddenInput && element) { + DOM$6.remove(element.nextSibling); + } + if (!editor.inline && body) { + restoreOriginalStyles(editor); + } + $_d6jl355vje5o2qw5.fireRemove(editor); + editor.editorManager.remove(editor); + DOM$6.remove(editor.getContainer()); + safeDestroy(_selectionOverrides); + safeDestroy(editorUpload); + editor.destroy(); + } + }; + var destroy = function (editor, automatic) { + var selection = editor.selection, dom = editor.dom; + if (editor.destroyed) { + return; + } + if (!automatic && !editor.removed) { + editor.remove(); + return; + } + if (!automatic) { + editor.editorManager.off('beforeunload', editor._beforeUnload); + if (editor.theme && editor.theme.destroy) { + editor.theme.destroy(); + } + safeDestroy(selection); + safeDestroy(dom); + } + restoreForm(editor); + clearDomReferences(editor); + editor.destroyed = 1; + }; + + var DOM$7 = DOMUtils.DOM; + var extend$4 = $_a5gegtjje5o2pum.extend; + var each$22 = $_a5gegtjje5o2pum.each; + var resolve$4 = $_a5gegtjje5o2pum.resolve; + var ie$2 = $_9bd8pn9je5o2pp2.ie; + var Editor = function (id, settings, editorManager) { + var self = this; + var documentBaseUrl, baseUri; + documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL; + baseUri = editorManager.baseURI; + settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings); + self.settings = settings; + AddOnManager.language = settings.language || 'en'; + AddOnManager.languageLoad = settings.language_load; + AddOnManager.baseURL = editorManager.baseURL; + self.id = id; + self.setDirty(false); + self.plugins = {}; + self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri }); + self.baseURI = baseUri; + self.contentCSS = []; + self.contentStyles = []; + self.shortcuts = new Shortcuts(self); + self.loadedCSS = {}; + self.editorCommands = new EditorCommands(self); + self.suffix = editorManager.suffix; + self.editorManager = editorManager; + self.inline = settings.inline; + self.buttons = {}; + self.menuItems = {}; + if (settings.cache_suffix) { + $_9bd8pn9je5o2pp2.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, ''); + } + if (settings.override_viewport === false) { + $_9bd8pn9je5o2pp2.overrideViewPort = false; + } + editorManager.fire('SetupEditor', { editor: self }); + self.execCallback('setup', self); + self.$ = DomQuery.overrideDefaults(function () { + return { + context: self.inline ? self.getBody() : self.getDoc(), + element: self.getBody() + }; + }); + }; + Editor.prototype = { + render: function () { + $_4352oh4bje5o2qnn.render(this); + }, + focus: function (skipFocus) { + $_llx5i48je5o2qna.focus(this, skipFocus); + }, + execCallback: function (name) { + var self = this; + var callback = self.settings[name], scope; + if (!callback) { + return; + } + if (self.callbackLookup && (scope = self.callbackLookup[name])) { + callback = scope.func; + scope = scope.scope; + } + if (typeof callback === 'string') { + scope = callback.replace(/\.\w+$/, ''); + scope = scope ? resolve$4(scope) : 0; + callback = resolve$4(callback); + self.callbackLookup = self.callbackLookup || {}; + self.callbackLookup[name] = { + func: callback, + scope: scope + }; + } + return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1)); + }, + translate: function (text) { + if (text && $_a5gegtjje5o2pum.is(text, 'string')) { + var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n; + text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function (a, b) { + return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}'; + }); + } + return this.editorManager.translate(text); + }, + getLang: function (name, defaultVal) { + return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}'); + }, + getParam: function (name, defaultVal, type) { + return getParam(this, name, defaultVal, type); + }, + nodeChanged: function (args) { + this._nodeChangeDispatcher.nodeChanged(args); + }, + addButton: function (name, settings) { + var self = this; + if (settings.cmd) { + settings.onclick = function () { + self.execCommand(settings.cmd); + }; + } + if (settings.stateSelector && typeof settings.active === 'undefined') { + settings.active = false; + } + if (!settings.text && !settings.icon) { + settings.icon = name; + } + self.buttons = self.buttons; + settings.tooltip = settings.tooltip || settings.title; + self.buttons[name] = settings; + }, + addSidebar: function (name, settings) { + return $_8qp82n70je5o2r3u.add(this, name, settings); + }, + addMenuItem: function (name, settings) { + var self = this; + if (settings.cmd) { + settings.onclick = function () { + self.execCommand(settings.cmd); + }; + } + self.menuItems = self.menuItems; + self.menuItems[name] = settings; + }, + addContextToolbar: function (predicate, items) { + var self = this; + var selector; + self.contextToolbars = self.contextToolbars || []; + if (typeof predicate === 'string') { + selector = predicate; + predicate = function (elm) { + return self.dom.is(elm, selector); + }; + } + self.contextToolbars.push({ + id: $_2bgddd4wje5o2qqo.uuid('mcet'), + predicate: predicate, + items: items + }); + }, + addCommand: function (name, callback, scope) { + this.editorCommands.addCommand(name, callback, scope); + }, + addQueryStateHandler: function (name, callback, scope) { + this.editorCommands.addQueryStateHandler(name, callback, scope); + }, + addQueryValueHandler: function (name, callback, scope) { + this.editorCommands.addQueryValueHandler(name, callback, scope); + }, + addShortcut: function (pattern, desc, cmdFunc, scope) { + this.shortcuts.add(pattern, desc, cmdFunc, scope); + }, + execCommand: function (cmd, ui, value, args) { + return this.editorCommands.execCommand(cmd, ui, value, args); + }, + queryCommandState: function (cmd) { + return this.editorCommands.queryCommandState(cmd); + }, + queryCommandValue: function (cmd) { + return this.editorCommands.queryCommandValue(cmd); + }, + queryCommandSupported: function (cmd) { + return this.editorCommands.queryCommandSupported(cmd); + }, + show: function () { + var self = this; + if (self.hidden) { + self.hidden = false; + if (self.inline) { + self.getBody().contentEditable = true; + } else { + DOM$7.show(self.getContainer()); + DOM$7.hide(self.id); + } + self.load(); + self.fire('show'); + } + }, + hide: function () { + var self = this, doc = self.getDoc(); + if (!self.hidden) { + if (ie$2 && doc && !self.inline) { + doc.execCommand('SelectAll'); + } + self.save(); + if (self.inline) { + self.getBody().contentEditable = false; + if (self === self.editorManager.focusedEditor) { + self.editorManager.focusedEditor = null; + } + } else { + DOM$7.hide(self.getContainer()); + DOM$7.setStyle(self.id, 'display', self.orgDisplay); + } + self.hidden = true; + self.fire('hide'); + } + }, + isHidden: function () { + return !!this.hidden; + }, + setProgressState: function (state, time) { + this.fire('ProgressState', { + state: state, + time: time + }); + }, + load: function (args) { + var self = this; + var elm = self.getElement(), html; + if (self.removed) { + return ''; + } + if (elm) { + args = args || {}; + args.load = true; + html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args); + args.element = elm; + if (!args.no_events) { + self.fire('LoadContent', args); + } + args.element = elm = null; + return html; + } + }, + save: function (args) { + var self = this; + var elm = self.getElement(), html, form; + if (!elm || !self.initialized || self.removed) { + return; + } + args = args || {}; + args.save = true; + args.element = elm; + html = args.content = self.getContent(args); + if (!args.no_events) { + self.fire('SaveContent', args); + } + if (args.format === 'raw') { + self.fire('RawSaveContent', args); + } + html = args.content; + if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) { + if (!self.inline) { + elm.innerHTML = html; + } + if (form = DOM$7.getParent(self.id, 'form')) { + each$22(form.elements, function (elm) { + if (elm.name === self.id) { + elm.value = html; + return false; + } + }); + } + } else { + elm.value = html; + } + args.element = elm = null; + if (args.set_dirty !== false) { + self.setDirty(false); + } + return html; + }, + setContent: function (content, args) { + return setContent$1(this, content, args); + }, + getContent: function (args) { + return getContent$1(this, args); + }, + insertContent: function (content, args) { + if (args) { + content = extend$4({ content: content }, args); + } + this.execCommand('mceInsertContent', false, content); + }, + isDirty: function () { + return !this.isNotDirty; + }, + setDirty: function (state) { + var oldState = !this.isNotDirty; + this.isNotDirty = !state; + if (state && state !== oldState) { + this.fire('dirty'); + } + }, + setMode: function (mode) { + $_7uzwj846je5o2qmw.setMode(this, mode); + }, + getContainer: function () { + var self = this; + if (!self.container) { + self.container = DOM$7.get(self.editorContainer || self.id + '_parent'); + } + return self.container; + }, + getContentAreaContainer: function () { + return this.contentAreaContainer; + }, + getElement: function () { + if (!this.targetElm) { + this.targetElm = DOM$7.get(this.id); + } + return this.targetElm; + }, + getWin: function () { + var self = this; + var elm; + if (!self.contentWindow) { + elm = self.iframeElement; + if (elm) { + self.contentWindow = elm.contentWindow; + } + } + return self.contentWindow; + }, + getDoc: function () { + var self = this; + var win; + if (!self.contentDocument) { + win = self.getWin(); + if (win) { + self.contentDocument = win.document; + } + } + return self.contentDocument; + }, + getBody: function () { + var doc = this.getDoc(); + return this.bodyElement || (doc ? doc.body : null); + }, + convertURL: function (url, name, elm) { + var self = this, settings = self.settings; + if (settings.urlconverter_callback) { + return self.execCallback('urlconverter_callback', url, elm, true, name); + } + if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) { + return url; + } + if (settings.relative_urls) { + return self.documentBaseURI.toRelative(url); + } + url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host); + return url; + }, + addVisual: function (elm) { + var self = this; + var settings = self.settings; + var dom = self.dom; + var cls; + elm = elm || self.getBody(); + if (self.hasVisual === undefined) { + self.hasVisual = settings.visual; + } + each$22(dom.select('table,a', elm), function (elm) { + var value; + switch (elm.nodeName) { + case 'TABLE': + cls = settings.visual_table_class || 'mce-item-table'; + value = dom.getAttrib(elm, 'border'); + if ((!value || value === '0') && self.hasVisual) { + dom.addClass(elm, cls); + } else { + dom.removeClass(elm, cls); + } + return; + case 'A': + if (!dom.getAttrib(elm, 'href', false)) { + value = dom.getAttrib(elm, 'name') || elm.id; + cls = settings.visual_anchor_class || 'mce-item-anchor'; + if (value && self.hasVisual) { + dom.addClass(elm, cls); + } else { + dom.removeClass(elm, cls); + } + } + return; + } + }); + self.fire('VisualAid', { + element: elm, + hasVisual: self.hasVisual + }); + }, + remove: function () { + remove$5(this); + }, + destroy: function (automatic) { + destroy(this, automatic); + }, + uploadImages: function (callback) { + return this.editorUpload.uploadImages(callback); + }, + _scanForImages: function () { + return this.editorUpload.scanForImages(); + } + }; + extend$4(Editor.prototype, EditorObservable$1); + + var isEditorUIElement = function (elm) { + return elm.className.toString().indexOf('mce-') !== -1; + }; + var $_97d4iv77je5o2r4x = { isEditorUIElement: isEditorUIElement }; + + var isManualNodeChange = function (e) { + return e.type === 'nodechange' && e.selectionChange; + }; + var registerPageMouseUp = function (editor, throttledStore) { + var mouseUpPage = function () { + throttledStore.throttle(); + }; + DOMUtils.DOM.bind(document, 'mouseup', mouseUpPage); + editor.on('remove', function () { + DOMUtils.DOM.unbind(document, 'mouseup', mouseUpPage); + }); + }; + var registerFocusOut = function (editor) { + editor.on('focusout', function () { + $_fnd7h33zje5o2qly.store(editor); + }); + }; + var registerMouseUp = function (editor, throttledStore) { + editor.on('mouseup touchend', function (e) { + throttledStore.throttle(); + }); + }; + var registerEditorEvents = function (editor, throttledStore) { + var browser = $_2hq237mje5o2pvu.detect().browser; + if (browser.isIE() || browser.isEdge()) { + registerFocusOut(editor); + } else { + registerMouseUp(editor, throttledStore); + } + editor.on('keyup nodechange', function (e) { + if (!isManualNodeChange(e)) { + $_fnd7h33zje5o2qly.store(editor); + } + }); + }; + var register$3 = function (editor) { + var throttledStore = $_7qjijn58je5o2qsg.first(function () { + $_fnd7h33zje5o2qly.store(editor); + }, 0); + if (editor.inline) { + registerPageMouseUp(editor, throttledStore); + } + editor.on('init', function () { + registerEditorEvents(editor, throttledStore); + }); + editor.on('remove', function () { + throttledStore.cancel(); + }); + }; + var $_eam19v78je5o2r4y = { register: register$3 }; + + var documentFocusInHandler; + var DOM$8 = DOMUtils.DOM; + var isEditorUIElement$1 = function (elm) { + return $_97d4iv77je5o2r4x.isEditorUIElement(elm); + }; + var isUIElement = function (editor, elm) { + var customSelector = editor ? editor.settings.custom_ui_selector : ''; + var parent = DOM$8.getParent(elm, function (elm) { + return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false); + }); + return parent !== null; + }; + var getActiveElement = function () { + try { + return document.activeElement; + } catch (ex) { + return document.body; + } + }; + var registerEvents = function (editorManager, e) { + var editor = e.editor; + $_eam19v78je5o2r4y.register(editor); + editor.on('focusin', function () { + var self = this; + var focusedEditor = editorManager.focusedEditor; + if (focusedEditor !== self) { + if (focusedEditor) { + focusedEditor.fire('blur', { focusedEditor: self }); + } + editorManager.setActive(self); + editorManager.focusedEditor = self; + self.fire('focus', { blurredEditor: focusedEditor }); + self.focus(true); + } + }); + editor.on('focusout', function () { + var self = this; + $_db41wogje5o2ps3.setEditorTimeout(self, function () { + var focusedEditor = editorManager.focusedEditor; + if (!isUIElement(self, getActiveElement()) && focusedEditor === self) { + self.fire('blur', { focusedEditor: null }); + editorManager.focusedEditor = null; + } + }); + }); + if (!documentFocusInHandler) { + documentFocusInHandler = function (e) { + var activeEditor = editorManager.activeEditor; + var target; + target = e.target; + if (activeEditor && target.ownerDocument === document) { + if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) { + activeEditor.fire('blur', { focusedEditor: null }); + editorManager.focusedEditor = null; + } + } + }; + DOM$8.bind(document, 'focusin', documentFocusInHandler); + } + }; + var unregisterDocumentEvents = function (editorManager, e) { + if (editorManager.focusedEditor === e.editor) { + editorManager.focusedEditor = null; + } + if (!editorManager.activeEditor) { + DOM$8.unbind(document, 'focusin', documentFocusInHandler); + documentFocusInHandler = null; + } + }; + var setup$11 = function (editorManager) { + editorManager.on('AddEditor', $_enfhkv6je5o2ply.curry(registerEvents, editorManager)); + editorManager.on('RemoveEditor', $_enfhkv6je5o2ply.curry(unregisterDocumentEvents, editorManager)); + }; + var $_cuv7pv76je5o2r4u = { + setup: setup$11, + isEditorUIElement: isEditorUIElement$1, + isUIElement: isUIElement + }; + + var data = {}; + var code = 'en'; + var $_34fkt779je5o2r5d = { + setCode: function (newCode) { + if (newCode) { + code = newCode; + this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false; + } + }, + getCode: function () { + return code; + }, + rtl: false, + add: function (code, items) { + var langData = data[code]; + if (!langData) { + data[code] = langData = {}; + } + for (var name_1 in items) { + langData[name_1] = items[name_1]; + } + this.setCode(code); + }, + translate: function (text) { + var langData = data[code] || {}; + var toString = function (obj) { + if ($_a5gegtjje5o2pum.is(obj, 'function')) { + return Object.prototype.toString.call(obj); + } + return !isEmpty(obj) ? '' + obj : ''; + }; + var isEmpty = function (text) { + return text === '' || text === null || $_a5gegtjje5o2pum.is(text, 'undefined'); + }; + var getLangData = function (text) { + text = toString(text); + return $_a5gegtjje5o2pum.hasOwn(langData, text) ? toString(langData[text]) : text; + }; + if (isEmpty(text)) { + return ''; + } + if ($_a5gegtjje5o2pum.is(text, 'object') && $_a5gegtjje5o2pum.hasOwn(text, 'raw')) { + return toString(text.raw); + } + if ($_a5gegtjje5o2pum.is(text, 'array')) { + var values_1 = text.slice(1); + text = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) { + return $_a5gegtjje5o2pum.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1; + }); + } + return getLangData(text).replace(/{context:\w+}$/, ''); + }, + data: data + }; + + var DOM$9 = DOMUtils.DOM; + var explode$5 = $_a5gegtjje5o2pum.explode; + var each$23 = $_a5gegtjje5o2pum.each; + var extend$5 = $_a5gegtjje5o2pum.extend; + var instanceCounter = 0; + var beforeUnloadDelegate; + var EditorManager; + var boundGlobalEvents = false; + var legacyEditors = []; + var editors = []; + var isValidLegacyKey = function (id) { + return id !== 'length'; + }; + var globalEventDelegate = function (e) { + each$23(EditorManager.get(), function (editor) { + if (e.type === 'scroll') { + editor.fire('ScrollWindow', e); + } else { + editor.fire('ResizeWindow', e); + } + }); + }; + var toggleGlobalEvents = function (state) { + if (state !== boundGlobalEvents) { + if (state) { + DomQuery(window).on('resize scroll', globalEventDelegate); + } else { + DomQuery(window).off('resize scroll', globalEventDelegate); + } + boundGlobalEvents = state; + } + }; + var removeEditorFromList = function (targetEditor) { + var oldEditors = editors; + delete legacyEditors[targetEditor.id]; + for (var i = 0; i < legacyEditors.length; i++) { + if (legacyEditors[i] === targetEditor) { + legacyEditors.splice(i, 1); + break; + } + } + editors = $_bwcteb4je5o2pl4.filter(editors, function (editor) { + return targetEditor !== editor; + }); + if (EditorManager.activeEditor === targetEditor) { + EditorManager.activeEditor = editors.length > 0 ? editors[0] : null; + } + if (EditorManager.focusedEditor === targetEditor) { + EditorManager.focusedEditor = null; + } + return oldEditors.length !== editors.length; + }; + var purgeDestroyedEditor = function (editor) { + if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) { + removeEditorFromList(editor); + editor.unbindAllNativeEvents(); + editor.destroy(true); + editor.removed = true; + editor = null; + } + return editor; + }; + EditorManager = { + defaultSettings: {}, + $: DomQuery, + majorVersion: '4', + minorVersion: '7.9', + releaseDate: '2018-02-27', + editors: legacyEditors, + i18n: $_34fkt779je5o2r5d, + activeEditor: null, + settings: {}, + setup: function () { + var self = this; + var baseURL, documentBaseURL, suffix = '', preInit, src; + documentBaseURL = URI.getDocumentBaseUrl(document.location); + if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) { + documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(documentBaseURL)) { + documentBaseURL += '/'; + } + } + preInit = window.tinymce || window.tinyMCEPreInit; + if (preInit) { + baseURL = preInit.base || preInit.baseURL; + suffix = preInit.suffix; + } else { + var scripts = document.getElementsByTagName('script'); + for (var i = 0; i < scripts.length; i++) { + src = scripts[i].src; + var srcScript = src.substring(src.lastIndexOf('/')); + if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) { + if (srcScript.indexOf('.min') !== -1) { + suffix = '.min'; + } + baseURL = src.substring(0, src.lastIndexOf('/')); + break; + } + } + if (!baseURL && document.currentScript) { + src = document.currentScript.src; + if (src.indexOf('.min') !== -1) { + suffix = '.min'; + } + baseURL = src.substring(0, src.lastIndexOf('/')); + } + } + self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL); + self.documentBaseURL = documentBaseURL; + self.baseURI = new URI(self.baseURL); + self.suffix = suffix; + $_cuv7pv76je5o2r4u.setup(self); + }, + overrideDefaults: function (defaultSettings) { + var baseUrl, suffix; + baseUrl = defaultSettings.base_url; + if (baseUrl) { + this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, '')); + this.baseURI = new URI(this.baseURL); + } + suffix = defaultSettings.suffix; + if (defaultSettings.suffix) { + this.suffix = suffix; + } + this.defaultSettings = defaultSettings; + var pluginBaseUrls = defaultSettings.plugin_base_urls; + for (var name_1 in pluginBaseUrls) { + AddOnManager.PluginManager.urls[name_1] = pluginBaseUrls[name_1]; + } + }, + init: function (settings) { + var self = this; + var result, invalidInlineTargets; + invalidInlineTargets = $_a5gegtjje5o2pum.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' '); + var isInvalidInlineTarget = function (settings, elm) { + return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets; + }; + var createId = function (elm) { + var id = elm.id; + if (!id) { + id = elm.name; + if (id && !DOM$9.get(id)) { + id = elm.name; + } else { + id = DOM$9.uniqueId(); + } + elm.setAttribute('id', id); + } + return id; + }; + var execCallback = function (name) { + var callback = settings[name]; + if (!callback) { + return; + } + return callback.apply(self, Array.prototype.slice.call(arguments, 2)); + }; + var hasClass = function (elm, className) { + return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className); + }; + var findTargets = function (settings) { + var l, targets = []; + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11) { + $_axrd1j4hje5o2qor.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/'); + return []; + } + if (settings.types) { + each$23(settings.types, function (type) { + targets = targets.concat(DOM$9.select(type.selector)); + }); + return targets; + } else if (settings.selector) { + return DOM$9.select(settings.selector); + } else if (settings.target) { + return [settings.target]; + } + switch (settings.mode) { + case 'exact': + l = settings.elements || ''; + if (l.length > 0) { + each$23(explode$5(l), function (id) { + var elm; + if (elm = DOM$9.get(id)) { + targets.push(elm); + } else { + each$23(document.forms, function (f) { + each$23(f.elements, function (e) { + if (e.name === id) { + id = 'mce_editor_' + instanceCounter++; + DOM$9.setAttrib(e, 'id', id); + targets.push(e); + } + }); + }); + } + }); + } + break; + case 'textareas': + case 'specific_textareas': + each$23(DOM$9.select('textarea'), function (elm) { + if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) { + return; + } + if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) { + targets.push(elm); + } + }); + break; + } + return targets; + }; + var provideResults = function (editors) { + result = editors; + }; + var initEditors = function () { + var initCount = 0; + var editors = []; + var targets; + var createEditor = function (id, settings, targetElm) { + var editor = new Editor(id, settings, self); + editors.push(editor); + editor.on('init', function () { + if (++initCount === targets.length) { + provideResults(editors); + } + }); + editor.targetElm = editor.targetElm || targetElm; + editor.render(); + }; + DOM$9.unbind(window, 'ready', initEditors); + execCallback('onpageload'); + targets = DomQuery.unique(findTargets(settings)); + if (settings.types) { + each$23(settings.types, function (type) { + $_a5gegtjje5o2pum.each(targets, function (elm) { + if (DOM$9.is(elm, type.selector)) { + createEditor(createId(elm), extend$5({}, settings, type), elm); + return false; + } + return true; + }); + }); + return; + } + $_a5gegtjje5o2pum.each(targets, function (elm) { + purgeDestroyedEditor(self.get(elm.id)); + }); + targets = $_a5gegtjje5o2pum.grep(targets, function (elm) { + return !self.get(elm.id); + }); + if (targets.length === 0) { + provideResults([]); + } else { + each$23(targets, function (elm) { + if (isInvalidInlineTarget(settings, elm)) { + $_axrd1j4hje5o2qor.initError('Could not initialize inline editor on invalid inline target element', elm); + } else { + createEditor(createId(elm), settings, elm); + } + }); + } + }; + self.settings = settings; + DOM$9.bind(window, 'ready', initEditors); + return new promiseObj(function (resolve) { + if (result) { + resolve(result); + } else { + provideResults = function (editors) { + resolve(editors); + }; + } + }); + }, + get: function (id) { + if (arguments.length === 0) { + return editors.slice(0); + } else if ($_be3q8w12je5o2pxj.isString(id)) { + return $_bwcteb4je5o2pl4.find(editors, function (editor) { + return editor.id === id; + }).getOr(null); + } else if ($_be3q8w12je5o2pxj.isNumber(id)) { + return editors[id] ? editors[id] : null; + } else { + return null; + } + }, + add: function (editor) { + var self = this; + var existingEditor; + existingEditor = legacyEditors[editor.id]; + if (existingEditor === editor) { + return editor; + } + if (self.get(editor.id) === null) { + if (isValidLegacyKey(editor.id)) { + legacyEditors[editor.id] = editor; + } + legacyEditors.push(editor); + editors.push(editor); + } + toggleGlobalEvents(true); + self.activeEditor = editor; + self.fire('AddEditor', { editor: editor }); + if (!beforeUnloadDelegate) { + beforeUnloadDelegate = function () { + self.fire('BeforeUnload'); + }; + DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate); + } + return editor; + }, + createEditor: function (id, settings) { + return this.add(new Editor(id, settings, this)); + }, + remove: function (selector) { + var self = this; + var i, editor; + if (!selector) { + for (i = editors.length - 1; i >= 0; i--) { + self.remove(editors[i]); + } + return; + } + if ($_be3q8w12je5o2pxj.isString(selector)) { + selector = selector.selector || selector; + each$23(DOM$9.select(selector), function (elm) { + editor = self.get(elm.id); + if (editor) { + self.remove(editor); + } + }); + return; + } + editor = selector; + if ($_be3q8w12je5o2pxj.isNull(self.get(editor.id))) { + return null; + } + if (removeEditorFromList(editor)) { + self.fire('RemoveEditor', { editor: editor }); + } + if (editors.length === 0) { + DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate); + } + editor.remove(); + toggleGlobalEvents(editors.length > 0); + return editor; + }, + execCommand: function (cmd, ui, value) { + var self = this, editor = self.get(value); + switch (cmd) { + case 'mceAddEditor': + if (!self.get(value)) { + new Editor(value, self.settings, self).render(); + } + return true; + case 'mceRemoveEditor': + if (editor) { + editor.remove(); + } + return true; + case 'mceToggleEditor': + if (!editor) { + self.execCommand('mceAddEditor', 0, value); + return true; + } + if (editor.isHidden()) { + editor.show(); + } else { + editor.hide(); + } + return true; + } + if (self.activeEditor) { + return self.activeEditor.execCommand(cmd, ui, value); + } + return false; + }, + triggerSave: function () { + each$23(editors, function (editor) { + editor.save(); + }); + }, + addI18n: function (code, items) { + $_34fkt779je5o2r5d.add(code, items); + }, + translate: function (text) { + return $_34fkt779je5o2r5d.translate(text); + }, + setActive: function (editor) { + var activeEditor = this.activeEditor; + if (this.activeEditor !== editor) { + if (activeEditor) { + activeEditor.fire('deactivate', { relatedTarget: editor }); + } + editor.fire('activate', { relatedTarget: activeEditor }); + } + this.activeEditor = editor; + } + }; + extend$5(EditorManager, $_8mfz0u44je5o2qmp); + EditorManager.setup(); + var EditorManager$1 = EditorManager; + + function RangeUtils(dom) { + var walk = function (rng, callback) { + return $_1jk9p5lje5o2qv9.walk(dom, rng, callback); + }; + var split = $_3ksquu3nje5o2qg7.split; + var normalize = function (rng) { + return $_1t8l6x3xje5o2qlk.normalize(dom, rng).fold($_enfhkv6je5o2ply.constant(false), function (normalizedRng) { + rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset); + rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset); + return true; + }); + }; + return { + walk: walk, + split: split, + normalize: normalize + }; + } + (function (RangeUtils) { + RangeUtils.compareRanges = $_aieo7z3yje5o2qlw.isEq; + RangeUtils.getCaretRangeFromPoint = $_drs2u868je5o2qyu.fromPoint; + RangeUtils.getSelectedNode = getSelectedNode; + RangeUtils.getNode = getNode; + }(RangeUtils || (RangeUtils = {}))); + var RangeUtils$1 = RangeUtils; + + var min = Math.min; + var max = Math.max; + var round$1 = Math.round; + var relativePosition = function (rect, targetRect, rel) { + var x, y, w, h, targetW, targetH; + x = targetRect.x; + y = targetRect.y; + w = rect.w; + h = rect.h; + targetW = targetRect.w; + targetH = targetRect.h; + rel = (rel || '').split(''); + if (rel[0] === 'b') { + y += targetH; + } + if (rel[1] === 'r') { + x += targetW; + } + if (rel[0] === 'c') { + y += round$1(targetH / 2); + } + if (rel[1] === 'c') { + x += round$1(targetW / 2); + } + if (rel[3] === 'b') { + y -= h; + } + if (rel[4] === 'r') { + x -= w; + } + if (rel[3] === 'c') { + y -= round$1(h / 2); + } + if (rel[4] === 'c') { + x -= round$1(w / 2); + } + return create$2(x, y, w, h); + }; + var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) { + var pos, i; + for (i = 0; i < rels.length; i++) { + pos = relativePosition(rect, targetRect, rels[i]); + if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) { + return rels[i]; + } + } + return null; + }; + var inflate = function (rect, w, h) { + return create$2(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2); + }; + var intersect = function (rect, cropRect) { + var x1, y1, x2, y2; + x1 = max(rect.x, cropRect.x); + y1 = max(rect.y, cropRect.y); + x2 = min(rect.x + rect.w, cropRect.x + cropRect.w); + y2 = min(rect.y + rect.h, cropRect.y + cropRect.h); + if (x2 - x1 < 0 || y2 - y1 < 0) { + return null; + } + return create$2(x1, y1, x2 - x1, y2 - y1); + }; + var clamp$1 = function (rect, clampRect, fixedSize) { + var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2; + x1 = rect.x; + y1 = rect.y; + x2 = rect.x + rect.w; + y2 = rect.y + rect.h; + cx2 = clampRect.x + clampRect.w; + cy2 = clampRect.y + clampRect.h; + underflowX1 = max(0, clampRect.x - x1); + underflowY1 = max(0, clampRect.y - y1); + overflowX2 = max(0, x2 - cx2); + overflowY2 = max(0, y2 - cy2); + x1 += underflowX1; + y1 += underflowY1; + if (fixedSize) { + x2 += underflowX1; + y2 += underflowY1; + x1 -= overflowX2; + y1 -= overflowY2; + } + x2 -= overflowX2; + y2 -= overflowY2; + return create$2(x1, y1, x2 - x1, y2 - y1); + }; + var create$2 = function (x, y, w, h) { + return { + x: x, + y: y, + w: w, + h: h + }; + }; + var fromClientRect = function (clientRect) { + return create$2(clientRect.left, clientRect.top, clientRect.width, clientRect.height); + }; + var $_2r1euc7bje5o2r5k = { + inflate: inflate, + relativePosition: relativePosition, + findBestRelativePosition: findBestRelativePosition, + intersect: intersect, + clamp: clamp$1, + create: create$2, + fromClientRect: fromClientRect + }; + + var types = {}; + var $_cxa5dr7cje5o2r5q = { + add: function (type, typeClass) { + types[type.toLowerCase()] = typeClass; + }, + has: function (type) { + return !!types[type.toLowerCase()]; + }, + get: function (type) { + var lctype = type.toLowerCase(); + var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null; + if (controlType === null) { + throw new Error('Could not find module for type: ' + type); + } + return controlType; + }, + create: function (type, settings) { + var ControlType; + if (typeof type === 'string') { + settings = settings || {}; + settings.type = type; + } else { + settings = type; + type = settings.type; + } + type = type.toLowerCase(); + ControlType = types[type]; + if (!ControlType) { + throw new Error('Could not find control by type: ' + type); + } + ControlType = new ControlType(settings); + ControlType.type = type; + return ControlType; + } + }; + + var each$24 = $_a5gegtjje5o2pum.each; + var extend$6 = $_a5gegtjje5o2pum.extend; + var extendClass; + var initializing; + var Class = function () { + }; + Class.extend = extendClass = function (prop) { + var self = this; + var _super = self.prototype; + var prototype, name, member; + var Class = function () { + var i, mixins, mixin; + var self = this; + if (!initializing) { + if (self.init) { + self.init.apply(self, arguments); + } + mixins = self.Mixins; + if (mixins) { + i = mixins.length; + while (i--) { + mixin = mixins[i]; + if (mixin.init) { + mixin.init.apply(self, arguments); + } + } + } + } + }; + var dummy = function () { + return this; + }; + var createMethod = function (name, fn) { + return function () { + var self = this; + var tmp = self._super; + var ret; + self._super = _super[name]; + ret = fn.apply(self, arguments); + self._super = tmp; + return ret; + }; + }; + initializing = true; + prototype = new self(); + initializing = false; + if (prop.Mixins) { + each$24(prop.Mixins, function (mixin) { + for (var name_1 in mixin) { + if (name_1 !== 'init') { + prop[name_1] = mixin[name_1]; + } + } + }); + if (_super.Mixins) { + prop.Mixins = _super.Mixins.concat(prop.Mixins); + } + } + if (prop.Methods) { + each$24(prop.Methods.split(','), function (name) { + prop[name] = dummy; + }); + } + if (prop.Properties) { + each$24(prop.Properties.split(','), function (name) { + var fieldName = '_' + name; + prop[name] = function (value) { + var self = this; + if (value !== undefined) { + self[fieldName] = value; + return self; + } + return self[fieldName]; + }; + }); + } + if (prop.Statics) { + each$24(prop.Statics, function (func, name) { + Class[name] = func; + }); + } + if (prop.Defaults && _super.Defaults) { + prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults); + } + for (name in prop) { + member = prop[name]; + if (typeof member === 'function' && _super[name]) { + prototype[name] = createMethod(name, member); + } else { + prototype[name] = member; + } + } + Class.prototype = prototype; + Class.constructor = Class; + Class.extend = extendClass; + return Class; + }; + + var min$1 = Math.min; + var max$1 = Math.max; + var round$2 = Math.round; + var Color = function (value) { + var self = {}; + var r = 0, g = 0, b = 0; + var rgb2hsv = function (r, g, b) { + var h, s, v, d, minRGB, maxRGB; + h = 0; + s = 0; + v = 0; + r = r / 255; + g = g / 255; + b = b / 255; + minRGB = min$1(r, min$1(g, b)); + maxRGB = max$1(r, max$1(g, b)); + if (minRGB === maxRGB) { + v = minRGB; + return { + h: 0, + s: 0, + v: v * 100 + }; + } + d = r === minRGB ? g - b : b === minRGB ? r - g : b - r; + h = r === minRGB ? 3 : b === minRGB ? 1 : 5; + h = 60 * (h - d / (maxRGB - minRGB)); + s = (maxRGB - minRGB) / maxRGB; + v = maxRGB; + return { + h: round$2(h), + s: round$2(s * 100), + v: round$2(v * 100) + }; + }; + var hsvToRgb = function (hue, saturation, brightness) { + var side, chroma, x, match; + hue = (parseInt(hue, 10) || 0) % 360; + saturation = parseInt(saturation, 10) / 100; + brightness = parseInt(brightness, 10) / 100; + saturation = max$1(0, min$1(saturation, 1)); + brightness = max$1(0, min$1(brightness, 1)); + if (saturation === 0) { + r = g = b = round$2(255 * brightness); + return; + } + side = hue / 60; + chroma = brightness * saturation; + x = chroma * (1 - Math.abs(side % 2 - 1)); + match = brightness - chroma; + switch (Math.floor(side)) { + case 0: + r = chroma; + g = x; + b = 0; + break; + case 1: + r = x; + g = chroma; + b = 0; + break; + case 2: + r = 0; + g = chroma; + b = x; + break; + case 3: + r = 0; + g = x; + b = chroma; + break; + case 4: + r = x; + g = 0; + b = chroma; + break; + case 5: + r = chroma; + g = 0; + b = x; + break; + default: + r = g = b = 0; + } + r = round$2(255 * (r + match)); + g = round$2(255 * (g + match)); + b = round$2(255 * (b + match)); + }; + var toHex = function () { + var hex = function (val) { + val = parseInt(val, 10).toString(16); + return val.length > 1 ? val : '0' + val; + }; + return '#' + hex(r) + hex(g) + hex(b); + }; + var toRgb = function () { + return { + r: r, + g: g, + b: b + }; + }; + var toHsv = function () { + return rgb2hsv(r, g, b); + }; + var parse = function (value) { + var matches; + if (typeof value === 'object') { + if ('r' in value) { + r = value.r; + g = value.g; + b = value.b; + } else if ('v' in value) { + hsvToRgb(value.h, value.s, value.v); + } + } else { + if (matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value)) { + r = parseInt(matches[1], 10); + g = parseInt(matches[2], 10); + b = parseInt(matches[3], 10); + } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) { + r = parseInt(matches[1], 16); + g = parseInt(matches[2], 16); + b = parseInt(matches[3], 16); + } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) { + r = parseInt(matches[1] + matches[1], 16); + g = parseInt(matches[2] + matches[2], 16); + b = parseInt(matches[3] + matches[3], 16); + } + } + r = r < 0 ? 0 : r > 255 ? 255 : r; + g = g < 0 ? 0 : g > 255 ? 255 : g; + b = b < 0 ? 0 : b > 255 ? 255 : b; + return self; + }; + if (value) { + parse(value); + } + self.toRgb = toRgb; + self.toHsv = toHsv; + self.toHex = toHex; + self.parse = parse; + return self; + }; + + var serialize = function (o, quote) { + var i, v, t, name; + quote = quote || '"'; + if (o === null) { + return 'null'; + } + t = typeof o; + if (t === 'string') { + v = '\bb\tt\nn\ff\rr""\'\'\\\\'; + return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function (a, b) { + if (quote === '"' && a === '\'') { + return a; + } + i = v.indexOf(b); + if (i + 1) { + return '\\' + v.charAt(i + 1); + } + a = b.charCodeAt().toString(16); + return '\\u' + '0000'.substring(a.length) + a; + }) + quote; + } + if (t === 'object') { + if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') { + for (i = 0, v = '['; i < o.length; i++) { + v += (i > 0 ? ',' : '') + serialize(o[i], quote); + } + return v + ']'; + } + v = '{'; + for (name in o) { + if (o.hasOwnProperty(name)) { + v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : ''; + } + } + return v + '}'; + } + return '' + o; + }; + var $_6tjbfu7fje5o2r61 = { + serialize: serialize, + parse: function (text) { + try { + return JSON.parse(text); + } catch (ex) { + } + } + }; + + var $_3nz9gz7gje5o2r63 = { + callbacks: {}, + count: 0, + send: function (settings) { + var self = this, dom = DOMUtils.DOM, count = settings.count !== undefined ? settings.count : self.count; + var id = 'tinymce_jsonp_' + count; + self.callbacks[count] = function (json) { + dom.remove(id); + delete self.callbacks[count]; + settings.callback(json); + }; + dom.add(dom.doc.body, 'script', { + id: id, + src: settings.url, + type: 'text/javascript' + }); + self.count++; + } + }; + + var XHR = { + send: function (settings) { + var xhr, count = 0; + var ready = function () { + if (!settings.async || xhr.readyState === 4 || count++ > 10000) { + if (settings.success && count < 10000 && xhr.status === 200) { + settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings); + } else if (settings.error) { + settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings); + } + xhr = null; + } else { + setTimeout(ready, 10); + } + }; + settings.scope = settings.scope || this; + settings.success_scope = settings.success_scope || settings.scope; + settings.error_scope = settings.error_scope || settings.scope; + settings.async = settings.async === false ? false : true; + settings.data = settings.data || ''; + XHR.fire('beforeInitialize', { settings: settings }); + xhr = new XMLHttpRequest(); + if (xhr) { + if (xhr.overrideMimeType) { + xhr.overrideMimeType(settings.content_type); + } + xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async); + if (settings.crossDomain) { + xhr.withCredentials = true; + } + if (settings.content_type) { + xhr.setRequestHeader('Content-Type', settings.content_type); + } + if (settings.requestheaders) { + $_a5gegtjje5o2pum.each(settings.requestheaders, function (header) { + xhr.setRequestHeader(header.key, header.value); + }); + } + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr = XHR.fire('beforeSend', { + xhr: xhr, + settings: settings + }).xhr; + xhr.send(settings.data); + if (!settings.async) { + return ready(); + } + setTimeout(ready, 10); + } + } + }; + $_a5gegtjje5o2pum.extend(XHR, $_8mfz0u44je5o2qmp); + + var extend$7 = $_a5gegtjje5o2pum.extend; + var JSONRequest = function (settings) { + this.settings = extend$7({}, settings); + this.count = 0; + }; + JSONRequest.sendRPC = function (o) { + return new JSONRequest().send(o); + }; + JSONRequest.prototype = { + send: function (args) { + var ecb = args.error, scb = args.success; + args = extend$7(this.settings, args); + args.success = function (c, x) { + c = $_6tjbfu7fje5o2r61.parse(c); + if (typeof c === 'undefined') { + c = { error: 'JSON Parse error.' }; + } + if (c.error) { + ecb.call(args.error_scope || args.scope, c.error, x); + } else { + scb.call(args.success_scope || args.scope, c.result); + } + }; + args.error = function (ty, x) { + if (ecb) { + ecb.call(args.error_scope || args.scope, ty, x); + } + }; + args.data = $_6tjbfu7fje5o2r61.serialize({ + id: args.id || 'c' + this.count++, + method: args.method, + params: args.params + }); + args.content_type = 'application/json'; + XHR.send(args); + } + }; + + var localStorage = window.localStorage; + + var tinymce = EditorManager$1; + var publicApi = { + geom: { Rect: $_2r1euc7bje5o2r5k }, + util: { + Promise: promiseObj, + Delay: $_db41wogje5o2ps3, + Tools: $_a5gegtjje5o2pum, + VK: $_99mhlk59je5o2qss, + URI: URI, + Class: Class, + EventDispatcher: Dispatcher, + Observable: $_8mfz0u44je5o2qmp, + I18n: $_34fkt779je5o2r5d, + XHR: XHR, + JSON: $_6tjbfu7fje5o2r61, + JSONRequest: JSONRequest, + JSONP: $_3nz9gz7gje5o2r63, + LocalStorage: localStorage, + Color: Color + }, + dom: { + EventUtils: EventUtils, + Sizzle: Sizzle, + DomQuery: DomQuery, + TreeWalker: TreeWalker, + DOMUtils: DOMUtils, + ScriptLoader: ScriptLoader, + RangeUtils: RangeUtils$1, + Serializer: DomSerializer$1, + ControlSelection: ControlSelection, + BookmarkManager: BookmarkManager$1, + Selection: Selection$1, + Event: EventUtils.Event + }, + html: { + Styles: Styles, + Entities: $_fzh4ld1rje5o2q0t, + Node: Node$2, + Schema: Schema, + SaxParser: SaxParser$1, + DomParser: DomParser, + Writer: Writer, + Serializer: HtmlSerializer + }, + ui: { Factory: $_cxa5dr7cje5o2r5q }, + Env: $_9bd8pn9je5o2pp2, + AddOnManager: AddOnManager, + Formatter: Formatter, + UndoManager: UndoManager, + EditorCommands: EditorCommands, + WindowManager: WindowManager, + NotificationManager: NotificationManager, + EditorObservable: EditorObservable$1, + Shortcuts: Shortcuts, + Editor: Editor, + FocusManager: $_97d4iv77je5o2r4x, + EditorManager: EditorManager$1, + DOM: DOMUtils.DOM, + ScriptLoader: ScriptLoader.ScriptLoader, + PluginManager: AddOnManager.PluginManager, + ThemeManager: AddOnManager.ThemeManager, + trim: $_a5gegtjje5o2pum.trim, + isArray: $_a5gegtjje5o2pum.isArray, + is: $_a5gegtjje5o2pum.is, + toArray: $_a5gegtjje5o2pum.toArray, + makeMap: $_a5gegtjje5o2pum.makeMap, + each: $_a5gegtjje5o2pum.each, + map: $_a5gegtjje5o2pum.map, + grep: $_a5gegtjje5o2pum.grep, + inArray: $_a5gegtjje5o2pum.inArray, + extend: $_a5gegtjje5o2pum.extend, + create: $_a5gegtjje5o2pum.create, + walk: $_a5gegtjje5o2pum.walk, + createNS: $_a5gegtjje5o2pum.createNS, + resolve: $_a5gegtjje5o2pum.resolve, + explode: $_a5gegtjje5o2pum.explode, + _addCacheSuffix: $_a5gegtjje5o2pum._addCacheSuffix, + isOpera: $_9bd8pn9je5o2pp2.opera, + isWebKit: $_9bd8pn9je5o2pp2.webkit, + isIE: $_9bd8pn9je5o2pp2.ie, + isGecko: $_9bd8pn9je5o2pp2.gecko, + isMac: $_9bd8pn9je5o2pp2.mac + }; + tinymce = $_a5gegtjje5o2pum.extend(tinymce, publicApi); + var Tinymce = tinymce; + + var exportToModuleLoaders = function (tinymce) { + if (typeof module === 'object') { + try { + module.exports = tinymce; + } catch (_) { + } + } + }; + var exportToWindowGlobal = function (tinymce) { + window.tinymce = tinymce; + window.tinyMCE = tinymce; + }; + exportToWindowGlobal(Tinymce); + exportToModuleLoaders(Tinymce); + +}()); +})(); + + + +!function(){var e,t,n,i,r,a=[];r="undefined"!=typeof global?global:window,i=r.jQuery;var c=function(){return r.tinymce};i.fn.tinymce=function(e){var l,u,s,f=this,p="";if(!f.length)return f;if(!e)return c()?c().get(f[0].id):null;f.css("visibility","hidden");var d=function(){var t=[],r=0;n||(o(),n=!0),f.each(function(n,i){var a,o=i.id,l=e.oninit;o||(i.id=o=c().DOM.uniqueId()),c().get(o)||(a=c().createEditor(o,e),t.push(a),a.on("init",function(){var e,n=l;f.css("visibility",""),l&&++r==t.length&&("string"==typeof n&&(e=-1===n.indexOf(".")?null:c().resolve(n.replace(/\.\w+$/,"")),n=c().resolve(n)),n.apply(e||c(),t))}))}),i.each(t,function(e,t){t.render()})};if(r.tinymce||t||!(l=e.script_url))1===t?a.push(d):d();else{t=1,u=l.substring(0,l.lastIndexOf("/")),-1!=l.indexOf(".min")&&(p=".min"),r.tinymce=r.tinyMCEPreInit||{base:u,suffix:p},-1!=l.indexOf("gzip")&&(s=e.language||"en",l=l+(/\?/.test(l)?"&":"?")+"js=true&core=true&suffix="+escape(p)+"&themes="+escape(e.theme||"modern")+"&plugins="+escape(e.plugins||"")+"&languages="+(s||""),r.tinyMCE_GZ||(r.tinyMCE_GZ={start:function(){var t=function(e){c().ScriptLoader.markDone(c().baseURI.toAbsolute(e))};t("langs/"+s+".js"),t("themes/"+e.theme+"/theme"+p+".js"),t("themes/"+e.theme+"/langs/"+s+".js"),i.each(e.plugins.split(","),function(e,n){n&&(t("plugins/"+n+"/plugin"+p+".js"),t("plugins/"+n+"/langs/"+s+".js"))})},end:function(){}}));var v=document.createElement("script");v.type="text/javascript",v.onload=v.onreadystatechange=function(n){n=n||window.event,2===t||"load"!=n.type&&!/complete|loaded/.test(v.readyState)||(c().dom.Event.domLoaded=1,t=2,e.script_loaded&&e.script_loaded(),d(),i.each(a,function(e,t){t()}))},v.src=l,document.body.appendChild(v)}return f},i.extend(i.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in r&&(t=c().get(e.id))&&t.editorManager===c())}});var o=function(){var t=function(e){"remove"===e&&this.each(function(e,t){var n=a(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=c().get(t.id.replace(/_parent$/,""));n&&n.remove()})},n=function(e){var n,i=this;if(null!=e)t.call(i),i.each(function(t,n){var i;(i=c().get(n.id))&&i.setContent(e)});else if(i.length>0&&(n=c().get(i[0].id)))return n.getContent()},a=function(e){var t=null;return e&&e.id&&r.tinymce&&(t=c().get(e.id)),t},o=function(e){return!!(e&&e.length&&r.tinymce&&e.is(":tinymce"))},l={};i.each(["text","html","val"],function(t,r){var c=l[r]=i.fn[r],u="text"===r;i.fn[r]=function(t){var r=this;if(!o(r))return c.apply(r,arguments);if(t!==e)return n.call(r.filter(":tinymce"),t),c.apply(r.not(":tinymce"),arguments),r;var l="",s=arguments;return(u?r:r.eq(0)).each(function(e,t){var n=a(t);l+=n?u?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):c.apply(i(t),s)}),l}}),i.each(["append","prepend"],function(t,n){var r=l[n]=i.fn[n],c="prepend"===n;i.fn[n]=function(t){var n=this;return o(n)?t!==e?("string"==typeof t&&n.filter(":tinymce").each(function(e,n){var i=a(n);i&&i.setContent(c?t+i.getContent():i.getContent()+t)}),r.apply(n.not(":tinymce"),arguments),n):void 0:r.apply(n,arguments)}}),i.each(["remove","replaceWith","replaceAll","empty"],function(e,n){var r=l[n]=i.fn[n];i.fn[n]=function(){return t.call(this,n),r.apply(this,arguments)}}),l.attr=i.fn.attr,i.fn.attr=function(t,r){var c=this,u=arguments;if(!t||"value"!==t||!o(c))return l.attr.apply(c,u);if(r!==e)return n.call(c.filter(":tinymce"),r),l.attr.apply(c.not(":tinymce"),u),c;var s=c[0],f=a(s);return f?f.getContent({save:!0}):l.attr.apply(i(s),u)}}}(); + + +/*! + * Modernizr v2.7.1 + * www.modernizr.com + * + * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton + * Available under the BSD and MIT licenses: www.modernizr.com/license/ + */ + +/* + * Modernizr tests which native CSS3 and HTML5 features are available in + * the current UA and makes the results available to you in two ways: + * as properties on a global Modernizr object, and as classes on the + * <html> element. This information allows you to progressively enhance + * your pages with a granular level of control over the experience. + * + * Modernizr has an optional (not included) conditional resource loader + * called Modernizr.load(), based on Yepnope.js (yepnopejs.com). + * To get a build that includes Modernizr.load(), as well as choosing + * which tests to include, go to www.modernizr.com/download/ + * + * Authors Faruk Ates, Paul Irish, Alex Sexton + * Contributors Ryan Seddon, Ben Alman + */ + + +window.Modernizr = (function( window, document, undefined ) { + + var version = '2.7.1', + + Modernizr = {}, + + /*>>cssclasses*/ + // option for enabling the HTML classes to be added + enableClasses = true, + /*>>cssclasses*/ + + docElement = document.documentElement, + + /** + * Create our "modernizr" element that we do most feature tests on. + */ + mod = 'modernizr', + modElem = document.createElement(mod), + mStyle = modElem.style, + + /** + * Create the input element for various Web Forms feature tests. + */ + inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ , + + /*>>smile*/ + smile = ':)', + /*>>smile*/ + + toString = {}.toString, + + // TODO :: make the prefixes more granular + /*>>prefixes*/ + // List of property values to set for css tests. See ticket #21 + prefixes = ' -webkit- -moz- -o- -ms- '.split(' '), + /*>>prefixes*/ + + /*>>domprefixes*/ + // Following spec is to expose vendor-specific style properties as: + // elem.style.WebkitBorderRadius + // and the following would be incorrect: + // elem.style.webkitBorderRadius + + // Webkit ghosts their properties in lowercase but Opera & Moz do not. + // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+ + // erik.eae.net/archives/2008/03/10/21.48.10/ + + // More here: github.com/Modernizr/Modernizr/issues/issue/21 + omPrefixes = 'Webkit Moz O ms', + + cssomPrefixes = omPrefixes.split(' '), + + domPrefixes = omPrefixes.toLowerCase().split(' '), + /*>>domprefixes*/ + + /*>>ns*/ + ns = {'svg': 'http://www.w3.org/2000/svg'}, + /*>>ns*/ + + tests = {}, + inputs = {}, + attrs = {}, + + classes = [], + + slice = classes.slice, + + featureName, // used in testing loop + + + /*>>teststyles*/ + // Inject element with style element and some CSS rules + injectElementWithStyles = function( rule, callback, nodes, testnames ) { + + var style, ret, node, docOverflow, + div = document.createElement('div'), + // After page load injecting a fake body doesn't work so check if body exists + body = document.body, + // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it. + fakeBody = body || document.createElement('body'); + + if ( parseInt(nodes, 10) ) { + // In order not to give false positives we create a node for each test + // This also allows the method to scale for unspecified uses + while ( nodes-- ) { + node = document.createElement('div'); + node.id = testnames ? testnames[nodes] : mod + (nodes + 1); + div.appendChild(node); + } + } + + // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed + // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element + // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements. + // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx + // Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277 + style = ['­','<style id="s', mod, '">', rule, '</style>'].join(''); + div.id = mod; + // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody. + // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270 + (body ? div : fakeBody).innerHTML += style; + fakeBody.appendChild(div); + if ( !body ) { + //avoid crashing IE8, if background image is used + fakeBody.style.background = ''; + //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible + fakeBody.style.overflow = 'hidden'; + docOverflow = docElement.style.overflow; + docElement.style.overflow = 'hidden'; + docElement.appendChild(fakeBody); + } + + ret = callback(div, rule); + // If this is done after page load we don't want to remove the body so check if body exists + if ( !body ) { + fakeBody.parentNode.removeChild(fakeBody); + docElement.style.overflow = docOverflow; + } else { + div.parentNode.removeChild(div); + } + + return !!ret; + + }, + /*>>teststyles*/ + + /*>>mq*/ + // adapted from matchMedia polyfill + // by Scott Jehl and Paul Irish + // gist.github.com/786768 + testMediaQuery = function( mq ) { + + var matchMedia = window.matchMedia || window.msMatchMedia; + if ( matchMedia ) { + return matchMedia(mq).matches; + } + + var bool; + + injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) { + bool = (window.getComputedStyle ? + getComputedStyle(node, null) : + node.currentStyle)['position'] == 'absolute'; + }); + + return bool; + + }, + /*>>mq*/ + + + /*>>hasevent*/ + // + // isEventSupported determines if a given element supports the given event + // kangax.github.com/iseventsupported/ + // + // The following results are known incorrects: + // Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative + // Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333 + // ... + isEventSupported = (function() { + + var TAGNAMES = { + 'select': 'input', 'change': 'input', + 'submit': 'form', 'reset': 'form', + 'error': 'img', 'load': 'img', 'abort': 'img' + }; + + function isEventSupported( eventName, element ) { + + element = element || document.createElement(TAGNAMES[eventName] || 'div'); + eventName = 'on' + eventName; + + // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those + var isSupported = eventName in element; + + if ( !isSupported ) { + // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element + if ( !element.setAttribute ) { + element = document.createElement('div'); + } + if ( element.setAttribute && element.removeAttribute ) { + element.setAttribute(eventName, ''); + isSupported = is(element[eventName], 'function'); + + // If property was created, "remove it" (by setting value to `undefined`) + if ( !is(element[eventName], 'undefined') ) { + element[eventName] = undefined; + } + element.removeAttribute(eventName); + } + } + + element = null; + return isSupported; + } + return isEventSupported; + })(), + /*>>hasevent*/ + + // TODO :: Add flag for hasownprop ? didn't last time + + // hasOwnProperty shim by kangax needed for Safari 2.0 support + _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp; + + if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) { + hasOwnProp = function (object, property) { + return _hasOwnProperty.call(object, property); + }; + } + else { + hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */ + return ((property in object) && is(object.constructor.prototype[property], 'undefined')); + }; + } + + // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js + // es5.github.com/#x15.3.4.5 + + if (!Function.prototype.bind) { + Function.prototype.bind = function bind(that) { + + var target = this; + + if (typeof target != "function") { + throw new TypeError(); + } + + var args = slice.call(arguments, 1), + bound = function () { + + if (this instanceof bound) { + + var F = function(){}; + F.prototype = target.prototype; + var self = new F(); + + var result = target.apply( + self, + args.concat(slice.call(arguments)) + ); + if (Object(result) === result) { + return result; + } + return self; + + } else { + + return target.apply( + that, + args.concat(slice.call(arguments)) + ); + + } + + }; + + return bound; + }; + } + + /** + * setCss applies given styles to the Modernizr DOM node. + */ + function setCss( str ) { + mStyle.cssText = str; + } + + /** + * setCssAll extrapolates all vendor-specific css strings. + */ + function setCssAll( str1, str2 ) { + return setCss(prefixes.join(str1 + ';') + ( str2 || '' )); + } + + /** + * is returns a boolean for if typeof obj is exactly type. + */ + function is( obj, type ) { + return typeof obj === type; + } + + /** + * contains returns a boolean for if substr is found within str. + */ + function contains( str, substr ) { + return !!~('' + str).indexOf(substr); + } + + /*>>testprop*/ + + // testProps is a generic CSS / DOM property test. + + // In testing support for a given CSS property, it's legit to test: + // `elem.style[styleName] !== undefined` + // If the property is supported it will return an empty string, + // if unsupported it will return undefined. + + // We'll take advantage of this quick test and skip setting a style + // on our modernizr element, but instead just testing undefined vs + // empty string. + + // Because the testing of the CSS property names (with "-", as + // opposed to the camelCase DOM properties) is non-portable and + // non-standard but works in WebKit and IE (but not Gecko or Opera), + // we explicitly reject properties with dashes so that authors + // developing in WebKit or IE first don't end up with + // browser-specific content by accident. + + function testProps( props, prefixed ) { + for ( var i in props ) { + var prop = props[i]; + if ( !contains(prop, "-") && mStyle[prop] !== undefined ) { + return prefixed == 'pfx' ? prop : true; + } + } + return false; + } + /*>>testprop*/ + + // TODO :: add testDOMProps + /** + * testDOMProps is a generic DOM property test; if a browser supports + * a certain property, it won't return undefined for it. + */ + function testDOMProps( props, obj, elem ) { + for ( var i in props ) { + var item = obj[props[i]]; + if ( item !== undefined) { + + // return the property name as a string + if (elem === false) return props[i]; + + // let's bind a function + if (is(item, 'function')){ + // default to autobind unless override + return item.bind(elem || obj); + } + + // return the unbound function or obj or value + return item; + } + } + return false; + } + + /*>>testallprops*/ + /** + * testPropsAll tests a list of DOM properties we want to check against. + * We specify literally ALL possible (known and/or likely) properties on + * the element including the non-vendor prefixed one, for forward- + * compatibility. + */ + function testPropsAll( prop, prefixed, elem ) { + + var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1), + props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' '); + + // did they call .prefixed('boxSizing') or are we just testing a prop? + if(is(prefixed, "string") || is(prefixed, "undefined")) { + return testProps(props, prefixed); + + // otherwise, they called .prefixed('requestAnimationFrame', window[, elem]) + } else { + props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' '); + return testDOMProps(props, prefixed, elem); + } + } + /*>>testallprops*/ + + + /** + * Tests + * ----- + */ + + // The *new* flexbox + // dev.w3.org/csswg/css3-flexbox + + tests['flexbox'] = function() { + return testPropsAll('flexWrap'); + }; + + // The *old* flexbox + // www.w3.org/TR/2009/WD-css3-flexbox-20090723/ + + tests['flexboxlegacy'] = function() { + return testPropsAll('boxDirection'); + }; + + // On the S60 and BB Storm, getContext exists, but always returns undefined + // so we actually have to call getContext() to verify + // github.com/Modernizr/Modernizr/issues/issue/97/ + + tests['canvas'] = function() { + var elem = document.createElement('canvas'); + return !!(elem.getContext && elem.getContext('2d')); + }; + + tests['canvastext'] = function() { + return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function')); + }; + + // webk.it/70117 is tracking a legit WebGL feature detect proposal + + // We do a soft detect which may false positive in order to avoid + // an expensive context creation: bugzil.la/732441 + + tests['webgl'] = function() { + return !!window.WebGLRenderingContext; + }; + + /* + * The Modernizr.touch test only indicates if the browser supports + * touch events, which does not necessarily reflect a touchscreen + * device, as evidenced by tablets running Windows 7 or, alas, + * the Palm Pre / WebOS (touch) phones. + * + * Additionally, Chrome (desktop) used to lie about its support on this, + * but that has since been rectified: crbug.com/36415 + * + * We also test for Firefox 4 Multitouch Support. + * + * For more info, see: modernizr.github.com/Modernizr/touch.html + */ + + tests['touch'] = function() { + var bool; + + if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) { + bool = true; + } else { + injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) { + bool = node.offsetTop === 9; + }); + } + + return bool; + }; + + + // geolocation is often considered a trivial feature detect... + // Turns out, it's quite tricky to get right: + // + // Using !!navigator.geolocation does two things we don't want. It: + // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513 + // 2. Disables page caching in WebKit: webk.it/43956 + // + // Meanwhile, in Firefox < 8, an about:config setting could expose + // a false positive that would throw an exception: bugzil.la/688158 + + tests['geolocation'] = function() { + return 'geolocation' in navigator; + }; + + + tests['postmessage'] = function() { + return !!window.postMessage; + }; + + + // Chrome incognito mode used to throw an exception when using openDatabase + // It doesn't anymore. + tests['websqldatabase'] = function() { + return !!window.openDatabase; + }; + + // Vendors had inconsistent prefixing with the experimental Indexed DB: + // - Webkit's implementation is accessible through webkitIndexedDB + // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB + // For speed, we don't test the legacy (and beta-only) indexedDB + tests['indexedDB'] = function() { + return !!testPropsAll("indexedDB", window); + }; + + // documentMode logic from YUI to filter out IE8 Compat Mode + // which false positives. + tests['hashchange'] = function() { + return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7); + }; + + // Per 1.6: + // This used to be Modernizr.historymanagement but the longer + // name has been deprecated in favor of a shorter and property-matching one. + // The old API is still available in 1.6, but as of 2.0 will throw a warning, + // and in the first release thereafter disappear entirely. + tests['history'] = function() { + return !!(window.history && history.pushState); + }; + + tests['draganddrop'] = function() { + var div = document.createElement('div'); + return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div); + }; + + // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10 + // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17. + // FF10 still uses prefixes, so check for it until then. + // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/ + tests['websockets'] = function() { + return 'WebSocket' in window || 'MozWebSocket' in window; + }; + + + // css-tricks.com/rgba-browser-support/ + tests['rgba'] = function() { + // Set an rgba() color and check the returned value + + setCss('background-color:rgba(150,255,150,.5)'); + + return contains(mStyle.backgroundColor, 'rgba'); + }; + + tests['hsla'] = function() { + // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally, + // except IE9 who retains it as hsla + + setCss('background-color:hsla(120,40%,100%,.5)'); + + return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla'); + }; + + tests['multiplebgs'] = function() { + // Setting multiple images AND a color on the background shorthand property + // and then querying the style.background property value for the number of + // occurrences of "url(" is a reliable method for detecting ACTUAL support for this! + + setCss('background:url(https://),url(https://),red url(https://)'); + + // If the UA supports multiple backgrounds, there should be three occurrences + // of the string "url(" in the return value for elemStyle.background + + return (/(url\s*\(.*?){3}/).test(mStyle.background); + }; + + + + // this will false positive in Opera Mini + // github.com/Modernizr/Modernizr/issues/396 + + tests['backgroundsize'] = function() { + return testPropsAll('backgroundSize'); + }; + + tests['borderimage'] = function() { + return testPropsAll('borderImage'); + }; + + + // Super comprehensive table about all the unique implementations of + // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance + + tests['borderradius'] = function() { + return testPropsAll('borderRadius'); + }; + + // WebOS unfortunately false positives on this test. + tests['boxshadow'] = function() { + return testPropsAll('boxShadow'); + }; + + // FF3.0 will false positive on this test + tests['textshadow'] = function() { + return document.createElement('div').style.textShadow === ''; + }; + + + tests['opacity'] = function() { + // Browsers that actually have CSS Opacity implemented have done so + // according to spec, which means their return values are within the + // range of [0.0,1.0] - including the leading zero. + + setCssAll('opacity:.55'); + + // The non-literal . in this regex is intentional: + // German Chrome returns this value as 0,55 + // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632 + return (/^0.55$/).test(mStyle.opacity); + }; + + + // Note, Android < 4 will pass this test, but can only animate + // a single property at a time + // daneden.me/2011/12/putting-up-with-androids-bullshit/ + tests['cssanimations'] = function() { + return testPropsAll('animationName'); + }; + + + tests['csscolumns'] = function() { + return testPropsAll('columnCount'); + }; + + + tests['cssgradients'] = function() { + /** + * For CSS Gradients syntax, please see: + * webkit.org/blog/175/introducing-css-gradients/ + * developer.mozilla.org/en/CSS/-moz-linear-gradient + * developer.mozilla.org/en/CSS/-moz-radial-gradient + * dev.w3.org/csswg/css3-images/#gradients- + */ + + var str1 = 'background-image:', + str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));', + str3 = 'linear-gradient(left top,#9f9, white);'; + + setCss( + // legacy webkit syntax (FIXME: remove when syntax not in use anymore) + (str1 + '-webkit- '.split(' ').join(str2 + str1) + + // standard syntax // trailing 'background-image:' + prefixes.join(str3 + str1)).slice(0, -str1.length) + ); + + return contains(mStyle.backgroundImage, 'gradient'); + }; + + + tests['cssreflections'] = function() { + return testPropsAll('boxReflect'); + }; + + + tests['csstransforms'] = function() { + return !!testPropsAll('transform'); + }; + + + tests['csstransforms3d'] = function() { + + var ret = !!testPropsAll('perspective'); + + // Webkit's 3D transforms are passed off to the browser's own graphics renderer. + // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in + // some conditions. As a result, Webkit typically recognizes the syntax but + // will sometimes throw a false positive, thus we must do a more thorough check: + if ( ret && 'webkitPerspective' in docElement.style ) { + + // Webkit allows this media query to succeed only if the feature is enabled. + // `@media (transform-3d),(-webkit-transform-3d){ ... }` + injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) { + ret = node.offsetLeft === 9 && node.offsetHeight === 3; + }); + } + return ret; + }; + + + tests['csstransitions'] = function() { + return testPropsAll('transition'); + }; + + + /*>>fontface*/ + // @font-face detection routine by Diego Perini + // javascript.nwbox.com/CSSSupport/ + + // false positives: + // WebOS github.com/Modernizr/Modernizr/issues/342 + // WP7 github.com/Modernizr/Modernizr/issues/538 + tests['fontface'] = function() { + var bool; + + injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) { + var style = document.getElementById('smodernizr'), + sheet = style.sheet || style.styleSheet, + cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : ''; + + bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0; + }); + + return bool; + }; + /*>>fontface*/ + + // CSS generated content detection + tests['generatedcontent'] = function() { + var bool; + + injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) { + bool = node.offsetHeight >= 3; + }); + + return bool; + }; + + + + // These tests evaluate support of the video/audio elements, as well as + // testing what types of content they support. + // + // We're using the Boolean constructor here, so that we can extend the value + // e.g. Modernizr.video // true + // Modernizr.video.ogg // 'probably' + // + // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845 + // thx to NielsLeenheer and zcorpan + + // Note: in some older browsers, "no" was a return value instead of empty string. + // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2 + // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5 + + tests['video'] = function() { + var elem = document.createElement('video'), + bool = false; + + // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224 + try { + if ( bool = !!elem.canPlayType ) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('video/ogg; codecs="theora"') .replace(/^no$/,''); + + // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546 + bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,''); + + bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,''); + } + + } catch(e) { } + + return bool; + }; + + tests['audio'] = function() { + var elem = document.createElement('audio'), + bool = false; + + try { + if ( bool = !!elem.canPlayType ) { + bool = new Boolean(bool); + bool.ogg = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,''); + bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,''); + + // Mimetypes accepted: + // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements + // bit.ly/iphoneoscodecs + bool.wav = elem.canPlayType('audio/wav; codecs="1"') .replace(/^no$/,''); + bool.m4a = ( elem.canPlayType('audio/x-m4a;') || + elem.canPlayType('audio/aac;')) .replace(/^no$/,''); + } + } catch(e) { } + + return bool; + }; + + + // In FF4, if disabled, window.localStorage should === null. + + // Normally, we could not test that directly and need to do a + // `('localStorage' in window) && ` test first because otherwise Firefox will + // throw bugzil.la/365772 if cookies are disabled + + // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem + // will throw the exception: + // QUOTA_EXCEEDED_ERRROR DOM Exception 22. + // Peculiarly, getItem and removeItem calls do not throw. + + // Because we are forced to try/catch this, we'll go aggressive. + + // Just FWIW: IE8 Compat mode supports these features completely: + // www.quirksmode.org/dom/html5.html + // But IE8 doesn't support either with local files + + tests['localstorage'] = function() { + try { + localStorage.setItem(mod, mod); + localStorage.removeItem(mod); + return true; + } catch(e) { + return false; + } + }; + + tests['sessionstorage'] = function() { + try { + sessionStorage.setItem(mod, mod); + sessionStorage.removeItem(mod); + return true; + } catch(e) { + return false; + } + }; + + + tests['webworkers'] = function() { + return !!window.Worker; + }; + + + tests['applicationcache'] = function() { + return !!window.applicationCache; + }; + + + // Thanks to Erik Dahlstrom + tests['svg'] = function() { + return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect; + }; + + // specifically for SVG inline in HTML, not within XHTML + // test page: paulirish.com/demo/inline-svg + tests['inlinesvg'] = function() { + var div = document.createElement('div'); + div.innerHTML = '<svg/>'; + return (div.firstChild && div.firstChild.namespaceURI) == ns.svg; + }; + + // SVG SMIL animation + tests['smil'] = function() { + return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate'))); + }; + + // This test is only for clip paths in SVG proper, not clip paths on HTML content + // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg + + // However read the comments to dig into applying SVG clippaths to HTML content here: + // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491 + tests['svgclippaths'] = function() { + return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath'))); + }; + + /*>>webforms*/ + // input features and input types go directly onto the ret object, bypassing the tests loop. + // Hold this guy to execute in a moment. + function webforms() { + /*>>input*/ + // Run through HTML5's new input attributes to see if the UA understands any. + // We're using f which is the <input> element created early on + // Mike Taylr has created a comprehensive resource for testing these attributes + // when applied to all input types: + // miketaylr.com/code/input-type-attr.html + // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary + + // Only input placeholder is tested while textarea's placeholder is not. + // Currently Safari 4 and Opera 11 have support only for the input placeholder + // Both tests are available in feature-detects/forms-placeholder.js + Modernizr['input'] = (function( props ) { + for ( var i = 0, len = props.length; i < len; i++ ) { + attrs[ props[i] ] = !!(props[i] in inputElem); + } + if (attrs.list){ + // safari false positive's on datalist: webk.it/74252 + // see also github.com/Modernizr/Modernizr/issues/146 + attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement); + } + return attrs; + })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' ')); + /*>>input*/ + + /*>>inputtypes*/ + // Run through HTML5's new input types to see if the UA understands any. + // This is put behind the tests runloop because it doesn't return a + // true/false like all the other tests; instead, it returns an object + // containing each input type with its corresponding true/false value + + // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/ + Modernizr['inputtypes'] = (function(props) { + + for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) { + + inputElem.setAttribute('type', inputElemType = props[i]); + bool = inputElem.type !== 'text'; + + // We first check to see if the type we give it sticks.. + // If the type does, we feed it a textual value, which shouldn't be valid. + // If the value doesn't stick, we know there's input sanitization which infers a custom UI + if ( bool ) { + + inputElem.value = smile; + inputElem.style.cssText = 'position:absolute;visibility:hidden;'; + + if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) { + + docElement.appendChild(inputElem); + defaultView = document.defaultView; + + // Safari 2-4 allows the smiley as a value, despite making a slider + bool = defaultView.getComputedStyle && + defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' && + // Mobile android web browser has false positive, so must + // check the height to see if the widget is actually there. + (inputElem.offsetHeight !== 0); + + docElement.removeChild(inputElem); + + } else if ( /^(search|tel)$/.test(inputElemType) ){ + // Spec doesn't define any special parsing or detectable UI + // behaviors so we pass these through as true + + // Interestingly, opera fails the earlier test, so it doesn't + // even make it here. + + } else if ( /^(url|email)$/.test(inputElemType) ) { + // Real url and email support comes with prebaked validation. + bool = inputElem.checkValidity && inputElem.checkValidity() === false; + + } else { + // If the upgraded input compontent rejects the :) text, we got a winner + bool = inputElem.value != smile; + } + } + + inputs[ props[i] ] = !!bool; + } + return inputs; + })('search tel url email datetime date month week time datetime-local number range color'.split(' ')); + /*>>inputtypes*/ + } + /*>>webforms*/ + + + // End of test definitions + // ----------------------- + + + + // Run through all tests and detect their support in the current UA. + // todo: hypothetically we could be doing an array of tests and use a basic loop here. + for ( var feature in tests ) { + if ( hasOwnProp(tests, feature) ) { + // run the test, throw the return value into the Modernizr, + // then based on that boolean, define an appropriate className + // and push it into an array of classes we'll join later. + featureName = feature.toLowerCase(); + Modernizr[featureName] = tests[feature](); + + classes.push((Modernizr[featureName] ? '' : 'no-') + featureName); + } + } + + /*>>webforms*/ + // input tests need to run. + Modernizr.input || webforms(); + /*>>webforms*/ + + + /** + * addTest allows the user to define their own feature tests + * the result will be added onto the Modernizr object, + * as well as an appropriate className set on the html element + * + * @param feature - String naming the feature + * @param test - Function returning true if feature is supported, false if not + */ + Modernizr.addTest = function ( feature, test ) { + if ( typeof feature == 'object' ) { + for ( var key in feature ) { + if ( hasOwnProp( feature, key ) ) { + Modernizr.addTest( key, feature[ key ] ); + } + } + } else { + + feature = feature.toLowerCase(); + + if ( Modernizr[feature] !== undefined ) { + // we're going to quit if you're trying to overwrite an existing test + // if we were to allow it, we'd do this: + // var re = new RegExp("\\b(no-)?" + feature + "\\b"); + // docElement.className = docElement.className.replace( re, '' ); + // but, no rly, stuff 'em. + return Modernizr; + } + + test = typeof test == 'function' ? test() : test; + + if (typeof enableClasses !== "undefined" && enableClasses) { + docElement.className += ' ' + (test ? '' : 'no-') + feature; + } + Modernizr[feature] = test; + + } + + return Modernizr; // allow chaining. + }; + + + // Reset modElem.cssText to nothing to reduce memory footprint. + setCss(''); + modElem = inputElem = null; + + /*>>shiv*/ + /** + * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed + */ + ;(function(window, document) { + /*jshint evil:true */ + /** version */ + var version = '3.7.0'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = '<xyz></xyz>'; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x<style>' + cssText + '</style>'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i<l;i++){ + clone.createElement(elems[i]); + } + return clone; + } + + /** + * Shivs the `createElement` and `createDocumentFragment` methods of the document. + * @private + * @param {Document|DocumentFragment} ownerDocument The document. + * @param {Object} data of the document. + */ + function shivMethods(ownerDocument, data) { + if (!data.cache) { + data.cache = {}; + data.createElem = ownerDocument.createElement; + data.createFrag = ownerDocument.createDocumentFragment; + data.frag = data.createFrag(); + } + + + ownerDocument.createElement = function(nodeName) { + //abort shiv + if (!html5.shivMethods) { + return data.createElem(nodeName); + } + return createElement(nodeName, ownerDocument, data); + }; + + ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' + + 'var n=f.cloneNode(),c=n.createElement;' + + 'h.shivMethods&&(' + + // unroll the `createElement` calls + getElements().join().replace(/[\w\-]+/g, function(nodeName) { + data.createElem(nodeName); + data.frag.createElement(nodeName); + return 'c("' + nodeName + '")'; + }) + + ');return n}' + )(html5, data.frag); + } + + /*--------------------------------------------------------------------------*/ + + /** + * Shivs the given document. + * @memberOf html5 + * @param {Document} ownerDocument The document to shiv. + * @returns {Document} The shived document. + */ + function shivDocument(ownerDocument) { + if (!ownerDocument) { + ownerDocument = document; + } + var data = getExpandoData(ownerDocument); + + if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) { + data.hasCSS = !!addStyleSheet(ownerDocument, + // corrects block display not defined in IE6/7/8/9 + 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' + + // adds styling not present in IE6/7/8/9 + 'mark{background:#FF0;color:#000}' + + // hides non-rendered elements + 'template{display:none}' + ); + } + if (!supportsUnknownElements) { + shivMethods(ownerDocument, data); + } + return ownerDocument; + } + + /*--------------------------------------------------------------------------*/ + + /** + * The `html5` object is exposed so that more elements can be shived and + * existing shiving can be detected on iframes. + * @type Object + * @example + * + * // options can be changed before the script is included + * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false }; + */ + var html5 = { + + /** + * An array or space separated string of node names of the elements to shiv. + * @memberOf html5 + * @type Array|String + */ + 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video', + + /** + * current version of html5shiv + */ + 'version': version, + + /** + * A flag to indicate that the HTML5 style sheet should be inserted. + * @memberOf html5 + * @type Boolean + */ + 'shivCSS': (options.shivCSS !== false), + + /** + * Is equal to true if a browser supports creating unknown/HTML5 elements + * @memberOf html5 + * @type boolean + */ + 'supportsUnknownElements': supportsUnknownElements, + + /** + * A flag to indicate that the document's `createElement` and `createDocumentFragment` + * methods should be overwritten. + * @memberOf html5 + * @type Boolean + */ + 'shivMethods': (options.shivMethods !== false), + + /** + * A string to describe the type of `html5` object ("default" or "default print"). + * @memberOf html5 + * @type String + */ + 'type': 'default', + + // shivs the document according to the specified `html5` object options + 'shivDocument': shivDocument, + + //creates a shived element + createElement: createElement, + + //creates a shived documentFragment + createDocumentFragment: createDocumentFragment + }; + + /*--------------------------------------------------------------------------*/ + + // expose html5 + window.html5 = html5; + + // shiv the document + shivDocument(document); + + }(this, document)); + /*>>shiv*/ + + // Assign private properties to the return object with prefix + Modernizr._version = version; + + // expose these for the plugin API. Look in the source for how to join() them against your input + /*>>prefixes*/ + Modernizr._prefixes = prefixes; + /*>>prefixes*/ + /*>>domprefixes*/ + Modernizr._domPrefixes = domPrefixes; + Modernizr._cssomPrefixes = cssomPrefixes; + /*>>domprefixes*/ + + /*>>mq*/ + // Modernizr.mq tests a given media query, live against the current state of the window + // A few important notes: + // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false + // * A max-width or orientation query will be evaluated against the current state, which may change later. + // * You must specify values. Eg. If you are testing support for the min-width media query use: + // Modernizr.mq('(min-width:0)') + // usage: + // Modernizr.mq('only screen and (max-width:768)') + Modernizr.mq = testMediaQuery; + /*>>mq*/ + + /*>>hasevent*/ + // Modernizr.hasEvent() detects support for a given event, with an optional element to test on + // Modernizr.hasEvent('gesturestart', elem) + Modernizr.hasEvent = isEventSupported; + /*>>hasevent*/ + + /*>>testprop*/ + // Modernizr.testProp() investigates whether a given style property is recognized + // Note that the property names must be provided in the camelCase variant. + // Modernizr.testProp('pointerEvents') + Modernizr.testProp = function(prop){ + return testProps([prop]); + }; + /*>>testprop*/ + + /*>>testallprops*/ + // Modernizr.testAllProps() investigates whether a given style property, + // or any of its vendor-prefixed variants, is recognized + // Note that the property names must be provided in the camelCase variant. + // Modernizr.testAllProps('boxSizing') + Modernizr.testAllProps = testPropsAll; + /*>>testallprops*/ + + + /*>>teststyles*/ + // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards + // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... }) + Modernizr.testStyles = injectElementWithStyles; + /*>>teststyles*/ + + + /*>>prefixed*/ + // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input + // Modernizr.prefixed('boxSizing') // 'MozBoxSizing' + + // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style. + // Return values will also be the camelCase variant, if you need to translate that to hypenated style use: + // + // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-'); + + // If you're trying to ascertain which transition end event to bind to, you might do something like... + // + // var transEndEventNames = { + // 'WebkitTransition' : 'webkitTransitionEnd', + // 'MozTransition' : 'transitionend', + // 'OTransition' : 'oTransitionEnd', + // 'msTransition' : 'MSTransitionEnd', + // 'transition' : 'transitionend' + // }, + // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ]; + + Modernizr.prefixed = function(prop, obj, elem){ + if(!obj) { + return testPropsAll(prop, 'pfx'); + } else { + // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame' + return testPropsAll(prop, obj, elem); + } + }; + /*>>prefixed*/ + + + /*>>cssclasses*/ + // Remove "no-js" class from <html> element, if it exists: + docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') + + + // Add the new classes to the <html> element. + (enableClasses ? ' js ' + classes.join(' ') : ''); + /*>>cssclasses*/ + + return Modernizr; + +})(this, this.document); +/* @preserve + * Leaflet 1.3.1, a JS library for interactive maps. http://leafletjs.com + * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ + + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.L = {}))); +}(this, (function (exports) { 'use strict'; + +var version = "1.3.1"; + +/* + * @namespace Util + * + * Various utility functions, used by Leaflet internally. + */ + +var freeze = Object.freeze; +Object.freeze = function (obj) { return obj; }; + +// @function extend(dest: Object, src?: Object): Object +// Merges the properties of the `src` object (or multiple objects) into `dest` object and returns the latter. Has an `L.extend` shortcut. +function extend(dest) { + var i, j, len, src; + + for (j = 1, len = arguments.length; j < len; j++) { + src = arguments[j]; + for (i in src) { + dest[i] = src[i]; + } + } + return dest; +} + +// @function create(proto: Object, properties?: Object): Object +// Compatibility polyfill for [Object.create](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/create) +var create = Object.create || (function () { + function F() {} + return function (proto) { + F.prototype = proto; + return new F(); + }; +})(); + +// @function bind(fn: Function, …): Function +// Returns a new function bound to the arguments passed, like [Function.prototype.bind](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). +// Has a `L.bind()` shortcut. +function bind(fn, obj) { + var slice = Array.prototype.slice; + + if (fn.bind) { + return fn.bind.apply(fn, slice.call(arguments, 1)); + } + + var args = slice.call(arguments, 2); + + return function () { + return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); + }; +} + +// @property lastId: Number +// Last unique ID used by [`stamp()`](#util-stamp) +var lastId = 0; + +// @function stamp(obj: Object): Number +// Returns the unique ID of an object, assigning it one if it doesn't have it. +function stamp(obj) { + /*eslint-disable */ + obj._leaflet_id = obj._leaflet_id || ++lastId; + return obj._leaflet_id; + /* eslint-enable */ +} + +// @function throttle(fn: Function, time: Number, context: Object): Function +// Returns a function which executes function `fn` with the given scope `context` +// (so that the `this` keyword refers to `context` inside `fn`'s code). The function +// `fn` will be called no more than one time per given amount of `time`. The arguments +// received by the bound function will be any arguments passed when binding the +// function, followed by any arguments passed when invoking the bound function. +// Has an `L.throttle` shortcut. +function throttle(fn, time, context) { + var lock, args, wrapperFn, later; + + later = function () { + // reset lock and call if queued + lock = false; + if (args) { + wrapperFn.apply(context, args); + args = false; + } + }; + + wrapperFn = function () { + if (lock) { + // called too soon, queue to call later + args = arguments; + + } else { + // call and lock until later + fn.apply(context, arguments); + setTimeout(later, time); + lock = true; + } + }; + + return wrapperFn; +} + +// @function wrapNum(num: Number, range: Number[], includeMax?: Boolean): Number +// Returns the number `num` modulo `range` in such a way so it lies within +// `range[0]` and `range[1]`. The returned value will be always smaller than +// `range[1]` unless `includeMax` is set to `true`. +function wrapNum(x, range, includeMax) { + var max = range[1], + min = range[0], + d = max - min; + return x === max && includeMax ? x : ((x - min) % d + d) % d + min; +} + +// @function falseFn(): Function +// Returns a function which always returns `false`. +function falseFn() { return false; } + +// @function formatNum(num: Number, digits?: Number): Number +// Returns the number `num` rounded to `digits` decimals, or to 6 decimals by default. +function formatNum(num, digits) { + var pow = Math.pow(10, (digits === undefined ? 6 : digits)); + return Math.round(num * pow) / pow; +} + +// @function trim(str: String): String +// Compatibility polyfill for [String.prototype.trim](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) +function trim(str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); +} + +// @function splitWords(str: String): String[] +// Trims and splits the string on whitespace and returns the array of parts. +function splitWords(str) { + return trim(str).split(/\s+/); +} + +// @function setOptions(obj: Object, options: Object): Object +// Merges the given properties to the `options` of the `obj` object, returning the resulting options. See `Class options`. Has an `L.setOptions` shortcut. +function setOptions(obj, options) { + if (!obj.hasOwnProperty('options')) { + obj.options = obj.options ? create(obj.options) : {}; + } + for (var i in options) { + obj.options[i] = options[i]; + } + return obj.options; +} + +// @function getParamString(obj: Object, existingUrl?: String, uppercase?: Boolean): String +// Converts an object into a parameter URL string, e.g. `{a: "foo", b: "bar"}` +// translates to `'?a=foo&b=bar'`. If `existingUrl` is set, the parameters will +// be appended at the end. If `uppercase` is `true`, the parameter names will +// be uppercased (e.g. `'?A=foo&B=bar'`) +function getParamString(obj, existingUrl, uppercase) { + var params = []; + for (var i in obj) { + params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); +} + +var templateRe = /\{ *([\w_-]+) *\}/g; + +// @function template(str: String, data: Object): String +// Simple templating facility, accepts a template string of the form `'Hello {a}, {b}'` +// and a data object like `{a: 'foo', b: 'bar'}`, returns evaluated string +// `('Hello foo, bar')`. You can also specify functions instead of strings for +// data values — they will be evaluated passing `data` as an argument. +function template(str, data) { + return str.replace(templateRe, function (str, key) { + var value = data[key]; + + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); +} + +// @function isArray(obj): Boolean +// Compatibility polyfill for [Array.isArray](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray) +var isArray = Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); +}; + +// @function indexOf(array: Array, el: Object): Number +// Compatibility polyfill for [Array.prototype.indexOf](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) +function indexOf(array, el) { + for (var i = 0; i < array.length; i++) { + if (array[i] === el) { return i; } + } + return -1; +} + +// @property emptyImageUrl: String +// Data URI string containing a base64-encoded empty GIF image. +// Used as a hack to free memory from unused images on WebKit-powered +// mobile devices (by setting image `src` to this string). +var emptyImageUrl = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + +// inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + +function getPrefixed(name) { + return window['webkit' + name] || window['moz' + name] || window['ms' + name]; +} + +var lastTime = 0; + +// fallback for IE 7-8 +function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); +} + +var requestFn = window.requestAnimationFrame || getPrefixed('RequestAnimationFrame') || timeoutDefer; +var cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; + +// @function requestAnimFrame(fn: Function, context?: Object, immediate?: Boolean): Number +// Schedules `fn` to be executed when the browser repaints. `fn` is bound to +// `context` if given. When `immediate` is set, `fn` is called immediately if +// the browser doesn't have native support for +// [`window.requestAnimationFrame`](https://developer.mozilla.org/docs/Web/API/window/requestAnimationFrame), +// otherwise it's delayed. Returns a request ID that can be used to cancel the request. +function requestAnimFrame(fn, context, immediate) { + if (immediate && requestFn === timeoutDefer) { + fn.call(context); + } else { + return requestFn.call(window, bind(fn, context)); + } +} + +// @function cancelAnimFrame(id: Number): undefined +// Cancels a previous `requestAnimFrame`. See also [window.cancelAnimationFrame](https://developer.mozilla.org/docs/Web/API/window/cancelAnimationFrame). +function cancelAnimFrame(id) { + if (id) { + cancelFn.call(window, id); + } +} + + +var Util = (Object.freeze || Object)({ + freeze: freeze, + extend: extend, + create: create, + bind: bind, + lastId: lastId, + stamp: stamp, + throttle: throttle, + wrapNum: wrapNum, + falseFn: falseFn, + formatNum: formatNum, + trim: trim, + splitWords: splitWords, + setOptions: setOptions, + getParamString: getParamString, + template: template, + isArray: isArray, + indexOf: indexOf, + emptyImageUrl: emptyImageUrl, + requestFn: requestFn, + cancelFn: cancelFn, + requestAnimFrame: requestAnimFrame, + cancelAnimFrame: cancelAnimFrame +}); + +// @class Class +// @aka L.Class + +// @section +// @uninheritable + +// Thanks to John Resig and Dean Edwards for inspiration! + +function Class() {} + +Class.extend = function (props) { + + // @function extend(props: Object): Function + // [Extends the current class](#class-inheritance) given the properties to be included. + // Returns a Javascript function that is a class constructor (to be called with `new`). + var NewClass = function () { + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + this.callInitHooks(); + }; + + var parentProto = NewClass.__super__ = this.prototype; + + var proto = create(parentProto); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + // inherit parent's statics + for (var i in this) { + if (this.hasOwnProperty(i) && i !== 'prototype' && i !== '__super__') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + extend(NewClass, props.statics); + delete props.statics; + } + + // mix includes into the prototype + if (props.includes) { + checkDeprecatedMixinEvents(props.includes); + extend.apply(null, [proto].concat(props.includes)); + delete props.includes; + } + + // merge options + if (proto.options) { + props.options = extend(create(proto.options), props.options); + } + + // mix given properties into the prototype + extend(proto, props); + + proto._initHooks = []; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parentProto.callInitHooks) { + parentProto.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; +}; + + +// @function include(properties: Object): this +// [Includes a mixin](#class-includes) into the current class. +Class.include = function (props) { + extend(this.prototype, props); + return this; +}; + +// @function mergeOptions(options: Object): this +// [Merges `options`](#class-options) into the defaults of the class. +Class.mergeOptions = function (options) { + extend(this.prototype.options, options); + return this; +}; + +// @function addInitHook(fn: Function): this +// Adds a [constructor hook](#class-constructor-hooks) to the class. +Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); + return this; +}; + +function checkDeprecatedMixinEvents(includes) { + if (typeof L === 'undefined' || !L || !L.Mixin) { return; } + + includes = isArray(includes) ? includes : [includes]; + + for (var i = 0; i < includes.length; i++) { + if (includes[i] === L.Mixin.Events) { + console.warn('Deprecated include of L.Mixin.Events: ' + + 'this property will be removed in future releases, ' + + 'please inherit from L.Evented instead.', new Error().stack); + } + } +} + +/* + * @class Evented + * @aka L.Evented + * @inherits Class + * + * A set of methods shared between event-powered classes (like `Map` and `Marker`). Generally, events allow you to execute some function when something happens with an object (e.g. the user clicks on the map, causing the map to fire `'click'` event). + * + * @example + * + * ```js + * map.on('click', function(e) { + * alert(e.latlng); + * } ); + * ``` + * + * Leaflet deals with event listeners by reference, so if you want to add a listener and then remove it, define it as a function: + * + * ```js + * function onClick(e) { ... } + * + * map.on('click', onClick); + * map.off('click', onClick); + * ``` + */ + +var Events = { + /* @method on(type: String, fn: Function, context?: Object): this + * Adds a listener function (`fn`) to a particular event type of the object. You can optionally specify the context of the listener (object the this keyword will point to). You can also pass several space-separated types (e.g. `'click dblclick'`). + * + * @alternative + * @method on(eventMap: Object): this + * Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` + */ + on: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn); + } + + } else { + // types can be a string of space-separated words + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context); + } + } + + return this; + }, + + /* @method off(type: String, fn?: Function, context?: Object): this + * Removes a previously added listener function. If no function is specified, it will remove all the listeners of that particular event from the object. Note that if you passed a custom context to `on`, you must pass the same context to `off` in order to remove the listener. + * + * @alternative + * @method off(eventMap: Object): this + * Removes a set of type/listener pairs. + * + * @alternative + * @method off: this + * Removes all listeners to all events on the object. + */ + off: function (types, fn, context) { + + if (!types) { + // clear all listeners if called without arguments + delete this._events; + + } else if (typeof types === 'object') { + for (var type in types) { + this._off(type, types[type], fn); + } + + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._off(types[i], fn, context); + } + } + + return this; + }, + + // attach listener (without syntactic sugar now) + _on: function (type, fn, context) { + this._events = this._events || {}; + + /* get/init listeners for type */ + var typeListeners = this._events[type]; + if (!typeListeners) { + typeListeners = []; + this._events[type] = typeListeners; + } + + if (context === this) { + // Less memory footprint. + context = undefined; + } + var newListener = {fn: fn, ctx: context}, + listeners = typeListeners; + + // check if fn already there + for (var i = 0, len = listeners.length; i < len; i++) { + if (listeners[i].fn === fn && listeners[i].ctx === context) { + return; + } + } + + listeners.push(newListener); + }, + + _off: function (type, fn, context) { + var listeners, + i, + len; + + if (!this._events) { return; } + + listeners = this._events[type]; + + if (!listeners) { + return; + } + + if (!fn) { + // Set all removed listeners to noop so they are not called if remove happens in fire + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].fn = falseFn; + } + // clear all listeners for a type if function isn't specified + delete this._events[type]; + return; + } + + if (context === this) { + context = undefined; + } + + if (listeners) { + + // find fn and remove it + for (i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + if (l.ctx !== context) { continue; } + if (l.fn === fn) { + + // set the removed listener to noop so that's not called if remove happens in fire + l.fn = falseFn; + + if (this._firingCount) { + /* copy array in case events are being fired */ + this._events[type] = listeners = listeners.slice(); + } + listeners.splice(i, 1); + + return; + } + } + } + }, + + // @method fire(type: String, data?: Object, propagate?: Boolean): this + // Fires an event of the specified type. You can optionally provide an data + // object — the first argument of the listener function will contain its + // properties. The event can optionally be propagated to event parents. + fire: function (type, data, propagate) { + if (!this.listens(type, propagate)) { return this; } + + var event = extend({}, data, { + type: type, + target: this, + sourceTarget: data && data.sourceTarget || this + }); + + if (this._events) { + var listeners = this._events[type]; + + if (listeners) { + this._firingCount = (this._firingCount + 1) || 1; + for (var i = 0, len = listeners.length; i < len; i++) { + var l = listeners[i]; + l.fn.call(l.ctx || this, event); + } + + this._firingCount--; + } + } + + if (propagate) { + // propagate the event to parents (set with addEventParent) + this._propagateEvent(event); + } + + return this; + }, + + // @method listens(type: String): Boolean + // Returns `true` if a particular event type has any listeners attached to it. + listens: function (type, propagate) { + var listeners = this._events && this._events[type]; + if (listeners && listeners.length) { return true; } + + if (propagate) { + // also check parents for listeners if event propagates + for (var id in this._eventParents) { + if (this._eventParents[id].listens(type, propagate)) { return true; } + } + } + return false; + }, + + // @method once(…): this + // Behaves as [`on(…)`](#evented-on), except the listener will only get fired once and then removed. + once: function (types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this.once(type, types[type], fn); + } + return this; + } + + var handler = bind(function () { + this + .off(types, fn, context) + .off(types, handler, context); + }, this); + + // add a listener that's executed once and removed after that + return this + .on(types, fn, context) + .on(types, handler, context); + }, + + // @method addEventParent(obj: Evented): this + // Adds an event parent - an `Evented` that will receive propagated events + addEventParent: function (obj) { + this._eventParents = this._eventParents || {}; + this._eventParents[stamp(obj)] = obj; + return this; + }, + + // @method removeEventParent(obj: Evented): this + // Removes an event parent, so it will stop receiving propagated events + removeEventParent: function (obj) { + if (this._eventParents) { + delete this._eventParents[stamp(obj)]; + } + return this; + }, + + _propagateEvent: function (e) { + for (var id in this._eventParents) { + this._eventParents[id].fire(e.type, extend({ + layer: e.target, + propagatedFrom: e.target + }, e), true); + } + } +}; + +// aliases; we should ditch those eventually + +// @method addEventListener(…): this +// Alias to [`on(…)`](#evented-on) +Events.addEventListener = Events.on; + +// @method removeEventListener(…): this +// Alias to [`off(…)`](#evented-off) + +// @method clearAllEventListeners(…): this +// Alias to [`off()`](#evented-off) +Events.removeEventListener = Events.clearAllEventListeners = Events.off; + +// @method addOneTimeEventListener(…): this +// Alias to [`once(…)`](#evented-once) +Events.addOneTimeEventListener = Events.once; + +// @method fireEvent(…): this +// Alias to [`fire(…)`](#evented-fire) +Events.fireEvent = Events.fire; + +// @method hasEventListeners(…): Boolean +// Alias to [`listens(…)`](#evented-listens) +Events.hasEventListeners = Events.listens; + +var Evented = Class.extend(Events); + +/* + * @class Point + * @aka L.Point + * + * Represents a point with `x` and `y` coordinates in pixels. + * + * @example + * + * ```js + * var point = L.point(200, 300); + * ``` + * + * All Leaflet methods and options that accept `Point` objects also accept them in a simple Array form (unless noted otherwise), so these lines are equivalent: + * + * ```js + * map.panBy([200, 300]); + * map.panBy(L.point(200, 300)); + * ``` + * + * Note that `Point` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Point(x, y, round) { + // @property x: Number; The `x` coordinate of the point + this.x = (round ? Math.round(x) : x); + // @property y: Number; The `y` coordinate of the point + this.y = (round ? Math.round(y) : y); +} + +var trunc = Math.trunc || function (v) { + return v > 0 ? Math.floor(v) : Math.ceil(v); +}; + +Point.prototype = { + + // @method clone(): Point + // Returns a copy of the current point. + clone: function () { + return new Point(this.x, this.y); + }, + + // @method add(otherPoint: Point): Point + // Returns the result of addition of the current and the given points. + add: function (point) { + // non-destructive, returns a new point + return this.clone()._add(toPoint(point)); + }, + + _add: function (point) { + // destructive, used directly for performance in situations where it's safe to modify existing point + this.x += point.x; + this.y += point.y; + return this; + }, + + // @method subtract(otherPoint: Point): Point + // Returns the result of subtraction of the given point from the current. + subtract: function (point) { + return this.clone()._subtract(toPoint(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + // @method divideBy(num: Number): Point + // Returns the result of division of the current point by the given number. + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + // @method multiplyBy(num: Number): Point + // Returns the result of multiplication of the current point by the given number. + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + // @method scaleBy(scale: Point): Point + // Multiply each coordinate of the current point by each coordinate of + // `scale`. In linear algebra terms, multiply the point by the + // [scaling matrix](https://en.wikipedia.org/wiki/Scaling_%28geometry%29#Matrix_representation) + // defined by `scale`. + scaleBy: function (point) { + return new Point(this.x * point.x, this.y * point.y); + }, + + // @method unscaleBy(scale: Point): Point + // Inverse of `scaleBy`. Divide each coordinate of the current point by + // each coordinate of `scale`. + unscaleBy: function (point) { + return new Point(this.x / point.x, this.y / point.y); + }, + + // @method round(): Point + // Returns a copy of the current point with rounded coordinates. + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + // @method floor(): Point + // Returns a copy of the current point with floored coordinates (rounded down). + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + // @method ceil(): Point + // Returns a copy of the current point with ceiled coordinates (rounded up). + ceil: function () { + return this.clone()._ceil(); + }, + + _ceil: function () { + this.x = Math.ceil(this.x); + this.y = Math.ceil(this.y); + return this; + }, + + // @method trunc(): Point + // Returns a copy of the current point with truncated coordinates (rounded towards zero). + trunc: function () { + return this.clone()._trunc(); + }, + + _trunc: function () { + this.x = trunc(this.x); + this.y = trunc(this.y); + return this; + }, + + // @method distanceTo(otherPoint: Point): Number + // Returns the cartesian distance between the current and the given points. + distanceTo: function (point) { + point = toPoint(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + // @method equals(otherPoint: Point): Boolean + // Returns `true` if the given point has the same coordinates. + equals: function (point) { + point = toPoint(point); + + return point.x === this.x && + point.y === this.y; + }, + + // @method contains(otherPoint: Point): Boolean + // Returns `true` if both coordinates of the given point are less than the corresponding current point coordinates (in absolute values). + contains: function (point) { + point = toPoint(point); + + return Math.abs(point.x) <= Math.abs(this.x) && + Math.abs(point.y) <= Math.abs(this.y); + }, + + // @method toString(): String + // Returns a string representation of the point for debugging purposes. + toString: function () { + return 'Point(' + + formatNum(this.x) + ', ' + + formatNum(this.y) + ')'; + } +}; + +// @factory L.point(x: Number, y: Number, round?: Boolean) +// Creates a Point object with the given `x` and `y` coordinates. If optional `round` is set to true, rounds the `x` and `y` values. + +// @alternative +// @factory L.point(coords: Number[]) +// Expects an array of the form `[x, y]` instead. + +// @alternative +// @factory L.point(coords: Object) +// Expects a plain object of the form `{x: Number, y: Number}` instead. +function toPoint(x, y, round) { + if (x instanceof Point) { + return x; + } + if (isArray(x)) { + return new Point(x[0], x[1]); + } + if (x === undefined || x === null) { + return x; + } + if (typeof x === 'object' && 'x' in x && 'y' in x) { + return new Point(x.x, x.y); + } + return new Point(x, y, round); +} + +/* + * @class Bounds + * @aka L.Bounds + * + * Represents a rectangular area in pixel coordinates. + * + * @example + * + * ```js + * var p1 = L.point(10, 10), + * p2 = L.point(40, 60), + * bounds = L.bounds(p1, p2); + * ``` + * + * All Leaflet methods that accept `Bounds` objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * otherBounds.intersects([[10, 10], [40, 60]]); + * ``` + * + * Note that `Bounds` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function Bounds(a, b) { + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } +} + +Bounds.prototype = { + // @method extend(point: Point): this + // Extends the bounds to contain the given point. + extend: function (point) { // (Point) + point = toPoint(point); + + // @property min: Point + // The top left corner of the rectangle. + // @property max: Point + // The bottom right corner of the rectangle. + if (!this.min && !this.max) { + this.min = point.clone(); + this.max = point.clone(); + } else { + this.min.x = Math.min(point.x, this.min.x); + this.max.x = Math.max(point.x, this.max.x); + this.min.y = Math.min(point.y, this.min.y); + this.max.y = Math.max(point.y, this.max.y); + } + return this; + }, + + // @method getCenter(round?: Boolean): Point + // Returns the center point of the bounds. + getCenter: function (round) { + return new Point( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + // @method getBottomLeft(): Point + // Returns the bottom-left point of the bounds. + getBottomLeft: function () { + return new Point(this.min.x, this.max.y); + }, + + // @method getTopRight(): Point + // Returns the top-right point of the bounds. + getTopRight: function () { // -> Point + return new Point(this.max.x, this.min.y); + }, + + // @method getTopLeft(): Point + // Returns the top-left point of the bounds (i.e. [`this.min`](#bounds-min)). + getTopLeft: function () { + return this.min; // left, top + }, + + // @method getBottomRight(): Point + // Returns the bottom-right point of the bounds (i.e. [`this.max`](#bounds-max)). + getBottomRight: function () { + return this.max; // right, bottom + }, + + // @method getSize(): Point + // Returns the size of the given bounds + getSize: function () { + return this.max.subtract(this.min); + }, + + // @method contains(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle contains the given one. + // @alternative + // @method contains(point: Point): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof Point) { + obj = toPoint(obj); + } else { + obj = toBounds(obj); + } + + if (obj instanceof Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + // @method intersects(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds + // intersect if they have at least one point in common. + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds + // overlap if their intersection is an area. + overlaps: function (bounds) { // (Bounds) -> Boolean + bounds = toBounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xOverlaps = (max2.x > min.x) && (min2.x < max.x), + yOverlaps = (max2.y > min.y) && (min2.y < max.y); + + return xOverlaps && yOverlaps; + }, + + isValid: function () { + return !!(this.min && this.max); + } +}; + + +// @factory L.bounds(corner1: Point, corner2: Point) +// Creates a Bounds object from two corners coordinate pairs. +// @alternative +// @factory L.bounds(points: Point[]) +// Creates a Bounds object from the given array of points. +function toBounds(a, b) { + if (!a || a instanceof Bounds) { + return a; + } + return new Bounds(a, b); +} + +/* + * @class LatLngBounds + * @aka L.LatLngBounds + * + * Represents a rectangular geographical area on a map. + * + * @example + * + * ```js + * var corner1 = L.latLng(40.712, -74.227), + * corner2 = L.latLng(40.774, -74.125), + * bounds = L.latLngBounds(corner1, corner2); + * ``` + * + * All Leaflet methods that accept LatLngBounds objects also accept them in a simple Array form (unless noted otherwise), so the bounds example above can be passed like this: + * + * ```js + * map.fitBounds([ + * [40.712, -74.227], + * [40.774, -74.125] + * ]); + * ``` + * + * Caution: if the area crosses the antimeridian (often confused with the International Date Line), you must specify corners _outside_ the [-180, 180] degrees longitude range. + * + * Note that `LatLngBounds` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLngBounds(corner1, corner2) { // (LatLng, LatLng) or (LatLng[]) + if (!corner1) { return; } + + var latlngs = corner2 ? [corner1, corner2] : corner1; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } +} + +LatLngBounds.prototype = { + + // @method extend(latlng: LatLng): this + // Extend the bounds to contain the given point + + // @alternative + // @method extend(otherBounds: LatLngBounds): this + // Extend the bounds to contain the given bounds + extend: function (obj) { + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLng) { + sw2 = obj; + ne2 = obj; + + } else if (obj instanceof LatLngBounds) { + sw2 = obj._southWest; + ne2 = obj._northEast; + + if (!sw2 || !ne2) { return this; } + + } else { + return obj ? this.extend(toLatLng(obj) || toLatLngBounds(obj)) : this; + } + + if (!sw && !ne) { + this._southWest = new LatLng(sw2.lat, sw2.lng); + this._northEast = new LatLng(ne2.lat, ne2.lng); + } else { + sw.lat = Math.min(sw2.lat, sw.lat); + sw.lng = Math.min(sw2.lng, sw.lng); + ne.lat = Math.max(ne2.lat, ne.lat); + ne.lng = Math.max(ne2.lng, ne.lng); + } + + return this; + }, + + // @method pad(bufferRatio: Number): LatLngBounds + // Returns bounds created by extending or retracting the current bounds by a given ratio in each direction. + // For example, a ratio of 0.5 extends the bounds by 50% in each direction. + // Negative values will retract the bounds. + pad: function (bufferRatio) { + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new LatLngBounds( + new LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + // @method getCenter(): LatLng + // Returns the center point of the bounds. + getCenter: function () { + return new LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + // @method getSouthWest(): LatLng + // Returns the south-west point of the bounds. + getSouthWest: function () { + return this._southWest; + }, + + // @method getNorthEast(): LatLng + // Returns the north-east point of the bounds. + getNorthEast: function () { + return this._northEast; + }, + + // @method getNorthWest(): LatLng + // Returns the north-west point of the bounds. + getNorthWest: function () { + return new LatLng(this.getNorth(), this.getWest()); + }, + + // @method getSouthEast(): LatLng + // Returns the south-east point of the bounds. + getSouthEast: function () { + return new LatLng(this.getSouth(), this.getEast()); + }, + + // @method getWest(): Number + // Returns the west longitude of the bounds + getWest: function () { + return this._southWest.lng; + }, + + // @method getSouth(): Number + // Returns the south latitude of the bounds + getSouth: function () { + return this._southWest.lat; + }, + + // @method getEast(): Number + // Returns the east longitude of the bounds + getEast: function () { + return this._northEast.lng; + }, + + // @method getNorth(): Number + // Returns the north latitude of the bounds + getNorth: function () { + return this._northEast.lat; + }, + + // @method contains(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle contains the given one. + + // @alternative + // @method contains (latlng: LatLng): Boolean + // Returns `true` if the rectangle contains the given point. + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof LatLng || 'lat' in obj) { + obj = toLatLng(obj); + } else { + obj = toLatLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + // @method intersects(otherBounds: LatLngBounds): Boolean + // Returns `true` if the rectangle intersects the given bounds. Two bounds intersect if they have at least one point in common. + intersects: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + // @method overlaps(otherBounds: Bounds): Boolean + // Returns `true` if the rectangle overlaps the given bounds. Two bounds overlap if their intersection is an area. + overlaps: function (bounds) { + bounds = toLatLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), + lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); + + return latOverlaps && lngOverlaps; + }, + + // @method toBBoxString(): String + // Returns a string with bounding box coordinates in a 'southwest_lng,southwest_lat,northeast_lng,northeast_lat' format. Useful for sending requests to web services that return geo data. + toBBoxString: function () { + return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); + }, + + // @method equals(otherBounds: LatLngBounds, maxMargin?: Number): Boolean + // Returns `true` if the rectangle is equivalent (within a small margin of error) to the given bounds. The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (bounds, maxMargin) { + if (!bounds) { return false; } + + bounds = toLatLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest(), maxMargin) && + this._northEast.equals(bounds.getNorthEast(), maxMargin); + }, + + // @method isValid(): Boolean + // Returns `true` if the bounds are properly initialized. + isValid: function () { + return !!(this._southWest && this._northEast); + } +}; + +// TODO International date line? + +// @factory L.latLngBounds(corner1: LatLng, corner2: LatLng) +// Creates a `LatLngBounds` object by defining two diagonally opposite corners of the rectangle. + +// @alternative +// @factory L.latLngBounds(latlngs: LatLng[]) +// Creates a `LatLngBounds` object defined by the geographical points it contains. Very useful for zooming the map to fit a particular set of locations with [`fitBounds`](#map-fitbounds). +function toLatLngBounds(a, b) { + if (a instanceof LatLngBounds) { + return a; + } + return new LatLngBounds(a, b); +} + +/* @class LatLng + * @aka L.LatLng + * + * Represents a geographical point with a certain latitude and longitude. + * + * @example + * + * ``` + * var latlng = L.latLng(50.5, 30.5); + * ``` + * + * All Leaflet methods that accept LatLng objects also accept them in a simple Array form and simple object form (unless noted otherwise), so these lines are equivalent: + * + * ``` + * map.panTo([50, 30]); + * map.panTo({lon: 30, lat: 50}); + * map.panTo({lat: 50, lng: 30}); + * map.panTo(L.latLng(50, 30)); + * ``` + * + * Note that `LatLng` does not inherit from Leafet's `Class` object, + * which means new classes can't inherit from it, and new methods + * can't be added to it with the `include` function. + */ + +function LatLng(lat, lng, alt) { + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + // @property lat: Number + // Latitude in degrees + this.lat = +lat; + + // @property lng: Number + // Longitude in degrees + this.lng = +lng; + + // @property alt: Number + // Altitude in meters (optional) + if (alt !== undefined) { + this.alt = +alt; + } +} + +LatLng.prototype = { + // @method equals(otherLatLng: LatLng, maxMargin?: Number): Boolean + // Returns `true` if the given `LatLng` point is at the same position (within a small margin of error). The margin of error can be overridden by setting `maxMargin` to a small number. + equals: function (obj, maxMargin) { + if (!obj) { return false; } + + obj = toLatLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= (maxMargin === undefined ? 1.0E-9 : maxMargin); + }, + + // @method toString(): String + // Returns a string representation of the point (for debugging purposes). + toString: function (precision) { + return 'LatLng(' + + formatNum(this.lat, precision) + ', ' + + formatNum(this.lng, precision) + ')'; + }, + + // @method distanceTo(otherLatLng: LatLng): Number + // Returns the distance (in meters) to the given `LatLng` calculated using the [Spherical Law of Cosines](https://en.wikipedia.org/wiki/Spherical_law_of_cosines). + distanceTo: function (other) { + return Earth.distance(this, toLatLng(other)); + }, + + // @method wrap(): LatLng + // Returns a new `LatLng` object with the longitude wrapped so it's always between -180 and +180 degrees. + wrap: function () { + return Earth.wrapLatLng(this); + }, + + // @method toBounds(sizeInMeters: Number): LatLngBounds + // Returns a new `LatLngBounds` object in which each boundary is `sizeInMeters/2` meters apart from the `LatLng`. + toBounds: function (sizeInMeters) { + var latAccuracy = 180 * sizeInMeters / 40075017, + lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); + + return toLatLngBounds( + [this.lat - latAccuracy, this.lng - lngAccuracy], + [this.lat + latAccuracy, this.lng + lngAccuracy]); + }, + + clone: function () { + return new LatLng(this.lat, this.lng, this.alt); + } +}; + + + +// @factory L.latLng(latitude: Number, longitude: Number, altitude?: Number): LatLng +// Creates an object representing a geographical point with the given latitude and longitude (and optionally altitude). + +// @alternative +// @factory L.latLng(coords: Array): LatLng +// Expects an array of the form `[Number, Number]` or `[Number, Number, Number]` instead. + +// @alternative +// @factory L.latLng(coords: Object): LatLng +// Expects an plain object of the form `{lat: Number, lng: Number}` or `{lat: Number, lng: Number, alt: Number}` instead. + +function toLatLng(a, b, c) { + if (a instanceof LatLng) { + return a; + } + if (isArray(a) && typeof a[0] !== 'object') { + if (a.length === 3) { + return new LatLng(a[0], a[1], a[2]); + } + if (a.length === 2) { + return new LatLng(a[0], a[1]); + } + return null; + } + if (a === undefined || a === null) { + return a; + } + if (typeof a === 'object' && 'lat' in a) { + return new LatLng(a.lat, 'lng' in a ? a.lng : a.lon, a.alt); + } + if (b === undefined) { + return null; + } + return new LatLng(a, b, c); +} + +/* + * @namespace CRS + * @crs L.CRS.Base + * Object that defines coordinate reference systems for projecting + * geographical points into pixel (screen) coordinates and back (and to + * coordinates in other units for [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services). See + * [spatial reference system](http://en.wikipedia.org/wiki/Coordinate_reference_system). + * + * Leaflet defines the most usual CRSs by default. If you want to use a + * CRS not defined by default, take a look at the + * [Proj4Leaflet](https://github.com/kartena/Proj4Leaflet) plugin. + * + * Note that the CRS instances do not inherit from Leafet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + */ + +var CRS = { + // @method latLngToPoint(latlng: LatLng, zoom: Number): Point + // Projects geographical coordinates into pixel coordinates for a given zoom. + latLngToPoint: function (latlng, zoom) { + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + // @method pointToLatLng(point: Point, zoom: Number): LatLng + // The inverse of `latLngToPoint`. Projects pixel coordinates on a given + // zoom into geographical coordinates. + pointToLatLng: function (point, zoom) { + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + // @method project(latlng: LatLng): Point + // Projects geographical coordinates into coordinates in units accepted for + // this CRS (e.g. meters for EPSG:3857, for passing it to WMS services). + project: function (latlng) { + return this.projection.project(latlng); + }, + + // @method unproject(point: Point): LatLng + // Given a projected coordinate returns the corresponding LatLng. + // The inverse of `project`. + unproject: function (point) { + return this.projection.unproject(point); + }, + + // @method scale(zoom: Number): Number + // Returns the scale used when transforming projected coordinates into + // pixel coordinates for a particular zoom. For example, it returns + // `256 * 2^zoom` for Mercator-based CRS. + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + // @method zoom(scale: Number): Number + // Inverse of `scale()`, returns the zoom level corresponding to a scale + // factor of `scale`. + zoom: function (scale) { + return Math.log(scale / 256) / Math.LN2; + }, + + // @method getProjectedBounds(zoom: Number): Bounds + // Returns the projection's bounds scaled and transformed for the provided `zoom`. + getProjectedBounds: function (zoom) { + if (this.infinite) { return null; } + + var b = this.projection.bounds, + s = this.scale(zoom), + min = this.transformation.transform(b.min, s), + max = this.transformation.transform(b.max, s); + + return new Bounds(min, max); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates. + + // @property code: String + // Standard code name of the CRS passed into WMS services (e.g. `'EPSG:3857'`) + // + // @property wrapLng: Number[] + // An array of two numbers defining whether the longitude (horizontal) coordinate + // axis wraps around a given range and how. Defaults to `[-180, 180]` in most + // geographical CRSs. If `undefined`, the longitude axis does not wrap around. + // + // @property wrapLat: Number[] + // Like `wrapLng`, but for the latitude (vertical) axis. + + // wrapLng: [min, max], + // wrapLat: [min, max], + + // @property infinite: Boolean + // If true, the coordinate space will be unbounded (infinite in both axes) + infinite: false, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where lat and lng has been wrapped according to the + // CRS's `wrapLat` and `wrapLng` properties, if they are outside the CRS's bounds. + wrapLatLng: function (latlng) { + var lng = this.wrapLng ? wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, + lat = this.wrapLat ? wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, + alt = latlng.alt; + + return new LatLng(lat, lng, alt); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring + // that its center is within the CRS's bounds. + // Only accepts actual `L.LatLngBounds` instances, not arrays. + wrapLatLngBounds: function (bounds) { + var center = bounds.getCenter(), + newCenter = this.wrapLatLng(center), + latShift = center.lat - newCenter.lat, + lngShift = center.lng - newCenter.lng; + + if (latShift === 0 && lngShift === 0) { + return bounds; + } + + var sw = bounds.getSouthWest(), + ne = bounds.getNorthEast(), + newSw = new LatLng(sw.lat - latShift, sw.lng - lngShift), + newNe = new LatLng(ne.lat - latShift, ne.lng - lngShift); + + return new LatLngBounds(newSw, newNe); + } +}; + +/* + * @namespace CRS + * @crs L.CRS.Earth + * + * Serves as the base for CRS that are global such that they cover the earth. + * Can only be used as the base for other CRS and cannot be used directly, + * since it does not have a `code`, `projection` or `transformation`. `distance()` returns + * meters. + */ + +var Earth = extend({}, CRS, { + wrapLng: [-180, 180], + + // Mean Earth Radius, as recommended for use by + // the International Union of Geodesy and Geophysics, + // see http://rosettacode.org/wiki/Haversine_formula + R: 6371000, + + // distance between two geographical points using spherical law of cosines approximation + distance: function (latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1.lat * rad, + lat2 = latlng2.lat * rad, + sinDLat = Math.sin((latlng2.lat - latlng1.lat) * rad / 2), + sinDLon = Math.sin((latlng2.lng - latlng1.lng) * rad / 2), + a = sinDLat * sinDLat + Math.cos(lat1) * Math.cos(lat2) * sinDLon * sinDLon, + c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + return this.R * c; + } +}); + +/* + * @namespace Projection + * @projection L.Projection.SphericalMercator + * + * Spherical Mercator projection — the most common projection for online maps, + * used by almost all free and commercial tile providers. Assumes that Earth is + * a sphere. Used by the `EPSG:3857` CRS. + */ + +var SphericalMercator = { + + R: 6378137, + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { + var d = Math.PI / 180, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + sin = Math.sin(lat * d); + + return new Point( + this.R * latlng.lng * d, + this.R * Math.log((1 + sin) / (1 - sin)) / 2); + }, + + unproject: function (point) { + var d = 180 / Math.PI; + + return new LatLng( + (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, + point.x * d / this.R); + }, + + bounds: (function () { + var d = 6378137 * Math.PI; + return new Bounds([-d, -d], [d, d]); + })() +}; + +/* + * @class Transformation + * @aka L.Transformation + * + * Represents an affine transformation: a set of coefficients `a`, `b`, `c`, `d` + * for transforming a point of a form `(x, y)` into `(a*x + b, c*y + d)` and doing + * the reverse. Used by Leaflet in its projections code. + * + * @example + * + * ```js + * var transformation = L.transformation(2, 5, -1, 10), + * p = L.point(1, 2), + * p2 = transformation.transform(p), // L.point(7, 8) + * p3 = transformation.untransform(p2); // L.point(1, 2) + * ``` + */ + + +// factory new L.Transformation(a: Number, b: Number, c: Number, d: Number) +// Creates a `Transformation` object with the given coefficients. +function Transformation(a, b, c, d) { + if (isArray(a)) { + // use array properties + this._a = a[0]; + this._b = a[1]; + this._c = a[2]; + this._d = a[3]; + return; + } + this._a = a; + this._b = b; + this._c = c; + this._d = d; +} + +Transformation.prototype = { + // @method transform(point: Point, scale?: Number): Point + // Returns a transformed point, optionally multiplied by the given scale. + // Only accepts actual `L.Point` instances, not arrays. + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + // @method untransform(point: Point, scale?: Number): Point + // Returns the reverse transformation of the given point, optionally divided + // by the given scale. Only accepts actual `L.Point` instances, not arrays. + untransform: function (point, scale) { + scale = scale || 1; + return new Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } +}; + +// factory L.transformation(a: Number, b: Number, c: Number, d: Number) + +// @factory L.transformation(a: Number, b: Number, c: Number, d: Number) +// Instantiates a Transformation object with the given coefficients. + +// @alternative +// @factory L.transformation(coefficients: Array): Transformation +// Expects an coefficients array of the form +// `[a: Number, b: Number, c: Number, d: Number]`. + +function toTransformation(a, b, c, d) { + return new Transformation(a, b, c, d); +} + +/* + * @namespace CRS + * @crs L.CRS.EPSG3857 + * + * The most common CRS for online maps, used by almost all free and commercial + * tile providers. Uses Spherical Mercator projection. Set in by default in + * Map's `crs` option. + */ + +var EPSG3857 = extend({}, Earth, { + code: 'EPSG:3857', + projection: SphericalMercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * SphericalMercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +var EPSG900913 = extend({}, EPSG3857, { + code: 'EPSG:900913' +}); + +// @namespace SVG; @section +// There are several static functions which can be called without instantiating L.SVG: + +// @function create(name: String): SVGElement +// Returns a instance of [SVGElement](https://developer.mozilla.org/docs/Web/API/SVGElement), +// corresponding to the class name passed. For example, using 'line' will return +// an instance of [SVGLineElement](https://developer.mozilla.org/docs/Web/API/SVGLineElement). +function svgCreate(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} + +// @function pointsToPath(rings: Point[], closed: Boolean): String +// Generates a SVG path string for multiple rings, with each ring turning +// into "M..L..L.." instructions +function pointsToPath(rings, closed) { + var str = '', + i, j, len, len2, points, p; + + for (i = 0, len = rings.length; i < len; i++) { + points = rings[i]; + + for (j = 0, len2 = points.length; j < len2; j++) { + p = points[j]; + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + + // closes the ring for polygons; "x" is VML syntax + str += closed ? (svg ? 'z' : 'x') : ''; + } + + // SVG complains about empty path strings + return str || 'M0 0'; +} + +/* + * @namespace Browser + * @aka L.Browser + * + * A namespace with static properties for browser/feature detection used by Leaflet internally. + * + * @example + * + * ```js + * if (L.Browser.ielt9) { + * alert('Upgrade your browser, dude!'); + * } + * ``` + */ + +var style$1 = document.documentElement.style; + +// @property ie: Boolean; `true` for all Internet Explorer versions (not Edge). +var ie = 'ActiveXObject' in window; + +// @property ielt9: Boolean; `true` for Internet Explorer versions less than 9. +var ielt9 = ie && !document.addEventListener; + +// @property edge: Boolean; `true` for the Edge web browser. +var edge = 'msLaunchUri' in navigator && !('documentMode' in document); + +// @property webkit: Boolean; +// `true` for webkit-based browsers like Chrome and Safari (including mobile versions). +var webkit = userAgentContains('webkit'); + +// @property android: Boolean +// `true` for any browser running on an Android platform. +var android = userAgentContains('android'); + +// @property android23: Boolean; `true` for browsers running on Android 2 or Android 3. +var android23 = userAgentContains('android 2') || userAgentContains('android 3'); + +/* See https://stackoverflow.com/a/17961266 for details on detecting stock Android */ +var webkitVer = parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1], 10); // also matches AppleWebKit +// @property androidStock: Boolean; `true` for the Android stock browser (i.e. not Chrome) +var androidStock = android && userAgentContains('Google') && webkitVer < 537 && !('AudioNode' in window); + +// @property opera: Boolean; `true` for the Opera browser +var opera = !!window.opera; + +// @property chrome: Boolean; `true` for the Chrome browser. +var chrome = userAgentContains('chrome'); + +// @property gecko: Boolean; `true` for gecko-based browsers like Firefox. +var gecko = userAgentContains('gecko') && !webkit && !opera && !ie; + +// @property safari: Boolean; `true` for the Safari browser. +var safari = !chrome && userAgentContains('safari'); + +var phantom = userAgentContains('phantom'); + +// @property opera12: Boolean +// `true` for the Opera browser supporting CSS transforms (version 12 or later). +var opera12 = 'OTransition' in style$1; + +// @property win: Boolean; `true` when the browser is running in a Windows platform +var win = navigator.platform.indexOf('Win') === 0; + +// @property ie3d: Boolean; `true` for all Internet Explorer versions supporting CSS transforms. +var ie3d = ie && ('transition' in style$1); + +// @property webkit3d: Boolean; `true` for webkit-based browsers supporting CSS transforms. +var webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23; + +// @property gecko3d: Boolean; `true` for gecko-based browsers supporting CSS transforms. +var gecko3d = 'MozPerspective' in style$1; + +// @property any3d: Boolean +// `true` for all browsers supporting CSS transforms. +var any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantom; + +// @property mobile: Boolean; `true` for all browsers running in a mobile device. +var mobile = typeof orientation !== 'undefined' || userAgentContains('mobile'); + +// @property mobileWebkit: Boolean; `true` for all webkit-based browsers in a mobile device. +var mobileWebkit = mobile && webkit; + +// @property mobileWebkit3d: Boolean +// `true` for all webkit-based browsers in a mobile device supporting CSS transforms. +var mobileWebkit3d = mobile && webkit3d; + +// @property msPointer: Boolean +// `true` for browsers implementing the Microsoft touch events model (notably IE10). +var msPointer = !window.PointerEvent && window.MSPointerEvent; + +// @property pointer: Boolean +// `true` for all browsers supporting [pointer events](https://msdn.microsoft.com/en-us/library/dn433244%28v=vs.85%29.aspx). +var pointer = !!(window.PointerEvent || msPointer); + +// @property touch: Boolean +// `true` for all browsers supporting [touch events](https://developer.mozilla.org/docs/Web/API/Touch_events). +// This does not necessarily mean that the browser is running in a computer with +// a touchscreen, it only means that the browser is capable of understanding +// touch events. +var touch = !window.L_NO_TOUCH && (pointer || 'ontouchstart' in window || + (window.DocumentTouch && document instanceof window.DocumentTouch)); + +// @property mobileOpera: Boolean; `true` for the Opera browser in a mobile device. +var mobileOpera = mobile && opera; + +// @property mobileGecko: Boolean +// `true` for gecko-based browsers running in a mobile device. +var mobileGecko = mobile && gecko; + +// @property retina: Boolean +// `true` for browsers on a high-resolution "retina" screen. +var retina = (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1; + + +// @property canvas: Boolean +// `true` when the browser supports [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API). +var canvas = (function () { + return !!document.createElement('canvas').getContext; +}()); + +// @property svg: Boolean +// `true` when the browser supports [SVG](https://developer.mozilla.org/docs/Web/SVG). +var svg = !!(document.createElementNS && svgCreate('svg').createSVGRect); + +// @property vml: Boolean +// `true` if the browser supports [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language). +var vml = !svg && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = '<v:shape adj="1"/>'; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } +}()); + + +function userAgentContains(str) { + return navigator.userAgent.toLowerCase().indexOf(str) >= 0; +} + + +var Browser = (Object.freeze || Object)({ + ie: ie, + ielt9: ielt9, + edge: edge, + webkit: webkit, + android: android, + android23: android23, + androidStock: androidStock, + opera: opera, + chrome: chrome, + gecko: gecko, + safari: safari, + phantom: phantom, + opera12: opera12, + win: win, + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + any3d: any3d, + mobile: mobile, + mobileWebkit: mobileWebkit, + mobileWebkit3d: mobileWebkit3d, + msPointer: msPointer, + pointer: pointer, + touch: touch, + mobileOpera: mobileOpera, + mobileGecko: mobileGecko, + retina: retina, + canvas: canvas, + svg: svg, + vml: vml +}); + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + + +var POINTER_DOWN = msPointer ? 'MSPointerDown' : 'pointerdown'; +var POINTER_MOVE = msPointer ? 'MSPointerMove' : 'pointermove'; +var POINTER_UP = msPointer ? 'MSPointerUp' : 'pointerup'; +var POINTER_CANCEL = msPointer ? 'MSPointerCancel' : 'pointercancel'; +var TAG_WHITE_LIST = ['INPUT', 'SELECT', 'OPTION']; + +var _pointers = {}; +var _pointerDocListener = false; + +// DomEvent.DoubleTap needs to know about this +var _pointersCount = 0; + +// Provides a touch events wrapper for (ms)pointer events. +// ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + +function addPointerListener(obj, type, handler, id) { + if (type === 'touchstart') { + _addPointerStart(obj, handler, id); + + } else if (type === 'touchmove') { + _addPointerMove(obj, handler, id); + + } else if (type === 'touchend') { + _addPointerEnd(obj, handler, id); + } + + return this; +} + +function removePointerListener(obj, type, id) { + var handler = obj['_leaflet_' + type + id]; + + if (type === 'touchstart') { + obj.removeEventListener(POINTER_DOWN, handler, false); + + } else if (type === 'touchmove') { + obj.removeEventListener(POINTER_MOVE, handler, false); + + } else if (type === 'touchend') { + obj.removeEventListener(POINTER_UP, handler, false); + obj.removeEventListener(POINTER_CANCEL, handler, false); + } + + return this; +} + +function _addPointerStart(obj, handler, id) { + var onDown = bind(function (e) { + if (e.pointerType !== 'mouse' && e.MSPOINTER_TYPE_MOUSE && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) { + // In IE11, some touch events needs to fire for form controls, or + // the controls will stop working. We keep a whitelist of tag names that + // need these events. For other target tags, we prevent default on the event. + if (TAG_WHITE_LIST.indexOf(e.target.tagName) < 0) { + preventDefault(e); + } else { + return; + } + } + + _handlePointer(e, handler); + }); + + obj['_leaflet_touchstart' + id] = onDown; + obj.addEventListener(POINTER_DOWN, onDown, false); + + // need to keep track of what pointers and how many are active to provide e.touches emulation + if (!_pointerDocListener) { + // we listen documentElement as any drags that end by moving the touch off the screen get fired there + document.documentElement.addEventListener(POINTER_DOWN, _globalPointerDown, true); + document.documentElement.addEventListener(POINTER_MOVE, _globalPointerMove, true); + document.documentElement.addEventListener(POINTER_UP, _globalPointerUp, true); + document.documentElement.addEventListener(POINTER_CANCEL, _globalPointerUp, true); + + _pointerDocListener = true; + } +} + +function _globalPointerDown(e) { + _pointers[e.pointerId] = e; + _pointersCount++; +} + +function _globalPointerMove(e) { + if (_pointers[e.pointerId]) { + _pointers[e.pointerId] = e; + } +} + +function _globalPointerUp(e) { + delete _pointers[e.pointerId]; + _pointersCount--; +} + +function _handlePointer(e, handler) { + e.touches = []; + for (var i in _pointers) { + e.touches.push(_pointers[i]); + } + e.changedTouches = [e]; + + handler(e); +} + +function _addPointerMove(obj, handler, id) { + var onMove = function (e) { + // don't fire touch moves when mouse isn't down + if ((e.pointerType === e.MSPOINTER_TYPE_MOUSE || e.pointerType === 'mouse') && e.buttons === 0) { return; } + + _handlePointer(e, handler); + }; + + obj['_leaflet_touchmove' + id] = onMove; + obj.addEventListener(POINTER_MOVE, onMove, false); +} + +function _addPointerEnd(obj, handler, id) { + var onUp = function (e) { + _handlePointer(e, handler); + }; + + obj['_leaflet_touchend' + id] = onUp; + obj.addEventListener(POINTER_UP, onUp, false); + obj.addEventListener(POINTER_CANCEL, onUp, false); +} + +/* + * Extends the event handling code with double tap support for mobile browsers. + */ + +var _touchstart = msPointer ? 'MSPointerDown' : pointer ? 'pointerdown' : 'touchstart'; +var _touchend = msPointer ? 'MSPointerUp' : pointer ? 'pointerup' : 'touchend'; +var _pre = '_leaflet_'; + +// inspired by Zepto touch code by Thomas Fuchs +function addDoubleTapListener(obj, handler, id) { + var last, touch$$1, + doubleTap = false, + delay = 250; + + function onTouchStart(e) { + var count; + + if (pointer) { + if ((!edge) || e.pointerType === 'mouse') { return; } + count = _pointersCount; + } else { + count = e.touches.length; + } + + if (count > 1) { return; } + + var now = Date.now(), + delta = now - (last || now); + + touch$$1 = e.touches ? e.touches[0] : e; + doubleTap = (delta > 0 && delta <= delay); + last = now; + } + + function onTouchEnd(e) { + if (doubleTap && !touch$$1.cancelBubble) { + if (pointer) { + if ((!edge) || e.pointerType === 'mouse') { return; } + // work around .type being readonly with MSPointer* events + var newTouch = {}, + prop, i; + + for (i in touch$$1) { + prop = touch$$1[i]; + newTouch[i] = prop && prop.bind ? prop.bind(touch$$1) : prop; + } + touch$$1 = newTouch; + } + touch$$1.type = 'dblclick'; + handler(touch$$1); + last = null; + } + } + + obj[_pre + _touchstart + id] = onTouchStart; + obj[_pre + _touchend + id] = onTouchEnd; + obj[_pre + 'dblclick' + id] = handler; + + obj.addEventListener(_touchstart, onTouchStart, false); + obj.addEventListener(_touchend, onTouchEnd, false); + + // On some platforms (notably, chrome<55 on win10 + touchscreen + mouse), + // the browser doesn't fire touchend/pointerup events but does fire + // native dblclicks. See #4127. + // Edge 14 also fires native dblclicks, but only for pointerType mouse, see #5180. + obj.addEventListener('dblclick', handler, false); + + return this; +} + +function removeDoubleTapListener(obj, id) { + var touchstart = obj[_pre + _touchstart + id], + touchend = obj[_pre + _touchend + id], + dblclick = obj[_pre + 'dblclick' + id]; + + obj.removeEventListener(_touchstart, touchstart, false); + obj.removeEventListener(_touchend, touchend, false); + if (!edge) { + obj.removeEventListener('dblclick', dblclick, false); + } + + return this; +} + +/* + * @namespace DomEvent + * Utility functions to work with the [DOM events](https://developer.mozilla.org/docs/Web/API/Event), used by Leaflet internally. + */ + +// Inspired by John Resig, Dean Edwards and YUI addEvent implementations. + +// @function on(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Adds a listener function (`fn`) to a particular DOM event type of the +// element `el`. You can optionally specify the context of the listener +// (object the `this` keyword will point to). You can also pass several +// space-separated types (e.g. `'click dblclick'`). + +// @alternative +// @function on(el: HTMLElement, eventMap: Object, context?: Object): this +// Adds a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function on(obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + addOne(obj, type, types[type], fn); + } + } else { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + addOne(obj, types[i], fn, context); + } + } + + return this; +} + +var eventsKey = '_leaflet_events'; + +// @function off(el: HTMLElement, types: String, fn: Function, context?: Object): this +// Removes a previously added listener function. +// Note that if you passed a custom context to on, you must pass the same +// context to `off` in order to remove the listener. + +// @alternative +// @function off(el: HTMLElement, eventMap: Object, context?: Object): this +// Removes a set of type/listener pairs, e.g. `{click: onClick, mousemove: onMouseMove}` +function off(obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + removeOne(obj, type, types[type], fn); + } + } else if (types) { + types = splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + removeOne(obj, types[i], fn, context); + } + } else { + for (var j in obj[eventsKey]) { + removeOne(obj, j, obj[eventsKey][j]); + } + delete obj[eventsKey]; + } + + return this; +} + +function addOne(obj, type, fn, context) { + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''); + + if (obj[eventsKey] && obj[eventsKey][id]) { return this; } + + var handler = function (e) { + return fn.call(context || obj, e || window.event); + }; + + var originalHandler = handler; + + if (pointer && type.indexOf('touch') === 0) { + // Needs DomEvent.Pointer.js + addPointerListener(obj, type, handler, id); + + } else if (touch && (type === 'dblclick') && addDoubleTapListener && + !(pointer && chrome)) { + // Chrome >55 does not need the synthetic dblclicks from addDoubleTapListener + // See #5180 + addDoubleTapListener(obj, handler, id); + + } else if ('addEventListener' in obj) { + + if (type === 'mousewheel') { + obj.addEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + handler = function (e) { + e = e || window.event; + if (isExternalTarget(obj, e)) { + originalHandler(e); + } + }; + obj.addEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false); + + } else { + if (type === 'click' && android) { + handler = function (e) { + filterClick(e, originalHandler); + }; + } + obj.addEventListener(type, handler, false); + } + + } else if ('attachEvent' in obj) { + obj.attachEvent('on' + type, handler); + } + + obj[eventsKey] = obj[eventsKey] || {}; + obj[eventsKey][id] = handler; +} + +function removeOne(obj, type, fn, context) { + + var id = type + stamp(fn) + (context ? '_' + stamp(context) : ''), + handler = obj[eventsKey] && obj[eventsKey][id]; + + if (!handler) { return this; } + + if (pointer && type.indexOf('touch') === 0) { + removePointerListener(obj, type, id); + + } else if (touch && (type === 'dblclick') && removeDoubleTapListener && + !(pointer && chrome)) { + removeDoubleTapListener(obj, id); + + } else if ('removeEventListener' in obj) { + + if (type === 'mousewheel') { + obj.removeEventListener('onwheel' in obj ? 'wheel' : 'mousewheel', handler, false); + + } else { + obj.removeEventListener( + type === 'mouseenter' ? 'mouseover' : + type === 'mouseleave' ? 'mouseout' : type, handler, false); + } + + } else if ('detachEvent' in obj) { + obj.detachEvent('on' + type, handler); + } + + obj[eventsKey][id] = null; +} + +// @function stopPropagation(ev: DOMEvent): this +// Stop the given event from propagation to parent elements. Used inside the listener functions: +// ```js +// L.DomEvent.on(div, 'click', function (ev) { +// L.DomEvent.stopPropagation(ev); +// }); +// ``` +function stopPropagation(e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else if (e.originalEvent) { // In case of Leaflet event. + e.originalEvent._stopped = true; + } else { + e.cancelBubble = true; + } + skipped(e); + + return this; +} + +// @function disableScrollPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'mousewheel'` events (plus browser variants). +function disableScrollPropagation(el) { + addOne(el, 'mousewheel', stopPropagation); + return this; +} + +// @function disableClickPropagation(el: HTMLElement): this +// Adds `stopPropagation` to the element's `'click'`, `'doubleclick'`, +// `'mousedown'` and `'touchstart'` events (plus browser variants). +function disableClickPropagation(el) { + on(el, 'mousedown touchstart dblclick', stopPropagation); + addOne(el, 'click', fakeStop); + return this; +} + +// @function preventDefault(ev: DOMEvent): this +// Prevents the default action of the DOM Event `ev` from happening (such as +// following a link in the href of the a element, or doing a POST request +// with page reload when a `<form>` is submitted). +// Use it inside listener functions. +function preventDefault(e) { + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + return this; +} + +// @function stop(ev: DOMEvent): this +// Does `stopPropagation` and `preventDefault` at the same time. +function stop(e) { + preventDefault(e); + stopPropagation(e); + return this; +} + +// @function getMousePosition(ev: DOMEvent, container?: HTMLElement): Point +// Gets normalized mouse position from a DOM event relative to the +// `container` or to the whole page if not specified. +function getMousePosition(e, container) { + if (!container) { + return new Point(e.clientX, e.clientY); + } + + var rect = container.getBoundingClientRect(); + + var scaleX = rect.width / container.offsetWidth || 1; + var scaleY = rect.height / container.offsetHeight || 1; + return new Point( + e.clientX / scaleX - rect.left - container.clientLeft, + e.clientY / scaleY - rect.top - container.clientTop); +} + +// Chrome on Win scrolls double the pixels as in other platforms (see #4538), +// and Firefox scrolls device pixels, not CSS pixels +var wheelPxFactor = + (win && chrome) ? 2 * window.devicePixelRatio : + gecko ? window.devicePixelRatio : 1; + +// @function getWheelDelta(ev: DOMEvent): Number +// Gets normalized wheel delta from a mousewheel DOM event, in vertical +// pixels scrolled (negative if scrolling down). +// Events from pointing devices without precise scrolling are mapped to +// a best guess of 60 pixels. +function getWheelDelta(e) { + return (edge) ? e.wheelDeltaY / 2 : // Don't trust window-geometry-based delta + (e.deltaY && e.deltaMode === 0) ? -e.deltaY / wheelPxFactor : // Pixels + (e.deltaY && e.deltaMode === 1) ? -e.deltaY * 20 : // Lines + (e.deltaY && e.deltaMode === 2) ? -e.deltaY * 60 : // Pages + (e.deltaX || e.deltaZ) ? 0 : // Skip horizontal/depth wheel events + e.wheelDelta ? (e.wheelDeltaY || e.wheelDelta) / 2 : // Legacy IE pixels + (e.detail && Math.abs(e.detail) < 32765) ? -e.detail * 20 : // Legacy Moz lines + e.detail ? e.detail / -32765 * 60 : // Legacy Moz pages + 0; +} + +var skipEvents = {}; + +function fakeStop(e) { + // fakes stopPropagation by setting a special event flag, checked/reset with skipped(e) + skipEvents[e.type] = true; +} + +function skipped(e) { + var events = skipEvents[e.type]; + // reset when checking, as it's only used in map container and propagates outside of the map + skipEvents[e.type] = false; + return events; +} + +// check if element really left/entered the event target (for mouseenter/mouseleave) +function isExternalTarget(el, e) { + + var related = e.relatedTarget; + + if (!related) { return true; } + + try { + while (related && (related !== el)) { + related = related.parentNode; + } + } catch (err) { + return false; + } + return (related !== el); +} + +var lastClick; + +// this is a horrible workaround for a bug in Android where a single touch triggers two click events +function filterClick(e, handler) { + var timeStamp = (e.timeStamp || (e.originalEvent && e.originalEvent.timeStamp)), + elapsed = lastClick && (timeStamp - lastClick); + + // are they closer together than 500ms yet more than 100ms? + // Android typically triggers them ~300ms apart while multiple listeners + // on the same event should be triggered far faster; + // or check if click is simulated on the element, and if it is, reject any non-simulated events + + if ((elapsed && elapsed > 100 && elapsed < 500) || (e.target._simulatedClick && !e._simulated)) { + stop(e); + return; + } + lastClick = timeStamp; + + handler(e); +} + + + + +var DomEvent = (Object.freeze || Object)({ + on: on, + off: off, + stopPropagation: stopPropagation, + disableScrollPropagation: disableScrollPropagation, + disableClickPropagation: disableClickPropagation, + preventDefault: preventDefault, + stop: stop, + getMousePosition: getMousePosition, + getWheelDelta: getWheelDelta, + fakeStop: fakeStop, + skipped: skipped, + isExternalTarget: isExternalTarget, + addListener: on, + removeListener: off +}); + +/* + * @namespace DomUtil + * + * Utility functions to work with the [DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model) + * tree, used by Leaflet internally. + * + * Most functions expecting or returning a `HTMLElement` also work for + * SVG elements. The only difference is that classes refer to CSS classes + * in HTML and SVG classes in SVG. + */ + + +// @property TRANSFORM: String +// Vendor-prefixed transform style name (e.g. `'webkitTransform'` for WebKit). +var TRANSFORM = testProp( + ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + +// webkitTransition comes first because some browser versions that drop vendor prefix don't do +// the same for the transitionend event, in particular the Android 4.1 stock browser + +// @property TRANSITION: String +// Vendor-prefixed transition style name. +var TRANSITION = testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + +// @property TRANSITION_END: String +// Vendor-prefixed transitionend event name. +var TRANSITION_END = + TRANSITION === 'webkitTransition' || TRANSITION === 'OTransition' ? TRANSITION + 'End' : 'transitionend'; + + +// @function get(id: String|HTMLElement): HTMLElement +// Returns an element given its DOM id, or returns the element itself +// if it was passed directly. +function get(id) { + return typeof id === 'string' ? document.getElementById(id) : id; +} + +// @function getStyle(el: HTMLElement, styleAttrib: String): String +// Returns the value for a certain style attribute on an element, +// including computed values or values set through CSS. +function getStyle(el, style) { + var value = el.style[style] || (el.currentStyle && el.currentStyle[style]); + + if ((!value || value === 'auto') && document.defaultView) { + var css = document.defaultView.getComputedStyle(el, null); + value = css ? css[style] : null; + } + return value === 'auto' ? null : value; +} + +// @function create(tagName: String, className?: String, container?: HTMLElement): HTMLElement +// Creates an HTML element with `tagName`, sets its class to `className`, and optionally appends it to `container` element. +function create$1(tagName, className, container) { + var el = document.createElement(tagName); + el.className = className || ''; + + if (container) { + container.appendChild(el); + } + return el; +} + +// @function remove(el: HTMLElement) +// Removes `el` from its parent element +function remove(el) { + var parent = el.parentNode; + if (parent) { + parent.removeChild(el); + } +} + +// @function empty(el: HTMLElement) +// Removes all of `el`'s children elements from `el` +function empty(el) { + while (el.firstChild) { + el.removeChild(el.firstChild); + } +} + +// @function toFront(el: HTMLElement) +// Makes `el` the last child of its parent, so it renders in front of the other children. +function toFront(el) { + var parent = el.parentNode; + if (parent.lastChild !== el) { + parent.appendChild(el); + } +} + +// @function toBack(el: HTMLElement) +// Makes `el` the first child of its parent, so it renders behind the other children. +function toBack(el) { + var parent = el.parentNode; + if (parent.firstChild !== el) { + parent.insertBefore(el, parent.firstChild); + } +} + +// @function hasClass(el: HTMLElement, name: String): Boolean +// Returns `true` if the element's class attribute contains `name`. +function hasClass(el, name) { + if (el.classList !== undefined) { + return el.classList.contains(name); + } + var className = getClass(el); + return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className); +} + +// @function addClass(el: HTMLElement, name: String) +// Adds `name` to the element's class attribute. +function addClass(el, name) { + if (el.classList !== undefined) { + var classes = splitWords(name); + for (var i = 0, len = classes.length; i < len; i++) { + el.classList.add(classes[i]); + } + } else if (!hasClass(el, name)) { + var className = getClass(el); + setClass(el, (className ? className + ' ' : '') + name); + } +} + +// @function removeClass(el: HTMLElement, name: String) +// Removes `name` from the element's class attribute. +function removeClass(el, name) { + if (el.classList !== undefined) { + el.classList.remove(name); + } else { + setClass(el, trim((' ' + getClass(el) + ' ').replace(' ' + name + ' ', ' '))); + } +} + +// @function setClass(el: HTMLElement, name: String) +// Sets the element's class. +function setClass(el, name) { + if (el.className.baseVal === undefined) { + el.className = name; + } else { + // in case of SVG element + el.className.baseVal = name; + } +} + +// @function getClass(el: HTMLElement): String +// Returns the element's class. +function getClass(el) { + return el.className.baseVal === undefined ? el.className : el.className.baseVal; +} + +// @function setOpacity(el: HTMLElement, opacity: Number) +// Set the opacity of an element (including old IE support). +// `opacity` must be a number from `0` to `1`. +function setOpacity(el, value) { + if ('opacity' in el.style) { + el.style.opacity = value; + } else if ('filter' in el.style) { + _setOpacityIE(el, value); + } +} + +function _setOpacityIE(el, value) { + var filter = false, + filterName = 'DXImageTransform.Microsoft.Alpha'; + + // filters collection throws an error if we try to retrieve a filter that doesn't exist + try { + filter = el.filters.item(filterName); + } catch (e) { + // don't set opacity to 1 if we haven't already set an opacity, + // it isn't needed and breaks transparent pngs. + if (value === 1) { return; } + } + + value = Math.round(value * 100); + + if (filter) { + filter.Enabled = (value !== 100); + filter.Opacity = value; + } else { + el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; + } +} + +// @function testProp(props: String[]): String|false +// Goes through the array of style names and returns the first name +// that is a valid style name for an element. If no such name is found, +// it returns false. Useful for vendor-prefixed styles like `transform`. +function testProp(props) { + var style = document.documentElement.style; + + for (var i = 0; i < props.length; i++) { + if (props[i] in style) { + return props[i]; + } + } + return false; +} + +// @function setTransform(el: HTMLElement, offset: Point, scale?: Number) +// Resets the 3D CSS transform of `el` so it is translated by `offset` pixels +// and optionally scaled by `scale`. Does not have an effect if the +// browser doesn't support 3D CSS transforms. +function setTransform(el, offset, scale) { + var pos = offset || new Point(0, 0); + + el.style[TRANSFORM] = + (ie3d ? + 'translate(' + pos.x + 'px,' + pos.y + 'px)' : + 'translate3d(' + pos.x + 'px,' + pos.y + 'px,0)') + + (scale ? ' scale(' + scale + ')' : ''); +} + +// @function setPosition(el: HTMLElement, position: Point) +// Sets the position of `el` to coordinates specified by `position`, +// using CSS translate or top/left positioning depending on the browser +// (used by Leaflet internally to position its layers). +function setPosition(el, point) { + + /*eslint-disable */ + el._leaflet_pos = point; + /* eslint-enable */ + + if (any3d) { + setTransform(el, point); + } else { + el.style.left = point.x + 'px'; + el.style.top = point.y + 'px'; + } +} + +// @function getPosition(el: HTMLElement): Point +// Returns the coordinates of an element previously positioned with setPosition. +function getPosition(el) { + // this method is only used for elements previously positioned using setPosition, + // so it's safe to cache the position for performance + + return el._leaflet_pos || new Point(0, 0); +} + +// @function disableTextSelection() +// Prevents the user from generating `selectstart` DOM events, usually generated +// when the user drags the mouse through a page with text. Used internally +// by Leaflet to override the behaviour of any click-and-drag interaction on +// the map. Affects drag interactions on the whole document. + +// @function enableTextSelection() +// Cancels the effects of a previous [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection). +var disableTextSelection; +var enableTextSelection; +var _userSelect; +if ('onselectstart' in document) { + disableTextSelection = function () { + on(window, 'selectstart', preventDefault); + }; + enableTextSelection = function () { + off(window, 'selectstart', preventDefault); + }; +} else { + var userSelectProperty = testProp( + ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); + + disableTextSelection = function () { + if (userSelectProperty) { + var style = document.documentElement.style; + _userSelect = style[userSelectProperty]; + style[userSelectProperty] = 'none'; + } + }; + enableTextSelection = function () { + if (userSelectProperty) { + document.documentElement.style[userSelectProperty] = _userSelect; + _userSelect = undefined; + } + }; +} + +// @function disableImageDrag() +// As [`L.DomUtil.disableTextSelection`](#domutil-disabletextselection), but +// for `dragstart` DOM events, usually generated when the user drags an image. +function disableImageDrag() { + on(window, 'dragstart', preventDefault); +} + +// @function enableImageDrag() +// Cancels the effects of a previous [`L.DomUtil.disableImageDrag`](#domutil-disabletextselection). +function enableImageDrag() { + off(window, 'dragstart', preventDefault); +} + +var _outlineElement; +var _outlineStyle; +// @function preventOutline(el: HTMLElement) +// Makes the [outline](https://developer.mozilla.org/docs/Web/CSS/outline) +// of the element `el` invisible. Used internally by Leaflet to prevent +// focusable elements from displaying an outline when the user performs a +// drag interaction on them. +function preventOutline(element) { + while (element.tabIndex === -1) { + element = element.parentNode; + } + if (!element.style) { return; } + restoreOutline(); + _outlineElement = element; + _outlineStyle = element.style.outline; + element.style.outline = 'none'; + on(window, 'keydown', restoreOutline); +} + +// @function restoreOutline() +// Cancels the effects of a previous [`L.DomUtil.preventOutline`](). +function restoreOutline() { + if (!_outlineElement) { return; } + _outlineElement.style.outline = _outlineStyle; + _outlineElement = undefined; + _outlineStyle = undefined; + off(window, 'keydown', restoreOutline); +} + + +var DomUtil = (Object.freeze || Object)({ + TRANSFORM: TRANSFORM, + TRANSITION: TRANSITION, + TRANSITION_END: TRANSITION_END, + get: get, + getStyle: getStyle, + create: create$1, + remove: remove, + empty: empty, + toFront: toFront, + toBack: toBack, + hasClass: hasClass, + addClass: addClass, + removeClass: removeClass, + setClass: setClass, + getClass: getClass, + setOpacity: setOpacity, + testProp: testProp, + setTransform: setTransform, + setPosition: setPosition, + getPosition: getPosition, + disableTextSelection: disableTextSelection, + enableTextSelection: enableTextSelection, + disableImageDrag: disableImageDrag, + enableImageDrag: enableImageDrag, + preventOutline: preventOutline, + restoreOutline: restoreOutline +}); + +/* + * @class PosAnimation + * @aka L.PosAnimation + * @inherits Evented + * Used internally for panning animations, utilizing CSS3 Transitions for modern browsers and a timer fallback for IE6-9. + * + * @example + * ```js + * var fx = new L.PosAnimation(); + * fx.run(el, [300, 500], 0.5); + * ``` + * + * @constructor L.PosAnimation() + * Creates a `PosAnimation` object. + * + */ + +var PosAnimation = Evented.extend({ + + // @method run(el: HTMLElement, newPos: Point, duration?: Number, easeLinearity?: Number) + // Run an animation of a given element to a new position, optionally setting + // duration in seconds (`0.25` by default) and easing linearity factor (3rd + // argument of the [cubic bezier curve](http://cubic-bezier.com/#0,0,.5,1), + // `0.5` by default). + run: function (el, newPos, duration, easeLinearity) { + this.stop(); + + this._el = el; + this._inProgress = true; + this._duration = duration || 0.25; + this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2); + + this._startPos = getPosition(el); + this._offset = newPos.subtract(this._startPos); + this._startTime = +new Date(); + + // @event start: Event + // Fired when the animation starts + this.fire('start'); + + this._animate(); + }, + + // @method stop() + // Stops the animation (if currently running). + stop: function () { + if (!this._inProgress) { return; } + + this._step(true); + this._complete(); + }, + + _animate: function () { + // animation loop + this._animId = requestAnimFrame(this._animate, this); + this._step(); + }, + + _step: function (round) { + var elapsed = (+new Date()) - this._startTime, + duration = this._duration * 1000; + + if (elapsed < duration) { + this._runFrame(this._easeOut(elapsed / duration), round); + } else { + this._runFrame(1); + this._complete(); + } + }, + + _runFrame: function (progress, round) { + var pos = this._startPos.add(this._offset.multiplyBy(progress)); + if (round) { + pos._round(); + } + setPosition(this._el, pos); + + // @event step: Event + // Fired continuously during the animation. + this.fire('step'); + }, + + _complete: function () { + cancelAnimFrame(this._animId); + + this._inProgress = false; + // @event end: Event + // Fired when the animation ends. + this.fire('end'); + }, + + _easeOut: function (t) { + return 1 - Math.pow(1 - t, this._easeOutPower); + } +}); + +/* + * @class Map + * @aka L.Map + * @inherits Evented + * + * The central class of the API — it is used to create a map on a page and manipulate it. + * + * @example + * + * ```js + * // initialize the map on the "map" div with a given center and zoom + * var map = L.map('map', { + * center: [51.505, -0.09], + * zoom: 13 + * }); + * ``` + * + */ + +var Map = Evented.extend({ + + options: { + // @section Map State Options + // @option crs: CRS = L.CRS.EPSG3857 + // The [Coordinate Reference System](#crs) to use. Don't change this if you're not + // sure what it means. + crs: EPSG3857, + + // @option center: LatLng = undefined + // Initial geographic center of the map + center: undefined, + + // @option zoom: Number = undefined + // Initial map zoom level + zoom: undefined, + + // @option minZoom: Number = * + // Minimum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the lowest of their `minZoom` options will be used instead. + minZoom: undefined, + + // @option maxZoom: Number = * + // Maximum zoom level of the map. + // If not specified and at least one `GridLayer` or `TileLayer` is in the map, + // the highest of their `maxZoom` options will be used instead. + maxZoom: undefined, + + // @option layers: Layer[] = [] + // Array of layers that will be added to the map initially + layers: [], + + // @option maxBounds: LatLngBounds = null + // When this option is set, the map restricts the view to the given + // geographical bounds, bouncing the user back if the user tries to pan + // outside the view. To set the restriction dynamically, use + // [`setMaxBounds`](#map-setmaxbounds) method. + maxBounds: undefined, + + // @option renderer: Renderer = * + // The default method for drawing vector layers on the map. `L.SVG` + // or `L.Canvas` by default depending on browser support. + renderer: undefined, + + + // @section Animation Options + // @option zoomAnimation: Boolean = true + // Whether the map zoom animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + zoomAnimation: true, + + // @option zoomAnimationThreshold: Number = 4 + // Won't animate zoom if the zoom difference exceeds this value. + zoomAnimationThreshold: 4, + + // @option fadeAnimation: Boolean = true + // Whether the tile fade animation is enabled. By default it's enabled + // in all browsers that support CSS3 Transitions except Android. + fadeAnimation: true, + + // @option markerZoomAnimation: Boolean = true + // Whether markers animate their zoom with the zoom animation, if disabled + // they will disappear for the length of the animation. By default it's + // enabled in all browsers that support CSS3 Transitions except Android. + markerZoomAnimation: true, + + // @option transform3DLimit: Number = 2^23 + // Defines the maximum size of a CSS translation transform. The default + // value should not be changed unless a web browser positions layers in + // the wrong place after doing a large `panBy`. + transform3DLimit: 8388608, // Precision limit of a 32-bit float + + // @section Interaction Options + // @option zoomSnap: Number = 1 + // Forces the map's zoom level to always be a multiple of this, particularly + // right after a [`fitBounds()`](#map-fitbounds) or a pinch-zoom. + // By default, the zoom level snaps to the nearest integer; lower values + // (e.g. `0.5` or `0.1`) allow for greater granularity. A value of `0` + // means the zoom level will not be snapped after `fitBounds` or a pinch-zoom. + zoomSnap: 1, + + // @option zoomDelta: Number = 1 + // Controls how much the map's zoom level will change after a + // [`zoomIn()`](#map-zoomin), [`zoomOut()`](#map-zoomout), pressing `+` + // or `-` on the keyboard, or using the [zoom controls](#control-zoom). + // Values smaller than `1` (e.g. `0.5`) allow for greater granularity. + zoomDelta: 1, + + // @option trackResize: Boolean = true + // Whether the map automatically handles browser window resize to update itself. + trackResize: true + }, + + initialize: function (id, options) { // (HTMLElement or String, Object) + options = setOptions(this, options); + + this._initContainer(id); + this._initLayout(); + + // hack for https://github.com/Leaflet/Leaflet/issues/1980 + this._onResize = bind(this._onResize, this); + + this._initEvents(); + + if (options.maxBounds) { + this.setMaxBounds(options.maxBounds); + } + + if (options.zoom !== undefined) { + this._zoom = this._limitZoom(options.zoom); + } + + if (options.center && options.zoom !== undefined) { + this.setView(toLatLng(options.center), options.zoom, {reset: true}); + } + + this._handlers = []; + this._layers = {}; + this._zoomBoundLayers = {}; + this._sizeChanged = true; + + this.callInitHooks(); + + // don't animate on browsers without hardware-accelerated transitions or old Android/Opera + this._zoomAnimated = TRANSITION && any3d && !mobileOpera && + this.options.zoomAnimation; + + // zoom transitions run with the same duration for all layers, so if one of transitionend events + // happens after starting zoom animation (propagating to the map pane), we know that it ended globally + if (this._zoomAnimated) { + this._createAnimProxy(); + on(this._proxy, TRANSITION_END, this._catchTransitionEnd, this); + } + + this._addLayers(this.options.layers); + }, + + + // @section Methods for modifying map state + + // @method setView(center: LatLng, zoom: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) with the given + // animation options. + setView: function (center, zoom, options) { + + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + center = this._limitCenter(toLatLng(center), zoom, this.options.maxBounds); + options = options || {}; + + this._stop(); + + if (this._loaded && !options.reset && options !== true) { + + if (options.animate !== undefined) { + options.zoom = extend({animate: options.animate}, options.zoom); + options.pan = extend({animate: options.animate, duration: options.duration}, options.pan); + } + + // try animating pan or zoom + var moved = (this._zoom !== zoom) ? + this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : + this._tryAnimatedPan(center, options.pan); + + if (moved) { + // prevent resize handler call, the view will refresh after animation anyway + clearTimeout(this._sizeTimer); + return this; + } + } + + // animation didn't start, just reset the map view + this._resetView(center, zoom); + + return this; + }, + + // @method setZoom(zoom: Number, options?: Zoom/pan options): this + // Sets the zoom of the map. + setZoom: function (zoom, options) { + if (!this._loaded) { + this._zoom = zoom; + return this; + } + return this.setView(this.getCenter(), zoom, {zoom: options}); + }, + + // @method zoomIn(delta?: Number, options?: Zoom options): this + // Increases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomIn: function (delta, options) { + delta = delta || (any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom + delta, options); + }, + + // @method zoomOut(delta?: Number, options?: Zoom options): this + // Decreases the zoom of the map by `delta` ([`zoomDelta`](#map-zoomdelta) by default). + zoomOut: function (delta, options) { + delta = delta || (any3d ? this.options.zoomDelta : 1); + return this.setZoom(this._zoom - delta, options); + }, + + // @method setZoomAround(latlng: LatLng, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified geographical point on the map + // stationary (e.g. used internally for scroll zoom and double-click zoom). + // @alternative + // @method setZoomAround(offset: Point, zoom: Number, options: Zoom options): this + // Zooms the map while keeping a specified pixel on the map (relative to the top-left corner) stationary. + setZoomAround: function (latlng, zoom, options) { + var scale = this.getZoomScale(zoom), + viewHalf = this.getSize().divideBy(2), + containerPoint = latlng instanceof Point ? latlng : this.latLngToContainerPoint(latlng), + + centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale), + newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + + return this.setView(newCenter, zoom, {zoom: options}); + }, + + _getBoundsCenterZoom: function (bounds, options) { + + options = options || {}; + bounds = bounds.getBounds ? bounds.getBounds() : toLatLngBounds(bounds); + + var paddingTL = toPoint(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = toPoint(options.paddingBottomRight || options.padding || [0, 0]), + + zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR)); + + zoom = (typeof options.maxZoom === 'number') ? Math.min(options.maxZoom, zoom) : zoom; + + if (zoom === Infinity) { + return { + center: bounds.getCenter(), + zoom: zoom + }; + } + + var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2), + + swPoint = this.project(bounds.getSouthWest(), zoom), + nePoint = this.project(bounds.getNorthEast(), zoom), + center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom); + + return { + center: center, + zoom: zoom + }; + }, + + // @method fitBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets a map view that contains the given geographical bounds with the + // maximum zoom level possible. + fitBounds: function (bounds, options) { + + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + throw new Error('Bounds are not valid.'); + } + + var target = this._getBoundsCenterZoom(bounds, options); + return this.setView(target.center, target.zoom, options); + }, + + // @method fitWorld(options?: fitBounds options): this + // Sets a map view that mostly contains the whole world with the maximum + // zoom level possible. + fitWorld: function (options) { + return this.fitBounds([[-90, -180], [90, 180]], options); + }, + + // @method panTo(latlng: LatLng, options?: Pan options): this + // Pans the map to a given center. + panTo: function (center, options) { // (LatLng) + return this.setView(center, this._zoom, {pan: options}); + }, + + // @method panBy(offset: Point, options?: Pan options): this + // Pans the map by a given number of pixels (animated). + panBy: function (offset, options) { + offset = toPoint(offset).round(); + options = options || {}; + + if (!offset.x && !offset.y) { + return this.fire('moveend'); + } + // If we pan too far, Chrome gets issues with tiles + // and makes them disappear or appear in the wrong place (slightly offset) #2602 + if (options.animate !== true && !this.getSize().contains(offset)) { + this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom()); + return this; + } + + if (!this._panAnim) { + this._panAnim = new PosAnimation(); + + this._panAnim.on({ + 'step': this._onPanTransitionStep, + 'end': this._onPanTransitionEnd + }, this); + } + + // don't fire movestart if animating inertia + if (!options.noMoveStart) { + this.fire('movestart'); + } + + // animate pan unless animate: false specified + if (options.animate !== false) { + addClass(this._mapPane, 'leaflet-pan-anim'); + + var newPos = this._getMapPanePos().subtract(offset).round(); + this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity); + } else { + this._rawPanBy(offset); + this.fire('move').fire('moveend'); + } + + return this; + }, + + // @method flyTo(latlng: LatLng, zoom?: Number, options?: Zoom/pan options): this + // Sets the view of the map (geographical center and zoom) performing a smooth + // pan-zoom animation. + flyTo: function (targetCenter, targetZoom, options) { + + options = options || {}; + if (options.animate === false || !any3d) { + return this.setView(targetCenter, targetZoom, options); + } + + this._stop(); + + var from = this.project(this.getCenter()), + to = this.project(targetCenter), + size = this.getSize(), + startZoom = this._zoom; + + targetCenter = toLatLng(targetCenter); + targetZoom = targetZoom === undefined ? startZoom : targetZoom; + + var w0 = Math.max(size.x, size.y), + w1 = w0 * this.getZoomScale(startZoom, targetZoom), + u1 = (to.distanceTo(from)) || 1, + rho = 1.42, + rho2 = rho * rho; + + function r(i) { + var s1 = i ? -1 : 1, + s2 = i ? w1 : w0, + t1 = w1 * w1 - w0 * w0 + s1 * rho2 * rho2 * u1 * u1, + b1 = 2 * s2 * rho2 * u1, + b = t1 / b1, + sq = Math.sqrt(b * b + 1) - b; + + // workaround for floating point precision bug when sq = 0, log = -Infinite, + // thus triggering an infinite loop in flyTo + var log = sq < 0.000000001 ? -18 : Math.log(sq); + + return log; + } + + function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; } + function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; } + function tanh(n) { return sinh(n) / cosh(n); } + + var r0 = r(0); + + function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); } + function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; } + + function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); } + + var start = Date.now(), + S = (r(1) - r0) / rho, + duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8; + + function frame() { + var t = (Date.now() - start) / duration, + s = easeOut(t) * S; + + if (t <= 1) { + this._flyToFrame = requestAnimFrame(frame, this); + + this._move( + this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), + this.getScaleZoom(w0 / w(s), startZoom), + {flyTo: true}); + + } else { + this + ._move(targetCenter, targetZoom) + ._moveEnd(true); + } + } + + this._moveStart(true, options.noMoveStart); + + frame.call(this); + return this; + }, + + // @method flyToBounds(bounds: LatLngBounds, options?: fitBounds options): this + // Sets the view of the map with a smooth animation like [`flyTo`](#map-flyto), + // but takes a bounds parameter like [`fitBounds`](#map-fitbounds). + flyToBounds: function (bounds, options) { + var target = this._getBoundsCenterZoom(bounds, options); + return this.flyTo(target.center, target.zoom, options); + }, + + // @method setMaxBounds(bounds: Bounds): this + // Restricts the map view to the given bounds (see the [maxBounds](#map-maxbounds) option). + setMaxBounds: function (bounds) { + bounds = toLatLngBounds(bounds); + + if (!bounds.isValid()) { + this.options.maxBounds = null; + return this.off('moveend', this._panInsideMaxBounds); + } else if (this.options.maxBounds) { + this.off('moveend', this._panInsideMaxBounds); + } + + this.options.maxBounds = bounds; + + if (this._loaded) { + this._panInsideMaxBounds(); + } + + return this.on('moveend', this._panInsideMaxBounds); + }, + + // @method setMinZoom(zoom: Number): this + // Sets the lower limit for the available zoom levels (see the [minZoom](#map-minzoom) option). + setMinZoom: function (zoom) { + var oldZoom = this.options.minZoom; + this.options.minZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() < this.options.minZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method setMaxZoom(zoom: Number): this + // Sets the upper limit for the available zoom levels (see the [maxZoom](#map-maxzoom) option). + setMaxZoom: function (zoom) { + var oldZoom = this.options.maxZoom; + this.options.maxZoom = zoom; + + if (this._loaded && oldZoom !== zoom) { + this.fire('zoomlevelschange'); + + if (this.getZoom() > this.options.maxZoom) { + return this.setZoom(zoom); + } + } + + return this; + }, + + // @method panInsideBounds(bounds: LatLngBounds, options?: Pan options): this + // Pans the map to the closest view that would lie inside the given bounds (if it's not already), controlling the animation using the options specific, if any. + panInsideBounds: function (bounds, options) { + this._enforcingBounds = true; + var center = this.getCenter(), + newCenter = this._limitCenter(center, this._zoom, toLatLngBounds(bounds)); + + if (!center.equals(newCenter)) { + this.panTo(newCenter, options); + } + + this._enforcingBounds = false; + return this; + }, + + // @method invalidateSize(options: Zoom/pan options): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. If `options.pan` is `false`, panning will not occur. + // If `options.debounceMoveend` is `true`, it will delay `moveend` event so + // that it doesn't happen often even if the method is called many + // times in a row. + + // @alternative + // @method invalidateSize(animate: Boolean): this + // Checks if the map container size changed and updates the map if so — + // call it after you've changed the map size dynamically, also animating + // pan by default. + invalidateSize: function (options) { + if (!this._loaded) { return this; } + + options = extend({ + animate: false, + pan: true + }, options === true ? {animate: true} : options); + + var oldSize = this.getSize(); + this._sizeChanged = true; + this._lastCenter = null; + + var newSize = this.getSize(), + oldCenter = oldSize.divideBy(2).round(), + newCenter = newSize.divideBy(2).round(), + offset = oldCenter.subtract(newCenter); + + if (!offset.x && !offset.y) { return this; } + + if (options.animate && options.pan) { + this.panBy(offset); + + } else { + if (options.pan) { + this._rawPanBy(offset); + } + + this.fire('move'); + + if (options.debounceMoveend) { + clearTimeout(this._sizeTimer); + this._sizeTimer = setTimeout(bind(this.fire, this, 'moveend'), 200); + } else { + this.fire('moveend'); + } + } + + // @section Map state change events + // @event resize: ResizeEvent + // Fired when the map is resized. + return this.fire('resize', { + oldSize: oldSize, + newSize: newSize + }); + }, + + // @section Methods for modifying map state + // @method stop(): this + // Stops the currently running `panTo` or `flyTo` animation, if any. + stop: function () { + this.setZoom(this._limitZoom(this._zoom)); + if (!this.options.zoomSnap) { + this.fire('viewreset'); + } + return this._stop(); + }, + + // @section Geolocation methods + // @method locate(options?: Locate options): this + // Tries to locate the user using the Geolocation API, firing a [`locationfound`](#map-locationfound) + // event with location data on success or a [`locationerror`](#map-locationerror) event on failure, + // and optionally sets the map view to the user's location with respect to + // detection accuracy (or to the world view if geolocation failed). + // Note that, if your page doesn't use HTTPS, this method will fail in + // modern browsers ([Chrome 50 and newer](https://sites.google.com/a/chromium.org/dev/Home/chromium-security/deprecating-powerful-features-on-insecure-origins)) + // See `Locate options` for more details. + locate: function (options) { + + options = this._locateOptions = extend({ + timeout: 10000, + watch: false + // setView: false + // maxZoom: <Number> + // maximumAge: 0 + // enableHighAccuracy: false + }, options); + + if (!('geolocation' in navigator)) { + this._handleGeolocationError({ + code: 0, + message: 'Geolocation not supported.' + }); + return this; + } + + var onResponse = bind(this._handleGeolocationResponse, this), + onError = bind(this._handleGeolocationError, this); + + if (options.watch) { + this._locationWatchId = + navigator.geolocation.watchPosition(onResponse, onError, options); + } else { + navigator.geolocation.getCurrentPosition(onResponse, onError, options); + } + return this; + }, + + // @method stopLocate(): this + // Stops watching location previously initiated by `map.locate({watch: true})` + // and aborts resetting the map view if map.locate was called with + // `{setView: true}`. + stopLocate: function () { + if (navigator.geolocation && navigator.geolocation.clearWatch) { + navigator.geolocation.clearWatch(this._locationWatchId); + } + if (this._locateOptions) { + this._locateOptions.setView = false; + } + return this; + }, + + _handleGeolocationError: function (error) { + var c = error.code, + message = error.message || + (c === 1 ? 'permission denied' : + (c === 2 ? 'position unavailable' : 'timeout')); + + if (this._locateOptions.setView && !this._loaded) { + this.fitWorld(); + } + + // @section Location events + // @event locationerror: ErrorEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) failed. + this.fire('locationerror', { + code: c, + message: 'Geolocation error: ' + message + '.' + }); + }, + + _handleGeolocationResponse: function (pos) { + var lat = pos.coords.latitude, + lng = pos.coords.longitude, + latlng = new LatLng(lat, lng), + bounds = latlng.toBounds(pos.coords.accuracy), + options = this._locateOptions; + + if (options.setView) { + var zoom = this.getBoundsZoom(bounds); + this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : zoom); + } + + var data = { + latlng: latlng, + bounds: bounds, + timestamp: pos.timestamp + }; + + for (var i in pos.coords) { + if (typeof pos.coords[i] === 'number') { + data[i] = pos.coords[i]; + } + } + + // @event locationfound: LocationEvent + // Fired when geolocation (using the [`locate`](#map-locate) method) + // went successfully. + this.fire('locationfound', data); + }, + + // TODO Appropriate docs section? + // @section Other Methods + // @method addHandler(name: String, HandlerClass: Function): this + // Adds a new `Handler` to the map, given its name and constructor function. + addHandler: function (name, HandlerClass) { + if (!HandlerClass) { return this; } + + var handler = this[name] = new HandlerClass(this); + + this._handlers.push(handler); + + if (this.options[name]) { + handler.enable(); + } + + return this; + }, + + // @method remove(): this + // Destroys the map and clears all related event listeners. + remove: function () { + + this._initEvents(true); + + if (this._containerId !== this._container._leaflet_id) { + throw new Error('Map container is being reused by another instance'); + } + + try { + // throws error in IE6-8 + delete this._container._leaflet_id; + delete this._containerId; + } catch (e) { + /*eslint-disable */ + this._container._leaflet_id = undefined; + /* eslint-enable */ + this._containerId = undefined; + } + + if (this._locationWatchId !== undefined) { + this.stopLocate(); + } + + this._stop(); + + remove(this._mapPane); + + if (this._clearControlPos) { + this._clearControlPos(); + } + + this._clearHandlers(); + + if (this._loaded) { + // @section Map state change events + // @event unload: Event + // Fired when the map is destroyed with [remove](#map-remove) method. + this.fire('unload'); + } + + var i; + for (i in this._layers) { + this._layers[i].remove(); + } + for (i in this._panes) { + remove(this._panes[i]); + } + + this._layers = []; + this._panes = []; + delete this._mapPane; + delete this._renderer; + + return this; + }, + + // @section Other Methods + // @method createPane(name: String, container?: HTMLElement): HTMLElement + // Creates a new [map pane](#map-pane) with the given name if it doesn't exist already, + // then returns it. The pane is created as a child of `container`, or + // as a child of the main map pane if not set. + createPane: function (name, container) { + var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''), + pane = create$1('div', className, container || this._mapPane); + + if (name) { + this._panes[name] = pane; + } + return pane; + }, + + // @section Methods for Getting Map State + + // @method getCenter(): LatLng + // Returns the geographical center of the map view + getCenter: function () { + this._checkIfLoaded(); + + if (this._lastCenter && !this._moved()) { + return this._lastCenter; + } + return this.layerPointToLatLng(this._getCenterLayerPoint()); + }, + + // @method getZoom(): Number + // Returns the current zoom level of the map view + getZoom: function () { + return this._zoom; + }, + + // @method getBounds(): LatLngBounds + // Returns the geographical bounds visible in the current map view + getBounds: function () { + var bounds = this.getPixelBounds(), + sw = this.unproject(bounds.getBottomLeft()), + ne = this.unproject(bounds.getTopRight()); + + return new LatLngBounds(sw, ne); + }, + + // @method getMinZoom(): Number + // Returns the minimum zoom level of the map (if set in the `minZoom` option of the map or of any layers), or `0` by default. + getMinZoom: function () { + return this.options.minZoom === undefined ? this._layersMinZoom || 0 : this.options.minZoom; + }, + + // @method getMaxZoom(): Number + // Returns the maximum zoom level of the map (if set in the `maxZoom` option of the map or of any layers). + getMaxZoom: function () { + return this.options.maxZoom === undefined ? + (this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) : + this.options.maxZoom; + }, + + // @method getBoundsZoom(bounds: LatLngBounds, inside?: Boolean): Number + // Returns the maximum zoom level on which the given bounds fit to the map + // view in its entirety. If `inside` (optional) is set to `true`, the method + // instead returns the minimum zoom level on which the map view fits into + // the given bounds in its entirety. + getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number + bounds = toLatLngBounds(bounds); + padding = toPoint(padding || [0, 0]); + + var zoom = this.getZoom() || 0, + min = this.getMinZoom(), + max = this.getMaxZoom(), + nw = bounds.getNorthWest(), + se = bounds.getSouthEast(), + size = this.getSize().subtract(padding), + boundsSize = toBounds(this.project(se, zoom), this.project(nw, zoom)).getSize(), + snap = any3d ? this.options.zoomSnap : 1, + scalex = size.x / boundsSize.x, + scaley = size.y / boundsSize.y, + scale = inside ? Math.max(scalex, scaley) : Math.min(scalex, scaley); + + zoom = this.getScaleZoom(scale, zoom); + + if (snap) { + zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level + zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; + } + + return Math.max(min, Math.min(max, zoom)); + }, + + // @method getSize(): Point + // Returns the current size of the map container (in pixels). + getSize: function () { + if (!this._size || this._sizeChanged) { + this._size = new Point( + this._container.clientWidth || 0, + this._container.clientHeight || 0); + + this._sizeChanged = false; + } + return this._size.clone(); + }, + + // @method getPixelBounds(): Bounds + // Returns the bounds of the current map view in projected pixel + // coordinates (sometimes useful in layer and overlay implementations). + getPixelBounds: function (center, zoom) { + var topLeftPoint = this._getTopLeftPoint(center, zoom); + return new Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + // TODO: Check semantics - isn't the pixel origin the 0,0 coord relative to + // the map pane? "left point of the map layer" can be confusing, specially + // since there can be negative offsets. + // @method getPixelOrigin(): Point + // Returns the projected pixel coordinates of the top left point of + // the map layer (useful in custom layer and overlay implementations). + getPixelOrigin: function () { + this._checkIfLoaded(); + return this._pixelOrigin; + }, + + // @method getPixelWorldBounds(zoom?: Number): Bounds + // Returns the world's bounds in pixel coordinates for zoom level `zoom`. + // If `zoom` is omitted, the map's current zoom level is used. + getPixelWorldBounds: function (zoom) { + return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom); + }, + + // @section Other Methods + + // @method getPane(pane: String|HTMLElement): HTMLElement + // Returns a [map pane](#map-pane), given its name or its HTML element (its identity). + getPane: function (pane) { + return typeof pane === 'string' ? this._panes[pane] : pane; + }, + + // @method getPanes(): Object + // Returns a plain object containing the names of all [panes](#map-pane) as keys and + // the panes as values. + getPanes: function () { + return this._panes; + }, + + // @method getContainer: HTMLElement + // Returns the HTML element that contains the map. + getContainer: function () { + return this._container; + }, + + + // @section Conversion Methods + + // @method getZoomScale(toZoom: Number, fromZoom: Number): Number + // Returns the scale factor to be applied to a map transition from zoom level + // `fromZoom` to `toZoom`. Used internally to help with zoom animations. + getZoomScale: function (toZoom, fromZoom) { + // TODO replace with universal implementation after refactoring projections + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + return crs.scale(toZoom) / crs.scale(fromZoom); + }, + + // @method getScaleZoom(scale: Number, fromZoom: Number): Number + // Returns the zoom level that the map would end up at, if it is at `fromZoom` + // level and everything is scaled by a factor of `scale`. Inverse of + // [`getZoomScale`](#map-getZoomScale). + getScaleZoom: function (scale, fromZoom) { + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + var zoom = crs.zoom(scale * crs.scale(fromZoom)); + return isNaN(zoom) ? Infinity : zoom; + }, + + // @method project(latlng: LatLng, zoom: Number): Point + // Projects a geographical coordinate `LatLng` according to the projection + // of the map's CRS, then scales it according to `zoom` and the CRS's + // `Transformation`. The result is pixel coordinate relative to + // the CRS origin. + project: function (latlng, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.latLngToPoint(toLatLng(latlng), zoom); + }, + + // @method unproject(point: Point, zoom: Number): LatLng + // Inverse of [`project`](#map-project). + unproject: function (point, zoom) { + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.pointToLatLng(toPoint(point), zoom); + }, + + // @method layerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding geographical coordinate (for the current zoom level). + layerPointToLatLng: function (point) { + var projectedPoint = toPoint(point).add(this.getPixelOrigin()); + return this.unproject(projectedPoint); + }, + + // @method latLngToLayerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the [origin pixel](#map-getpixelorigin). + latLngToLayerPoint: function (latlng) { + var projectedPoint = this.project(toLatLng(latlng))._round(); + return projectedPoint._subtract(this.getPixelOrigin()); + }, + + // @method wrapLatLng(latlng: LatLng): LatLng + // Returns a `LatLng` where `lat` and `lng` has been wrapped according to the + // map's CRS's `wrapLat` and `wrapLng` properties, if they are outside the + // CRS's bounds. + // By default this means longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees. + wrapLatLng: function (latlng) { + return this.options.crs.wrapLatLng(toLatLng(latlng)); + }, + + // @method wrapLatLngBounds(bounds: LatLngBounds): LatLngBounds + // Returns a `LatLngBounds` with the same size as the given one, ensuring that + // its center is within the CRS's bounds. + // By default this means the center longitude is wrapped around the dateline so its + // value is between -180 and +180 degrees, and the majority of the bounds + // overlaps the CRS's bounds. + wrapLatLngBounds: function (latlng) { + return this.options.crs.wrapLatLngBounds(toLatLngBounds(latlng)); + }, + + // @method distance(latlng1: LatLng, latlng2: LatLng): Number + // Returns the distance between two geographical coordinates according to + // the map's CRS. By default this measures distance in meters. + distance: function (latlng1, latlng2) { + return this.options.crs.distance(toLatLng(latlng1), toLatLng(latlng2)); + }, + + // @method containerPointToLayerPoint(point: Point): Point + // Given a pixel coordinate relative to the map container, returns the corresponding + // pixel coordinate relative to the [origin pixel](#map-getpixelorigin). + containerPointToLayerPoint: function (point) { // (Point) + return toPoint(point).subtract(this._getMapPanePos()); + }, + + // @method layerPointToContainerPoint(point: Point): Point + // Given a pixel coordinate relative to the [origin pixel](#map-getpixelorigin), + // returns the corresponding pixel coordinate relative to the map container. + layerPointToContainerPoint: function (point) { // (Point) + return toPoint(point).add(this._getMapPanePos()); + }, + + // @method containerPointToLatLng(point: Point): LatLng + // Given a pixel coordinate relative to the map container, returns + // the corresponding geographical coordinate (for the current zoom level). + containerPointToLatLng: function (point) { + var layerPoint = this.containerPointToLayerPoint(toPoint(point)); + return this.layerPointToLatLng(layerPoint); + }, + + // @method latLngToContainerPoint(latlng: LatLng): Point + // Given a geographical coordinate, returns the corresponding pixel coordinate + // relative to the map container. + latLngToContainerPoint: function (latlng) { + return this.layerPointToContainerPoint(this.latLngToLayerPoint(toLatLng(latlng))); + }, + + // @method mouseEventToContainerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to the + // map container where the event took place. + mouseEventToContainerPoint: function (e) { + return getMousePosition(e, this._container); + }, + + // @method mouseEventToLayerPoint(ev: MouseEvent): Point + // Given a MouseEvent object, returns the pixel coordinate relative to + // the [origin pixel](#map-getpixelorigin) where the event took place. + mouseEventToLayerPoint: function (e) { + return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); + }, + + // @method mouseEventToLatLng(ev: MouseEvent): LatLng + // Given a MouseEvent object, returns geographical coordinate where the + // event took place. + mouseEventToLatLng: function (e) { // (MouseEvent) + return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); + }, + + + // map initialization methods + + _initContainer: function (id) { + var container = this._container = get(id); + + if (!container) { + throw new Error('Map container not found.'); + } else if (container._leaflet_id) { + throw new Error('Map container is already initialized.'); + } + + on(container, 'scroll', this._onScroll, this); + this._containerId = stamp(container); + }, + + _initLayout: function () { + var container = this._container; + + this._fadeAnimated = this.options.fadeAnimation && any3d; + + addClass(container, 'leaflet-container' + + (touch ? ' leaflet-touch' : '') + + (retina ? ' leaflet-retina' : '') + + (ielt9 ? ' leaflet-oldie' : '') + + (safari ? ' leaflet-safari' : '') + + (this._fadeAnimated ? ' leaflet-fade-anim' : '')); + + var position = getStyle(container, 'position'); + + if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { + container.style.position = 'relative'; + } + + this._initPanes(); + + if (this._initControlPos) { + this._initControlPos(); + } + }, + + _initPanes: function () { + var panes = this._panes = {}; + this._paneRenderers = {}; + + // @section + // + // Panes are DOM elements used to control the ordering of layers on the map. You + // can access panes with [`map.getPane`](#map-getpane) or + // [`map.getPanes`](#map-getpanes) methods. New panes can be created with the + // [`map.createPane`](#map-createpane) method. + // + // Every map has the following default panes that differ only in zIndex. + // + // @pane mapPane: HTMLElement = 'auto' + // Pane that contains all other map panes + + this._mapPane = this.createPane('mapPane', this._container); + setPosition(this._mapPane, new Point(0, 0)); + + // @pane tilePane: HTMLElement = 200 + // Pane for `GridLayer`s and `TileLayer`s + this.createPane('tilePane'); + // @pane overlayPane: HTMLElement = 400 + // Pane for vectors (`Path`s, like `Polyline`s and `Polygon`s), `ImageOverlay`s and `VideoOverlay`s + this.createPane('shadowPane'); + // @pane shadowPane: HTMLElement = 500 + // Pane for overlay shadows (e.g. `Marker` shadows) + this.createPane('overlayPane'); + // @pane markerPane: HTMLElement = 600 + // Pane for `Icon`s of `Marker`s + this.createPane('markerPane'); + // @pane tooltipPane: HTMLElement = 650 + // Pane for `Tooltip`s. + this.createPane('tooltipPane'); + // @pane popupPane: HTMLElement = 700 + // Pane for `Popup`s. + this.createPane('popupPane'); + + if (!this.options.markerZoomAnimation) { + addClass(panes.markerPane, 'leaflet-zoom-hide'); + addClass(panes.shadowPane, 'leaflet-zoom-hide'); + } + }, + + + // private methods that modify map state + + // @section Map state change events + _resetView: function (center, zoom) { + setPosition(this._mapPane, new Point(0, 0)); + + var loading = !this._loaded; + this._loaded = true; + zoom = this._limitZoom(zoom); + + this.fire('viewprereset'); + + var zoomChanged = this._zoom !== zoom; + this + ._moveStart(zoomChanged, false) + ._move(center, zoom) + ._moveEnd(zoomChanged); + + // @event viewreset: Event + // Fired when the map needs to redraw its content (this usually happens + // on map zoom or load). Very useful for creating custom overlays. + this.fire('viewreset'); + + // @event load: Event + // Fired when the map is initialized (when its center and zoom are set + // for the first time). + if (loading) { + this.fire('load'); + } + }, + + _moveStart: function (zoomChanged, noMoveStart) { + // @event zoomstart: Event + // Fired when the map zoom is about to change (e.g. before zoom animation). + // @event movestart: Event + // Fired when the view of the map starts changing (e.g. user starts dragging the map). + if (zoomChanged) { + this.fire('zoomstart'); + } + if (!noMoveStart) { + this.fire('movestart'); + } + return this; + }, + + _move: function (center, zoom, data) { + if (zoom === undefined) { + zoom = this._zoom; + } + var zoomChanged = this._zoom !== zoom; + + this._zoom = zoom; + this._lastCenter = center; + this._pixelOrigin = this._getNewPixelOrigin(center); + + // @event zoom: Event + // Fired repeatedly during any change in zoom level, including zoom + // and fly animations. + if (zoomChanged || (data && data.pinch)) { // Always fire 'zoom' if pinching because #3530 + this.fire('zoom', data); + } + + // @event move: Event + // Fired repeatedly during any movement of the map, including pan and + // fly animations. + return this.fire('move', data); + }, + + _moveEnd: function (zoomChanged) { + // @event zoomend: Event + // Fired when the map has changed, after any animations. + if (zoomChanged) { + this.fire('zoomend'); + } + + // @event moveend: Event + // Fired when the center of the map stops changing (e.g. user stopped + // dragging the map). + return this.fire('moveend'); + }, + + _stop: function () { + cancelAnimFrame(this._flyToFrame); + if (this._panAnim) { + this._panAnim.stop(); + } + return this; + }, + + _rawPanBy: function (offset) { + setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _getZoomSpan: function () { + return this.getMaxZoom() - this.getMinZoom(); + }, + + _panInsideMaxBounds: function () { + if (!this._enforcingBounds) { + this.panInsideBounds(this.options.maxBounds); + } + }, + + _checkIfLoaded: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + }, + + // DOM event handling + + // @section Interaction events + _initEvents: function (remove$$1) { + this._targets = {}; + this._targets[stamp(this._container)] = this; + + var onOff = remove$$1 ? off : on; + + // @event click: MouseEvent + // Fired when the user clicks (or taps) the map. + // @event dblclick: MouseEvent + // Fired when the user double-clicks (or double-taps) the map. + // @event mousedown: MouseEvent + // Fired when the user pushes the mouse button on the map. + // @event mouseup: MouseEvent + // Fired when the user releases the mouse button on the map. + // @event mouseover: MouseEvent + // Fired when the mouse enters the map. + // @event mouseout: MouseEvent + // Fired when the mouse leaves the map. + // @event mousemove: MouseEvent + // Fired while the mouse moves over the map. + // @event contextmenu: MouseEvent + // Fired when the user pushes the right mouse button on the map, prevents + // default browser context menu from showing if there are listeners on + // this event. Also fired on mobile when the user holds a single touch + // for a second (also called long press). + // @event keypress: KeyboardEvent + // Fired when the user presses a key from the keyboard while the map is focused. + onOff(this._container, 'click dblclick mousedown mouseup ' + + 'mouseover mouseout mousemove contextmenu keypress', this._handleDOMEvent, this); + + if (this.options.trackResize) { + onOff(window, 'resize', this._onResize, this); + } + + if (any3d && this.options.transform3DLimit) { + (remove$$1 ? this.off : this.on).call(this, 'moveend', this._onMoveEnd); + } + }, + + _onResize: function () { + cancelAnimFrame(this._resizeRequest); + this._resizeRequest = requestAnimFrame( + function () { this.invalidateSize({debounceMoveend: true}); }, this); + }, + + _onScroll: function () { + this._container.scrollTop = 0; + this._container.scrollLeft = 0; + }, + + _onMoveEnd: function () { + var pos = this._getMapPanePos(); + if (Math.max(Math.abs(pos.x), Math.abs(pos.y)) >= this.options.transform3DLimit) { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1203873 but Webkit also have + // a pixel offset on very high values, see: http://jsfiddle.net/dg6r5hhb/ + this._resetView(this.getCenter(), this.getZoom()); + } + }, + + _findEventTargets: function (e, type) { + var targets = [], + target, + isHover = type === 'mouseout' || type === 'mouseover', + src = e.target || e.srcElement, + dragging = false; + + while (src) { + target = this._targets[stamp(src)]; + if (target && (type === 'click' || type === 'preclick') && !e._simulated && this._draggableMoved(target)) { + // Prevent firing click after you just dragged an object. + dragging = true; + break; + } + if (target && target.listens(type, true)) { + if (isHover && !isExternalTarget(src, e)) { break; } + targets.push(target); + if (isHover) { break; } + } + if (src === this._container) { break; } + src = src.parentNode; + } + if (!targets.length && !dragging && !isHover && isExternalTarget(src, e)) { + targets = [this]; + } + return targets; + }, + + _handleDOMEvent: function (e) { + if (!this._loaded || skipped(e)) { return; } + + var type = e.type; + + if (type === 'mousedown' || type === 'keypress') { + // prevents outline when clicking on keyboard-focusable element + preventOutline(e.target || e.srcElement); + } + + this._fireDOMEvent(e, type); + }, + + _mouseEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'], + + _fireDOMEvent: function (e, type, targets) { + + if (e.type === 'click') { + // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups). + // @event preclick: MouseEvent + // Fired before mouse click on the map (sometimes useful when you + // want something to happen on click before any existing click + // handlers start running). + var synth = extend({}, e); + synth.type = 'preclick'; + this._fireDOMEvent(synth, synth.type, targets); + } + + if (e._stopped) { return; } + + // Find the layer the event is propagating from and its parents. + targets = (targets || []).concat(this._findEventTargets(e, type)); + + if (!targets.length) { return; } + + var target = targets[0]; + if (type === 'contextmenu' && target.listens(type, true)) { + preventDefault(e); + } + + var data = { + originalEvent: e + }; + + if (e.type !== 'keypress') { + var isMarker = target.getLatLng && (!target._radius || target._radius <= 10); + data.containerPoint = isMarker ? + this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); + data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); + data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint); + } + + for (var i = 0; i < targets.length; i++) { + targets[i].fire(type, data, true); + if (data.originalEvent._stopped || + (targets[i].options.bubblingMouseEvents === false && indexOf(this._mouseEvents, type) !== -1)) { return; } + } + }, + + _draggableMoved: function (obj) { + obj = obj.dragging && obj.dragging.enabled() ? obj : this; + return (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved()); + }, + + _clearHandlers: function () { + for (var i = 0, len = this._handlers.length; i < len; i++) { + this._handlers[i].disable(); + } + }, + + // @section Other Methods + + // @method whenReady(fn: Function, context?: Object): this + // Runs the given function `fn` when the map gets initialized with + // a view (center and zoom) and at least one layer, or immediately + // if it's already initialized, optionally passing a function context. + whenReady: function (callback, context) { + if (this._loaded) { + callback.call(context || this, {target: this}); + } else { + this.on('load', callback, context); + } + return this; + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return getPosition(this._mapPane) || new Point(0, 0); + }, + + _moved: function () { + var pos = this._getMapPanePos(); + return pos && !pos.equals([0, 0]); + }, + + _getTopLeftPoint: function (center, zoom) { + var pixelOrigin = center && zoom !== undefined ? + this._getNewPixelOrigin(center, zoom) : + this.getPixelOrigin(); + return pixelOrigin.subtract(this._getMapPanePos()); + }, + + _getNewPixelOrigin: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round(); + }, + + _latLngToNewLayerPoint: function (latlng, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return this.project(latlng, zoom)._subtract(topLeft); + }, + + _latLngBoundsToNewLayerBounds: function (latLngBounds, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return toBounds([ + this.project(latLngBounds.getSouthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthWest(), zoom)._subtract(topLeft), + this.project(latLngBounds.getSouthEast(), zoom)._subtract(topLeft), + this.project(latLngBounds.getNorthEast(), zoom)._subtract(topLeft) + ]); + }, + + // layer point of the current center + _getCenterLayerPoint: function () { + return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); + }, + + // offset of the specified place to the current center in pixels + _getCenterOffset: function (latlng) { + return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint()); + }, + + // adjust center for view to get inside bounds + _limitCenter: function (center, zoom, bounds) { + + if (!bounds) { return center; } + + var centerPoint = this.project(center, zoom), + viewHalf = this.getSize().divideBy(2), + viewBounds = new Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)), + offset = this._getBoundsOffset(viewBounds, bounds, zoom); + + // If offset is less than a pixel, ignore. + // This prevents unstable projections from getting into + // an infinite loop of tiny offsets. + if (offset.round().equals([0, 0])) { + return center; + } + + return this.unproject(centerPoint.add(offset), zoom); + }, + + // adjust offset for view to get inside bounds + _limitOffset: function (offset, bounds) { + if (!bounds) { return offset; } + + var viewBounds = this.getPixelBounds(), + newBounds = new Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset)); + + return offset.add(this._getBoundsOffset(newBounds, bounds)); + }, + + // returns offset needed for pxBounds to get inside maxBounds at a specified zoom + _getBoundsOffset: function (pxBounds, maxBounds, zoom) { + var projectedMaxBounds = toBounds( + this.project(maxBounds.getNorthEast(), zoom), + this.project(maxBounds.getSouthWest(), zoom) + ), + minOffset = projectedMaxBounds.min.subtract(pxBounds.min), + maxOffset = projectedMaxBounds.max.subtract(pxBounds.max), + + dx = this._rebound(minOffset.x, -maxOffset.x), + dy = this._rebound(minOffset.y, -maxOffset.y); + + return new Point(dx, dy); + }, + + _rebound: function (left, right) { + return left + right > 0 ? + Math.round(left - right) / 2 : + Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right)); + }, + + _limitZoom: function (zoom) { + var min = this.getMinZoom(), + max = this.getMaxZoom(), + snap = any3d ? this.options.zoomSnap : 1; + if (snap) { + zoom = Math.round(zoom / snap) * snap; + } + return Math.max(min, Math.min(max, zoom)); + }, + + _onPanTransitionStep: function () { + this.fire('move'); + }, + + _onPanTransitionEnd: function () { + removeClass(this._mapPane, 'leaflet-pan-anim'); + this.fire('moveend'); + }, + + _tryAnimatedPan: function (center, options) { + // difference between the new and current centers in pixels + var offset = this._getCenterOffset(center)._trunc(); + + // don't animate too far unless animate: true specified in options + if ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; } + + this.panBy(offset, options); + + return true; + }, + + _createAnimProxy: function () { + + var proxy = this._proxy = create$1('div', 'leaflet-proxy leaflet-zoom-animated'); + this._panes.mapPane.appendChild(proxy); + + this.on('zoomanim', function (e) { + var prop = TRANSFORM, + transform = this._proxy.style[prop]; + + setTransform(this._proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1)); + + // workaround for case when transform is the same and so transitionend event is not fired + if (transform === this._proxy.style[prop] && this._animatingZoom) { + this._onZoomTransitionEnd(); + } + }, this); + + this.on('load moveend', function () { + var c = this.getCenter(), + z = this.getZoom(); + setTransform(this._proxy, this.project(c, z), this.getZoomScale(z, 1)); + }, this); + + this._on('unload', this._destroyAnimProxy, this); + }, + + _destroyAnimProxy: function () { + remove(this._proxy); + delete this._proxy; + }, + + _catchTransitionEnd: function (e) { + if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) { + this._onZoomTransitionEnd(); + } + }, + + _nothingToAnimate: function () { + return !this._container.getElementsByClassName('leaflet-zoom-animated').length; + }, + + _tryAnimatedZoom: function (center, zoom, options) { + + if (this._animatingZoom) { return true; } + + options = options || {}; + + // don't animate if disabled, not supported or zoom difference is too large + if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || + Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; } + + // offset is the pixel coords of the zoom origin relative to the current center + var scale = this.getZoomScale(zoom), + offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale); + + // don't animate if the zoom origin isn't within one screen from the current center, unless forced + if (options.animate !== true && !this.getSize().contains(offset)) { return false; } + + requestAnimFrame(function () { + this + ._moveStart(true, false) + ._animateZoom(center, zoom, true); + }, this); + + return true; + }, + + _animateZoom: function (center, zoom, startAnim, noUpdate) { + if (!this._mapPane) { return; } + + if (startAnim) { + this._animatingZoom = true; + + // remember what center/zoom to set after animation + this._animateToCenter = center; + this._animateToZoom = zoom; + + addClass(this._mapPane, 'leaflet-zoom-anim'); + } + + // @event zoomanim: ZoomAnimEvent + // Fired on every frame of a zoom animation + this.fire('zoomanim', { + center: center, + zoom: zoom, + noUpdate: noUpdate + }); + + // Work around webkit not firing 'transitionend', see https://github.com/Leaflet/Leaflet/issues/3689, 2693 + setTimeout(bind(this._onZoomTransitionEnd, this), 250); + }, + + _onZoomTransitionEnd: function () { + if (!this._animatingZoom) { return; } + + if (this._mapPane) { + removeClass(this._mapPane, 'leaflet-zoom-anim'); + } + + this._animatingZoom = false; + + this._move(this._animateToCenter, this._animateToZoom); + + // This anim frame should prevent an obscure iOS webkit tile loading race condition. + requestAnimFrame(function () { + this._moveEnd(true); + }, this); + } +}); + +// @section + +// @factory L.map(id: String, options?: Map options) +// Instantiates a map object given the DOM ID of a `<div>` element +// and optionally an object literal with `Map options`. +// +// @alternative +// @factory L.map(el: HTMLElement, options?: Map options) +// Instantiates a map object given an instance of a `<div>` HTML element +// and optionally an object literal with `Map options`. +function createMap(id, options) { + return new Map(id, options); +} + +/* + * @class Control + * @aka L.Control + * @inherits Class + * + * L.Control is a base class for implementing map controls. Handles positioning. + * All other controls extend from this class. + */ + +var Control = Class.extend({ + // @section + // @aka Control options + options: { + // @option position: String = 'topright' + // The position of the control (one of the map corners). Possible values are `'topleft'`, + // `'topright'`, `'bottomleft'` or `'bottomright'` + position: 'topright' + }, + + initialize: function (options) { + setOptions(this, options); + }, + + /* @section + * Classes extending L.Control will inherit the following methods: + * + * @method getPosition: string + * Returns the position of the control. + */ + getPosition: function () { + return this.options.position; + }, + + // @method setPosition(position: string): this + // Sets the position of the control. + setPosition: function (position) { + var map = this._map; + + if (map) { + map.removeControl(this); + } + + this.options.position = position; + + if (map) { + map.addControl(this); + } + + return this; + }, + + // @method getContainer: HTMLElement + // Returns the HTMLElement that contains the control. + getContainer: function () { + return this._container; + }, + + // @method addTo(map: Map): this + // Adds the control to the given map. + addTo: function (map) { + this.remove(); + this._map = map; + + var container = this._container = this.onAdd(map), + pos = this.getPosition(), + corner = map._controlCorners[pos]; + + addClass(container, 'leaflet-control'); + + if (pos.indexOf('bottom') !== -1) { + corner.insertBefore(container, corner.firstChild); + } else { + corner.appendChild(container); + } + + return this; + }, + + // @method remove: this + // Removes the control from the map it is currently active on. + remove: function () { + if (!this._map) { + return this; + } + + remove(this._container); + + if (this.onRemove) { + this.onRemove(this._map); + } + + this._map = null; + + return this; + }, + + _refocusOnMap: function (e) { + // if map exists and event is not a keyboard event + if (this._map && e && e.screenX > 0 && e.screenY > 0) { + this._map.getContainer().focus(); + } + } +}); + +var control = function (options) { + return new Control(options); +}; + +/* @section Extension methods + * @uninheritable + * + * Every control should extend from `L.Control` and (re-)implement the following methods. + * + * @method onAdd(map: Map): HTMLElement + * Should return the container DOM element for the control and add listeners on relevant map events. Called on [`control.addTo(map)`](#control-addTo). + * + * @method onRemove(map: Map) + * Optional method. Should contain all clean up code that removes the listeners previously added in [`onAdd`](#control-onadd). Called on [`control.remove()`](#control-remove). + */ + +/* @namespace Map + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addControl(control: Control): this + // Adds the given control to the map + addControl: function (control) { + control.addTo(this); + return this; + }, + + // @method removeControl(control: Control): this + // Removes the given control from the map + removeControl: function (control) { + control.remove(); + return this; + }, + + _initControlPos: function () { + var corners = this._controlCorners = {}, + l = 'leaflet-', + container = this._controlContainer = + create$1('div', l + 'control-container', this._container); + + function createCorner(vSide, hSide) { + var className = l + vSide + ' ' + l + hSide; + + corners[vSide + hSide] = create$1('div', className, container); + } + + createCorner('top', 'left'); + createCorner('top', 'right'); + createCorner('bottom', 'left'); + createCorner('bottom', 'right'); + }, + + _clearControlPos: function () { + for (var i in this._controlCorners) { + remove(this._controlCorners[i]); + } + remove(this._controlContainer); + delete this._controlCorners; + delete this._controlContainer; + } +}); + +/* + * @class Control.Layers + * @aka L.Control.Layers + * @inherits Control + * + * The layers control gives users the ability to switch between different base layers and switch overlays on/off (check out the [detailed example](http://leafletjs.com/examples/layers-control/)). Extends `Control`. + * + * @example + * + * ```js + * var baseLayers = { + * "Mapbox": mapbox, + * "OpenStreetMap": osm + * }; + * + * var overlays = { + * "Marker": marker, + * "Roads": roadsLayer + * }; + * + * L.control.layers(baseLayers, overlays).addTo(map); + * ``` + * + * The `baseLayers` and `overlays` parameters are object literals with layer names as keys and `Layer` objects as values: + * + * ```js + * { + * "<someName1>": layer1, + * "<someName2>": layer2 + * } + * ``` + * + * The layer names can contain HTML, which allows you to add additional styling to the items: + * + * ```js + * {"<img src='my-layer-icon' /> <span class='my-layer-item'>My Layer</span>": myLayer} + * ``` + */ + +var Layers = Control.extend({ + // @section + // @aka Control.Layers options + options: { + // @option collapsed: Boolean = true + // If `true`, the control will be collapsed into an icon and expanded on mouse hover or touch. + collapsed: true, + position: 'topright', + + // @option autoZIndex: Boolean = true + // If `true`, the control will assign zIndexes in increasing order to all of its layers so that the order is preserved when switching them on/off. + autoZIndex: true, + + // @option hideSingleBase: Boolean = false + // If `true`, the base layers in the control will be hidden when there is only one. + hideSingleBase: false, + + // @option sortLayers: Boolean = false + // Whether to sort the layers. When `false`, layers will keep the order + // in which they were added to the control. + sortLayers: false, + + // @option sortFunction: Function = * + // A [compare function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) + // that will be used for sorting the layers, when `sortLayers` is `true`. + // The function receives both the `L.Layer` instances and their names, as in + // `sortFunction(layerA, layerB, nameA, nameB)`. + // By default, it sorts layers alphabetically by their name. + sortFunction: function (layerA, layerB, nameA, nameB) { + return nameA < nameB ? -1 : (nameB < nameA ? 1 : 0); + } + }, + + initialize: function (baseLayers, overlays, options) { + setOptions(this, options); + + this._layerControlInputs = []; + this._layers = []; + this._lastZIndex = 0; + this._handlingClick = false; + + for (var i in baseLayers) { + this._addLayer(baseLayers[i], i); + } + + for (i in overlays) { + this._addLayer(overlays[i], i, true); + } + }, + + onAdd: function (map) { + this._initLayout(); + this._update(); + + this._map = map; + map.on('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.on('add remove', this._onLayerChange, this); + } + + return this._container; + }, + + addTo: function (map) { + Control.prototype.addTo.call(this, map); + // Trigger expand after Layers Control has been inserted into DOM so that is now has an actual height. + return this._expandIfNotCollapsed(); + }, + + onRemove: function () { + this._map.off('zoomend', this._checkDisabledLayers, this); + + for (var i = 0; i < this._layers.length; i++) { + this._layers[i].layer.off('add remove', this._onLayerChange, this); + } + }, + + // @method addBaseLayer(layer: Layer, name: String): this + // Adds a base layer (radio button entry) with the given name to the control. + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + return (this._map) ? this._update() : this; + }, + + // @method addOverlay(layer: Layer, name: String): this + // Adds an overlay (checkbox entry) with the given name to the control. + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + return (this._map) ? this._update() : this; + }, + + // @method removeLayer(layer: Layer): this + // Remove the given layer from the control. + removeLayer: function (layer) { + layer.off('add remove', this._onLayerChange, this); + + var obj = this._getLayer(stamp(layer)); + if (obj) { + this._layers.splice(this._layers.indexOf(obj), 1); + } + return (this._map) ? this._update() : this; + }, + + // @method expand(): this + // Expand the control container if collapsed. + expand: function () { + addClass(this._container, 'leaflet-control-layers-expanded'); + this._form.style.height = null; + var acceptableHeight = this._map.getSize().y - (this._container.offsetTop + 50); + if (acceptableHeight < this._form.clientHeight) { + addClass(this._form, 'leaflet-control-layers-scrollbar'); + this._form.style.height = acceptableHeight + 'px'; + } else { + removeClass(this._form, 'leaflet-control-layers-scrollbar'); + } + this._checkDisabledLayers(); + return this; + }, + + // @method collapse(): this + // Collapse the control container if expanded. + collapse: function () { + removeClass(this._container, 'leaflet-control-layers-expanded'); + return this; + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = create$1('div', className), + collapsed = this.options.collapsed; + + // makes this work on IE touch devices by stopping it from firing a mouseout event when the touch is released + container.setAttribute('aria-haspopup', true); + + disableClickPropagation(container); + disableScrollPropagation(container); + + var form = this._form = create$1('form', className + '-list'); + + if (collapsed) { + this._map.on('click', this.collapse, this); + + if (!android) { + on(container, { + mouseenter: this.expand, + mouseleave: this.collapse + }, this); + } + } + + var link = this._layersLink = create$1('a', className + '-toggle', container); + link.href = '#'; + link.title = 'Layers'; + + if (touch) { + on(link, 'click', stop); + on(link, 'click', this.expand, this); + } else { + on(link, 'focus', this.expand, this); + } + + if (!collapsed) { + this.expand(); + } + + this._baseLayersList = create$1('div', className + '-base', form); + this._separator = create$1('div', className + '-separator', form); + this._overlaysList = create$1('div', className + '-overlays', form); + + container.appendChild(form); + }, + + _getLayer: function (id) { + for (var i = 0; i < this._layers.length; i++) { + + if (this._layers[i] && stamp(this._layers[i].layer) === id) { + return this._layers[i]; + } + } + }, + + _addLayer: function (layer, name, overlay) { + if (this._map) { + layer.on('add remove', this._onLayerChange, this); + } + + this._layers.push({ + layer: layer, + name: name, + overlay: overlay + }); + + if (this.options.sortLayers) { + this._layers.sort(bind(function (a, b) { + return this.options.sortFunction(a.layer, b.layer, a.name, b.name); + }, this)); + } + + if (this.options.autoZIndex && layer.setZIndex) { + this._lastZIndex++; + layer.setZIndex(this._lastZIndex); + } + + this._expandIfNotCollapsed(); + }, + + _update: function () { + if (!this._container) { return this; } + + empty(this._baseLayersList); + empty(this._overlaysList); + + this._layerControlInputs = []; + var baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0; + + for (i = 0; i < this._layers.length; i++) { + obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + baseLayersCount += !obj.overlay ? 1 : 0; + } + + // Hide base layers section if there's only one layer. + if (this.options.hideSingleBase) { + baseLayersPresent = baseLayersPresent && baseLayersCount > 1; + this._baseLayersList.style.display = baseLayersPresent ? '' : 'none'; + } + + this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; + + return this; + }, + + _onLayerChange: function (e) { + if (!this._handlingClick) { + this._update(); + } + + var obj = this._getLayer(stamp(e.target)); + + // @namespace Map + // @section Layer events + // @event baselayerchange: LayersControlEvent + // Fired when the base layer is changed through the [layer control](#control-layers). + // @event overlayadd: LayersControlEvent + // Fired when an overlay is selected through the [layer control](#control-layers). + // @event overlayremove: LayersControlEvent + // Fired when an overlay is deselected through the [layer control](#control-layers). + // @namespace Control.Layers + var type = obj.overlay ? + (e.type === 'add' ? 'overlayadd' : 'overlayremove') : + (e.type === 'add' ? 'baselayerchange' : null); + + if (type) { + this._map.fire(type, obj); + } + }, + + // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe) + _createRadioElement: function (name, checked) { + + var radioHtml = '<input type="radio" class="leaflet-control-layers-selector" name="' + + name + '"' + (checked ? ' checked="checked"' : '') + '/>'; + + var radioFragment = document.createElement('div'); + radioFragment.innerHTML = radioHtml; + + return radioFragment.firstChild; + }, + + _addItem: function (obj) { + var label = document.createElement('label'), + checked = this._map.hasLayer(obj.layer), + input; + + if (obj.overlay) { + input = document.createElement('input'); + input.type = 'checkbox'; + input.className = 'leaflet-control-layers-selector'; + input.defaultChecked = checked; + } else { + input = this._createRadioElement('leaflet-base-layers', checked); + } + + this._layerControlInputs.push(input); + input.layerId = stamp(obj.layer); + + on(input, 'click', this._onInputClick, this); + + var name = document.createElement('span'); + name.innerHTML = ' ' + obj.name; + + // Helps from preventing layer control flicker when checkboxes are disabled + // https://github.com/Leaflet/Leaflet/issues/2771 + var holder = document.createElement('div'); + + label.appendChild(holder); + holder.appendChild(input); + holder.appendChild(name); + + var container = obj.overlay ? this._overlaysList : this._baseLayersList; + container.appendChild(label); + + this._checkDisabledLayers(); + return label; + }, + + _onInputClick: function () { + var inputs = this._layerControlInputs, + input, layer; + var addedLayers = [], + removedLayers = []; + + this._handlingClick = true; + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + + if (input.checked) { + addedLayers.push(layer); + } else if (!input.checked) { + removedLayers.push(layer); + } + } + + // Bugfix issue 2318: Should remove all old layers before readding new ones + for (i = 0; i < removedLayers.length; i++) { + if (this._map.hasLayer(removedLayers[i])) { + this._map.removeLayer(removedLayers[i]); + } + } + for (i = 0; i < addedLayers.length; i++) { + if (!this._map.hasLayer(addedLayers[i])) { + this._map.addLayer(addedLayers[i]); + } + } + + this._handlingClick = false; + + this._refocusOnMap(); + }, + + _checkDisabledLayers: function () { + var inputs = this._layerControlInputs, + input, + layer, + zoom = this._map.getZoom(); + + for (var i = inputs.length - 1; i >= 0; i--) { + input = inputs[i]; + layer = this._getLayer(input.layerId).layer; + input.disabled = (layer.options.minZoom !== undefined && zoom < layer.options.minZoom) || + (layer.options.maxZoom !== undefined && zoom > layer.options.maxZoom); + + } + }, + + _expandIfNotCollapsed: function () { + if (this._map && !this.options.collapsed) { + this.expand(); + } + return this; + }, + + _expand: function () { + // Backward compatibility, remove me in 1.1. + return this.expand(); + }, + + _collapse: function () { + // Backward compatibility, remove me in 1.1. + return this.collapse(); + } + +}); + + +// @factory L.control.layers(baselayers?: Object, overlays?: Object, options?: Control.Layers options) +// Creates an attribution control with the given layers. Base layers will be switched with radio buttons, while overlays will be switched with checkboxes. Note that all base layers should be passed in the base layers object, but only one should be added to the map during map instantiation. +var layers = function (baseLayers, overlays, options) { + return new Layers(baseLayers, overlays, options); +}; + +/* + * @class Control.Zoom + * @aka L.Control.Zoom + * @inherits Control + * + * A basic zoom control with two buttons (zoom in and zoom out). It is put on the map by default unless you set its [`zoomControl` option](#map-zoomcontrol) to `false`. Extends `Control`. + */ + +var Zoom = Control.extend({ + // @section + // @aka Control.Zoom options + options: { + position: 'topleft', + + // @option zoomInText: String = '+' + // The text set on the 'zoom in' button. + zoomInText: '+', + + // @option zoomInTitle: String = 'Zoom in' + // The title set on the 'zoom in' button. + zoomInTitle: 'Zoom in', + + // @option zoomOutText: String = '−' + // The text set on the 'zoom out' button. + zoomOutText: '−', + + // @option zoomOutTitle: String = 'Zoom out' + // The title set on the 'zoom out' button. + zoomOutTitle: 'Zoom out' + }, + + onAdd: function (map) { + var zoomName = 'leaflet-control-zoom', + container = create$1('div', zoomName + ' leaflet-bar'), + options = this.options; + + this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, + zoomName + '-in', container, this._zoomIn); + this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, + zoomName + '-out', container, this._zoomOut); + + this._updateDisabled(); + map.on('zoomend zoomlevelschange', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend zoomlevelschange', this._updateDisabled, this); + }, + + disable: function () { + this._disabled = true; + this._updateDisabled(); + return this; + }, + + enable: function () { + this._disabled = false; + this._updateDisabled(); + return this; + }, + + _zoomIn: function (e) { + if (!this._disabled && this._map._zoom < this._map.getMaxZoom()) { + this._map.zoomIn(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _zoomOut: function (e) { + if (!this._disabled && this._map._zoom > this._map.getMinZoom()) { + this._map.zoomOut(this._map.options.zoomDelta * (e.shiftKey ? 3 : 1)); + } + }, + + _createButton: function (html, title, className, container, fn) { + var link = create$1('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + /* + * Will force screen readers like VoiceOver to read this as "Zoom in - button" + */ + link.setAttribute('role', 'button'); + link.setAttribute('aria-label', title); + + disableClickPropagation(link); + on(link, 'click', stop); + on(link, 'click', fn, this); + on(link, 'click', this._refocusOnMap, this); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-disabled'; + + removeClass(this._zoomInButton, className); + removeClass(this._zoomOutButton, className); + + if (this._disabled || map._zoom === map.getMinZoom()) { + addClass(this._zoomOutButton, className); + } + if (this._disabled || map._zoom === map.getMaxZoom()) { + addClass(this._zoomInButton, className); + } + } +}); + +// @namespace Map +// @section Control options +// @option zoomControl: Boolean = true +// Whether a [zoom control](#control-zoom) is added to the map by default. +Map.mergeOptions({ + zoomControl: true +}); + +Map.addInitHook(function () { + if (this.options.zoomControl) { + this.zoomControl = new Zoom(); + this.addControl(this.zoomControl); + } +}); + +// @namespace Control.Zoom +// @factory L.control.zoom(options: Control.Zoom options) +// Creates a zoom control +var zoom = function (options) { + return new Zoom(options); +}; + +/* + * @class Control.Scale + * @aka L.Control.Scale + * @inherits Control + * + * A simple scale control that shows the scale of the current center of screen in metric (m/km) and imperial (mi/ft) systems. Extends `Control`. + * + * @example + * + * ```js + * L.control.scale().addTo(map); + * ``` + */ + +var Scale = Control.extend({ + // @section + // @aka Control.Scale options + options: { + position: 'bottomleft', + + // @option maxWidth: Number = 100 + // Maximum width of the control in pixels. The width is set dynamically to show round values (e.g. 100, 200, 500). + maxWidth: 100, + + // @option metric: Boolean = True + // Whether to show the metric scale line (m/km). + metric: true, + + // @option imperial: Boolean = True + // Whether to show the imperial scale line (mi/ft). + imperial: true + + // @option updateWhenIdle: Boolean = false + // If `true`, the control is updated on [`moveend`](#map-moveend), otherwise it's always up-to-date (updated on [`move`](#map-move)). + }, + + onAdd: function (map) { + var className = 'leaflet-control-scale', + container = create$1('div', className), + options = this.options; + + this._addScales(options, className + '-line', container); + + map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + map.whenReady(this._update, this); + + return container; + }, + + onRemove: function (map) { + map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + }, + + _addScales: function (options, className, container) { + if (options.metric) { + this._mScale = create$1('div', className, container); + } + if (options.imperial) { + this._iScale = create$1('div', className, container); + } + }, + + _update: function () { + var map = this._map, + y = map.getSize().y / 2; + + var maxMeters = map.distance( + map.containerPointToLatLng([0, y]), + map.containerPointToLatLng([this.options.maxWidth, y])); + + this._updateScales(maxMeters); + }, + + _updateScales: function (maxMeters) { + if (this.options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + if (this.options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters), + label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + + this._updateScale(this._mScale, label, meters / maxMeters); + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + this._updateScale(this._iScale, miles + ' mi', miles / maxMiles); + + } else { + feet = this._getRoundNum(maxFeet); + this._updateScale(this._iScale, feet + ' ft', feet / maxFeet); + } + }, + + _updateScale: function (scale, text, ratio) { + scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px'; + scale.innerHTML = text; + }, + + _getRoundNum: function (num) { + var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), + d = num / pow10; + + d = d >= 10 ? 10 : + d >= 5 ? 5 : + d >= 3 ? 3 : + d >= 2 ? 2 : 1; + + return pow10 * d; + } +}); + + +// @factory L.control.scale(options?: Control.Scale options) +// Creates an scale control with the given options. +var scale = function (options) { + return new Scale(options); +}; + +/* + * @class Control.Attribution + * @aka L.Control.Attribution + * @inherits Control + * + * The attribution control allows you to display attribution data in a small text box on a map. It is put on the map by default unless you set its [`attributionControl` option](#map-attributioncontrol) to `false`, and it fetches attribution texts from layers with the [`getAttribution` method](#layer-getattribution) automatically. Extends Control. + */ + +var Attribution = Control.extend({ + // @section + // @aka Control.Attribution options + options: { + position: 'bottomright', + + // @option prefix: String = 'Leaflet' + // The HTML text shown before the attributions. Pass `false` to disable. + prefix: '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>' + }, + + initialize: function (options) { + setOptions(this, options); + + this._attributions = {}; + }, + + onAdd: function (map) { + map.attributionControl = this; + this._container = create$1('div', 'leaflet-control-attribution'); + disableClickPropagation(this._container); + + // TODO ugly, refactor + for (var i in map._layers) { + if (map._layers[i].getAttribution) { + this.addAttribution(map._layers[i].getAttribution()); + } + } + + this._update(); + + return this._container; + }, + + // @method setPrefix(prefix: String): this + // Sets the text before the attributions. + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + // @method addAttribution(text: String): this + // Adds an attribution text (e.g. `'Vector data © Mapbox'`). + addAttribution: function (text) { + if (!text) { return this; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + // @method removeAttribution(text: String): this + // Removes an attribution text. + removeAttribution: function (text) { + if (!text) { return this; } + + if (this._attributions[text]) { + this._attributions[text]--; + this._update(); + } + + return this; + }, + + _update: function () { + if (!this._map) { return; } + + var attribs = []; + + for (var i in this._attributions) { + if (this._attributions[i]) { + attribs.push(i); + } + } + + var prefixAndAttribs = []; + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); + } + if (attribs.length) { + prefixAndAttribs.push(attribs.join(', ')); + } + + this._container.innerHTML = prefixAndAttribs.join(' | '); + } +}); + +// @namespace Map +// @section Control options +// @option attributionControl: Boolean = true +// Whether a [attribution control](#control-attribution) is added to the map by default. +Map.mergeOptions({ + attributionControl: true +}); + +Map.addInitHook(function () { + if (this.options.attributionControl) { + new Attribution().addTo(this); + } +}); + +// @namespace Control.Attribution +// @factory L.control.attribution(options: Control.Attribution options) +// Creates an attribution control. +var attribution = function (options) { + return new Attribution(options); +}; + +Control.Layers = Layers; +Control.Zoom = Zoom; +Control.Scale = Scale; +Control.Attribution = Attribution; + +control.layers = layers; +control.zoom = zoom; +control.scale = scale; +control.attribution = attribution; + +/* + L.Handler is a base class for handler classes that are used internally to inject + interaction features like dragging to classes like Map and Marker. +*/ + +// @class Handler +// @aka L.Handler +// Abstract class for map interaction handlers + +var Handler = Class.extend({ + initialize: function (map) { + this._map = map; + }, + + // @method enable(): this + // Enables the handler + enable: function () { + if (this._enabled) { return this; } + + this._enabled = true; + this.addHooks(); + return this; + }, + + // @method disable(): this + // Disables the handler + disable: function () { + if (!this._enabled) { return this; } + + this._enabled = false; + this.removeHooks(); + return this; + }, + + // @method enabled(): Boolean + // Returns `true` if the handler is enabled + enabled: function () { + return !!this._enabled; + } + + // @section Extension methods + // Classes inheriting from `Handler` must implement the two following methods: + // @method addHooks() + // Called when the handler is enabled, should add event hooks. + // @method removeHooks() + // Called when the handler is disabled, should remove the event hooks added previously. +}); + +// @section There is static function which can be called without instantiating L.Handler: +// @function addTo(map: Map, name: String): this +// Adds a new Handler to the given map with the given name. +Handler.addTo = function (map, name) { + map.addHandler(name, this); + return this; +}; + +var Mixin = {Events: Events}; + +/* + * @class Draggable + * @aka L.Draggable + * @inherits Evented + * + * A class for making DOM elements draggable (including touch support). + * Used internally for map and marker dragging. Only works for elements + * that were positioned with [`L.DomUtil.setPosition`](#domutil-setposition). + * + * @example + * ```js + * var draggable = new L.Draggable(elementToDrag); + * draggable.enable(); + * ``` + */ + +var START = touch ? 'touchstart mousedown' : 'mousedown'; +var END = { + mousedown: 'mouseup', + touchstart: 'touchend', + pointerdown: 'touchend', + MSPointerDown: 'touchend' +}; +var MOVE = { + mousedown: 'mousemove', + touchstart: 'touchmove', + pointerdown: 'touchmove', + MSPointerDown: 'touchmove' +}; + + +var Draggable = Evented.extend({ + + options: { + // @section + // @aka Draggable options + // @option clickTolerance: Number = 3 + // The max number of pixels a user can shift the mouse pointer during a click + // for it to be considered a valid click (as opposed to a mouse drag). + clickTolerance: 3 + }, + + // @constructor L.Draggable(el: HTMLElement, dragHandle?: HTMLElement, preventOutline?: Boolean, options?: Draggable options) + // Creates a `Draggable` object for moving `el` when you start dragging the `dragHandle` element (equals `el` itself by default). + initialize: function (element, dragStartTarget, preventOutline$$1, options) { + setOptions(this, options); + + this._element = element; + this._dragStartTarget = dragStartTarget || element; + this._preventOutline = preventOutline$$1; + }, + + // @method enable() + // Enables the dragging ability + enable: function () { + if (this._enabled) { return; } + + on(this._dragStartTarget, START, this._onDown, this); + + this._enabled = true; + }, + + // @method disable() + // Disables the dragging ability + disable: function () { + if (!this._enabled) { return; } + + // If we're currently dragging this draggable, + // disabling it counts as first ending the drag. + if (Draggable._dragging === this) { + this.finishDrag(); + } + + off(this._dragStartTarget, START, this._onDown, this); + + this._enabled = false; + this._moved = false; + }, + + _onDown: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + + this._moved = false; + + if (hasClass(this._element, 'leaflet-zoom-anim')) { return; } + + if (Draggable._dragging || e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } + Draggable._dragging = this; // Prevent dragging multiple objects at once. + + if (this._preventOutline) { + preventOutline(this._element); + } + + disableImageDrag(); + disableTextSelection(); + + if (this._moving) { return; } + + // @event down: Event + // Fired when a drag is about to start. + this.fire('down'); + + var first = e.touches ? e.touches[0] : e; + + this._startPoint = new Point(first.clientX, first.clientY); + + on(document, MOVE[e.type], this._onMove, this); + on(document, END[e.type], this._onUp, this); + }, + + _onMove: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + + if (e.touches && e.touches.length > 1) { + this._moved = true; + return; + } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + newPoint = new Point(first.clientX, first.clientY), + offset = newPoint.subtract(this._startPoint); + + if (!offset.x && !offset.y) { return; } + if (Math.abs(offset.x) + Math.abs(offset.y) < this.options.clickTolerance) { return; } + + preventDefault(e); + + if (!this._moved) { + // @event dragstart: Event + // Fired when a drag starts + this.fire('dragstart'); + + this._moved = true; + this._startPos = getPosition(this._element).subtract(offset); + + addClass(document.body, 'leaflet-dragging'); + + this._lastTarget = e.target || e.srcElement; + // IE and Edge do not give the <use> element, so fetch it + // if necessary + if ((window.SVGElementInstance) && (this._lastTarget instanceof SVGElementInstance)) { + this._lastTarget = this._lastTarget.correspondingUseElement; + } + addClass(this._lastTarget, 'leaflet-drag-target'); + } + + this._newPos = this._startPos.add(offset); + this._moving = true; + + cancelAnimFrame(this._animRequest); + this._lastEvent = e; + this._animRequest = requestAnimFrame(this._updatePosition, this, true); + }, + + _updatePosition: function () { + var e = {originalEvent: this._lastEvent}; + + // @event predrag: Event + // Fired continuously during dragging *before* each corresponding + // update of the element's position. + this.fire('predrag', e); + setPosition(this._element, this._newPos); + + // @event drag: Event + // Fired continuously during dragging. + this.fire('drag', e); + }, + + _onUp: function (e) { + // Ignore simulated events, since we handle both touch and + // mouse explicitly; otherwise we risk getting duplicates of + // touch events, see #4315. + // Also ignore the event if disabled; this happens in IE11 + // under some circumstances, see #3666. + if (e._simulated || !this._enabled) { return; } + this.finishDrag(); + }, + + finishDrag: function () { + removeClass(document.body, 'leaflet-dragging'); + + if (this._lastTarget) { + removeClass(this._lastTarget, 'leaflet-drag-target'); + this._lastTarget = null; + } + + for (var i in MOVE) { + off(document, MOVE[i], this._onMove, this); + off(document, END[i], this._onUp, this); + } + + enableImageDrag(); + enableTextSelection(); + + if (this._moved && this._moving) { + // ensure drag is not fired after dragend + cancelAnimFrame(this._animRequest); + + // @event dragend: DragEndEvent + // Fired when the drag ends. + this.fire('dragend', { + distance: this._newPos.distanceTo(this._startPos) + }); + } + + this._moving = false; + Draggable._dragging = false; + } + +}); + +/* + * @namespace LineUtil + * + * Various utility functions for polyline points processing, used by Leaflet internally to make polylines lightning-fast. + */ + +// Simplify polyline with vertex reduction and Douglas-Peucker simplification. +// Improves rendering performance dramatically by lessening the number of points to draw. + +// @function simplify(points: Point[], tolerance: Number): Point[] +// Dramatically reduces the number of points in a polyline while retaining +// its shape and returns a new array of simplified points, using the +// [Douglas-Peucker algorithm](http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm). +// Used for a huge performance boost when processing/displaying Leaflet polylines for +// each zoom level and also reducing visual noise. tolerance affects the amount of +// simplification (lesser value means higher quality but slower and with more points). +// Also released as a separated micro-library [Simplify.js](http://mourner.github.com/simplify-js/). +function simplify(points, tolerance) { + if (!tolerance || !points.length) { + return points.slice(); + } + + var sqTolerance = tolerance * tolerance; + + // stage 1: vertex reduction + points = _reducePoints(points, sqTolerance); + + // stage 2: Douglas-Peucker simplification + points = _simplifyDP(points, sqTolerance); + + return points; +} + +// @function pointToSegmentDistance(p: Point, p1: Point, p2: Point): Number +// Returns the distance between point `p` and segment `p1` to `p2`. +function pointToSegmentDistance(p, p1, p2) { + return Math.sqrt(_sqClosestPointOnSegment(p, p1, p2, true)); +} + +// @function closestPointOnSegment(p: Point, p1: Point, p2: Point): Number +// Returns the closest point from a point `p` on a segment `p1` to `p2`. +function closestPointOnSegment(p, p1, p2) { + return _sqClosestPointOnSegment(p, p1, p2); +} + +// Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm +function _simplifyDP(points, sqTolerance) { + + var len = points.length, + ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, + markers = new ArrayConstructor(len); + + markers[0] = markers[len - 1] = 1; + + _simplifyDPStep(points, markers, sqTolerance, 0, len - 1); + + var i, + newPoints = []; + + for (i = 0; i < len; i++) { + if (markers[i]) { + newPoints.push(points[i]); + } + } + + return newPoints; +} + +function _simplifyDPStep(points, markers, sqTolerance, first, last) { + + var maxSqDist = 0, + index, i, sqDist; + + for (i = first + 1; i <= last - 1; i++) { + sqDist = _sqClosestPointOnSegment(points[i], points[first], points[last], true); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + markers[index] = 1; + + _simplifyDPStep(points, markers, sqTolerance, first, index); + _simplifyDPStep(points, markers, sqTolerance, index, last); + } +} + +// reduce points that are too close to each other to a single point +function _reducePoints(points, sqTolerance) { + var reducedPoints = [points[0]]; + + for (var i = 1, prev = 0, len = points.length; i < len; i++) { + if (_sqDist(points[i], points[prev]) > sqTolerance) { + reducedPoints.push(points[i]); + prev = i; + } + } + if (prev < len - 1) { + reducedPoints.push(points[len - 1]); + } + return reducedPoints; +} + +var _lastCode; + +// @function clipSegment(a: Point, b: Point, bounds: Bounds, useLastCode?: Boolean, round?: Boolean): Point[]|Boolean +// Clips the segment a to b by rectangular bounds with the +// [Cohen-Sutherland algorithm](https://en.wikipedia.org/wiki/Cohen%E2%80%93Sutherland_algorithm) +// (modifying the segment points directly!). Used by Leaflet to only show polyline +// points that are on the screen or near, increasing performance. +function clipSegment(a, b, bounds, useLastCode, round) { + var codeA = useLastCode ? _lastCode : _getBitCode(a, bounds), + codeB = _getBitCode(b, bounds), + + codeOut, p, newCode; + + // save 2nd code to avoid calculating it on the next segment + _lastCode = codeB; + + while (true) { + // if a,b is inside the clip window (trivial accept) + if (!(codeA | codeB)) { + return [a, b]; + } + + // if a,b is outside the clip window (trivial reject) + if (codeA & codeB) { + return false; + } + + // other cases + codeOut = codeA || codeB; + p = _getEdgeIntersection(a, b, codeOut, bounds, round); + newCode = _getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } +} + +function _getEdgeIntersection(a, b, code, bounds, round) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max, + x, y; + + if (code & 8) { // top + x = a.x + dx * (max.y - a.y) / dy; + y = max.y; + + } else if (code & 4) { // bottom + x = a.x + dx * (min.y - a.y) / dy; + y = min.y; + + } else if (code & 2) { // right + x = max.x; + y = a.y + dy * (max.x - a.x) / dx; + + } else if (code & 1) { // left + x = min.x; + y = a.y + dy * (min.x - a.x) / dx; + } + + return new Point(x, y, round); +} + +function _getBitCode(p, bounds) { + var code = 0; + + if (p.x < bounds.min.x) { // left + code |= 1; + } else if (p.x > bounds.max.x) { // right + code |= 2; + } + + if (p.y < bounds.min.y) { // bottom + code |= 4; + } else if (p.y > bounds.max.y) { // top + code |= 8; + } + + return code; +} + +// square distance (to avoid unnecessary Math.sqrt calls) +function _sqDist(p1, p2) { + var dx = p2.x - p1.x, + dy = p2.y - p1.y; + return dx * dx + dy * dy; +} + +// return closest point on segment or distance to that point +function _sqClosestPointOnSegment(p, p1, p2, sqDist) { + var x = p1.x, + y = p1.y, + dx = p2.x - x, + dy = p2.y - y, + dot = dx * dx + dy * dy, + t; + + if (dot > 0) { + t = ((p.x - x) * dx + (p.y - y) * dy) / dot; + + if (t > 1) { + x = p2.x; + y = p2.y; + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = p.x - x; + dy = p.y - y; + + return sqDist ? dx * dx + dy * dy : new Point(x, y); +} + + +// @function isFlat(latlngs: LatLng[]): Boolean +// Returns true if `latlngs` is a flat array, false is nested. +function isFlat(latlngs) { + return !isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined'); +} + +function _flat(latlngs) { + console.warn('Deprecated use of _flat, please use L.LineUtil.isFlat instead.'); + return isFlat(latlngs); +} + + +var LineUtil = (Object.freeze || Object)({ + simplify: simplify, + pointToSegmentDistance: pointToSegmentDistance, + closestPointOnSegment: closestPointOnSegment, + clipSegment: clipSegment, + _getEdgeIntersection: _getEdgeIntersection, + _getBitCode: _getBitCode, + _sqClosestPointOnSegment: _sqClosestPointOnSegment, + isFlat: isFlat, + _flat: _flat +}); + +/* + * @namespace PolyUtil + * Various utility functions for polygon geometries. + */ + +/* @function clipPolygon(points: Point[], bounds: Bounds, round?: Boolean): Point[] + * Clips the polygon geometry defined by the given `points` by the given bounds (using the [Sutherland-Hodgman algorithm](https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)). + * Used by Leaflet to only show polygon points that are on the screen or near, increasing + * performance. Note that polygon points needs different algorithm for clipping + * than polyline, so there's a separate method for it. + */ +function clipPolygon(points, bounds, round) { + var clippedPoints, + edges = [1, 4, 2, 8], + i, j, k, + a, b, + len, edge, p; + + for (i = 0, len = points.length; i < len; i++) { + points[i]._code = _getBitCode(points[i], bounds); + } + + // for each edge (left, bottom, right, top) + for (k = 0; k < 4; k++) { + edge = edges[k]; + clippedPoints = []; + + for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { + a = points[i]; + b = points[j]; + + // if a is inside the clip window + if (!(a._code & edge)) { + // if b is outside the clip window (a->b goes out of screen) + if (b._code & edge) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + clippedPoints.push(a); + + // else if b is inside the clip window (a->b enters the screen) + } else if (!(b._code & edge)) { + p = _getEdgeIntersection(b, a, edge, bounds, round); + p._code = _getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +} + + +var PolyUtil = (Object.freeze || Object)({ + clipPolygon: clipPolygon +}); + +/* + * @namespace Projection + * @section + * Leaflet comes with a set of already defined Projections out of the box: + * + * @projection L.Projection.LonLat + * + * Equirectangular, or Plate Carree projection — the most simple projection, + * mostly used by GIS enthusiasts. Directly maps `x` as longitude, and `y` as + * latitude. Also suitable for flat worlds, e.g. game maps. Used by the + * `EPSG:4326` and `Simple` CRS. + */ + +var LonLat = { + project: function (latlng) { + return new Point(latlng.lng, latlng.lat); + }, + + unproject: function (point) { + return new LatLng(point.y, point.x); + }, + + bounds: new Bounds([-180, -90], [180, 90]) +}; + +/* + * @namespace Projection + * @projection L.Projection.Mercator + * + * Elliptical Mercator projection — more complex than Spherical Mercator. Takes into account that Earth is a geoid, not a perfect sphere. Used by the EPSG:3395 CRS. + */ + +var Mercator = { + R: 6378137, + R_MINOR: 6356752.314245179, + + bounds: new Bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), + + project: function (latlng) { + var d = Math.PI / 180, + r = this.R, + y = latlng.lat * d, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + con = e * Math.sin(y); + + var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2); + y = -r * Math.log(Math.max(ts, 1E-10)); + + return new Point(latlng.lng * d * r, y); + }, + + unproject: function (point) { + var d = 180 / Math.PI, + r = this.R, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + ts = Math.exp(-point.y / r), + phi = Math.PI / 2 - 2 * Math.atan(ts); + + for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) { + con = e * Math.sin(phi); + con = Math.pow((1 - con) / (1 + con), e / 2); + dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi; + phi += dphi; + } + + return new LatLng(phi * d, point.x * d / r); + } +}; + +/* + * @class Projection + + * An object with methods for projecting geographical coordinates of the world onto + * a flat surface (and back). See [Map projection](http://en.wikipedia.org/wiki/Map_projection). + + * @property bounds: Bounds + * The bounds (specified in CRS units) where the projection is valid + + * @method project(latlng: LatLng): Point + * Projects geographical coordinates into a 2D point. + * Only accepts actual `L.LatLng` instances, not arrays. + + * @method unproject(point: Point): LatLng + * The inverse of `project`. Projects a 2D point into a geographical location. + * Only accepts actual `L.Point` instances, not arrays. + + * Note that the projection instances do not inherit from Leafet's `Class` object, + * and can't be instantiated. Also, new classes can't inherit from them, + * and methods can't be added to them with the `include` function. + + */ + + + + +var index = (Object.freeze || Object)({ + LonLat: LonLat, + Mercator: Mercator, + SphericalMercator: SphericalMercator +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG3395 + * + * Rarely used by some commercial tile providers. Uses Elliptical Mercator projection. + */ +var EPSG3395 = extend({}, Earth, { + code: 'EPSG:3395', + projection: Mercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * Mercator.R); + return toTransformation(scale, 0.5, -scale, 0.5); + }()) +}); + +/* + * @namespace CRS + * @crs L.CRS.EPSG4326 + * + * A common CRS among GIS enthusiasts. Uses simple Equirectangular projection. + * + * Leaflet 1.0.x complies with the [TMS coordinate scheme for EPSG:4326](https://wiki.osgeo.org/wiki/Tile_Map_Service_Specification#global-geodetic), + * which is a breaking change from 0.7.x behaviour. If you are using a `TileLayer` + * with this CRS, ensure that there are two 256x256 pixel tiles covering the + * whole earth at zoom level zero, and that the tile coordinate origin is (-180,+90), + * or (-180,-90) for `TileLayer`s with [the `tms` option](#tilelayer-tms) set. + */ + +var EPSG4326 = extend({}, Earth, { + code: 'EPSG:4326', + projection: LonLat, + transformation: toTransformation(1 / 180, 1, -1 / 180, 0.5) +}); + +/* + * @namespace CRS + * @crs L.CRS.Simple + * + * A simple CRS that maps longitude and latitude into `x` and `y` directly. + * May be used for maps of flat surfaces (e.g. game maps). Note that the `y` + * axis should still be inverted (going from bottom to top). `distance()` returns + * simple euclidean distance. + */ + +var Simple = extend({}, CRS, { + projection: LonLat, + transformation: toTransformation(1, 0, -1, 0), + + scale: function (zoom) { + return Math.pow(2, zoom); + }, + + zoom: function (scale) { + return Math.log(scale) / Math.LN2; + }, + + distance: function (latlng1, latlng2) { + var dx = latlng2.lng - latlng1.lng, + dy = latlng2.lat - latlng1.lat; + + return Math.sqrt(dx * dx + dy * dy); + }, + + infinite: true +}); + +CRS.Earth = Earth; +CRS.EPSG3395 = EPSG3395; +CRS.EPSG3857 = EPSG3857; +CRS.EPSG900913 = EPSG900913; +CRS.EPSG4326 = EPSG4326; +CRS.Simple = Simple; + +/* + * @class Layer + * @inherits Evented + * @aka L.Layer + * @aka ILayer + * + * A set of methods from the Layer base class that all Leaflet layers use. + * Inherits all methods, options and events from `L.Evented`. + * + * @example + * + * ```js + * var layer = L.Marker(latlng).addTo(map); + * layer.addTo(map); + * layer.remove(); + * ``` + * + * @event add: Event + * Fired after the layer is added to a map + * + * @event remove: Event + * Fired after the layer is removed from a map + */ + + +var Layer = Evented.extend({ + + // Classes extending `L.Layer` will inherit the following options: + options: { + // @option pane: String = 'overlayPane' + // By default the layer will be added to the map's [overlay pane](#map-overlaypane). Overriding this option will cause the layer to be placed on another pane by default. + pane: 'overlayPane', + + // @option attribution: String = null + // String to be shown in the attribution control, describes the layer data, e.g. "© Mapbox". + attribution: null, + + bubblingMouseEvents: true + }, + + /* @section + * Classes extending `L.Layer` will inherit the following methods: + * + * @method addTo(map: Map|LayerGroup): this + * Adds the layer to the given map or layer group. + */ + addTo: function (map) { + map.addLayer(this); + return this; + }, + + // @method remove: this + // Removes the layer from the map it is currently active on. + remove: function () { + return this.removeFrom(this._map || this._mapToAdd); + }, + + // @method removeFrom(map: Map): this + // Removes the layer from the given map + removeFrom: function (obj) { + if (obj) { + obj.removeLayer(this); + } + return this; + }, + + // @method getPane(name? : String): HTMLElement + // Returns the `HTMLElement` representing the named pane on the map. If `name` is omitted, returns the pane for this layer. + getPane: function (name) { + return this._map.getPane(name ? (this.options[name] || name) : this.options.pane); + }, + + addInteractiveTarget: function (targetEl) { + this._map._targets[stamp(targetEl)] = this; + return this; + }, + + removeInteractiveTarget: function (targetEl) { + delete this._map._targets[stamp(targetEl)]; + return this; + }, + + // @method getAttribution: String + // Used by the `attribution control`, returns the [attribution option](#gridlayer-attribution). + getAttribution: function () { + return this.options.attribution; + }, + + _layerAdd: function (e) { + var map = e.target; + + // check in case layer gets added and then removed before the map is ready + if (!map.hasLayer(this)) { return; } + + this._map = map; + this._zoomAnimated = map._zoomAnimated; + + if (this.getEvents) { + var events = this.getEvents(); + map.on(events, this); + this.once('remove', function () { + map.off(events, this); + }, this); + } + + this.onAdd(map); + + if (this.getAttribution && map.attributionControl) { + map.attributionControl.addAttribution(this.getAttribution()); + } + + this.fire('add'); + map.fire('layeradd', {layer: this}); + } +}); + +/* @section Extension methods + * @uninheritable + * + * Every layer should extend from `L.Layer` and (re-)implement the following methods. + * + * @method onAdd(map: Map): this + * Should contain code that creates DOM elements for the layer, adds them to `map panes` where they should belong and puts listeners on relevant map events. Called on [`map.addLayer(layer)`](#map-addlayer). + * + * @method onRemove(map: Map): this + * Should contain all clean up code that removes the layer's elements from the DOM and removes listeners previously added in [`onAdd`](#layer-onadd). Called on [`map.removeLayer(layer)`](#map-removelayer). + * + * @method getEvents(): Object + * This optional method should return an object like `{ viewreset: this._reset }` for [`addEventListener`](#evented-addeventlistener). The event handlers in this object will be automatically added and removed from the map with your layer. + * + * @method getAttribution(): String + * This optional method should return a string containing HTML to be shown on the `Attribution control` whenever the layer is visible. + * + * @method beforeAdd(map: Map): this + * Optional method. Called on [`map.addLayer(layer)`](#map-addlayer), before the layer is added to the map, before events are initialized, without waiting until the map is in a usable state. Use for early initialization only. + */ + + +/* @namespace Map + * @section Layer events + * + * @event layeradd: LayerEvent + * Fired when a new layer is added to the map. + * + * @event layerremove: LayerEvent + * Fired when some layer is removed from the map + * + * @section Methods for Layers and Controls + */ +Map.include({ + // @method addLayer(layer: Layer): this + // Adds the given layer to the map + addLayer: function (layer) { + if (!layer._layerAdd) { + throw new Error('The provided object is not a Layer.'); + } + + var id = stamp(layer); + if (this._layers[id]) { return this; } + this._layers[id] = layer; + + layer._mapToAdd = this; + + if (layer.beforeAdd) { + layer.beforeAdd(this); + } + + this.whenReady(layer._layerAdd, layer); + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the map. + removeLayer: function (layer) { + var id = stamp(layer); + + if (!this._layers[id]) { return this; } + + if (this._loaded) { + layer.onRemove(this); + } + + if (layer.getAttribution && this.attributionControl) { + this.attributionControl.removeAttribution(layer.getAttribution()); + } + + delete this._layers[id]; + + if (this._loaded) { + this.fire('layerremove', {layer: layer}); + layer.fire('remove'); + } + + layer._map = layer._mapToAdd = null; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the map + hasLayer: function (layer) { + return !!layer && (stamp(layer) in this._layers); + }, + + /* @method eachLayer(fn: Function, context?: Object): this + * Iterates over the layers of the map, optionally specifying context of the iterator function. + * ``` + * map.eachLayer(function(layer){ + * layer.bindPopup('Hello'); + * }); + * ``` + */ + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + _addLayers: function (layers) { + layers = layers ? (isArray(layers) ? layers : [layers]) : []; + + for (var i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + }, + + _addZoomLimit: function (layer) { + if (isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) { + this._zoomBoundLayers[stamp(layer)] = layer; + this._updateZoomLevels(); + } + }, + + _removeZoomLimit: function (layer) { + var id = stamp(layer); + + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + }, + + _updateZoomLevels: function () { + var minZoom = Infinity, + maxZoom = -Infinity, + oldZoomSpan = this._getZoomSpan(); + + for (var i in this._zoomBoundLayers) { + var options = this._zoomBoundLayers[i].options; + + minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom); + maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom); + } + + this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom; + this._layersMinZoom = minZoom === Infinity ? undefined : minZoom; + + // @section Map state change events + // @event zoomlevelschange: Event + // Fired when the number of zoomlevels on the map is changed due + // to adding or removing a layer. + if (oldZoomSpan !== this._getZoomSpan()) { + this.fire('zoomlevelschange'); + } + + if (this.options.maxZoom === undefined && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom) { + this.setZoom(this._layersMaxZoom); + } + if (this.options.minZoom === undefined && this._layersMinZoom && this.getZoom() < this._layersMinZoom) { + this.setZoom(this._layersMinZoom); + } + } +}); + +/* + * @class LayerGroup + * @aka L.LayerGroup + * @inherits Layer + * + * Used to group several layers and handle them as one. If you add it to the map, + * any layers added or removed from the group will be added/removed on the map as + * well. Extends `Layer`. + * + * @example + * + * ```js + * L.layerGroup([marker1, marker2]) + * .addLayer(polyline) + * .addTo(map); + * ``` + */ + +var LayerGroup = Layer.extend({ + + initialize: function (layers, options) { + setOptions(this, options); + + this._layers = {}; + + var i, len; + + if (layers) { + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + } + }, + + // @method addLayer(layer: Layer): this + // Adds the given layer to the group. + addLayer: function (layer) { + var id = this.getLayerId(layer); + + this._layers[id] = layer; + + if (this._map) { + this._map.addLayer(layer); + } + + return this; + }, + + // @method removeLayer(layer: Layer): this + // Removes the given layer from the group. + // @alternative + // @method removeLayer(id: Number): this + // Removes the layer with the given internal ID from the group. + removeLayer: function (layer) { + var id = layer in this._layers ? layer : this.getLayerId(layer); + + if (this._map && this._layers[id]) { + this._map.removeLayer(this._layers[id]); + } + + delete this._layers[id]; + + return this; + }, + + // @method hasLayer(layer: Layer): Boolean + // Returns `true` if the given layer is currently added to the group. + // @alternative + // @method hasLayer(id: Number): Boolean + // Returns `true` if the given internal ID is currently added to the group. + hasLayer: function (layer) { + return !!layer && (layer in this._layers || this.getLayerId(layer) in this._layers); + }, + + // @method clearLayers(): this + // Removes all the layers from the group. + clearLayers: function () { + return this.eachLayer(this.removeLayer, this); + }, + + // @method invoke(methodName: String, …): this + // Calls `methodName` on every layer contained in this group, passing any + // additional parameters. Has no effect if the layers contained do not + // implement `methodName`. + invoke: function (methodName) { + var args = Array.prototype.slice.call(arguments, 1), + i, layer; + + for (i in this._layers) { + layer = this._layers[i]; + + if (layer[methodName]) { + layer[methodName].apply(layer, args); + } + } + + return this; + }, + + onAdd: function (map) { + this.eachLayer(map.addLayer, map); + }, + + onRemove: function (map) { + this.eachLayer(map.removeLayer, map); + }, + + // @method eachLayer(fn: Function, context?: Object): this + // Iterates over the layers of the group, optionally specifying context of the iterator function. + // ```js + // group.eachLayer(function (layer) { + // layer.bindPopup('Hello'); + // }); + // ``` + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + // @method getLayer(id: Number): Layer + // Returns the layer with the given internal ID. + getLayer: function (id) { + return this._layers[id]; + }, + + // @method getLayers(): Layer[] + // Returns an array of all the layers added to the group. + getLayers: function () { + var layers = []; + this.eachLayer(layers.push, layers); + return layers; + }, + + // @method setZIndex(zIndex: Number): this + // Calls `setZIndex` on every layer contained in this group, passing the z-index. + setZIndex: function (zIndex) { + return this.invoke('setZIndex', zIndex); + }, + + // @method getLayerId(layer: Layer): Number + // Returns the internal ID for a layer + getLayerId: function (layer) { + return stamp(layer); + } +}); + + +// @factory L.layerGroup(layers?: Layer[], options?: Object) +// Create a layer group, optionally given an initial set of layers and an `options` object. +var layerGroup = function (layers, options) { + return new LayerGroup(layers, options); +}; + +/* + * @class FeatureGroup + * @aka L.FeatureGroup + * @inherits LayerGroup + * + * Extended `LayerGroup` that makes it easier to do the same thing to all its member layers: + * * [`bindPopup`](#layer-bindpopup) binds a popup to all of the layers at once (likewise with [`bindTooltip`](#layer-bindtooltip)) + * * Events are propagated to the `FeatureGroup`, so if the group has an event + * handler, it will handle events from any of the layers. This includes mouse events + * and custom events. + * * Has `layeradd` and `layerremove` events + * + * @example + * + * ```js + * L.featureGroup([marker1, marker2, polyline]) + * .bindPopup('Hello world!') + * .on('click', function() { alert('Clicked on a member of the group!'); }) + * .addTo(map); + * ``` + */ + +var FeatureGroup = LayerGroup.extend({ + + addLayer: function (layer) { + if (this.hasLayer(layer)) { + return this; + } + + layer.addEventParent(this); + + LayerGroup.prototype.addLayer.call(this, layer); + + // @event layeradd: LayerEvent + // Fired when a layer is added to this `FeatureGroup` + return this.fire('layeradd', {layer: layer}); + }, + + removeLayer: function (layer) { + if (!this.hasLayer(layer)) { + return this; + } + if (layer in this._layers) { + layer = this._layers[layer]; + } + + layer.removeEventParent(this); + + LayerGroup.prototype.removeLayer.call(this, layer); + + // @event layerremove: LayerEvent + // Fired when a layer is removed from this `FeatureGroup` + return this.fire('layerremove', {layer: layer}); + }, + + // @method setStyle(style: Path options): this + // Sets the given path options to each layer of the group that has a `setStyle` method. + setStyle: function (style) { + return this.invoke('setStyle', style); + }, + + // @method bringToFront(): this + // Brings the layer group to the top of all other layers + bringToFront: function () { + return this.invoke('bringToFront'); + }, + + // @method bringToBack(): this + // Brings the layer group to the back of all other layers + bringToBack: function () { + return this.invoke('bringToBack'); + }, + + // @method getBounds(): LatLngBounds + // Returns the LatLngBounds of the Feature Group (created from bounds and coordinates of its children). + getBounds: function () { + var bounds = new LatLngBounds(); + + for (var id in this._layers) { + var layer = this._layers[id]; + bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng()); + } + return bounds; + } +}); + +// @factory L.featureGroup(layers: Layer[]) +// Create a feature group, optionally given an initial set of layers. +var featureGroup = function (layers) { + return new FeatureGroup(layers); +}; + +/* + * @class Icon + * @aka L.Icon + * + * Represents an icon to provide when creating a marker. + * + * @example + * + * ```js + * var myIcon = L.icon({ + * iconUrl: 'my-icon.png', + * iconRetinaUrl: 'my-icon@2x.png', + * iconSize: [38, 95], + * iconAnchor: [22, 94], + * popupAnchor: [-3, -76], + * shadowUrl: 'my-icon-shadow.png', + * shadowRetinaUrl: 'my-icon-shadow@2x.png', + * shadowSize: [68, 95], + * shadowAnchor: [22, 94] + * }); + * + * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); + * ``` + * + * `L.Icon.Default` extends `L.Icon` and is the blue icon Leaflet uses for markers by default. + * + */ + +var Icon = Class.extend({ + + /* @section + * @aka Icon options + * + * @option iconUrl: String = null + * **(required)** The URL to the icon image (absolute or relative to your script path). + * + * @option iconRetinaUrl: String = null + * The URL to a retina sized version of the icon image (absolute or relative to your + * script path). Used for Retina screen devices. + * + * @option iconSize: Point = null + * Size of the icon image in pixels. + * + * @option iconAnchor: Point = null + * The coordinates of the "tip" of the icon (relative to its top left corner). The icon + * will be aligned so that this point is at the marker's geographical location. Centered + * by default if size is specified, also can be set in CSS with negative margins. + * + * @option popupAnchor: Point = [0, 0] + * The coordinates of the point from which popups will "open", relative to the icon anchor. + * + * @option tooltipAnchor: Point = [0, 0] + * The coordinates of the point from which tooltips will "open", relative to the icon anchor. + * + * @option shadowUrl: String = null + * The URL to the icon shadow image. If not specified, no shadow image will be created. + * + * @option shadowRetinaUrl: String = null + * + * @option shadowSize: Point = null + * Size of the shadow image in pixels. + * + * @option shadowAnchor: Point = null + * The coordinates of the "tip" of the shadow (relative to its top left corner) (the same + * as iconAnchor if not specified). + * + * @option className: String = '' + * A custom class name to assign to both icon and shadow images. Empty by default. + */ + + options: { + popupAnchor: [0, 0], + tooltipAnchor: [0, 0], + }, + + initialize: function (options) { + setOptions(this, options); + }, + + // @method createIcon(oldIcon?: HTMLElement): HTMLElement + // Called internally when the icon has to be shown, returns a `<img>` HTML element + // styled according to the options. + createIcon: function (oldIcon) { + return this._createIcon('icon', oldIcon); + }, + + // @method createShadow(oldIcon?: HTMLElement): HTMLElement + // As `createIcon`, but for the shadow beneath it. + createShadow: function (oldIcon) { + return this._createIcon('shadow', oldIcon); + }, + + _createIcon: function (name, oldIcon) { + var src = this._getIconUrl(name); + + if (!src) { + if (name === 'icon') { + throw new Error('iconUrl not set in Icon options (see the docs).'); + } + return null; + } + + var img = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null); + this._setIconStyles(img, name); + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options; + var sizeOption = options[name + 'Size']; + + if (typeof sizeOption === 'number') { + sizeOption = [sizeOption, sizeOption]; + } + + var size = toPoint(sizeOption), + anchor = toPoint(name === 'shadow' && options.shadowAnchor || options.iconAnchor || + size && size.divideBy(2, true)); + + img.className = 'leaflet-marker-' + name + ' ' + (options.className || ''); + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + _createImg: function (src, el) { + el = el || document.createElement('img'); + el.src = src; + return el; + }, + + _getIconUrl: function (name) { + return retina && this.options[name + 'RetinaUrl'] || this.options[name + 'Url']; + } +}); + + +// @factory L.icon(options: Icon options) +// Creates an icon instance with the given options. +function icon(options) { + return new Icon(options); +} + +/* + * @miniclass Icon.Default (Icon) + * @aka L.Icon.Default + * @section + * + * A trivial subclass of `Icon`, represents the icon to use in `Marker`s when + * no icon is specified. Points to the blue marker image distributed with Leaflet + * releases. + * + * In order to customize the default icon, just change the properties of `L.Icon.Default.prototype.options` + * (which is a set of `Icon options`). + * + * If you want to _completely_ replace the default icon, override the + * `L.Marker.prototype.options.icon` with your own icon instead. + */ + +var IconDefault = Icon.extend({ + + options: { + iconUrl: 'marker-icon.png', + iconRetinaUrl: 'marker-icon-2x.png', + shadowUrl: 'marker-shadow.png', + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + tooltipAnchor: [16, -28], + shadowSize: [41, 41] + }, + + _getIconUrl: function (name) { + if (!IconDefault.imagePath) { // Deprecated, backwards-compatibility only + IconDefault.imagePath = this._detectIconPath(); + } + + // @option imagePath: String + // `Icon.Default` will try to auto-detect the location of the + // blue icon images. If you are placing these images in a non-standard + // way, set this option to point to the right path. + return (this.options.imagePath || IconDefault.imagePath) + Icon.prototype._getIconUrl.call(this, name); + }, + + _detectIconPath: function () { + var el = create$1('div', 'leaflet-default-icon-path', document.body); + var path = getStyle(el, 'background-image') || + getStyle(el, 'backgroundImage'); // IE8 + + document.body.removeChild(el); + + if (path === null || path.indexOf('url') !== 0) { + path = ''; + } else { + path = path.replace(/^url\(["']?/, '').replace(/marker-icon\.png["']?\)$/, ''); + } + + return path; + } +}); + +/* + * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. + */ + + +/* @namespace Marker + * @section Interaction handlers + * + * Interaction handlers are properties of a marker instance that allow you to control interaction behavior in runtime, enabling or disabling certain features such as dragging (see `Handler` methods). Example: + * + * ```js + * marker.dragging.disable(); + * ``` + * + * @property dragging: Handler + * Marker dragging handler (by both mouse and touch). Only valid when the marker is on the map (Otherwise set [`marker.options.draggable`](#marker-draggable)). + */ + +var MarkerDrag = Handler.extend({ + initialize: function (marker) { + this._marker = marker; + }, + + addHooks: function () { + var icon = this._marker._icon; + + if (!this._draggable) { + this._draggable = new Draggable(icon, icon, true); + } + + this._draggable.on({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).enable(); + + addClass(icon, 'leaflet-marker-draggable'); + }, + + removeHooks: function () { + this._draggable.off({ + dragstart: this._onDragStart, + predrag: this._onPreDrag, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).disable(); + + if (this._marker._icon) { + removeClass(this._marker._icon, 'leaflet-marker-draggable'); + } + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _adjustPan: function (e) { + var marker = this._marker, + map = marker._map, + speed = this._marker.options.autoPanSpeed, + padding = this._marker.options.autoPanPadding, + iconPos = L.DomUtil.getPosition(marker._icon), + bounds = map.getPixelBounds(), + origin = map.getPixelOrigin(); + + var panBounds = toBounds( + bounds.min._subtract(origin).add(padding), + bounds.max._subtract(origin).subtract(padding) + ); + + if (!panBounds.contains(iconPos)) { + // Compute incremental movement + var movement = toPoint( + (Math.max(panBounds.max.x, iconPos.x) - panBounds.max.x) / (bounds.max.x - panBounds.max.x) - + (Math.min(panBounds.min.x, iconPos.x) - panBounds.min.x) / (bounds.min.x - panBounds.min.x), + + (Math.max(panBounds.max.y, iconPos.y) - panBounds.max.y) / (bounds.max.y - panBounds.max.y) - + (Math.min(panBounds.min.y, iconPos.y) - panBounds.min.y) / (bounds.min.y - panBounds.min.y) + ).multiplyBy(speed); + + map.panBy(movement, {animate: false}); + + this._draggable._newPos._add(movement); + this._draggable._startPos._add(movement); + + L.DomUtil.setPosition(marker._icon, this._draggable._newPos); + this._onDrag(e); + + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDragStart: function () { + // @section Dragging events + // @event dragstart: Event + // Fired when the user starts dragging the marker. + + // @event movestart: Event + // Fired when the marker starts moving (because of dragging). + + this._oldLatLng = this._marker.getLatLng(); + this._marker + .closePopup() + .fire('movestart') + .fire('dragstart'); + }, + + _onPreDrag: function (e) { + if (this._marker.options.autoPan) { + cancelAnimFrame(this._panRequest); + this._panRequest = requestAnimFrame(this._adjustPan.bind(this, e)); + } + }, + + _onDrag: function (e) { + var marker = this._marker, + shadow = marker._shadow, + iconPos = getPosition(marker._icon), + latlng = marker._map.layerPointToLatLng(iconPos); + + // update shadow position + if (shadow) { + setPosition(shadow, iconPos); + } + + marker._latlng = latlng; + e.latlng = latlng; + e.oldLatLng = this._oldLatLng; + + // @event drag: Event + // Fired repeatedly while the user drags the marker. + marker + .fire('move', e) + .fire('drag', e); + }, + + _onDragEnd: function (e) { + // @event dragend: DragEndEvent + // Fired when the user stops dragging the marker. + + cancelAnimFrame(this._panRequest); + + // @event moveend: Event + // Fired when the marker stops moving (because of dragging). + delete this._oldLatLng; + this._marker + .fire('moveend') + .fire('dragend', e); + } +}); + +/* + * @class Marker + * @inherits Interactive layer + * @aka L.Marker + * L.Marker is used to display clickable/draggable icons on the map. Extends `Layer`. + * + * @example + * + * ```js + * L.marker([50.5, 30.5]).addTo(map); + * ``` + */ + +var Marker = Layer.extend({ + + // @section + // @aka Marker options + options: { + // @option icon: Icon = * + // Icon instance to use for rendering the marker. + // See [Icon documentation](#L.Icon) for details on how to customize the marker icon. + // If not specified, a common instance of `L.Icon.Default` is used. + icon: new IconDefault(), + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option draggable: Boolean = false + // Whether the marker is draggable with mouse/touch or not. + draggable: false, + + // @option autoPan: Boolean = false + // Set it to `true` if you want the map to do panning animation when marker hits the edges. + autoPan: false, + + // @option autoPanPadding: Point = Point(50, 50) + // Equivalent of setting both top left and bottom right autopan padding to the same value. + autoPanPadding: [50, 50], + + // @option autoPanSpeed: Number = 10 + // Number of pixels the map should move by. + autoPanSpeed: 10, + + // @option keyboard: Boolean = true + // Whether the marker can be tabbed to with a keyboard and clicked by pressing enter. + keyboard: true, + + // @option title: String = '' + // Text for the browser tooltip that appear on marker hover (no tooltip by default). + title: '', + + // @option alt: String = '' + // Text for the `alt` attribute of the icon image (useful for accessibility). + alt: '', + + // @option zIndexOffset: Number = 0 + // By default, marker images zIndex is set automatically based on its latitude. Use this option if you want to put the marker on top of all others (or below), specifying a high value like `1000` (or high negative value, respectively). + zIndexOffset: 0, + + // @option opacity: Number = 1.0 + // The opacity of the marker. + opacity: 1, + + // @option riseOnHover: Boolean = false + // If `true`, the marker will get on top of others when you hover the mouse over it. + riseOnHover: false, + + // @option riseOffset: Number = 250 + // The z-index offset used for the `riseOnHover` feature. + riseOffset: 250, + + // @option pane: String = 'markerPane' + // `Map pane` where the markers icon will be added. + pane: 'markerPane', + + // @option bubblingMouseEvents: Boolean = false + // When `true`, a mouse event on this marker will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: false + }, + + /* @section + * + * In addition to [shared layer methods](#Layer) like `addTo()` and `remove()` and [popup methods](#Popup) like bindPopup() you can also use the following methods: + */ + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + }, + + onAdd: function (map) { + this._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation; + + if (this._zoomAnimated) { + map.on('zoomanim', this._animateZoom, this); + } + + this._initIcon(); + this.update(); + }, + + onRemove: function (map) { + if (this.dragging && this.dragging.enabled()) { + this.options.draggable = true; + this.dragging.removeHooks(); + } + delete this.dragging; + + if (this._zoomAnimated) { + map.off('zoomanim', this._animateZoom, this); + } + + this._removeIcon(); + this._removeShadow(); + }, + + getEvents: function () { + return { + zoom: this.update, + viewreset: this.update + }; + }, + + // @method getLatLng: LatLng + // Returns the current geographical position of the marker. + getLatLng: function () { + return this._latlng; + }, + + // @method setLatLng(latlng: LatLng): this + // Changes the marker position to the given point. + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = toLatLng(latlng); + this.update(); + + // @event move: Event + // Fired when the marker is moved via [`setLatLng`](#marker-setlatlng) or by [dragging](#marker-dragging). Old and new coordinates are included in event arguments as `oldLatLng`, `latlng`. + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + // @method setZIndexOffset(offset: Number): this + // Changes the [zIndex offset](#marker-zindexoffset) of the marker. + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + return this.update(); + }, + + // @method setIcon(icon: Icon): this + // Changes the marker icon. + setIcon: function (icon) { + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + if (this._popup) { + this.bindPopup(this._popup, this._popup.options); + } + + return this; + }, + + getElement: function () { + return this._icon; + }, + + update: function () { + + if (this._icon && this._map) { + var pos = this._map.latLngToLayerPoint(this._latlng).round(); + this._setPos(pos); + } + + return this; + }, + + _initIcon: function () { + var options = this.options, + classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); + + var icon = options.icon.createIcon(this._icon), + addIcon = false; + + // if we're not reusing the icon, remove the old one and init new one + if (icon !== this._icon) { + if (this._icon) { + this._removeIcon(); + } + addIcon = true; + + if (options.title) { + icon.title = options.title; + } + + if (icon.tagName === 'IMG') { + icon.alt = options.alt || ''; + } + } + + addClass(icon, classToAdd); + + if (options.keyboard) { + icon.tabIndex = '0'; + } + + this._icon = icon; + + if (options.riseOnHover) { + this.on({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + var newShadow = options.icon.createShadow(this._shadow), + addShadow = false; + + if (newShadow !== this._shadow) { + this._removeShadow(); + addShadow = true; + } + + if (newShadow) { + addClass(newShadow, classToAdd); + newShadow.alt = ''; + } + this._shadow = newShadow; + + + if (options.opacity < 1) { + this._updateOpacity(); + } + + + if (addIcon) { + this.getPane().appendChild(this._icon); + } + this._initInteraction(); + if (newShadow && addShadow) { + this.getPane('shadowPane').appendChild(this._shadow); + } + }, + + _removeIcon: function () { + if (this.options.riseOnHover) { + this.off({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + remove(this._icon); + this.removeInteractiveTarget(this._icon); + + this._icon = null; + }, + + _removeShadow: function () { + if (this._shadow) { + remove(this._shadow); + } + this._shadow = null; + }, + + _setPos: function (pos) { + setPosition(this._icon, pos); + + if (this._shadow) { + setPosition(this._shadow, pos); + } + + this._zIndex = pos.y + this.options.zIndexOffset; + + this._resetZIndex(); + }, + + _updateZIndex: function (offset) { + this._icon.style.zIndex = this._zIndex + offset; + }, + + _animateZoom: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round(); + + this._setPos(pos); + }, + + _initInteraction: function () { + + if (!this.options.interactive) { return; } + + addClass(this._icon, 'leaflet-interactive'); + + this.addInteractiveTarget(this._icon); + + if (MarkerDrag) { + var draggable = this.options.draggable; + if (this.dragging) { + draggable = this.dragging.enabled(); + this.dragging.disable(); + } + + this.dragging = new MarkerDrag(this); + + if (draggable) { + this.dragging.enable(); + } + } + }, + + // @method setOpacity(opacity: Number): this + // Changes the opacity of the marker. + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + _updateOpacity: function () { + var opacity = this.options.opacity; + + setOpacity(this._icon, opacity); + + if (this._shadow) { + setOpacity(this._shadow, opacity); + } + }, + + _bringToFront: function () { + this._updateZIndex(this.options.riseOffset); + }, + + _resetZIndex: function () { + this._updateZIndex(0); + }, + + _getPopupAnchor: function () { + return this.options.icon.options.popupAnchor; + }, + + _getTooltipAnchor: function () { + return this.options.icon.options.tooltipAnchor; + } +}); + + +// factory L.marker(latlng: LatLng, options? : Marker options) + +// @factory L.marker(latlng: LatLng, options? : Marker options) +// Instantiates a Marker object given a geographical point and optionally an options object. +function marker(latlng, options) { + return new Marker(latlng, options); +} + +/* + * @class Path + * @aka L.Path + * @inherits Interactive layer + * + * An abstract class that contains options and constants shared between vector + * overlays (Polygon, Polyline, Circle). Do not use it directly. Extends `Layer`. + */ + +var Path = Layer.extend({ + + // @section + // @aka Path options + options: { + // @option stroke: Boolean = true + // Whether to draw stroke along the path. Set it to `false` to disable borders on polygons or circles. + stroke: true, + + // @option color: String = '#3388ff' + // Stroke color + color: '#3388ff', + + // @option weight: Number = 3 + // Stroke width in pixels + weight: 3, + + // @option opacity: Number = 1.0 + // Stroke opacity + opacity: 1, + + // @option lineCap: String= 'round' + // A string that defines [shape to be used at the end](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linecap) of the stroke. + lineCap: 'round', + + // @option lineJoin: String = 'round' + // A string that defines [shape to be used at the corners](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-linejoin) of the stroke. + lineJoin: 'round', + + // @option dashArray: String = null + // A string that defines the stroke [dash pattern](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dasharray). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashArray: null, + + // @option dashOffset: String = null + // A string that defines the [distance into the dash pattern to start the dash](https://developer.mozilla.org/docs/Web/SVG/Attribute/stroke-dashoffset). Doesn't work on `Canvas`-powered layers in [some old browsers](https://developer.mozilla.org/docs/Web/API/CanvasRenderingContext2D/setLineDash#Browser_compatibility). + dashOffset: null, + + // @option fill: Boolean = depends + // Whether to fill the path with color. Set it to `false` to disable filling on polygons or circles. + fill: false, + + // @option fillColor: String = * + // Fill color. Defaults to the value of the [`color`](#path-color) option + fillColor: null, + + // @option fillOpacity: Number = 0.2 + // Fill opacity. + fillOpacity: 0.2, + + // @option fillRule: String = 'evenodd' + // A string that defines [how the inside of a shape](https://developer.mozilla.org/docs/Web/SVG/Attribute/fill-rule) is determined. + fillRule: 'evenodd', + + // className: '', + + // Option inherited from "Interactive layer" abstract class + interactive: true, + + // @option bubblingMouseEvents: Boolean = true + // When `true`, a mouse event on this path will trigger the same event on the map + // (unless [`L.DomEvent.stopPropagation`](#domevent-stoppropagation) is used). + bubblingMouseEvents: true + }, + + beforeAdd: function (map) { + // Renderer is set here because we need to call renderer.getEvents + // before this.getEvents. + this._renderer = map.getRenderer(this); + }, + + onAdd: function () { + this._renderer._initPath(this); + this._reset(); + this._renderer._addPath(this); + }, + + onRemove: function () { + this._renderer._removePath(this); + }, + + // @method redraw(): this + // Redraws the layer. Sometimes useful after you changed the coordinates that the path uses. + redraw: function () { + if (this._map) { + this._renderer._updatePath(this); + } + return this; + }, + + // @method setStyle(style: Path options): this + // Changes the appearance of a Path based on the options in the `Path options` object. + setStyle: function (style) { + setOptions(this, style); + if (this._renderer) { + this._renderer._updateStyle(this); + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all path layers. + bringToFront: function () { + if (this._renderer) { + this._renderer._bringToFront(this); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all path layers. + bringToBack: function () { + if (this._renderer) { + this._renderer._bringToBack(this); + } + return this; + }, + + getElement: function () { + return this._path; + }, + + _reset: function () { + // defined in child classes + this._project(); + this._update(); + }, + + _clickTolerance: function () { + // used when doing hit detection for Canvas layers + return (this.options.stroke ? this.options.weight / 2 : 0) + this._renderer.options.tolerance; + } +}); + +/* + * @class CircleMarker + * @aka L.CircleMarker + * @inherits Path + * + * A circle of a fixed size with radius specified in pixels. Extends `Path`. + */ + +var CircleMarker = Path.extend({ + + // @section + // @aka CircleMarker options + options: { + fill: true, + + // @option radius: Number = 10 + // Radius of the circle marker, in pixels + radius: 10 + }, + + initialize: function (latlng, options) { + setOptions(this, options); + this._latlng = toLatLng(latlng); + this._radius = this.options.radius; + }, + + // @method setLatLng(latLng: LatLng): this + // Sets the position of a circle marker to a new location. + setLatLng: function (latlng) { + this._latlng = toLatLng(latlng); + this.redraw(); + return this.fire('move', {latlng: this._latlng}); + }, + + // @method getLatLng(): LatLng + // Returns the current geographical position of the circle marker + getLatLng: function () { + return this._latlng; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle marker. Units are in pixels. + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of the circle + getRadius: function () { + return this._radius; + }, + + setStyle : function (options) { + var radius = options && options.radius || this._radius; + Path.prototype.setStyle.call(this, options); + this.setRadius(radius); + return this; + }, + + _project: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + this._updateBounds(); + }, + + _updateBounds: function () { + var r = this._radius, + r2 = this._radiusY || r, + w = this._clickTolerance(), + p = [r + w, r2 + w]; + this._pxBounds = new Bounds(this._point.subtract(p), this._point.add(p)); + }, + + _update: function () { + if (this._map) { + this._updatePath(); + } + }, + + _updatePath: function () { + this._renderer._updateCircle(this); + }, + + _empty: function () { + return this._radius && !this._renderer._bounds.intersects(this._pxBounds); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + return p.distanceTo(this._point) <= this._radius + this._clickTolerance(); + } +}); + + +// @factory L.circleMarker(latlng: LatLng, options?: CircleMarker options) +// Instantiates a circle marker object given a geographical point, and an optional options object. +function circleMarker(latlng, options) { + return new CircleMarker(latlng, options); +} + +/* + * @class Circle + * @aka L.Circle + * @inherits CircleMarker + * + * A class for drawing circle overlays on a map. Extends `CircleMarker`. + * + * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion). + * + * @example + * + * ```js + * L.circle([50.5, 30.5], {radius: 200}).addTo(map); + * ``` + */ + +var Circle = CircleMarker.extend({ + + initialize: function (latlng, options, legacyOptions) { + if (typeof options === 'number') { + // Backwards compatibility with 0.7.x factory (latlng, radius, options?) + options = extend({}, legacyOptions, {radius: options}); + } + setOptions(this, options); + this._latlng = toLatLng(latlng); + + if (isNaN(this.options.radius)) { throw new Error('Circle radius cannot be NaN'); } + + // @section + // @aka Circle options + // @option radius: Number; Radius of the circle, in meters. + this._mRadius = this.options.radius; + }, + + // @method setRadius(radius: Number): this + // Sets the radius of a circle. Units are in meters. + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + // @method getRadius(): Number + // Returns the current radius of a circle. Units are in meters. + getRadius: function () { + return this._mRadius; + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + var half = [this._radius, this._radiusY || this._radius]; + + return new LatLngBounds( + this._map.layerPointToLatLng(this._point.subtract(half)), + this._map.layerPointToLatLng(this._point.add(half))); + }, + + setStyle: Path.prototype.setStyle, + + _project: function () { + + var lng = this._latlng.lng, + lat = this._latlng.lat, + map = this._map, + crs = map.options.crs; + + if (crs.distance === Earth.distance) { + var d = Math.PI / 180, + latR = (this._mRadius / Earth.R) / d, + top = map.project([lat + latR, lng]), + bottom = map.project([lat - latR, lng]), + p = top.add(bottom).divideBy(2), + lat2 = map.unproject(p).lat, + lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / + (Math.cos(lat * d) * Math.cos(lat2 * d))) / d; + + if (isNaN(lngR) || lngR === 0) { + lngR = latR / Math.cos(Math.PI / 180 * lat); // Fallback for edge case, #2425 + } + + this._point = p.subtract(map.getPixelOrigin()); + this._radius = isNaN(lngR) ? 0 : p.x - map.project([lat2, lng - lngR]).x; + this._radiusY = p.y - top.y; + + } else { + var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0])); + + this._point = map.latLngToLayerPoint(this._latlng); + this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x; + } + + this._updateBounds(); + } +}); + +// @factory L.circle(latlng: LatLng, options?: Circle options) +// Instantiates a circle object given a geographical point, and an options object +// which contains the circle radius. +// @alternative +// @factory L.circle(latlng: LatLng, radius: Number, options?: Circle options) +// Obsolete way of instantiating a circle, for compatibility with 0.7.x code. +// Do not use in new applications or plugins. +function circle(latlng, options, legacyOptions) { + return new Circle(latlng, options, legacyOptions); +} + +/* + * @class Polyline + * @aka L.Polyline + * @inherits Path + * + * A class for drawing polyline overlays on a map. Extends `Path`. + * + * @example + * + * ```js + * // create a red polyline from an array of LatLng points + * var latlngs = [ + * [45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2] + * ]; + * + * var polyline = L.polyline(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polyline + * map.fitBounds(polyline.getBounds()); + * ``` + * + * You can also pass a multi-dimensional array to represent a `MultiPolyline` shape: + * + * ```js + * // create a red polyline from an array of arrays of LatLng points + * var latlngs = [ + * [[45.51, -122.68], + * [37.77, -122.43], + * [34.04, -118.2]], + * [[40.78, -73.91], + * [41.83, -87.62], + * [32.76, -96.72]] + * ]; + * ``` + */ + + +var Polyline = Path.extend({ + + // @section + // @aka Polyline options + options: { + // @option smoothFactor: Number = 1.0 + // How much to simplify the polyline on each zoom level. More means + // better performance and smoother look, and less means more accurate representation. + smoothFactor: 1.0, + + // @option noClip: Boolean = false + // Disable polyline clipping. + noClip: false + }, + + initialize: function (latlngs, options) { + setOptions(this, options); + this._setLatLngs(latlngs); + }, + + // @method getLatLngs(): LatLng[] + // Returns an array of the points in the path, or nested arrays of points in case of multi-polyline. + getLatLngs: function () { + return this._latlngs; + }, + + // @method setLatLngs(latlngs: LatLng[]): this + // Replaces all the points in the polyline with the given array of geographical points. + setLatLngs: function (latlngs) { + this._setLatLngs(latlngs); + return this.redraw(); + }, + + // @method isEmpty(): Boolean + // Returns `true` if the Polyline has no LatLngs. + isEmpty: function () { + return !this._latlngs.length; + }, + + // @method closestLayerPoint: Point + // Returns the point closest to `p` on the Polyline. + closestLayerPoint: function (p) { + var minDistance = Infinity, + minPoint = null, + closest = _sqClosestPointOnSegment, + p1, p2; + + for (var j = 0, jLen = this._parts.length; j < jLen; j++) { + var points = this._parts[j]; + + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + + var sqDist = closest(p, p1, p2, true); + + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = closest(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + // @method getCenter(): LatLng + // Returns the center ([centroid](http://en.wikipedia.org/wiki/Centroid)) of the polyline. + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, halfDist, segDist, dist, p1, p2, ratio, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polyline centroid algorithm; only uses the first ring if there are multiple + + for (i = 0, halfDist = 0; i < len - 1; i++) { + halfDist += points[i].distanceTo(points[i + 1]) / 2; + } + + // The line is so small in the current view that all points are on the same pixel. + if (halfDist === 0) { + return this._map.layerPointToLatLng(points[0]); + } + + for (i = 0, dist = 0; i < len - 1; i++) { + p1 = points[i]; + p2 = points[i + 1]; + segDist = p1.distanceTo(p2); + dist += segDist; + + if (dist > halfDist) { + ratio = (dist - halfDist) / segDist; + return this._map.layerPointToLatLng([ + p2.x - ratio * (p2.x - p1.x), + p2.y - ratio * (p2.y - p1.y) + ]); + } + } + }, + + // @method getBounds(): LatLngBounds + // Returns the `LatLngBounds` of the path. + getBounds: function () { + return this._bounds; + }, + + // @method addLatLng(latlng: LatLng, latlngs? LatLng[]): this + // Adds a given point to the polyline. By default, adds to the first ring of + // the polyline in case of a multi-polyline, but can be overridden by passing + // a specific ring as a LatLng array (that you can earlier access with [`getLatLngs`](#polyline-getlatlngs)). + addLatLng: function (latlng, latlngs) { + latlngs = latlngs || this._defaultShape(); + latlng = toLatLng(latlng); + latlngs.push(latlng); + this._bounds.extend(latlng); + return this.redraw(); + }, + + _setLatLngs: function (latlngs) { + this._bounds = new LatLngBounds(); + this._latlngs = this._convertLatLngs(latlngs); + }, + + _defaultShape: function () { + return isFlat(this._latlngs) ? this._latlngs : this._latlngs[0]; + }, + + // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way + _convertLatLngs: function (latlngs) { + var result = [], + flat = isFlat(latlngs); + + for (var i = 0, len = latlngs.length; i < len; i++) { + if (flat) { + result[i] = toLatLng(latlngs[i]); + this._bounds.extend(result[i]); + } else { + result[i] = this._convertLatLngs(latlngs[i]); + } + } + + return result; + }, + + _project: function () { + var pxBounds = new Bounds(); + this._rings = []; + this._projectLatlngs(this._latlngs, this._rings, pxBounds); + + var w = this._clickTolerance(), + p = new Point(w, w); + + if (this._bounds.isValid() && pxBounds.isValid()) { + pxBounds.min._subtract(p); + pxBounds.max._add(p); + this._pxBounds = pxBounds; + } + }, + + // recursively turns latlngs into a set of rings with projected coordinates + _projectLatlngs: function (latlngs, result, projectedBounds) { + var flat = latlngs[0] instanceof LatLng, + len = latlngs.length, + i, ring; + + if (flat) { + ring = []; + for (i = 0; i < len; i++) { + ring[i] = this._map.latLngToLayerPoint(latlngs[i]); + projectedBounds.extend(ring[i]); + } + result.push(ring); + } else { + for (i = 0; i < len; i++) { + this._projectLatlngs(latlngs[i], result, projectedBounds); + } + } + }, + + // clip polyline by renderer bounds so that we have less to render for performance + _clipPoints: function () { + var bounds = this._renderer._bounds; + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + var parts = this._parts, + i, j, k, len, len2, segment, points; + + for (i = 0, k = 0, len = this._rings.length; i < len; i++) { + points = this._rings[i]; + + for (j = 0, len2 = points.length; j < len2 - 1; j++) { + segment = clipSegment(points[j], points[j + 1], bounds, j, true); + + if (!segment) { continue; } + + parts[k] = parts[k] || []; + parts[k].push(segment[0]); + + // if segment goes out of screen, or it's the last one, it's the end of the line part + if ((segment[1] !== points[j + 1]) || (j === len2 - 2)) { + parts[k].push(segment[1]); + k++; + } + } + } + }, + + // simplify each clipped part of the polyline for performance + _simplifyPoints: function () { + var parts = this._parts, + tolerance = this.options.smoothFactor; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = simplify(parts[i], tolerance); + } + }, + + _update: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + this._updatePath(); + }, + + _updatePath: function () { + this._renderer._updatePoly(this); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p, closed) { + var i, j, k, len, len2, part, + w = this._clickTolerance(); + + if (!this._pxBounds || !this._pxBounds.contains(p)) { return false; } + + // hit detection for polylines + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + if (!closed && (j === 0)) { continue; } + + if (pointToSegmentDistance(p, part[k], part[j]) <= w) { + return true; + } + } + } + return false; + } +}); + +// @factory L.polyline(latlngs: LatLng[], options?: Polyline options) +// Instantiates a polyline object given an array of geographical points and +// optionally an options object. You can create a `Polyline` object with +// multiple separate lines (`MultiPolyline`) by passing an array of arrays +// of geographic points. +function polyline(latlngs, options) { + return new Polyline(latlngs, options); +} + +// Retrocompat. Allow plugins to support Leaflet versions before and after 1.1. +Polyline._flat = _flat; + +/* + * @class Polygon + * @aka L.Polygon + * @inherits Polyline + * + * A class for drawing polygon overlays on a map. Extends `Polyline`. + * + * Note that points you pass when creating a polygon shouldn't have an additional last point equal to the first one — it's better to filter out such points. + * + * + * @example + * + * ```js + * // create a red polygon from an array of LatLng points + * var latlngs = [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]]; + * + * var polygon = L.polygon(latlngs, {color: 'red'}).addTo(map); + * + * // zoom the map to the polygon + * map.fitBounds(polygon.getBounds()); + * ``` + * + * You can also pass an array of arrays of latlngs, with the first array representing the outer shape and the other arrays representing holes in the outer shape: + * + * ```js + * var latlngs = [ + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ]; + * ``` + * + * Additionally, you can pass a multi-dimensional array to represent a MultiPolygon shape. + * + * ```js + * var latlngs = [ + * [ // first polygon + * [[37, -109.05],[41, -109.03],[41, -102.05],[37, -102.04]], // outer ring + * [[37.29, -108.58],[40.71, -108.58],[40.71, -102.50],[37.29, -102.50]] // hole + * ], + * [ // second polygon + * [[41, -111.03],[45, -111.04],[45, -104.05],[41, -104.05]] + * ] + * ]; + * ``` + */ + +var Polygon = Polyline.extend({ + + options: { + fill: true + }, + + isEmpty: function () { + return !this._latlngs.length || !this._latlngs[0].length; + }, + + getCenter: function () { + // throws error when not yet added to map as this center calculation requires projected coordinates + if (!this._map) { + throw new Error('Must add layer to map before using getCenter()'); + } + + var i, j, p1, p2, f, area, x, y, center, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polygon centroid algorithm; only uses the first ring if there are multiple + + area = x = y = 0; + + for (i = 0, j = len - 1; i < len; j = i++) { + p1 = points[i]; + p2 = points[j]; + + f = p1.y * p2.x - p2.y * p1.x; + x += (p1.x + p2.x) * f; + y += (p1.y + p2.y) * f; + area += f * 3; + } + + if (area === 0) { + // Polygon is so small that all points are on same pixel. + center = points[0]; + } else { + center = [x / area, y / area]; + } + return this._map.layerPointToLatLng(center); + }, + + _convertLatLngs: function (latlngs) { + var result = Polyline.prototype._convertLatLngs.call(this, latlngs), + len = result.length; + + // remove last point if it equals first one + if (len >= 2 && result[0] instanceof LatLng && result[0].equals(result[len - 1])) { + result.pop(); + } + return result; + }, + + _setLatLngs: function (latlngs) { + Polyline.prototype._setLatLngs.call(this, latlngs); + if (isFlat(this._latlngs)) { + this._latlngs = [this._latlngs]; + } + }, + + _defaultShape: function () { + return isFlat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]; + }, + + _clipPoints: function () { + // polygons need a different clipping algorithm so we redefine that + + var bounds = this._renderer._bounds, + w = this.options.weight, + p = new Point(w, w); + + // increase clip padding by stroke width to avoid stroke on clip edges + bounds = new Bounds(bounds.min.subtract(p), bounds.max.add(p)); + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + for (var i = 0, len = this._rings.length, clipped; i < len; i++) { + clipped = clipPolygon(this._rings[i], bounds, true); + if (clipped.length) { + this._parts.push(clipped); + } + } + }, + + _updatePath: function () { + this._renderer._updatePoly(this, true); + }, + + // Needed by the `Canvas` renderer for interactivity + _containsPoint: function (p) { + var inside = false, + part, p1, p2, i, j, k, len, len2; + + if (!this._pxBounds.contains(p)) { return false; } + + // ray casting algorithm for detecting if point is in polygon + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + p1 = part[j]; + p2 = part[k]; + + if (((p1.y > p.y) !== (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { + inside = !inside; + } + } + } + + // also check if it's on polygon stroke + return inside || Polyline.prototype._containsPoint.call(this, p, true); + } + +}); + + +// @factory L.polygon(latlngs: LatLng[], options?: Polyline options) +function polygon(latlngs, options) { + return new Polygon(latlngs, options); +} + +/* + * @class GeoJSON + * @aka L.GeoJSON + * @inherits FeatureGroup + * + * Represents a GeoJSON object or an array of GeoJSON objects. Allows you to parse + * GeoJSON data and display it on the map. Extends `FeatureGroup`. + * + * @example + * + * ```js + * L.geoJSON(data, { + * style: function (feature) { + * return {color: feature.properties.color}; + * } + * }).bindPopup(function (layer) { + * return layer.feature.properties.description; + * }).addTo(map); + * ``` + */ + +var GeoJSON = FeatureGroup.extend({ + + /* @section + * @aka GeoJSON options + * + * @option pointToLayer: Function = * + * A `Function` defining how GeoJSON points spawn Leaflet layers. It is internally + * called when data is added, passing the GeoJSON point feature and its `LatLng`. + * The default is to spawn a default `Marker`: + * ```js + * function(geoJsonPoint, latlng) { + * return L.marker(latlng); + * } + * ``` + * + * @option style: Function = * + * A `Function` defining the `Path options` for styling GeoJSON lines and polygons, + * called internally when data is added. + * The default value is to not override any defaults: + * ```js + * function (geoJsonFeature) { + * return {} + * } + * ``` + * + * @option onEachFeature: Function = * + * A `Function` that will be called once for each created `Feature`, after it has + * been created and styled. Useful for attaching events and popups to features. + * The default is to do nothing with the newly created layers: + * ```js + * function (feature, layer) {} + * ``` + * + * @option filter: Function = * + * A `Function` that will be used to decide whether to include a feature or not. + * The default is to include all features: + * ```js + * function (geoJsonFeature) { + * return true; + * } + * ``` + * Note: dynamically changing the `filter` option will have effect only on newly + * added data. It will _not_ re-evaluate already included features. + * + * @option coordsToLatLng: Function = * + * A `Function` that will be used for converting GeoJSON coordinates to `LatLng`s. + * The default is the `coordsToLatLng` static method. + */ + + initialize: function (geojson, options) { + setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + // @method addData( <GeoJSON> data ): this + // Adds a GeoJSON object to the layer. + addData: function (geojson) { + var features = isArray(geojson) ? geojson : geojson.features, + i, len, feature; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // only add this if geometry or geometries are set and not null + feature = features[i]; + if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { + this.addData(feature); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return this; } + + var layer = geometryToLayer(geojson, options); + if (!layer) { + return this; + } + layer.feature = asFeature(geojson); + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + // @method resetStyle( <Path> layer ): this + // Resets the given vector layer's style to the original GeoJSON style, useful for resetting style after hover events. + resetStyle: function (layer) { + // reset any custom styles + layer.options = extend({}, layer.defaultOptions); + this._setLayerStyle(layer, this.options.style); + return this; + }, + + // @method setStyle( <Function> style ): this + // Changes styles of GeoJSON vector layers with the given style function. + setStyle: function (style) { + return this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (typeof style === 'function') { + style = style(layer.feature); + } + if (layer.setStyle) { + layer.setStyle(style); + } + } +}); + +// @section +// There are several static functions which can be called without instantiating L.GeoJSON: + +// @function geometryToLayer(featureData: Object, options?: GeoJSON options): Layer +// Creates a `Layer` from a given GeoJSON feature. Can use a custom +// [`pointToLayer`](#geojson-pointtolayer) and/or [`coordsToLatLng`](#geojson-coordstolatlng) +// functions if provided as options. +function geometryToLayer(geojson, options) { + + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry ? geometry.coordinates : null, + layers = [], + pointToLayer = options && options.pointToLayer, + _coordsToLatLng = options && options.coordsToLatLng || coordsToLatLng, + latlng, latlngs, i, len; + + if (!coords && !geometry) { + return null; + } + + switch (geometry.type) { + case 'Point': + latlng = _coordsToLatLng(coords); + return pointToLayer ? pointToLayer(geojson, latlng) : new Marker(latlng); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = _coordsToLatLng(coords[i]); + layers.push(pointToLayer ? pointToLayer(geojson, latlng) : new Marker(latlng)); + } + return new FeatureGroup(layers); + + case 'LineString': + case 'MultiLineString': + latlngs = coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, _coordsToLatLng); + return new Polyline(latlngs, options); + + case 'Polygon': + case 'MultiPolygon': + latlngs = coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, _coordsToLatLng); + return new Polygon(latlngs, options); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + var layer = geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, options); + + if (layer) { + layers.push(layer); + } + } + return new FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } +} + +// @function coordsToLatLng(coords: Array): LatLng +// Creates a `LatLng` object from an array of 2 numbers (longitude, latitude) +// or 3 numbers (longitude, latitude, altitude) used in GeoJSON for points. +function coordsToLatLng(coords) { + return new LatLng(coords[1], coords[0], coords[2]); +} + +// @function coordsToLatLngs(coords: Array, levelsDeep?: Number, coordsToLatLng?: Function): Array +// Creates a multidimensional array of `LatLng`s from a GeoJSON coordinates array. +// `levelsDeep` specifies the nesting level (0 is for an array of points, 1 for an array of arrays of points, etc., 0 by default). +// Can use a custom [`coordsToLatLng`](#geojson-coordstolatlng) function. +function coordsToLatLngs(coords, levelsDeep, _coordsToLatLng) { + var latlngs = []; + + for (var i = 0, len = coords.length, latlng; i < len; i++) { + latlng = levelsDeep ? + coordsToLatLngs(coords[i], levelsDeep - 1, _coordsToLatLng) : + (_coordsToLatLng || coordsToLatLng)(coords[i]); + + latlngs.push(latlng); + } + + return latlngs; +} + +// @function latLngToCoords(latlng: LatLng, precision?: Number): Array +// Reverse of [`coordsToLatLng`](#geojson-coordstolatlng) +function latLngToCoords(latlng, precision) { + precision = typeof precision === 'number' ? precision : 6; + return latlng.alt !== undefined ? + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision), formatNum(latlng.alt, precision)] : + [formatNum(latlng.lng, precision), formatNum(latlng.lat, precision)]; +} + +// @function latLngsToCoords(latlngs: Array, levelsDeep?: Number, closed?: Boolean): Array +// Reverse of [`coordsToLatLngs`](#geojson-coordstolatlngs) +// `closed` determines whether the first point should be appended to the end of the array to close the feature, only used when `levelsDeep` is 0. False by default. +function latLngsToCoords(latlngs, levelsDeep, closed, precision) { + var coords = []; + + for (var i = 0, len = latlngs.length; i < len; i++) { + coords.push(levelsDeep ? + latLngsToCoords(latlngs[i], levelsDeep - 1, closed, precision) : + latLngToCoords(latlngs[i], precision)); + } + + if (!levelsDeep && closed) { + coords.push(coords[0]); + } + + return coords; +} + +function getFeature(layer, newGeometry) { + return layer.feature ? + extend({}, layer.feature, {geometry: newGeometry}) : + asFeature(newGeometry); +} + +// @function asFeature(geojson: Object): Object +// Normalize GeoJSON geometries/features into GeoJSON features. +function asFeature(geojson) { + if (geojson.type === 'Feature' || geojson.type === 'FeatureCollection') { + return geojson; + } + + return { + type: 'Feature', + properties: {}, + geometry: geojson + }; +} + +var PointToGeoJSON = { + toGeoJSON: function (precision) { + return getFeature(this, { + type: 'Point', + coordinates: latLngToCoords(this.getLatLng(), precision) + }); + } +}; + +// @namespace Marker +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the marker (as a GeoJSON `Point` Feature). +Marker.include(PointToGeoJSON); + +// @namespace CircleMarker +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the circle marker (as a GeoJSON `Point` Feature). +Circle.include(PointToGeoJSON); +CircleMarker.include(PointToGeoJSON); + + +// @namespace Polyline +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polyline (as a GeoJSON `LineString` or `MultiLineString` Feature). +Polyline.include({ + toGeoJSON: function (precision) { + var multi = !isFlat(this._latlngs); + + var coords = latLngsToCoords(this._latlngs, multi ? 1 : 0, false, precision); + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'LineString', + coordinates: coords + }); + } +}); + +// @namespace Polygon +// @method toGeoJSON(): Object +// Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the polygon (as a GeoJSON `Polygon` or `MultiPolygon` Feature). +Polygon.include({ + toGeoJSON: function (precision) { + var holes = !isFlat(this._latlngs), + multi = holes && !isFlat(this._latlngs[0]); + + var coords = latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true, precision); + + if (!holes) { + coords = [coords]; + } + + return getFeature(this, { + type: (multi ? 'Multi' : '') + 'Polygon', + coordinates: coords + }); + } +}); + + +// @namespace LayerGroup +LayerGroup.include({ + toMultiPoint: function (precision) { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON(precision).geometry.coordinates); + }); + + return getFeature(this, { + type: 'MultiPoint', + coordinates: coords + }); + }, + + // @method toGeoJSON(): Object + // Returns a [`GeoJSON`](http://en.wikipedia.org/wiki/GeoJSON) representation of the layer group (as a GeoJSON `FeatureCollection`, `GeometryCollection`, or `MultiPoint`). + toGeoJSON: function (precision) { + + var type = this.feature && this.feature.geometry && this.feature.geometry.type; + + if (type === 'MultiPoint') { + return this.toMultiPoint(precision); + } + + var isGeometryCollection = type === 'GeometryCollection', + jsons = []; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + var json = layer.toGeoJSON(precision); + if (isGeometryCollection) { + jsons.push(json.geometry); + } else { + var feature = asFeature(json); + // Squash nested feature collections + if (feature.type === 'FeatureCollection') { + jsons.push.apply(jsons, feature.features); + } else { + jsons.push(feature); + } + } + } + }); + + if (isGeometryCollection) { + return getFeature(this, { + geometries: jsons, + type: 'GeometryCollection' + }); + } + + return { + type: 'FeatureCollection', + features: jsons + }; + } +}); + +// @namespace GeoJSON +// @factory L.geoJSON(geojson?: Object, options?: GeoJSON options) +// Creates a GeoJSON layer. Optionally accepts an object in +// [GeoJSON format](http://geojson.org/geojson-spec.html) to display on the map +// (you can alternatively add it later with `addData` method) and an `options` object. +function geoJSON(geojson, options) { + return new GeoJSON(geojson, options); +} + +// Backward compatibility. +var geoJson = geoJSON; + +/* + * @class ImageOverlay + * @aka L.ImageOverlay + * @inherits Interactive layer + * + * Used to load and display a single image over specific bounds of the map. Extends `Layer`. + * + * @example + * + * ```js + * var imageUrl = 'http://www.lib.utexas.edu/maps/historical/newark_nj_1922.jpg', + * imageBounds = [[40.712216, -74.22655], [40.773941, -74.12544]]; + * L.imageOverlay(imageUrl, imageBounds).addTo(map); + * ``` + */ + +var ImageOverlay = Layer.extend({ + + // @section + // @aka ImageOverlay options + options: { + // @option opacity: Number = 1.0 + // The opacity of the image overlay. + opacity: 1, + + // @option alt: String = '' + // Text for the `alt` attribute of the image (useful for accessibility). + alt: '', + + // @option interactive: Boolean = false + // If `true`, the image overlay will emit [mouse events](#interactive-layer) when clicked or hovered. + interactive: false, + + // @option crossOrigin: Boolean = false + // If true, the image will have its crossOrigin attribute set to ''. This is needed if you want to access image pixel data. + crossOrigin: false, + + // @option errorOverlayUrl: String = '' + // URL to the overlay image to show in place of the overlay that failed to load. + errorOverlayUrl: '', + + // @option zIndex: Number = 1 + // The explicit [zIndex](https://developer.mozilla.org/docs/Web/CSS/CSS_Positioning/Understanding_z_index) of the tile layer. + zIndex: 1, + + // @option className: String = '' + // A custom class name to assign to the image. Empty by default. + className: '', + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = toLatLngBounds(bounds); + + setOptions(this, options); + }, + + onAdd: function () { + if (!this._image) { + this._initImage(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + + if (this.options.interactive) { + addClass(this._image, 'leaflet-interactive'); + this.addInteractiveTarget(this._image); + } + + this.getPane().appendChild(this._image); + this._reset(); + }, + + onRemove: function () { + remove(this._image); + if (this.options.interactive) { + this.removeInteractiveTarget(this._image); + } + }, + + // @method setOpacity(opacity: Number): this + // Sets the opacity of the overlay. + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._image) { + this._updateOpacity(); + } + return this; + }, + + setStyle: function (styleOpts) { + if (styleOpts.opacity) { + this.setOpacity(styleOpts.opacity); + } + return this; + }, + + // @method bringToFront(): this + // Brings the layer to the top of all overlays. + bringToFront: function () { + if (this._map) { + toFront(this._image); + } + return this; + }, + + // @method bringToBack(): this + // Brings the layer to the bottom of all overlays. + bringToBack: function () { + if (this._map) { + toBack(this._image); + } + return this; + }, + + // @method setUrl(url: String): this + // Changes the URL of the image. + setUrl: function (url) { + this._url = url; + + if (this._image) { + this._image.src = url; + } + return this; + }, + + // @method setBounds(bounds: LatLngBounds): this + // Update the bounds that this ImageOverlay covers + setBounds: function (bounds) { + this._bounds = toLatLngBounds(bounds); + + if (this._map) { + this._reset(); + } + return this; + }, + + getEvents: function () { + var events = { + zoom: this._reset, + viewreset: this._reset + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + // @method: setZIndex(value: Number) : this + // Changes the [zIndex](#imageoverlay-zindex) of the image overlay. + setZIndex: function (value) { + this.options.zIndex = value; + this._updateZIndex(); + return this; + }, + + // @method getBounds(): LatLngBounds + // Get the bounds that this ImageOverlay covers + getBounds: function () { + return this._bounds; + }, + + // @method getElement(): HTMLElement + // Returns the instance of [`HTMLImageElement`](https://developer.mozilla.org/docs/Web/API/HTMLImageElement) + // used by this overlay. + getElement: function () { + return this._image; + }, + + _initImage: function () { + var wasElementSupplied = this._url.tagName === 'IMG'; + var img = this._image = wasElementSupplied ? this._url : create$1('img'); + + addClass(img, 'leaflet-image-layer'); + if (this._zoomAnimated) { addClass(img, 'leaflet-zoom-animated'); } + if (this.options.className) { addClass(img, this.options.className); } + + img.onselectstart = falseFn; + img.onmousemove = falseFn; + + // @event load: Event + // Fired when the ImageOverlay layer has loaded its image + img.onload = bind(this.fire, this, 'load'); + img.onerror = bind(this._overlayOnError, this, 'error'); + + if (this.options.crossOrigin) { + img.crossOrigin = ''; + } + + if (this.options.zIndex) { + this._updateZIndex(); + } + + if (wasElementSupplied) { + this._url = img.src; + return; + } + + img.src = this._url; + img.alt = this.options.alt; + }, + + _animateZoom: function (e) { + var scale = this._map.getZoomScale(e.zoom), + offset = this._map._latLngBoundsToNewLayerBounds(this._bounds, e.zoom, e.center).min; + + setTransform(this._image, offset, scale); + }, + + _reset: function () { + var image = this._image, + bounds = new Bounds( + this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + this._map.latLngToLayerPoint(this._bounds.getSouthEast())), + size = bounds.getSize(); + + setPosition(image, bounds.min); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _updateOpacity: function () { + setOpacity(this._image, this.options.opacity); + }, + + _updateZIndex: function () { + if (this._image && this.options.zIndex !== undefined && this.options.zIndex !== null) { + this._image.style.zIndex = this.options.zIndex; + } + }, + + _overlayOnError: function () { + // @event error: Event + // Fired when the ImageOverlay layer has loaded its image + this.fire('error'); + + var errorUrl = this.options.errorOverlayUrl; + if (errorUrl && this._url !== errorUrl) { + this._url = errorUrl; + this._image.src = errorUrl; + } + } +}); + +// @factory L.imageOverlay(imageUrl: String, bounds: LatLngBounds, options?: ImageOverlay options) +// Instantiates an image overlay object given the URL of the image and the +// geographical bounds it is tied to. +var imageOverlay = function (url, bounds, options) { + return new ImageOverlay(url, bounds, options); +}; + +/* + * @class VideoOverlay + * @aka L.VideoOverlay + * @inherits ImageOverlay + * + * Used to load and display a video player over specific bounds of the map. Extends `ImageOverlay`. + * + * A video overlay uses the [`<video>`](https://developer.mozilla.org/docs/Web/HTML/Element/video) + * HTML5 element. + * + * @example + * + * ```js + * var videoUrl = 'https://www.mapbox.com/bites/00188/patricia_nasa.webm', + * videoBounds = [[ 32, -130], [ 13, -100]]; + * L.VideoOverlay(videoUrl, videoBounds ).addTo(map); + * ``` + */ + +var VideoOverlay = ImageOverlay.extend({ + + // @section + // @aka VideoOverlay options + options: { + // @option autoplay: Boolean = true + // Whether the video starts playing automatically when loaded. + autoplay: true, + + // @option loop: Boolean = true + // Whether the video will loop back to the beginning when played. + loop: true + }, + + _initImage: function () { + var wasElementSupplied = this._url.tagName === 'VIDEO'; + var vid = this._image = wasElementSupplied ? this._url : create$1('video'); + + addClass(vid, 'leaflet-image-layer'); + if (this._zoomAnimated) { addClass(vid, 'leaflet-zoom-animated'); } + + vid.onselectstart = falseFn; + vid.onmousemove = falseFn; + + // @event load: Event + // Fired when the video has finished loading the first frame + vid.onloadeddata = bind(this.fire, this, 'load'); + + if (wasElementSupplied) { + var sourceElements = vid.getElementsByTagName('source'); + var sources = []; + for (var j = 0; j < sourceElements.length; j++) { + sources.push(sourceElements[j].src); + } + + this._url = (sourceElements.length > 0) ? sources : [vid.src]; + return; + } + + if (!isArray(this._url)) { this._url = [this._url]; } + + vid.autoplay = !!this.options.autoplay; + vid.loop = !!this.options.loop; + for (var i = 0; i < this._url.length; i++) { + var source = create$1('source'); + source.src = this._url[i]; + vid.appendChild(source); + } + } + + // @method getElement(): HTMLVideoElement + // Returns the instance of [`HTMLVideoElement`](https://developer.mozilla.org/docs/Web/API/HTMLVideoElement) + // used by this overlay. +}); + + +// @factory L.videoOverlay(video: String|Array|HTMLVideoElement, bounds: LatLngBounds, options?: VideoOverlay options) +// Instantiates an image overlay object given the URL of the video (or array of URLs, or even a video element) and the +// geographical bounds it is tied to. + +function videoOverlay(video, bounds, options) { + return new VideoOverlay(video, bounds, options); +} + +/* + * @class DivOverlay + * @inherits Layer + * @aka L.DivOverlay + * Base model for L.Popup and L.Tooltip. Inherit from it for custom popup like plugins. + */ + +// @namespace DivOverlay +var DivOverlay = Layer.extend({ + + // @section + // @aka DivOverlay options + options: { + // @option offset: Point = Point(0, 7) + // The offset of the popup position. Useful to control the anchor + // of the popup when opening it on some overlays. + offset: [0, 7], + + // @option className: String = '' + // A custom CSS class name to assign to the popup. + className: '', + + // @option pane: String = 'popupPane' + // `Map pane` where the popup will be added. + pane: 'popupPane' + }, + + initialize: function (options, source) { + setOptions(this, options); + + this._source = source; + }, + + onAdd: function (map) { + this._zoomAnimated = map._zoomAnimated; + + if (!this._container) { + this._initLayout(); + } + + if (map._fadeAnimated) { + setOpacity(this._container, 0); + } + + clearTimeout(this._removeTimeout); + this.getPane().appendChild(this._container); + this.update(); + + if (map._fadeAnimated) { + setOpacity(this._container, 1); + } + + this.bringToFront(); + }, + + onRemove: function (map) { + if (map._fadeAnimated) { + setOpacity(this._container, 0); + this._removeTimeout = setTimeout(bind(remove, undefined, this._container), 200); + } else { + remove(this._container); + } + }, + + // @namespace Popup + // @method getLatLng: LatLng + // Returns the geographical point of popup. + getLatLng: function () { + return this._latlng; + }, + + // @method setLatLng(latlng: LatLng): this + // Sets the geographical point where the popup will open. + setLatLng: function (latlng) { + this._latlng = toLatLng(latlng); + if (this._map) { + this._updatePosition(); + this._adjustPan(); + } + return this; + }, + + // @method getContent: String|HTMLElement + // Returns the content of the popup. + getContent: function () { + return this._content; + }, + + // @method setContent(htmlContent: String|HTMLElement|Function): this + // Sets the HTML content of the popup. If a function is passed the source layer will be passed to the function. The function should return a `String` or `HTMLElement` to be used in the popup. + setContent: function (content) { + this._content = content; + this.update(); + return this; + }, + + // @method getElement: String|HTMLElement + // Alias for [getContent()](#popup-getcontent) + getElement: function () { + return this._container; + }, + + // @method update: null + // Updates the popup content, layout and position. Useful for updating the popup after something inside changed, e.g. image loaded. + update: function () { + if (!this._map) { return; } + + this._container.style.visibility = 'hidden'; + + this._updateContent(); + this._updateLayout(); + this._updatePosition(); + + this._container.style.visibility = ''; + + this._adjustPan(); + }, + + getEvents: function () { + var events = { + zoom: this._updatePosition, + viewreset: this._updatePosition + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + return events; + }, + + // @method isOpen: Boolean + // Returns `true` when the popup is visible on the map. + isOpen: function () { + return !!this._map && this._map.hasLayer(this); + }, + + // @method bringToFront: this + // Brings this popup in front of other popups (in the same map pane). + bringToFront: function () { + if (this._map) { + toFront(this._container); + } + return this; + }, + + // @method bringToBack: this + // Brings this popup to the back of other popups (in the same map pane). + bringToBack: function () { + if (this._map) { + toBack(this._container); + } + return this; + }, + + _updateContent: function () { + if (!this._content) { return; } + + var node = this._contentNode; + var content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content; + + if (typeof content === 'string') { + node.innerHTML = content; + } else { + while (node.hasChildNodes()) { + node.removeChild(node.firstChild); + } + node.appendChild(content); + } + this.fire('contentupdate'); + }, + + _updatePosition: function () { + if (!this._map) { return; } + + var pos = this._map.latLngToLayerPoint(this._latlng), + offset = toPoint(this.options.offset), + anchor = this._getAnchor(); + + if (this._zoomAnimated) { + setPosition(this._container, pos.add(anchor)); + } else { + offset = offset.add(pos).add(anchor); + } + + var bottom = this._containerBottom = -offset.y, + left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x; + + // bottom position the popup in case the height of the popup changes (images loading etc) + this._container.style.bottom = bottom + 'px'; + this._container.style.left = left + 'px'; + }, + + _getAnchor: function () { + return [0, 0]; + } + +}); + +/* + * @class Popup + * @inherits DivOverlay + * @aka L.Popup + * Used to open popups in certain places of the map. Use [Map.openPopup](#map-openpopup) to + * open popups while making sure that only one popup is open at one time + * (recommended for usability), or use [Map.addLayer](#map-addlayer) to open as many as you want. + * + * @example + * + * If you want to just bind a popup to marker click and then open it, it's really easy: + * + * ```js + * marker.bindPopup(popupContent).openPopup(); + * ``` + * Path overlays like polylines also have a `bindPopup` method. + * Here's a more complicated way to open a popup on a map: + * + * ```js + * var popup = L.popup() + * .setLatLng(latlng) + * .setContent('<p>Hello world!<br />This is a nice popup.</p>') + * .openOn(map); + * ``` + */ + + +// @namespace Popup +var Popup = DivOverlay.extend({ + + // @section + // @aka Popup options + options: { + // @option maxWidth: Number = 300 + // Max width of the popup, in pixels. + maxWidth: 300, + + // @option minWidth: Number = 50 + // Min width of the popup, in pixels. + minWidth: 50, + + // @option maxHeight: Number = null + // If set, creates a scrollable container of the given height + // inside a popup if its content exceeds it. + maxHeight: null, + + // @option autoPan: Boolean = true + // Set it to `false` if you don't want the map to do panning animation + // to fit the opened popup. + autoPan: true, + + // @option autoPanPaddingTopLeft: Point = null + // The margin between the popup and the top left corner of the map + // view after autopanning was performed. + autoPanPaddingTopLeft: null, + + // @option autoPanPaddingBottomRight: Point = null + // The margin between the popup and the bottom right corner of the map + // view after autopanning was performed. + autoPanPaddingBottomRight: null, + + // @option autoPanPadding: Point = Point(5, 5) + // Equivalent of setting both top left and bottom right autopan padding to the same value. + autoPanPadding: [5, 5], + + // @option keepInView: Boolean = false + // Set it to `true` if you want to prevent users from panning the popup + // off of the screen while it is open. + keepInView: false, + + // @option closeButton: Boolean = true + // Controls the presence of a close button in the popup. + closeButton: true, + + // @option autoClose: Boolean = true + // Set it to `false` if you want to override the default behavior of + // the popup closing when another popup is opened. + autoClose: true, + + // @option closeOnEscapeKey: Boolean = true + // Set it to `false` if you want to override the default behavior of + // the ESC key for closing of the popup. + closeOnEscapeKey: true, + + // @option closeOnClick: Boolean = * + // Set it if you want to override the default behavior of the popup closing when user clicks + // on the map. Defaults to the map's [`closePopupOnClick`](#map-closepopuponclick) option. + + // @option className: String = '' + // A custom CSS class name to assign to the popup. + className: '' + }, + + // @namespace Popup + // @method openOn(map: Map): this + // Adds the popup to the map and closes the previous one. The same as `map.openPopup(popup)`. + openOn: function (map) { + map.openPopup(this); + return this; + }, + + onAdd: function (map) { + DivOverlay.prototype.onAdd.call(this, map); + + // @namespace Map + // @section Popup events + // @event popupopen: PopupEvent + // Fired when a popup is opened in the map + map.fire('popupopen', {popup: this}); + + if (this._source) { + // @namespace Layer + // @section Popup events + // @event popupopen: PopupEvent + // Fired when a popup bound to this layer is opened + this._source.fire('popupopen', {popup: this}, true); + // For non-path layers, we toggle the popup when clicking + // again the layer, so prevent the map to reopen it. + if (!(this._source instanceof Path)) { + this._source.on('preclick', stopPropagation); + } + } + }, + + onRemove: function (map) { + DivOverlay.prototype.onRemove.call(this, map); + + // @namespace Map + // @section Popup events + // @event popupclose: PopupEvent + // Fired when a popup in the map is closed + map.fire('popupclose', {popup: this}); + + if (this._source) { + // @namespace Layer + // @section Popup events + // @event popupclose: PopupEvent + // Fired when a popup bound to this layer is closed + this._source.fire('popupclose', {popup: this}, true); + if (!(this._source instanceof Path)) { + this._source.off('preclick', stopPropagation); + } + } + }, + + getEvents: function () { + var events = DivOverlay.prototype.getEvents.call(this); + + if (this.options.closeOnClick !== undefined ? this.options.closeOnClick : this._map.options.closePopupOnClick) { + events.preclick = this._close; + } + + if (this.options.keepInView) { + events.moveend = this._adjustPan; + } + + return events; + }, + + _close: function () { + if (this._map) { + this._map.closePopup(this); + } + }, + + _initLayout: function () { + var prefix = 'leaflet-popup', + container = this._container = create$1('div', + prefix + ' ' + (this.options.className || '') + + ' leaflet-zoom-animated'); + + var wrapper = this._wrapper = create$1('div', prefix + '-content-wrapper', container); + this._contentNode = create$1('div', prefix + '-content', wrapper); + + disableClickPropagation(wrapper); + disableScrollPropagation(this._contentNode); + on(wrapper, 'contextmenu', stopPropagation); + + this._tipContainer = create$1('div', prefix + '-tip-container', container); + this._tip = create$1('div', prefix + '-tip', this._tipContainer); + + if (this.options.closeButton) { + var closeButton = this._closeButton = create$1('a', prefix + '-close-button', container); + closeButton.href = '#close'; + closeButton.innerHTML = '×'; + + on(closeButton, 'click', this._onCloseButtonClick, this); + } + }, + + _updateLayout: function () { + var container = this._contentNode, + style = container.style; + + style.width = ''; + style.whiteSpace = 'nowrap'; + + var width = container.offsetWidth; + width = Math.min(width, this.options.maxWidth); + width = Math.max(width, this.options.minWidth); + + style.width = (width + 1) + 'px'; + style.whiteSpace = ''; + + style.height = ''; + + var height = container.offsetHeight, + maxHeight = this.options.maxHeight, + scrolledClass = 'leaflet-popup-scrolled'; + + if (maxHeight && height > maxHeight) { + style.height = maxHeight + 'px'; + addClass(container, scrolledClass); + } else { + removeClass(container, scrolledClass); + } + + this._containerWidth = this._container.offsetWidth; + }, + + _animateZoom: function (e) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center), + anchor = this._getAnchor(); + setPosition(this._container, pos.add(anchor)); + }, + + _adjustPan: function () { + if (!this.options.autoPan || (this._map._panAnim && this._map._panAnim._inProgress)) { return; } + + var map = this._map, + marginBottom = parseInt(getStyle(this._container, 'marginBottom'), 10) || 0, + containerHeight = this._container.offsetHeight + marginBottom, + containerWidth = this._containerWidth, + layerPos = new Point(this._containerLeft, -containerHeight - this._containerBottom); + + layerPos._add(getPosition(this._container)); + + var containerPos = map.layerPointToContainerPoint(layerPos), + padding = toPoint(this.options.autoPanPadding), + paddingTL = toPoint(this.options.autoPanPaddingTopLeft || padding), + paddingBR = toPoint(this.options.autoPanPaddingBottomRight || padding), + size = map.getSize(), + dx = 0, + dy = 0; + + if (containerPos.x + containerWidth + paddingBR.x > size.x) { // right + dx = containerPos.x + containerWidth - size.x + paddingBR.x; + } + if (containerPos.x - dx - paddingTL.x < 0) { // left + dx = containerPos.x - paddingTL.x; + } + if (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom + dy = containerPos.y + containerHeight - size.y + paddingBR.y; + } + if (containerPos.y - dy - paddingTL.y < 0) { // top + dy = containerPos.y - paddingTL.y; + } + + // @namespace Map + // @section Popup events + // @event autopanstart: Event + // Fired when the map starts autopanning when opening a popup. + if (dx || dy) { + map + .fire('autopanstart') + .panBy([dx, dy]); + } + }, + + _onCloseButtonClick: function (e) { + this._close(); + stop(e); + }, + + _getAnchor: function () { + // Where should we anchor the popup on the source layer? + return toPoint(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]); + } + +}); + +// @namespace Popup +// @factory L.popup(options?: Popup options, source?: Layer) +// Instantiates a `Popup` object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the popup with a reference to the Layer to which it refers. +var popup = function (options, source) { + return new Popup(options, source); +}; + + +/* @namespace Map + * @section Interaction Options + * @option closePopupOnClick: Boolean = true + * Set it to `false` if you don't want popups to close when user clicks the map. + */ +Map.mergeOptions({ + closePopupOnClick: true +}); + + +// @namespace Map +// @section Methods for Layers and Controls +Map.include({ + // @method openPopup(popup: Popup): this + // Opens the specified popup while closing the previously opened (to make sure only one is opened at one time for usability). + // @alternative + // @method openPopup(content: String|HTMLElement, latlng: LatLng, options?: Popup options): this + // Creates a popup with the specified content and options and opens it in the given point on a map. + openPopup: function (popup, latlng, options) { + if (!(popup instanceof Popup)) { + popup = new Popup(options).setContent(popup); + } + + if (latlng) { + popup.setLatLng(latlng); + } + + if (this.hasLayer(popup)) { + return this; + } + + if (this._popup && this._popup.options.autoClose) { + this.closePopup(); + } + + this._popup = popup; + return this.addLayer(popup); + }, + + // @method closePopup(popup?: Popup): this + // Closes the popup previously opened with [openPopup](#map-openpopup) (or the given one). + closePopup: function (popup) { + if (!popup || popup === this._popup) { + popup = this._popup; + this._popup = null; + } + if (popup) { + this.removeLayer(popup); + } + return this; + } +}); + +/* + * @namespace Layer + * @section Popup methods example + * + * All layers share a set of methods convenient for binding popups to it. + * + * ```js + * var layer = L.Polygon(latlngs).bindPopup('Hi There!').addTo(map); + * layer.openPopup(); + * layer.closePopup(); + * ``` + * + * Popups will also be automatically opened when the layer is clicked on and closed when the layer is removed from the map or another popup is opened. + */ + +// @section Popup methods +Layer.include({ + + // @method bindPopup(content: String|HTMLElement|Function|Popup, options?: Popup options): this + // Binds a popup to the layer with the passed `content` and sets up the + // necessary event listeners. If a `Function` is passed it will receive + // the layer as the first argument and should return a `String` or `HTMLElement`. + bindPopup: function (content, options) { + + if (content instanceof Popup) { + setOptions(content, options); + this._popup = content; + content._source = this; + } else { + if (!this._popup || options) { + this._popup = new Popup(options, this); + } + this._popup.setContent(content); + } + + if (!this._popupHandlersAdded) { + this.on({ + click: this._openPopup, + keypress: this._onKeyPress, + remove: this.closePopup, + move: this._movePopup + }); + this._popupHandlersAdded = true; + } + + return this; + }, + + // @method unbindPopup(): this + // Removes the popup previously bound with `bindPopup`. + unbindPopup: function () { + if (this._popup) { + this.off({ + click: this._openPopup, + keypress: this._onKeyPress, + remove: this.closePopup, + move: this._movePopup + }); + this._popupHandlersAdded = false; + this._popup = null; + } + return this; + }, + + // @method openPopup(latlng?: LatLng): this + // Opens the bound popup at the specified `latlng` or at the default popup anchor if no `latlng` is passed. + openPopup: function (layer, latlng) { + if (!(layer instanceof Layer)) { + latlng = layer; + layer = this; + } + + if (layer instanceof FeatureGroup) { + for (var id in this._layers) { + layer = this._layers[id]; + break; + } + } + + if (!latlng) { + latlng = layer.getCenter ? layer.getCenter() : layer.getLatLng(); + } + + if (this._popup && this._map) { + // set popup source to this layer + this._popup._source = layer; + + // update the popup (content, layout, ect...) + this._popup.update(); + + // open the popup on the map + this._map.openPopup(this._popup, latlng); + } + + return this; + }, + + // @method closePopup(): this + // Closes the popup bound to this layer if it is open. + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + // @method togglePopup(): this + // Opens or closes the popup bound to this layer depending on its current state. + togglePopup: function (target) { + if (this._popup) { + if (this._popup._map) { + this.closePopup(); + } else { + this.openPopup(target); + } + } + return this; + }, + + // @method isPopupOpen(): boolean + // Returns `true` if the popup bound to this layer is currently open. + isPopupOpen: function () { + return (this._popup ? this._popup.isOpen() : false); + }, + + // @method setPopupContent(content: String|HTMLElement|Popup): this + // Sets the content of the popup bound to this layer. + setPopupContent: function (content) { + if (this._popup) { + this._popup.setContent(content); + } + return this; + }, + + // @method getPopup(): Popup + // Returns the popup bound to this layer. + getPopup: function () { + return this._popup; + }, + + _openPopup: function (e) { + var layer = e.layer || e.target; + + if (!this._popup) { + return; + } + + if (!this._map) { + return; + } + + // prevent map click + stop(e); + + // if this inherits from Path its a vector and we can just + // open the popup at the new location + if (layer instanceof Path) { + this.openPopup(e.layer || e.target, e.latlng); + return; + } + + // otherwise treat it like a marker and figure out + // if we should toggle it open/closed + if (this._map.hasLayer(this._popup) && this._popup._source === layer) { + this.closePopup(); + } else { + this.openPopup(layer, e.latlng); + } + }, + + _movePopup: function (e) { + this._popup.setLatLng(e.latlng); + }, + + _onKeyPress: function (e) { + if (e.originalEvent.keyCode === 13) { + this._openPopup(e); + } + } +}); + +/* + * @class Tooltip + * @inherits DivOverlay + * @aka L.Tooltip + * Used to display small texts on top of map layers. + * + * @example + * + * ```js + * marker.bindTooltip("my tooltip text").openTooltip(); + * ``` + * Note about tooltip offset. Leaflet takes two options in consideration + * for computing tooltip offsetting: + * - the `offset` Tooltip option: it defaults to [0, 0], and it's specific to one tooltip. + * Add a positive x offset to move the tooltip to the right, and a positive y offset to + * move it to the bottom. Negatives will move to the left and top. + * - the `tooltipAnchor` Icon option: this will only be considered for Marker. You + * should adapt this value if you use a custom icon. + */ + + +// @namespace Tooltip +var Tooltip = DivOverlay.extend({ + + // @section + // @aka Tooltip options + options: { + // @option pane: String = 'tooltipPane' + // `Map pane` where the tooltip will be added. + pane: 'tooltipPane', + + // @option offset: Point = Point(0, 0) + // Optional offset of the tooltip position. + offset: [0, 0], + + // @option direction: String = 'auto' + // Direction where to open the tooltip. Possible values are: `right`, `left`, + // `top`, `bottom`, `center`, `auto`. + // `auto` will dynamically switch between `right` and `left` according to the tooltip + // position on the map. + direction: 'auto', + + // @option permanent: Boolean = false + // Whether to open the tooltip permanently or only on mouseover. + permanent: false, + + // @option sticky: Boolean = false + // If true, the tooltip will follow the mouse instead of being fixed at the feature center. + sticky: false, + + // @option interactive: Boolean = false + // If true, the tooltip will listen to the feature events. + interactive: false, + + // @option opacity: Number = 0.9 + // Tooltip container opacity. + opacity: 0.9 + }, + + onAdd: function (map) { + DivOverlay.prototype.onAdd.call(this, map); + this.setOpacity(this.options.opacity); + + // @namespace Map + // @section Tooltip events + // @event tooltipopen: TooltipEvent + // Fired when a tooltip is opened in the map. + map.fire('tooltipopen', {tooltip: this}); + + if (this._source) { + // @namespace Layer + // @section Tooltip events + // @event tooltipopen: TooltipEvent + // Fired when a tooltip bound to this layer is opened. + this._source.fire('tooltipopen', {tooltip: this}, true); + } + }, + + onRemove: function (map) { + DivOverlay.prototype.onRemove.call(this, map); + + // @namespace Map + // @section Tooltip events + // @event tooltipclose: TooltipEvent + // Fired when a tooltip in the map is closed. + map.fire('tooltipclose', {tooltip: this}); + + if (this._source) { + // @namespace Layer + // @section Tooltip events + // @event tooltipclose: TooltipEvent + // Fired when a tooltip bound to this layer is closed. + this._source.fire('tooltipclose', {tooltip: this}, true); + } + }, + + getEvents: function () { + var events = DivOverlay.prototype.getEvents.call(this); + + if (touch && !this.options.permanent) { + events.preclick = this._close; + } + + return events; + }, + + _close: function () { + if (this._map) { + this._map.closeTooltip(this); + } + }, + + _initLayout: function () { + var prefix = 'leaflet-tooltip', + className = prefix + ' ' + (this.options.className || '') + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide'); + + this._contentNode = this._container = create$1('div', className); + }, + + _updateLayout: function () {}, + + _adjustPan: function () {}, + + _setPosition: function (pos) { + var map = this._map, + container = this._container, + centerPoint = map.latLngToContainerPoint(map.getCenter()), + tooltipPoint = map.layerPointToContainerPoint(pos), + direction = this.options.direction, + tooltipWidth = container.offsetWidth, + tooltipHeight = container.offsetHeight, + offset = toPoint(this.options.offset), + anchor = this._getAnchor(); + + if (direction === 'top') { + pos = pos.add(toPoint(-tooltipWidth / 2 + offset.x, -tooltipHeight + offset.y + anchor.y, true)); + } else if (direction === 'bottom') { + pos = pos.subtract(toPoint(tooltipWidth / 2 - offset.x, -offset.y, true)); + } else if (direction === 'center') { + pos = pos.subtract(toPoint(tooltipWidth / 2 + offset.x, tooltipHeight / 2 - anchor.y + offset.y, true)); + } else if (direction === 'right' || direction === 'auto' && tooltipPoint.x < centerPoint.x) { + direction = 'right'; + pos = pos.add(toPoint(offset.x + anchor.x, anchor.y - tooltipHeight / 2 + offset.y, true)); + } else { + direction = 'left'; + pos = pos.subtract(toPoint(tooltipWidth + anchor.x - offset.x, tooltipHeight / 2 - anchor.y - offset.y, true)); + } + + removeClass(container, 'leaflet-tooltip-right'); + removeClass(container, 'leaflet-tooltip-left'); + removeClass(container, 'leaflet-tooltip-top'); + removeClass(container, 'leaflet-tooltip-bottom'); + addClass(container, 'leaflet-tooltip-' + direction); + setPosition(container, pos); + }, + + _updatePosition: function () { + var pos = this._map.latLngToLayerPoint(this._latlng); + this._setPosition(pos); + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._container) { + setOpacity(this._container, opacity); + } + }, + + _animateZoom: function (e) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.center); + this._setPosition(pos); + }, + + _getAnchor: function () { + // Where should we anchor the tooltip on the source layer? + return toPoint(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]); + } + +}); + +// @namespace Tooltip +// @factory L.tooltip(options?: Tooltip options, source?: Layer) +// Instantiates a Tooltip object given an optional `options` object that describes its appearance and location and an optional `source` object that is used to tag the tooltip with a reference to the Layer to which it refers. +var tooltip = function (options, source) { + return new Tooltip(options, source); +}; + +// @namespace Map +// @section Methods for Layers and Controls +Map.include({ + + // @method openTooltip(tooltip: Tooltip): this + // Opens the specified tooltip. + // @alternative + // @method openTooltip(content: String|HTMLElement, latlng: LatLng, options?: Tooltip options): this + // Creates a tooltip with the specified content and options and open it. + openTooltip: function (tooltip, latlng, options) { + if (!(tooltip instanceof Tooltip)) { + tooltip = new Tooltip(options).setContent(tooltip); + } + + if (latlng) { + tooltip.setLatLng(latlng); + } + + if (this.hasLayer(tooltip)) { + return this; + } + + return this.addLayer(tooltip); + }, + + // @method closeTooltip(tooltip?: Tooltip): this + // Closes the tooltip given as parameter. + closeTooltip: function (tooltip) { + if (tooltip) { + this.removeLayer(tooltip); + } + return this; + } + +}); + +/* + * @namespace Layer + * @section Tooltip methods example + * + * All layers share a set of methods convenient for binding tooltips to it. + * + * ```js + * var layer = L.Polygon(latlngs).bindTooltip('Hi There!').addTo(map); + * layer.openTooltip(); + * layer.closeTooltip(); + * ``` + */ + +// @section Tooltip methods +Layer.include({ + + // @method bindTooltip(content: String|HTMLElement|Function|Tooltip, options?: Tooltip options): this + // Binds a tooltip to the layer with the passed `content` and sets up the + // necessary event listeners. If a `Function` is passed it will receive + // the layer as the first argument and should return a `String` or `HTMLElement`. + bindTooltip: function (content, options) { + + if (content instanceof Tooltip) { + setOptions(content, options); + this._tooltip = content; + content._source = this; + } else { + if (!this._tooltip || options) { + this._tooltip = new Tooltip(options, this); + } + this._tooltip.setContent(content); + + } + + this._initTooltipInteractions(); + + if (this._tooltip.options.permanent && this._map && this._map.hasLayer(this)) { + this.openTooltip(); + } + + return this; + }, + + // @method unbindTooltip(): this + // Removes the tooltip previously bound with `bindTooltip`. + unbindTooltip: function () { + if (this._tooltip) { + this._initTooltipInteractions(true); + this.closeTooltip(); + this._tooltip = null; + } + return this; + }, + + _initTooltipInteractions: function (remove$$1) { + if (!remove$$1 && this._tooltipHandlersAdded) { return; } + var onOff = remove$$1 ? 'off' : 'on', + events = { + remove: this.closeTooltip, + move: this._moveTooltip + }; + if (!this._tooltip.options.permanent) { + events.mouseover = this._openTooltip; + events.mouseout = this.closeTooltip; + if (this._tooltip.options.sticky) { + events.mousemove = this._moveTooltip; + } + if (touch) { + events.click = this._openTooltip; + } + } else { + events.add = this._openTooltip; + } + this[onOff](events); + this._tooltipHandlersAdded = !remove$$1; + }, + + // @method openTooltip(latlng?: LatLng): this + // Opens the bound tooltip at the specified `latlng` or at the default tooltip anchor if no `latlng` is passed. + openTooltip: function (layer, latlng) { + if (!(layer instanceof Layer)) { + latlng = layer; + layer = this; + } + + if (layer instanceof FeatureGroup) { + for (var id in this._layers) { + layer = this._layers[id]; + break; + } + } + + if (!latlng) { + latlng = layer.getCenter ? layer.getCenter() : layer.getLatLng(); + } + + if (this._tooltip && this._map) { + + // set tooltip source to this layer + this._tooltip._source = layer; + + // update the tooltip (content, layout, ect...) + this._tooltip.update(); + + // open the tooltip on the map + this._map.openTooltip(this._tooltip, latlng); + + // Tooltip container may not be defined if not permanent and never + // opened. + if (this._tooltip.options.interactive && this._tooltip._container) { + addClass(this._tooltip._container, 'leaflet-clickable'); + this.addInteractiveTarget(this._tooltip._container); + } + } + + return this; + }, + + // @method closeTooltip(): this + // Closes the tooltip bound to this layer if it is open. + closeTooltip: function () { + if (this._tooltip) { + this._tooltip._close(); + if (this._tooltip.options.interactive && this._tooltip._container) { + removeClass(this._tooltip._container, 'leaflet-clickable'); + this.removeInteractiveTarget(this._tooltip._container); + } + } + return this; + }, + + // @method toggleTooltip(): this + // Opens or closes the tooltip bound to this layer depending on its current state. + toggleTooltip: function (target) { + if (this._tooltip) { + if (this._tooltip._map) { + this.closeTooltip(); + } else { + this.openTooltip(target); + } + } + return this; + }, + + // @method isTooltipOpen(): boolean + // Returns `true` if the tooltip bound to this layer is currently open. + isTooltipOpen: function () { + return this._tooltip.isOpen(); + }, + + // @method setTooltipContent(content: String|HTMLElement|Tooltip): this + // Sets the content of the tooltip bound to this layer. + setTooltipContent: function (content) { + if (this._tooltip) { + this._tooltip.setContent(content); + } + return this; + }, + + // @method getTooltip(): Tooltip + // Returns the tooltip bound to this layer. + getTooltip: function () { + return this._tooltip; + }, + + _openTooltip: function (e) { + var layer = e.layer || e.target; + + if (!this._tooltip || !this._map) { + return; + } + this.openTooltip(layer, this._tooltip.options.sticky ? e.latlng : undefined); + }, + + _moveTooltip: function (e) { + var latlng = e.latlng, containerPoint, layerPoint; + if (this._tooltip.options.sticky && e.originalEvent) { + containerPoint = this._map.mouseEventToContainerPoint(e.originalEvent); + layerPoint = this._map.containerPointToLayerPoint(containerPoint); + latlng = this._map.layerPointToLatLng(layerPoint); + } + this._tooltip.setLatLng(latlng); + } +}); + +/* + * @class DivIcon + * @aka L.DivIcon + * @inherits Icon + * + * Represents a lightweight icon for markers that uses a simple `<div>` + * element instead of an image. Inherits from `Icon` but ignores the `iconUrl` and shadow options. + * + * @example + * ```js + * var myIcon = L.divIcon({className: 'my-div-icon'}); + * // you can set .my-div-icon styles in CSS + * + * L.marker([50.505, 30.57], {icon: myIcon}).addTo(map); + * ``` + * + * By default, it has a 'leaflet-div-icon' CSS class and is styled as a little white square with a shadow. + */ + +var DivIcon = Icon.extend({ + options: { + // @section + // @aka DivIcon options + iconSize: [12, 12], // also can be set through CSS + + // iconAnchor: (Point), + // popupAnchor: (Point), + + // @option html: String = '' + // Custom HTML code to put inside the div element, empty by default. + html: false, + + // @option bgPos: Point = [0, 0] + // Optional relative position of the background, in pixels + bgPos: null, + + className: 'leaflet-div-icon' + }, + + createIcon: function (oldIcon) { + var div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'), + options = this.options; + + div.innerHTML = options.html !== false ? options.html : ''; + + if (options.bgPos) { + var bgPos = toPoint(options.bgPos); + div.style.backgroundPosition = (-bgPos.x) + 'px ' + (-bgPos.y) + 'px'; + } + this._setIconStyles(div, 'icon'); + + return div; + }, + + createShadow: function () { + return null; + } +}); + +// @factory L.divIcon(options: DivIcon options) +// Creates a `DivIcon` instance with the given options. +function divIcon(options) { + return new DivIcon(options); +} + +Icon.Default = IconDefault; + +/* + * @class GridLayer + * @inherits Layer + * @aka L.GridLayer + * + * Generic class for handling a tiled grid of HTML elements. This is the base class for all tile layers and replaces `TileLayer.Canvas`. + * GridLayer can be extended to create a tiled grid of HTML elements like `<canvas>`, `<img>` or `<div>`. GridLayer will handle creating and animating these DOM elements for you. + * + * + * @section Synchronous usage + * @example + * + * To create a custom layer, extend GridLayer and implement the `createTile()` method, which will be passed a `Point` object with the `x`, `y`, and `z` (zoom level) coordinates to draw your tile. + * + * ```js + * var CanvasLayer = L.GridLayer.extend({ + * createTile: function(coords){ + * // create a <canvas> element for drawing + * var tile = L.DomUtil.create('canvas', 'leaflet-tile'); + * + * // setup tile width and height according to the options + * var size = this.getTileSize(); + * tile.width = size.x; + * tile.height = size.y; + * + * // get a canvas context and draw something on it using coords.x, coords.y and coords.z + * var ctx = tile.getContext('2d'); + * + * // return the tile so it can be rendered on screen + * return tile; + * } + * }); + * ``` + * + * @section Asynchronous usage + * @example + * + * Tile creation can also be asynchronous, this is useful when using a third-party drawing library. Once the tile is finished drawing it can be passed to the `done()` callback. + * + * ```js + * var CanvasLayer = L.GridLayer.extend({ + * createTile: function(coords, done){ + * var error; + * + * // create a <canvas> element for drawing + * var tile = L.DomUtil.create('canvas', 'leaflet-tile'); + * + * // setup tile width and height according to the options + * var size = this.getTileSize(); + * tile.width = size.x; + * tile.height = size.y; + * + * // draw something asynchronously and pass the tile to the done() callback + * setTimeout(function() { + * done(error, tile); + * }, 1000); + * + * return tile; + * } + * }); + * ``` + * + * @section + */ + + +var GridLayer = Layer.extend({ + + // @section + // @aka GridLayer options + options: { + // @option tileSize: Number|Point = 256 + // Width and height of tiles in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise. + tileSize: 256, + + // @option opacity: Number = 1.0 + // Opacity of the tiles. Can be used in the `createTile()` function. + opacity: 1, + + // @option updateWhenIdle: Boolean = (depends) + // Load new tiles only when panning ends. + // `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation. + // `false` otherwise in order to display new tiles _during_ panning, since it is easy to pan outside the + // [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers. + updateWhenIdle: mobile, + + // @option updateWhenZooming: Boolean = true + // By default, a smooth zoom animation (during a [touch zoom](#map-touchzoom) or a [`flyTo()`](#map-flyto)) will update grid layers every integer zoom level. Setting this option to `false` will update the grid layer only when the smooth animation ends. + updateWhenZooming: true, + + // @option updateInterval: Number = 200 + // Tiles will not update more than once every `updateInterval` milliseconds when panning. + updateInterval: 200, + + // @option zIndex: Number = 1 + // The explicit zIndex of the tile layer. + zIndex: 1, + + // @option bounds: LatLngBounds = undefined + // If set, tiles will only be loaded inside the set `LatLngBounds`. + bounds: null, + + // @option minZoom: Number = 0 + // The minimum zoom level down to which this layer will be displayed (inclusive). + minZoom: 0, + + // @option maxZoom: Number = undefined + // The maximum zoom level up to which this layer will be displayed (inclusive). + maxZoom: undefined, + + // @option maxNativeZoom: Number = undefined + // Maximum zoom number the tile source has available. If it is specified, + // the tiles on all zoom levels higher than `maxNativeZoom` will be loaded + // from `maxNativeZoom` level and auto-scaled. + maxNativeZoom: undefined, + + // @option minNativeZoom: Number = undefined + // Minimum zoom number the tile source has available. If it is specified, + // the tiles on all zoom levels lower than `minNativeZoom` will be loaded + // from `minNativeZoom` level and auto-scaled. + minNativeZoom: undefined, + + // @option noWrap: Boolean = false + // Whether the layer is wrapped around the antimeridian. If `true`, the + // GridLayer will only be displayed once at low zoom levels. Has no + // effect when the [map CRS](#map-crs) doesn't wrap around. Can be used + // in combination with [`bounds`](#gridlayer-bounds) to prevent requesting + // tiles outside the CRS limits. + noWrap: false, + + // @option pane: String = 'tilePane' + // `Map pane` where the grid layer will be added. + pane: 'tilePane', + + // @option className: String = '' + // A custom class name to assign to the tile layer. Empty by default. + className: '', + + // @option keepBuffer: Number = 2 + // When panning the map, keep this many rows and columns of tiles before unloading them. + keepBuffer: 2 + }, + + initialize: function (options) { + setOptions(this, options); + }, + + onAdd: function () { + this._initContainer(); + + this._levels = {}; + this._tiles = {}; + + this._resetView(); + this._update(); + }, + + beforeAdd: function (map) { + map._addZoomLimit(this); + }, + + onRemove: function (map) { + this._removeAllTiles(); + remove(this._container); + map._removeZoomLimit(this); + this._container = null; + this._tileZoom = undefined; + }, + + // @method bringToFront: this + // Brings the tile layer to the top of all tile layers. + bringToFront: function () { + if (this._map) { + toFront(this._container); + this._setAutoZIndex(Math.max); + } + return this; + }, + + // @method bringToBack: this + // Brings the tile layer to the bottom of all tile layers. + bringToBack: function () { + if (this._map) { + toBack(this._container); + this._setAutoZIndex(Math.min); + } + return this; + }, + + // @method getContainer: HTMLElement + // Returns the HTML element that contains the tiles for this layer. + getContainer: function () { + return this._container; + }, + + // @method setOpacity(opacity: Number): this + // Changes the [opacity](#gridlayer-opacity) of the grid layer. + setOpacity: function (opacity) { + this.options.opacity = opacity; + this._updateOpacity(); + return this; + }, + + // @method setZIndex(zIndex: Number): this + // Changes the [zIndex](#gridlayer-zindex) of the grid layer. + setZIndex: function (zIndex) { + this.options.zIndex = zIndex; + this._updateZIndex(); + + return this; + }, + + // @method isLoading: Boolean + // Returns `true` if any tile in the grid layer has not finished loading. + isLoading: function () { + return this._loading; + }, + + // @method redraw: this + // Causes the layer to clear all the tiles and request them again. + redraw: function () { + if (this._map) { + this._removeAllTiles(); + this._update(); + } + return this; + }, + + getEvents: function () { + var events = { + viewprereset: this._invalidateAll, + viewreset: this._resetView, + zoom: this._resetView, + moveend: this._onMoveEnd + }; + + if (!this.options.updateWhenIdle) { + // update tiles on move, but not more often than once per given interval + if (!this._onMove) { + this._onMove = throttle(this._onMoveEnd, this.options.updateInterval, this); + } + + events.move = this._onMove; + } + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + // @section Extension methods + // Layers extending `GridLayer` shall reimplement the following method. + // @method createTile(coords: Object, done?: Function): HTMLElement + // Called only internally, must be overridden by classes extending `GridLayer`. + // Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback + // is specified, it must be called when the tile has finished loading and drawing. + createTile: function () { + return document.createElement('div'); + }, + + // @section + // @method getTileSize: Point + // Normalizes the [tileSize option](#gridlayer-tilesize) into a point. Used by the `createTile()` method. + getTileSize: function () { + var s = this.options.tileSize; + return s instanceof Point ? s : new Point(s, s); + }, + + _updateZIndex: function () { + if (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) { + this._container.style.zIndex = this.options.zIndex; + } + }, + + _setAutoZIndex: function (compare) { + // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back) + + var layers = this.getPane().children, + edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min + + for (var i = 0, len = layers.length, zIndex; i < len; i++) { + + zIndex = layers[i].style.zIndex; + + if (layers[i] !== this._container && zIndex) { + edgeZIndex = compare(edgeZIndex, +zIndex); + } + } + + if (isFinite(edgeZIndex)) { + this.options.zIndex = edgeZIndex + compare(-1, 1); + this._updateZIndex(); + } + }, + + _updateOpacity: function () { + if (!this._map) { return; } + + // IE doesn't inherit filter opacity properly, so we're forced to set it on tiles + if (ielt9) { return; } + + setOpacity(this._container, this.options.opacity); + + var now = +new Date(), + nextFrame = false, + willPrune = false; + + for (var key in this._tiles) { + var tile = this._tiles[key]; + if (!tile.current || !tile.loaded) { continue; } + + var fade = Math.min(1, (now - tile.loaded) / 200); + + setOpacity(tile.el, fade); + if (fade < 1) { + nextFrame = true; + } else { + if (tile.active) { + willPrune = true; + } else { + this._onOpaqueTile(tile); + } + tile.active = true; + } + } + + if (willPrune && !this._noPrune) { this._pruneTiles(); } + + if (nextFrame) { + cancelAnimFrame(this._fadeFrame); + this._fadeFrame = requestAnimFrame(this._updateOpacity, this); + } + }, + + _onOpaqueTile: falseFn, + + _initContainer: function () { + if (this._container) { return; } + + this._container = create$1('div', 'leaflet-layer ' + (this.options.className || '')); + this._updateZIndex(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + + this.getPane().appendChild(this._container); + }, + + _updateLevels: function () { + + var zoom = this._tileZoom, + maxZoom = this.options.maxZoom; + + if (zoom === undefined) { return undefined; } + + for (var z in this._levels) { + if (this._levels[z].el.children.length || z === zoom) { + this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); + this._onUpdateLevel(z); + } else { + remove(this._levels[z].el); + this._removeTilesAtZoom(z); + this._onRemoveLevel(z); + delete this._levels[z]; + } + } + + var level = this._levels[zoom], + map = this._map; + + if (!level) { + level = this._levels[zoom] = {}; + + level.el = create$1('div', 'leaflet-tile-container leaflet-zoom-animated', this._container); + level.el.style.zIndex = maxZoom; + + level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round(); + level.zoom = zoom; + + this._setZoomTransform(level, map.getCenter(), map.getZoom()); + + // force the browser to consider the newly added element for transition + falseFn(level.el.offsetWidth); + + this._onCreateLevel(level); + } + + this._level = level; + + return level; + }, + + _onUpdateLevel: falseFn, + + _onRemoveLevel: falseFn, + + _onCreateLevel: falseFn, + + _pruneTiles: function () { + if (!this._map) { + return; + } + + var key, tile; + + var zoom = this._map.getZoom(); + if (zoom > this.options.maxZoom || + zoom < this.options.minZoom) { + this._removeAllTiles(); + return; + } + + for (key in this._tiles) { + tile = this._tiles[key]; + tile.retain = tile.current; + } + + for (key in this._tiles) { + tile = this._tiles[key]; + if (tile.current && !tile.active) { + var coords = tile.coords; + if (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) { + this._retainChildren(coords.x, coords.y, coords.z, coords.z + 2); + } + } + } + + for (key in this._tiles) { + if (!this._tiles[key].retain) { + this._removeTile(key); + } + } + }, + + _removeTilesAtZoom: function (zoom) { + for (var key in this._tiles) { + if (this._tiles[key].coords.z !== zoom) { + continue; + } + this._removeTile(key); + } + }, + + _removeAllTiles: function () { + for (var key in this._tiles) { + this._removeTile(key); + } + }, + + _invalidateAll: function () { + for (var z in this._levels) { + remove(this._levels[z].el); + this._onRemoveLevel(z); + delete this._levels[z]; + } + this._removeAllTiles(); + + this._tileZoom = undefined; + }, + + _retainParent: function (x, y, z, minZoom) { + var x2 = Math.floor(x / 2), + y2 = Math.floor(y / 2), + z2 = z - 1, + coords2 = new Point(+x2, +y2); + coords2.z = +z2; + + var key = this._tileCoordsToKey(coords2), + tile = this._tiles[key]; + + if (tile && tile.active) { + tile.retain = true; + return true; + + } else if (tile && tile.loaded) { + tile.retain = true; + } + + if (z2 > minZoom) { + return this._retainParent(x2, y2, z2, minZoom); + } + + return false; + }, + + _retainChildren: function (x, y, z, maxZoom) { + + for (var i = 2 * x; i < 2 * x + 2; i++) { + for (var j = 2 * y; j < 2 * y + 2; j++) { + + var coords = new Point(i, j); + coords.z = z + 1; + + var key = this._tileCoordsToKey(coords), + tile = this._tiles[key]; + + if (tile && tile.active) { + tile.retain = true; + continue; + + } else if (tile && tile.loaded) { + tile.retain = true; + } + + if (z + 1 < maxZoom) { + this._retainChildren(i, j, z + 1, maxZoom); + } + } + } + }, + + _resetView: function (e) { + var animating = e && (e.pinch || e.flyTo); + this._setView(this._map.getCenter(), this._map.getZoom(), animating, animating); + }, + + _animateZoom: function (e) { + this._setView(e.center, e.zoom, true, e.noUpdate); + }, + + _clampZoom: function (zoom) { + var options = this.options; + + if (undefined !== options.minNativeZoom && zoom < options.minNativeZoom) { + return options.minNativeZoom; + } + + if (undefined !== options.maxNativeZoom && options.maxNativeZoom < zoom) { + return options.maxNativeZoom; + } + + return zoom; + }, + + _setView: function (center, zoom, noPrune, noUpdate) { + var tileZoom = this._clampZoom(Math.round(zoom)); + if ((this.options.maxZoom !== undefined && tileZoom > this.options.maxZoom) || + (this.options.minZoom !== undefined && tileZoom < this.options.minZoom)) { + tileZoom = undefined; + } + + var tileZoomChanged = this.options.updateWhenZooming && (tileZoom !== this._tileZoom); + + if (!noUpdate || tileZoomChanged) { + + this._tileZoom = tileZoom; + + if (this._abortLoading) { + this._abortLoading(); + } + + this._updateLevels(); + this._resetGrid(); + + if (tileZoom !== undefined) { + this._update(center); + } + + if (!noPrune) { + this._pruneTiles(); + } + + // Flag to prevent _updateOpacity from pruning tiles during + // a zoom anim or a pinch gesture + this._noPrune = !!noPrune; + } + + this._setZoomTransforms(center, zoom); + }, + + _setZoomTransforms: function (center, zoom) { + for (var i in this._levels) { + this._setZoomTransform(this._levels[i], center, zoom); + } + }, + + _setZoomTransform: function (level, center, zoom) { + var scale = this._map.getZoomScale(zoom, level.zoom), + translate = level.origin.multiplyBy(scale) + .subtract(this._map._getNewPixelOrigin(center, zoom)).round(); + + if (any3d) { + setTransform(level.el, translate, scale); + } else { + setPosition(level.el, translate); + } + }, + + _resetGrid: function () { + var map = this._map, + crs = map.options.crs, + tileSize = this._tileSize = this.getTileSize(), + tileZoom = this._tileZoom; + + var bounds = this._map.getPixelWorldBounds(this._tileZoom); + if (bounds) { + this._globalTileRange = this._pxBoundsToTileRange(bounds); + } + + this._wrapX = crs.wrapLng && !this.options.noWrap && [ + Math.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x), + Math.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y) + ]; + this._wrapY = crs.wrapLat && !this.options.noWrap && [ + Math.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x), + Math.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y) + ]; + }, + + _onMoveEnd: function () { + if (!this._map || this._map._animatingZoom) { return; } + + this._update(); + }, + + _getTiledPixelBounds: function (center) { + var map = this._map, + mapZoom = map._animatingZoom ? Math.max(map._animateToZoom, map.getZoom()) : map.getZoom(), + scale = map.getZoomScale(mapZoom, this._tileZoom), + pixelCenter = map.project(center, this._tileZoom).floor(), + halfSize = map.getSize().divideBy(scale * 2); + + return new Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize)); + }, + + // Private method to load tiles in the grid's active zoom level according to map bounds + _update: function (center) { + var map = this._map; + if (!map) { return; } + var zoom = this._clampZoom(map.getZoom()); + + if (center === undefined) { center = map.getCenter(); } + if (this._tileZoom === undefined) { return; } // if out of minzoom/maxzoom + + var pixelBounds = this._getTiledPixelBounds(center), + tileRange = this._pxBoundsToTileRange(pixelBounds), + tileCenter = tileRange.getCenter(), + queue = [], + margin = this.options.keepBuffer, + noPruneRange = new Bounds(tileRange.getBottomLeft().subtract([margin, -margin]), + tileRange.getTopRight().add([margin, -margin])); + + // Sanity check: panic if the tile range contains Infinity somewhere. + if (!(isFinite(tileRange.min.x) && + isFinite(tileRange.min.y) && + isFinite(tileRange.max.x) && + isFinite(tileRange.max.y))) { throw new Error('Attempted to load an infinite number of tiles'); } + + for (var key in this._tiles) { + var c = this._tiles[key].coords; + if (c.z !== this._tileZoom || !noPruneRange.contains(new Point(c.x, c.y))) { + this._tiles[key].current = false; + } + } + + // _update just loads more tiles. If the tile zoom level differs too much + // from the map's, let _setView reset levels and prune old tiles. + if (Math.abs(zoom - this._tileZoom) > 1) { this._setView(center, zoom); return; } + + // create a queue of coordinates to load tiles from + for (var j = tileRange.min.y; j <= tileRange.max.y; j++) { + for (var i = tileRange.min.x; i <= tileRange.max.x; i++) { + var coords = new Point(i, j); + coords.z = this._tileZoom; + + if (!this._isValidTile(coords)) { continue; } + + var tile = this._tiles[this._tileCoordsToKey(coords)]; + if (tile) { + tile.current = true; + } else { + queue.push(coords); + } + } + } + + // sort tile queue to load tiles in order of their distance to center + queue.sort(function (a, b) { + return a.distanceTo(tileCenter) - b.distanceTo(tileCenter); + }); + + if (queue.length !== 0) { + // if it's the first batch of tiles to load + if (!this._loading) { + this._loading = true; + // @event loading: Event + // Fired when the grid layer starts loading tiles. + this.fire('loading'); + } + + // create DOM fragment to append tiles in one batch + var fragment = document.createDocumentFragment(); + + for (i = 0; i < queue.length; i++) { + this._addTile(queue[i], fragment); + } + + this._level.el.appendChild(fragment); + } + }, + + _isValidTile: function (coords) { + var crs = this._map.options.crs; + + if (!crs.infinite) { + // don't load tile if it's out of bounds and not wrapped + var bounds = this._globalTileRange; + if ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) || + (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; } + } + + if (!this.options.bounds) { return true; } + + // don't load tile if it doesn't intersect the bounds in options + var tileBounds = this._tileCoordsToBounds(coords); + return toLatLngBounds(this.options.bounds).overlaps(tileBounds); + }, + + _keyToBounds: function (key) { + return this._tileCoordsToBounds(this._keyToTileCoords(key)); + }, + + _tileCoordsToNwSe: function (coords) { + var map = this._map, + tileSize = this.getTileSize(), + nwPoint = coords.scaleBy(tileSize), + sePoint = nwPoint.add(tileSize), + nw = map.unproject(nwPoint, coords.z), + se = map.unproject(sePoint, coords.z); + return [nw, se]; + }, + + // converts tile coordinates to its geographical bounds + _tileCoordsToBounds: function (coords) { + var bp = this._tileCoordsToNwSe(coords), + bounds = new LatLngBounds(bp[0], bp[1]); + + if (!this.options.noWrap) { + bounds = this._map.wrapLatLngBounds(bounds); + } + return bounds; + }, + // converts tile coordinates to key for the tile cache + _tileCoordsToKey: function (coords) { + return coords.x + ':' + coords.y + ':' + coords.z; + }, + + // converts tile cache key to coordinates + _keyToTileCoords: function (key) { + var k = key.split(':'), + coords = new Point(+k[0], +k[1]); + coords.z = +k[2]; + return coords; + }, + + _removeTile: function (key) { + var tile = this._tiles[key]; + if (!tile) { return; } + + // Cancels any pending http requests associated with the tile + // unless we're on Android's stock browser, + // see https://github.com/Leaflet/Leaflet/issues/137 + if (!androidStock) { + tile.el.setAttribute('src', emptyImageUrl); + } + remove(tile.el); + + delete this._tiles[key]; + + // @event tileunload: TileEvent + // Fired when a tile is removed (e.g. when a tile goes off the screen). + this.fire('tileunload', { + tile: tile.el, + coords: this._keyToTileCoords(key) + }); + }, + + _initTile: function (tile) { + addClass(tile, 'leaflet-tile'); + + var tileSize = this.getTileSize(); + tile.style.width = tileSize.x + 'px'; + tile.style.height = tileSize.y + 'px'; + + tile.onselectstart = falseFn; + tile.onmousemove = falseFn; + + // update opacity on tiles in IE7-8 because of filter inheritance problems + if (ielt9 && this.options.opacity < 1) { + setOpacity(tile, this.options.opacity); + } + + // without this hack, tiles disappear after zoom on Chrome for Android + // https://github.com/Leaflet/Leaflet/issues/2078 + if (android && !android23) { + tile.style.WebkitBackfaceVisibility = 'hidden'; + } + }, + + _addTile: function (coords, container) { + var tilePos = this._getTilePos(coords), + key = this._tileCoordsToKey(coords); + + var tile = this.createTile(this._wrapCoords(coords), bind(this._tileReady, this, coords)); + + this._initTile(tile); + + // if createTile is defined with a second argument ("done" callback), + // we know that tile is async and will be ready later; otherwise + if (this.createTile.length < 2) { + // mark tile as ready, but delay one frame for opacity animation to happen + requestAnimFrame(bind(this._tileReady, this, coords, null, tile)); + } + + setPosition(tile, tilePos); + + // save tile in cache + this._tiles[key] = { + el: tile, + coords: coords, + current: true + }; + + container.appendChild(tile); + // @event tileloadstart: TileEvent + // Fired when a tile is requested and starts loading. + this.fire('tileloadstart', { + tile: tile, + coords: coords + }); + }, + + _tileReady: function (coords, err, tile) { + if (!this._map) { return; } + + if (err) { + // @event tileerror: TileErrorEvent + // Fired when there is an error loading a tile. + this.fire('tileerror', { + error: err, + tile: tile, + coords: coords + }); + } + + var key = this._tileCoordsToKey(coords); + + tile = this._tiles[key]; + if (!tile) { return; } + + tile.loaded = +new Date(); + if (this._map._fadeAnimated) { + setOpacity(tile.el, 0); + cancelAnimFrame(this._fadeFrame); + this._fadeFrame = requestAnimFrame(this._updateOpacity, this); + } else { + tile.active = true; + this._pruneTiles(); + } + + if (!err) { + addClass(tile.el, 'leaflet-tile-loaded'); + + // @event tileload: TileEvent + // Fired when a tile loads. + this.fire('tileload', { + tile: tile.el, + coords: coords + }); + } + + if (this._noTilesToLoad()) { + this._loading = false; + // @event load: Event + // Fired when the grid layer loaded all visible tiles. + this.fire('load'); + + if (ielt9 || !this._map._fadeAnimated) { + requestAnimFrame(this._pruneTiles, this); + } else { + // Wait a bit more than 0.2 secs (the duration of the tile fade-in) + // to trigger a pruning. + setTimeout(bind(this._pruneTiles, this), 250); + } + } + }, + + _getTilePos: function (coords) { + return coords.scaleBy(this.getTileSize()).subtract(this._level.origin); + }, + + _wrapCoords: function (coords) { + var newCoords = new Point( + this._wrapX ? wrapNum(coords.x, this._wrapX) : coords.x, + this._wrapY ? wrapNum(coords.y, this._wrapY) : coords.y); + newCoords.z = coords.z; + return newCoords; + }, + + _pxBoundsToTileRange: function (bounds) { + var tileSize = this.getTileSize(); + return new Bounds( + bounds.min.unscaleBy(tileSize).floor(), + bounds.max.unscaleBy(tileSize).ceil().subtract([1, 1])); + }, + + _noTilesToLoad: function () { + for (var key in this._tiles) { + if (!this._tiles[key].loaded) { return false; } + } + return true; + } +}); + +// @factory L.gridLayer(options?: GridLayer options) +// Creates a new instance of GridLayer with the supplied options. +function gridLayer(options) { + return new GridLayer(options); +} + +/* + * @class TileLayer + * @inherits GridLayer + * @aka L.TileLayer + * Used to load and display tile layers on the map. Extends `GridLayer`. + * + * @example + * + * ```js + * L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar'}).addTo(map); + * ``` + * + * @section URL template + * @example + * + * A string of the following form: + * + * ``` + * 'http://{s}.somedomain.com/blabla/{z}/{x}/{y}{r}.png' + * ``` + * + * `{s}` means one of the available subdomains (used sequentially to help with browser parallel requests per domain limitation; subdomain values are specified in options; `a`, `b` or `c` by default, can be omitted), `{z}` — zoom level, `{x}` and `{y}` — tile coordinates. `{r}` can be used to add "@2x" to the URL to load retina tiles. + * + * You can use custom keys in the template, which will be [evaluated](#util-template) from TileLayer options, like this: + * + * ``` + * L.tileLayer('http://{s}.somedomain.com/{foo}/{z}/{x}/{y}.png', {foo: 'bar'}); + * ``` + */ + + +var TileLayer = GridLayer.extend({ + + // @section + // @aka TileLayer options + options: { + // @option minZoom: Number = 0 + // The minimum zoom level down to which this layer will be displayed (inclusive). + minZoom: 0, + + // @option maxZoom: Number = 18 + // The maximum zoom level up to which this layer will be displayed (inclusive). + maxZoom: 18, + + // @option subdomains: String|String[] = 'abc' + // Subdomains of the tile service. Can be passed in the form of one string (where each letter is a subdomain name) or an array of strings. + subdomains: 'abc', + + // @option errorTileUrl: String = '' + // URL to the tile image to show in place of the tile that failed to load. + errorTileUrl: '', + + // @option zoomOffset: Number = 0 + // The zoom number used in tile URLs will be offset with this value. + zoomOffset: 0, + + // @option tms: Boolean = false + // If `true`, inverses Y axis numbering for tiles (turn this on for [TMS](https://en.wikipedia.org/wiki/Tile_Map_Service) services). + tms: false, + + // @option zoomReverse: Boolean = false + // If set to true, the zoom number used in tile URLs will be reversed (`maxZoom - zoom` instead of `zoom`) + zoomReverse: false, + + // @option detectRetina: Boolean = false + // If `true` and user is on a retina display, it will request four tiles of half the specified size and a bigger zoom level in place of one to utilize the high resolution. + detectRetina: false, + + // @option crossOrigin: Boolean = false + // If true, all tiles will have their crossOrigin attribute set to ''. This is needed if you want to access tile pixel data. + crossOrigin: false + }, + + initialize: function (url, options) { + + this._url = url; + + options = setOptions(this, options); + + // detecting retina displays, adjusting tileSize and zoom levels + if (options.detectRetina && retina && options.maxZoom > 0) { + + options.tileSize = Math.floor(options.tileSize / 2); + + if (!options.zoomReverse) { + options.zoomOffset++; + options.maxZoom--; + } else { + options.zoomOffset--; + options.minZoom++; + } + + options.minZoom = Math.max(0, options.minZoom); + } + + if (typeof options.subdomains === 'string') { + options.subdomains = options.subdomains.split(''); + } + + // for https://github.com/Leaflet/Leaflet/issues/137 + if (!android) { + this.on('tileunload', this._onTileRemove); + } + }, + + // @method setUrl(url: String, noRedraw?: Boolean): this + // Updates the layer's URL template and redraws it (unless `noRedraw` is set to `true`). + setUrl: function (url, noRedraw) { + this._url = url; + + if (!noRedraw) { + this.redraw(); + } + return this; + }, + + // @method createTile(coords: Object, done?: Function): HTMLElement + // Called only internally, overrides GridLayer's [`createTile()`](#gridlayer-createtile) + // to return an `<img>` HTML element with the appropriate image URL given `coords`. The `done` + // callback is called when the tile has been loaded. + createTile: function (coords, done) { + var tile = document.createElement('img'); + + on(tile, 'load', bind(this._tileOnLoad, this, done, tile)); + on(tile, 'error', bind(this._tileOnError, this, done, tile)); + + if (this.options.crossOrigin) { + tile.crossOrigin = ''; + } + + /* + Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons + http://www.w3.org/TR/WCAG20-TECHS/H67 + */ + tile.alt = ''; + + /* + Set role="presentation" to force screen readers to ignore this + https://www.w3.org/TR/wai-aria/roles#textalternativecomputation + */ + tile.setAttribute('role', 'presentation'); + + tile.src = this.getTileUrl(coords); + + return tile; + }, + + // @section Extension methods + // @uninheritable + // Layers extending `TileLayer` might reimplement the following method. + // @method getTileUrl(coords: Object): String + // Called only internally, returns the URL for a tile given its coordinates. + // Classes extending `TileLayer` can override this function to provide custom tile URL naming schemes. + getTileUrl: function (coords) { + var data = { + r: retina ? '@2x' : '', + s: this._getSubdomain(coords), + x: coords.x, + y: coords.y, + z: this._getZoomForUrl() + }; + if (this._map && !this._map.options.crs.infinite) { + var invertedY = this._globalTileRange.max.y - coords.y; + if (this.options.tms) { + data['y'] = invertedY; + } + data['-y'] = invertedY; + } + + return template(this._url, extend(data, this.options)); + }, + + _tileOnLoad: function (done, tile) { + // For https://github.com/Leaflet/Leaflet/issues/3332 + if (ielt9) { + setTimeout(bind(done, this, null, tile), 0); + } else { + done(null, tile); + } + }, + + _tileOnError: function (done, tile, e) { + var errorUrl = this.options.errorTileUrl; + if (errorUrl && tile.getAttribute('src') !== errorUrl) { + tile.src = errorUrl; + } + done(e, tile); + }, + + _onTileRemove: function (e) { + e.tile.onload = null; + }, + + _getZoomForUrl: function () { + var zoom = this._tileZoom, + maxZoom = this.options.maxZoom, + zoomReverse = this.options.zoomReverse, + zoomOffset = this.options.zoomOffset; + + if (zoomReverse) { + zoom = maxZoom - zoom; + } + + return zoom + zoomOffset; + }, + + _getSubdomain: function (tilePoint) { + var index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length; + return this.options.subdomains[index]; + }, + + // stops loading all tiles in the background layer + _abortLoading: function () { + var i, tile; + for (i in this._tiles) { + if (this._tiles[i].coords.z !== this._tileZoom) { + tile = this._tiles[i].el; + + tile.onload = falseFn; + tile.onerror = falseFn; + + if (!tile.complete) { + tile.src = emptyImageUrl; + remove(tile); + delete this._tiles[i]; + } + } + } + } +}); + + +// @factory L.tilelayer(urlTemplate: String, options?: TileLayer options) +// Instantiates a tile layer object given a `URL template` and optionally an options object. + +function tileLayer(url, options) { + return new TileLayer(url, options); +} + +/* + * @class TileLayer.WMS + * @inherits TileLayer + * @aka L.TileLayer.WMS + * Used to display [WMS](https://en.wikipedia.org/wiki/Web_Map_Service) services as tile layers on the map. Extends `TileLayer`. + * + * @example + * + * ```js + * var nexrad = L.tileLayer.wms("http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r.cgi", { + * layers: 'nexrad-n0r-900913', + * format: 'image/png', + * transparent: true, + * attribution: "Weather data © 2012 IEM Nexrad" + * }); + * ``` + */ + +var TileLayerWMS = TileLayer.extend({ + + // @section + // @aka TileLayer.WMS options + // If any custom options not documented here are used, they will be sent to the + // WMS server as extra parameters in each request URL. This can be useful for + // [non-standard vendor WMS parameters](http://docs.geoserver.org/stable/en/user/services/wms/vendor.html). + defaultWmsParams: { + service: 'WMS', + request: 'GetMap', + + // @option layers: String = '' + // **(required)** Comma-separated list of WMS layers to show. + layers: '', + + // @option styles: String = '' + // Comma-separated list of WMS styles. + styles: '', + + // @option format: String = 'image/jpeg' + // WMS image format (use `'image/png'` for layers with transparency). + format: 'image/jpeg', + + // @option transparent: Boolean = false + // If `true`, the WMS service will return images with transparency. + transparent: false, + + // @option version: String = '1.1.1' + // Version of the WMS service to use + version: '1.1.1' + }, + + options: { + // @option crs: CRS = null + // Coordinate Reference System to use for the WMS requests, defaults to + // map CRS. Don't change this if you're not sure what it means. + crs: null, + + // @option uppercase: Boolean = false + // If `true`, WMS request parameter keys will be uppercase. + uppercase: false + }, + + initialize: function (url, options) { + + this._url = url; + + var wmsParams = extend({}, this.defaultWmsParams); + + // all keys that are not TileLayer options go to WMS params + for (var i in options) { + if (!(i in this.options)) { + wmsParams[i] = options[i]; + } + } + + options = setOptions(this, options); + + var realRetina = options.detectRetina && retina ? 2 : 1; + var tileSize = this.getTileSize(); + wmsParams.width = tileSize.x * realRetina; + wmsParams.height = tileSize.y * realRetina; + + this.wmsParams = wmsParams; + }, + + onAdd: function (map) { + + this._crs = this.options.crs || map.options.crs; + this._wmsVersion = parseFloat(this.wmsParams.version); + + var projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs'; + this.wmsParams[projectionKey] = this._crs.code; + + TileLayer.prototype.onAdd.call(this, map); + }, + + getTileUrl: function (coords) { + + var tileBounds = this._tileCoordsToNwSe(coords), + crs = this._crs, + bounds = toBounds(crs.project(tileBounds[0]), crs.project(tileBounds[1])), + min = bounds.min, + max = bounds.max, + bbox = (this._wmsVersion >= 1.3 && this._crs === EPSG4326 ? + [min.y, min.x, max.y, max.x] : + [min.x, min.y, max.x, max.y]).join(','), + url = L.TileLayer.prototype.getTileUrl.call(this, coords); + return url + + getParamString(this.wmsParams, url, this.options.uppercase) + + (this.options.uppercase ? '&BBOX=' : '&bbox=') + bbox; + }, + + // @method setParams(params: Object, noRedraw?: Boolean): this + // Merges an object with the new parameters and re-requests tiles on the current screen (unless `noRedraw` was set to true). + setParams: function (params, noRedraw) { + + extend(this.wmsParams, params); + + if (!noRedraw) { + this.redraw(); + } + + return this; + } +}); + + +// @factory L.tileLayer.wms(baseUrl: String, options: TileLayer.WMS options) +// Instantiates a WMS tile layer object given a base URL of the WMS service and a WMS parameters/options object. +function tileLayerWMS(url, options) { + return new TileLayerWMS(url, options); +} + +TileLayer.WMS = TileLayerWMS; +tileLayer.wms = tileLayerWMS; + +/* + * @class Renderer + * @inherits Layer + * @aka L.Renderer + * + * Base class for vector renderer implementations (`SVG`, `Canvas`). Handles the + * DOM container of the renderer, its bounds, and its zoom animation. + * + * A `Renderer` works as an implicit layer group for all `Path`s - the renderer + * itself can be added or removed to the map. All paths use a renderer, which can + * be implicit (the map will decide the type of renderer and use it automatically) + * or explicit (using the [`renderer`](#path-renderer) option of the path). + * + * Do not use this class directly, use `SVG` and `Canvas` instead. + * + * @event update: Event + * Fired when the renderer updates its bounds, center and zoom, for example when + * its map has moved + */ + +var Renderer = Layer.extend({ + + // @section + // @aka Renderer options + options: { + // @option padding: Number = 0.1 + // How much to extend the clip area around the map view (relative to its size) + // e.g. 0.1 would be 10% of map view in each direction + padding: 0.1, + + // @option tolerance: Number = 0 + // How much to extend click tolerance round a path/object on the map + tolerance : 0 + }, + + initialize: function (options) { + setOptions(this, options); + stamp(this); + this._layers = this._layers || {}; + }, + + onAdd: function () { + if (!this._container) { + this._initContainer(); // defined by renderer implementations + + if (this._zoomAnimated) { + addClass(this._container, 'leaflet-zoom-animated'); + } + } + + this.getPane().appendChild(this._container); + this._update(); + this.on('update', this._updatePaths, this); + }, + + onRemove: function () { + this.off('update', this._updatePaths, this); + this._destroyContainer(); + }, + + getEvents: function () { + var events = { + viewreset: this._reset, + zoom: this._onZoom, + moveend: this._update, + zoomend: this._onZoomEnd + }; + if (this._zoomAnimated) { + events.zoomanim = this._onAnimZoom; + } + return events; + }, + + _onAnimZoom: function (ev) { + this._updateTransform(ev.center, ev.zoom); + }, + + _onZoom: function () { + this._updateTransform(this._map.getCenter(), this._map.getZoom()); + }, + + _updateTransform: function (center, zoom) { + var scale = this._map.getZoomScale(zoom, this._zoom), + position = getPosition(this._container), + viewHalf = this._map.getSize().multiplyBy(0.5 + this.options.padding), + currentCenterPoint = this._map.project(this._center, zoom), + destCenterPoint = this._map.project(center, zoom), + centerOffset = destCenterPoint.subtract(currentCenterPoint), + + topLeftOffset = viewHalf.multiplyBy(-scale).add(position).add(viewHalf).subtract(centerOffset); + + if (any3d) { + setTransform(this._container, topLeftOffset, scale); + } else { + setPosition(this._container, topLeftOffset); + } + }, + + _reset: function () { + this._update(); + this._updateTransform(this._center, this._zoom); + + for (var id in this._layers) { + this._layers[id]._reset(); + } + }, + + _onZoomEnd: function () { + for (var id in this._layers) { + this._layers[id]._project(); + } + }, + + _updatePaths: function () { + for (var id in this._layers) { + this._layers[id]._update(); + } + }, + + _update: function () { + // Update pixel bounds of renderer container (for positioning/sizing/clipping later) + // Subclasses are responsible of firing the 'update' event. + var p = this.options.padding, + size = this._map.getSize(), + min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round(); + + this._bounds = new Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round()); + + this._center = this._map.getCenter(); + this._zoom = this._map.getZoom(); + } +}); + +/* + * @class Canvas + * @inherits Renderer + * @aka L.Canvas + * + * Allows vector layers to be displayed with [`<canvas>`](https://developer.mozilla.org/docs/Web/API/Canvas_API). + * Inherits `Renderer`. + * + * Due to [technical limitations](http://caniuse.com/#search=canvas), Canvas is not + * available in all web browsers, notably IE8, and overlapping geometries might + * not display properly in some edge cases. + * + * @example + * + * Use Canvas by default for all paths in the map: + * + * ```js + * var map = L.map('map', { + * renderer: L.canvas() + * }); + * ``` + * + * Use a Canvas renderer with extra padding for specific vector geometries: + * + * ```js + * var map = L.map('map'); + * var myRenderer = L.canvas({ padding: 0.5 }); + * var line = L.polyline( coordinates, { renderer: myRenderer } ); + * var circle = L.circle( center, { renderer: myRenderer } ); + * ``` + */ + +var Canvas = Renderer.extend({ + getEvents: function () { + var events = Renderer.prototype.getEvents.call(this); + events.viewprereset = this._onViewPreReset; + return events; + }, + + _onViewPreReset: function () { + // Set a flag so that a viewprereset+moveend+viewreset only updates&redraws once + this._postponeUpdatePaths = true; + }, + + onAdd: function () { + Renderer.prototype.onAdd.call(this); + + // Redraw vectors since canvas is cleared upon removal, + // in case of removing the renderer itself from the map. + this._draw(); + }, + + _initContainer: function () { + var container = this._container = document.createElement('canvas'); + + on(container, 'mousemove', throttle(this._onMouseMove, 32, this), this); + on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this); + on(container, 'mouseout', this._handleMouseOut, this); + + this._ctx = container.getContext('2d'); + }, + + _destroyContainer: function () { + delete this._ctx; + remove(this._container); + off(this._container); + delete this._container; + }, + + _updatePaths: function () { + if (this._postponeUpdatePaths) { return; } + + var layer; + this._redrawBounds = null; + for (var id in this._layers) { + layer = this._layers[id]; + layer._update(); + } + this._redraw(); + }, + + _update: function () { + if (this._map._animatingZoom && this._bounds) { return; } + + this._drawnLayers = {}; + + Renderer.prototype._update.call(this); + + var b = this._bounds, + container = this._container, + size = b.getSize(), + m = retina ? 2 : 1; + + setPosition(container, b.min); + + // set canvas size (also clearing it); use double size on retina + container.width = m * size.x; + container.height = m * size.y; + container.style.width = size.x + 'px'; + container.style.height = size.y + 'px'; + + if (retina) { + this._ctx.scale(2, 2); + } + + // translate so we use the same path coordinates after canvas element moves + this._ctx.translate(-b.min.x, -b.min.y); + + // Tell paths to redraw themselves + this.fire('update'); + }, + + _reset: function () { + Renderer.prototype._reset.call(this); + + if (this._postponeUpdatePaths) { + this._postponeUpdatePaths = false; + this._updatePaths(); + } + }, + + _initPath: function (layer) { + this._updateDashArray(layer); + this._layers[stamp(layer)] = layer; + + var order = layer._order = { + layer: layer, + prev: this._drawLast, + next: null + }; + if (this._drawLast) { this._drawLast.next = order; } + this._drawLast = order; + this._drawFirst = this._drawFirst || this._drawLast; + }, + + _addPath: function (layer) { + this._requestRedraw(layer); + }, + + _removePath: function (layer) { + var order = layer._order; + var next = order.next; + var prev = order.prev; + + if (next) { + next.prev = prev; + } else { + this._drawLast = prev; + } + if (prev) { + prev.next = next; + } else { + this._drawFirst = next; + } + + delete layer._order; + + delete this._layers[L.stamp(layer)]; + + this._requestRedraw(layer); + }, + + _updatePath: function (layer) { + // Redraw the union of the layer's old pixel + // bounds and the new pixel bounds. + this._extendRedrawBounds(layer); + layer._project(); + layer._update(); + // The redraw will extend the redraw bounds + // with the new pixel bounds. + this._requestRedraw(layer); + }, + + _updateStyle: function (layer) { + this._updateDashArray(layer); + this._requestRedraw(layer); + }, + + _updateDashArray: function (layer) { + if (layer.options.dashArray) { + var parts = layer.options.dashArray.split(','), + dashArray = [], + i; + for (i = 0; i < parts.length; i++) { + dashArray.push(Number(parts[i])); + } + layer.options._dashArray = dashArray; + } + }, + + _requestRedraw: function (layer) { + if (!this._map) { return; } + + this._extendRedrawBounds(layer); + this._redrawRequest = this._redrawRequest || requestAnimFrame(this._redraw, this); + }, + + _extendRedrawBounds: function (layer) { + if (layer._pxBounds) { + var padding = (layer.options.weight || 0) + 1; + this._redrawBounds = this._redrawBounds || new Bounds(); + this._redrawBounds.extend(layer._pxBounds.min.subtract([padding, padding])); + this._redrawBounds.extend(layer._pxBounds.max.add([padding, padding])); + } + }, + + _redraw: function () { + this._redrawRequest = null; + + if (this._redrawBounds) { + this._redrawBounds.min._floor(); + this._redrawBounds.max._ceil(); + } + + this._clear(); // clear layers in redraw bounds + this._draw(); // draw layers + + this._redrawBounds = null; + }, + + _clear: function () { + var bounds = this._redrawBounds; + if (bounds) { + var size = bounds.getSize(); + this._ctx.clearRect(bounds.min.x, bounds.min.y, size.x, size.y); + } else { + this._ctx.clearRect(0, 0, this._container.width, this._container.height); + } + }, + + _draw: function () { + var layer, bounds = this._redrawBounds; + this._ctx.save(); + if (bounds) { + var size = bounds.getSize(); + this._ctx.beginPath(); + this._ctx.rect(bounds.min.x, bounds.min.y, size.x, size.y); + this._ctx.clip(); + } + + this._drawing = true; + + for (var order = this._drawFirst; order; order = order.next) { + layer = order.layer; + if (!bounds || (layer._pxBounds && layer._pxBounds.intersects(bounds))) { + layer._updatePath(); + } + } + + this._drawing = false; + + this._ctx.restore(); // Restore state before clipping. + }, + + _updatePoly: function (layer, closed) { + if (!this._drawing) { return; } + + var i, j, len2, p, + parts = layer._parts, + len = parts.length, + ctx = this._ctx; + + if (!len) { return; } + + this._drawnLayers[layer._leaflet_id] = layer; + + ctx.beginPath(); + + for (i = 0; i < len; i++) { + for (j = 0, len2 = parts[i].length; j < len2; j++) { + p = parts[i][j]; + ctx[j ? 'lineTo' : 'moveTo'](p.x, p.y); + } + if (closed) { + ctx.closePath(); + } + } + + this._fillStroke(ctx, layer); + + // TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature + }, + + _updateCircle: function (layer) { + + if (!this._drawing || layer._empty()) { return; } + + var p = layer._point, + ctx = this._ctx, + r = Math.max(Math.round(layer._radius), 1), + s = (Math.max(Math.round(layer._radiusY), 1) || r) / r; + + this._drawnLayers[layer._leaflet_id] = layer; + + if (s !== 1) { + ctx.save(); + ctx.scale(1, s); + } + + ctx.beginPath(); + ctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false); + + if (s !== 1) { + ctx.restore(); + } + + this._fillStroke(ctx, layer); + }, + + _fillStroke: function (ctx, layer) { + var options = layer.options; + + if (options.fill) { + ctx.globalAlpha = options.fillOpacity; + ctx.fillStyle = options.fillColor || options.color; + ctx.fill(options.fillRule || 'evenodd'); + } + + if (options.stroke && options.weight !== 0) { + if (ctx.setLineDash) { + ctx.setLineDash(layer.options && layer.options._dashArray || []); + } + ctx.globalAlpha = options.opacity; + ctx.lineWidth = options.weight; + ctx.strokeStyle = options.color; + ctx.lineCap = options.lineCap; + ctx.lineJoin = options.lineJoin; + ctx.stroke(); + } + }, + + // Canvas obviously doesn't have mouse events for individual drawn objects, + // so we emulate that by calculating what's under the mouse on mousemove/click manually + + _onClick: function (e) { + var point = this._map.mouseEventToLayerPoint(e), layer, clickedLayer; + + for (var order = this._drawFirst; order; order = order.next) { + layer = order.layer; + if (layer.options.interactive && layer._containsPoint(point) && !this._map._draggableMoved(layer)) { + clickedLayer = layer; + } + } + if (clickedLayer) { + fakeStop(e); + this._fireEvent([clickedLayer], e); + } + }, + + _onMouseMove: function (e) { + if (!this._map || this._map.dragging.moving() || this._map._animatingZoom) { return; } + + var point = this._map.mouseEventToLayerPoint(e); + this._handleMouseHover(e, point); + }, + + + _handleMouseOut: function (e) { + var layer = this._hoveredLayer; + if (layer) { + // if we're leaving the layer, fire mouseout + removeClass(this._container, 'leaflet-interactive'); + this._fireEvent([layer], e, 'mouseout'); + this._hoveredLayer = null; + } + }, + + _handleMouseHover: function (e, point) { + var layer, candidateHoveredLayer; + + for (var order = this._drawFirst; order; order = order.next) { + layer = order.layer; + if (layer.options.interactive && layer._containsPoint(point)) { + candidateHoveredLayer = layer; + } + } + + if (candidateHoveredLayer !== this._hoveredLayer) { + this._handleMouseOut(e); + + if (candidateHoveredLayer) { + addClass(this._container, 'leaflet-interactive'); // change cursor + this._fireEvent([candidateHoveredLayer], e, 'mouseover'); + this._hoveredLayer = candidateHoveredLayer; + } + } + + if (this._hoveredLayer) { + this._fireEvent([this._hoveredLayer], e); + } + }, + + _fireEvent: function (layers, e, type) { + this._map._fireDOMEvent(e, type || e.type, layers); + }, + + _bringToFront: function (layer) { + var order = layer._order; + var next = order.next; + var prev = order.prev; + + if (next) { + next.prev = prev; + } else { + // Already last + return; + } + if (prev) { + prev.next = next; + } else if (next) { + // Update first entry unless this is the + // single entry + this._drawFirst = next; + } + + order.prev = this._drawLast; + this._drawLast.next = order; + + order.next = null; + this._drawLast = order; + + this._requestRedraw(layer); + }, + + _bringToBack: function (layer) { + var order = layer._order; + var next = order.next; + var prev = order.prev; + + if (prev) { + prev.next = next; + } else { + // Already first + return; + } + if (next) { + next.prev = prev; + } else if (prev) { + // Update last entry unless this is the + // single entry + this._drawLast = prev; + } + + order.prev = null; + + order.next = this._drawFirst; + this._drawFirst.prev = order; + this._drawFirst = order; + + this._requestRedraw(layer); + } +}); + +// @factory L.canvas(options?: Renderer options) +// Creates a Canvas renderer with the given options. +function canvas$1(options) { + return canvas ? new Canvas(options) : null; +} + +/* + * Thanks to Dmitry Baranovsky and his Raphael library for inspiration! + */ + + +var vmlCreate = (function () { + try { + document.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml'); + return function (name) { + return document.createElement('<lvml:' + name + ' class="lvml">'); + }; + } catch (e) { + return function (name) { + return document.createElement('<' + name + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">'); + }; + } +})(); + + +/* + * @class SVG + * + * Although SVG is not available on IE7 and IE8, these browsers support [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language), and the SVG renderer will fall back to VML in this case. + * + * VML was deprecated in 2012, which means VML functionality exists only for backwards compatibility + * with old versions of Internet Explorer. + */ + +// mixin to redefine some SVG methods to handle VML syntax which is similar but with some differences +var vmlMixin = { + + _initContainer: function () { + this._container = create$1('div', 'leaflet-vml-container'); + }, + + _update: function () { + if (this._map._animatingZoom) { return; } + Renderer.prototype._update.call(this); + this.fire('update'); + }, + + _initPath: function (layer) { + var container = layer._container = vmlCreate('shape'); + + addClass(container, 'leaflet-vml-shape ' + (this.options.className || '')); + + container.coordsize = '1 1'; + + layer._path = vmlCreate('path'); + container.appendChild(layer._path); + + this._updateStyle(layer); + this._layers[stamp(layer)] = layer; + }, + + _addPath: function (layer) { + var container = layer._container; + this._container.appendChild(container); + + if (layer.options.interactive) { + layer.addInteractiveTarget(container); + } + }, + + _removePath: function (layer) { + var container = layer._container; + remove(container); + layer.removeInteractiveTarget(container); + delete this._layers[stamp(layer)]; + }, + + _updateStyle: function (layer) { + var stroke = layer._stroke, + fill = layer._fill, + options = layer.options, + container = layer._container; + + container.stroked = !!options.stroke; + container.filled = !!options.fill; + + if (options.stroke) { + if (!stroke) { + stroke = layer._stroke = vmlCreate('stroke'); + } + container.appendChild(stroke); + stroke.weight = options.weight + 'px'; + stroke.color = options.color; + stroke.opacity = options.opacity; + + if (options.dashArray) { + stroke.dashStyle = isArray(options.dashArray) ? + options.dashArray.join(' ') : + options.dashArray.replace(/( *, *)/g, ' '); + } else { + stroke.dashStyle = ''; + } + stroke.endcap = options.lineCap.replace('butt', 'flat'); + stroke.joinstyle = options.lineJoin; + + } else if (stroke) { + container.removeChild(stroke); + layer._stroke = null; + } + + if (options.fill) { + if (!fill) { + fill = layer._fill = vmlCreate('fill'); + } + container.appendChild(fill); + fill.color = options.fillColor || options.color; + fill.opacity = options.fillOpacity; + + } else if (fill) { + container.removeChild(fill); + layer._fill = null; + } + }, + + _updateCircle: function (layer) { + var p = layer._point.round(), + r = Math.round(layer._radius), + r2 = Math.round(layer._radiusY || r); + + this._setPath(layer, layer._empty() ? 'M0 0' : + 'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360)); + }, + + _setPath: function (layer, path) { + layer._path.v = path; + }, + + _bringToFront: function (layer) { + toFront(layer._container); + }, + + _bringToBack: function (layer) { + toBack(layer._container); + } +}; + +var create$2 = vml ? vmlCreate : svgCreate; + +/* + * @class SVG + * @inherits Renderer + * @aka L.SVG + * + * Allows vector layers to be displayed with [SVG](https://developer.mozilla.org/docs/Web/SVG). + * Inherits `Renderer`. + * + * Due to [technical limitations](http://caniuse.com/#search=svg), SVG is not + * available in all web browsers, notably Android 2.x and 3.x. + * + * Although SVG is not available on IE7 and IE8, these browsers support + * [VML](https://en.wikipedia.org/wiki/Vector_Markup_Language) + * (a now deprecated technology), and the SVG renderer will fall back to VML in + * this case. + * + * @example + * + * Use SVG by default for all paths in the map: + * + * ```js + * var map = L.map('map', { + * renderer: L.svg() + * }); + * ``` + * + * Use a SVG renderer with extra padding for specific vector geometries: + * + * ```js + * var map = L.map('map'); + * var myRenderer = L.svg({ padding: 0.5 }); + * var line = L.polyline( coordinates, { renderer: myRenderer } ); + * var circle = L.circle( center, { renderer: myRenderer } ); + * ``` + */ + +var SVG = Renderer.extend({ + + getEvents: function () { + var events = Renderer.prototype.getEvents.call(this); + events.zoomstart = this._onZoomStart; + return events; + }, + + _initContainer: function () { + this._container = create$2('svg'); + + // makes it possible to click through svg root; we'll reset it back in individual paths + this._container.setAttribute('pointer-events', 'none'); + + this._rootGroup = create$2('g'); + this._container.appendChild(this._rootGroup); + }, + + _destroyContainer: function () { + remove(this._container); + off(this._container); + delete this._container; + delete this._rootGroup; + delete this._svgSize; + }, + + _onZoomStart: function () { + // Drag-then-pinch interactions might mess up the center and zoom. + // In this case, the easiest way to prevent this is re-do the renderer + // bounds and padding when the zooming starts. + this._update(); + }, + + _update: function () { + if (this._map._animatingZoom && this._bounds) { return; } + + Renderer.prototype._update.call(this); + + var b = this._bounds, + size = b.getSize(), + container = this._container; + + // set size of svg-container if changed + if (!this._svgSize || !this._svgSize.equals(size)) { + this._svgSize = size; + container.setAttribute('width', size.x); + container.setAttribute('height', size.y); + } + + // movement: update container viewBox so that we don't have to change coordinates of individual layers + setPosition(container, b.min); + container.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' ')); + + this.fire('update'); + }, + + // methods below are called by vector layers implementations + + _initPath: function (layer) { + var path = layer._path = create$2('path'); + + // @namespace Path + // @option className: String = null + // Custom class name set on an element. Only for SVG renderer. + if (layer.options.className) { + addClass(path, layer.options.className); + } + + if (layer.options.interactive) { + addClass(path, 'leaflet-interactive'); + } + + this._updateStyle(layer); + this._layers[stamp(layer)] = layer; + }, + + _addPath: function (layer) { + if (!this._rootGroup) { this._initContainer(); } + this._rootGroup.appendChild(layer._path); + layer.addInteractiveTarget(layer._path); + }, + + _removePath: function (layer) { + remove(layer._path); + layer.removeInteractiveTarget(layer._path); + delete this._layers[stamp(layer)]; + }, + + _updatePath: function (layer) { + layer._project(); + layer._update(); + }, + + _updateStyle: function (layer) { + var path = layer._path, + options = layer.options; + + if (!path) { return; } + + if (options.stroke) { + path.setAttribute('stroke', options.color); + path.setAttribute('stroke-opacity', options.opacity); + path.setAttribute('stroke-width', options.weight); + path.setAttribute('stroke-linecap', options.lineCap); + path.setAttribute('stroke-linejoin', options.lineJoin); + + if (options.dashArray) { + path.setAttribute('stroke-dasharray', options.dashArray); + } else { + path.removeAttribute('stroke-dasharray'); + } + + if (options.dashOffset) { + path.setAttribute('stroke-dashoffset', options.dashOffset); + } else { + path.removeAttribute('stroke-dashoffset'); + } + } else { + path.setAttribute('stroke', 'none'); + } + + if (options.fill) { + path.setAttribute('fill', options.fillColor || options.color); + path.setAttribute('fill-opacity', options.fillOpacity); + path.setAttribute('fill-rule', options.fillRule || 'evenodd'); + } else { + path.setAttribute('fill', 'none'); + } + }, + + _updatePoly: function (layer, closed) { + this._setPath(layer, pointsToPath(layer._parts, closed)); + }, + + _updateCircle: function (layer) { + var p = layer._point, + r = Math.max(Math.round(layer._radius), 1), + r2 = Math.max(Math.round(layer._radiusY), 1) || r, + arc = 'a' + r + ',' + r2 + ' 0 1,0 '; + + // drawing a circle with two half-arcs + var d = layer._empty() ? 'M0 0' : + 'M' + (p.x - r) + ',' + p.y + + arc + (r * 2) + ',0 ' + + arc + (-r * 2) + ',0 '; + + this._setPath(layer, d); + }, + + _setPath: function (layer, path) { + layer._path.setAttribute('d', path); + }, + + // SVG does not have the concept of zIndex so we resort to changing the DOM order of elements + _bringToFront: function (layer) { + toFront(layer._path); + }, + + _bringToBack: function (layer) { + toBack(layer._path); + } +}); + +if (vml) { + SVG.include(vmlMixin); +} + +// @namespace SVG +// @factory L.svg(options?: Renderer options) +// Creates a SVG renderer with the given options. +function svg$1(options) { + return svg || vml ? new SVG(options) : null; +} + +Map.include({ + // @namespace Map; @method getRenderer(layer: Path): Renderer + // Returns the instance of `Renderer` that should be used to render the given + // `Path`. It will ensure that the `renderer` options of the map and paths + // are respected, and that the renderers do exist on the map. + getRenderer: function (layer) { + // @namespace Path; @option renderer: Renderer + // Use this specific instance of `Renderer` for this path. Takes + // precedence over the map's [default renderer](#map-renderer). + var renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer; + + if (!renderer) { + // @namespace Map; @option preferCanvas: Boolean = false + // Whether `Path`s should be rendered on a `Canvas` renderer. + // By default, all `Path`s are rendered in a `SVG` renderer. + renderer = this._renderer = (this.options.preferCanvas && canvas$1()) || svg$1(); + } + + if (!this.hasLayer(renderer)) { + this.addLayer(renderer); + } + return renderer; + }, + + _getPaneRenderer: function (name) { + if (name === 'overlayPane' || name === undefined) { + return false; + } + + var renderer = this._paneRenderers[name]; + if (renderer === undefined) { + renderer = (SVG && svg$1({pane: name})) || (Canvas && canvas$1({pane: name})); + this._paneRenderers[name] = renderer; + } + return renderer; + } +}); + +/* + * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object. + */ + +/* + * @class Rectangle + * @aka L.Rectangle + * @inherits Polygon + * + * A class for drawing rectangle overlays on a map. Extends `Polygon`. + * + * @example + * + * ```js + * // define rectangle geographical bounds + * var bounds = [[54.559322, -5.767822], [56.1210604, -3.021240]]; + * + * // create an orange rectangle + * L.rectangle(bounds, {color: "#ff7800", weight: 1}).addTo(map); + * + * // zoom the map to the rectangle bounds + * map.fitBounds(bounds); + * ``` + * + */ + + +var Rectangle = Polygon.extend({ + initialize: function (latLngBounds, options) { + Polygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options); + }, + + // @method setBounds(latLngBounds: LatLngBounds): this + // Redraws the rectangle with the passed bounds. + setBounds: function (latLngBounds) { + return this.setLatLngs(this._boundsToLatLngs(latLngBounds)); + }, + + _boundsToLatLngs: function (latLngBounds) { + latLngBounds = toLatLngBounds(latLngBounds); + return [ + latLngBounds.getSouthWest(), + latLngBounds.getNorthWest(), + latLngBounds.getNorthEast(), + latLngBounds.getSouthEast() + ]; + } +}); + + +// @factory L.rectangle(latLngBounds: LatLngBounds, options?: Polyline options) +function rectangle(latLngBounds, options) { + return new Rectangle(latLngBounds, options); +} + +SVG.create = create$2; +SVG.pointsToPath = pointsToPath; + +GeoJSON.geometryToLayer = geometryToLayer; +GeoJSON.coordsToLatLng = coordsToLatLng; +GeoJSON.coordsToLatLngs = coordsToLatLngs; +GeoJSON.latLngToCoords = latLngToCoords; +GeoJSON.latLngsToCoords = latLngsToCoords; +GeoJSON.getFeature = getFeature; +GeoJSON.asFeature = asFeature; + +/* + * L.Handler.BoxZoom is used to add shift-drag zoom interaction to the map + * (zoom to a selected bounding box), enabled by default. + */ + +// @namespace Map +// @section Interaction Options +Map.mergeOptions({ + // @option boxZoom: Boolean = true + // Whether the map can be zoomed to a rectangular area specified by + // dragging the mouse while pressing the shift key. + boxZoom: true +}); + +var BoxZoom = Handler.extend({ + initialize: function (map) { + this._map = map; + this._container = map._container; + this._pane = map._panes.overlayPane; + this._resetStateTimeout = 0; + map.on('unload', this._destroy, this); + }, + + addHooks: function () { + on(this._container, 'mousedown', this._onMouseDown, this); + }, + + removeHooks: function () { + off(this._container, 'mousedown', this._onMouseDown, this); + }, + + moved: function () { + return this._moved; + }, + + _destroy: function () { + remove(this._pane); + delete this._pane; + }, + + _resetState: function () { + this._resetStateTimeout = 0; + this._moved = false; + }, + + _clearDeferredResetState: function () { + if (this._resetStateTimeout !== 0) { + clearTimeout(this._resetStateTimeout); + this._resetStateTimeout = 0; + } + }, + + _onMouseDown: function (e) { + if (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; } + + // Clear the deferred resetState if it hasn't executed yet, otherwise it + // will interrupt the interaction and orphan a box element in the container. + this._clearDeferredResetState(); + this._resetState(); + + disableTextSelection(); + disableImageDrag(); + + this._startPoint = this._map.mouseEventToContainerPoint(e); + + on(document, { + contextmenu: stop, + mousemove: this._onMouseMove, + mouseup: this._onMouseUp, + keydown: this._onKeyDown + }, this); + }, + + _onMouseMove: function (e) { + if (!this._moved) { + this._moved = true; + + this._box = create$1('div', 'leaflet-zoom-box', this._container); + addClass(this._container, 'leaflet-crosshair'); + + this._map.fire('boxzoomstart'); + } + + this._point = this._map.mouseEventToContainerPoint(e); + + var bounds = new Bounds(this._point, this._startPoint), + size = bounds.getSize(); + + setPosition(this._box, bounds.min); + + this._box.style.width = size.x + 'px'; + this._box.style.height = size.y + 'px'; + }, + + _finish: function () { + if (this._moved) { + remove(this._box); + removeClass(this._container, 'leaflet-crosshair'); + } + + enableTextSelection(); + enableImageDrag(); + + off(document, { + contextmenu: stop, + mousemove: this._onMouseMove, + mouseup: this._onMouseUp, + keydown: this._onKeyDown + }, this); + }, + + _onMouseUp: function (e) { + if ((e.which !== 1) && (e.button !== 1)) { return; } + + this._finish(); + + if (!this._moved) { return; } + // Postpone to next JS tick so internal click event handling + // still see it as "moved". + this._clearDeferredResetState(); + this._resetStateTimeout = setTimeout(bind(this._resetState, this), 0); + + var bounds = new LatLngBounds( + this._map.containerPointToLatLng(this._startPoint), + this._map.containerPointToLatLng(this._point)); + + this._map + .fitBounds(bounds) + .fire('boxzoomend', {boxZoomBounds: bounds}); + }, + + _onKeyDown: function (e) { + if (e.keyCode === 27) { + this._finish(); + } + } +}); + +// @section Handlers +// @property boxZoom: Handler +// Box (shift-drag with mouse) zoom handler. +Map.addInitHook('addHandler', 'boxZoom', BoxZoom); + +/* + * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default. + */ + +// @namespace Map +// @section Interaction Options + +Map.mergeOptions({ + // @option doubleClickZoom: Boolean|String = true + // Whether the map can be zoomed in by double clicking on it and + // zoomed out by double clicking while holding shift. If passed + // `'center'`, double-click zoom will zoom to the center of the + // view regardless of where the mouse was. + doubleClickZoom: true +}); + +var DoubleClickZoom = Handler.extend({ + addHooks: function () { + this._map.on('dblclick', this._onDoubleClick, this); + }, + + removeHooks: function () { + this._map.off('dblclick', this._onDoubleClick, this); + }, + + _onDoubleClick: function (e) { + var map = this._map, + oldZoom = map.getZoom(), + delta = map.options.zoomDelta, + zoom = e.originalEvent.shiftKey ? oldZoom - delta : oldZoom + delta; + + if (map.options.doubleClickZoom === 'center') { + map.setZoom(zoom); + } else { + map.setZoomAround(e.containerPoint, zoom); + } + } +}); + +// @section Handlers +// +// Map properties include interaction handlers that allow you to control +// interaction behavior in runtime, enabling or disabling certain features such +// as dragging or touch zoom (see `Handler` methods). For example: +// +// ```js +// map.doubleClickZoom.disable(); +// ``` +// +// @property doubleClickZoom: Handler +// Double click zoom handler. +Map.addInitHook('addHandler', 'doubleClickZoom', DoubleClickZoom); + +/* + * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default. + */ + +// @namespace Map +// @section Interaction Options +Map.mergeOptions({ + // @option dragging: Boolean = true + // Whether the map be draggable with mouse/touch or not. + dragging: true, + + // @section Panning Inertia Options + // @option inertia: Boolean = * + // If enabled, panning of the map will have an inertia effect where + // the map builds momentum while dragging and continues moving in + // the same direction for some time. Feels especially nice on touch + // devices. Enabled by default unless running on old Android devices. + inertia: !android23, + + // @option inertiaDeceleration: Number = 3000 + // The rate with which the inertial movement slows down, in pixels/second². + inertiaDeceleration: 3400, // px/s^2 + + // @option inertiaMaxSpeed: Number = Infinity + // Max speed of the inertial movement, in pixels/second. + inertiaMaxSpeed: Infinity, // px/s + + // @option easeLinearity: Number = 0.2 + easeLinearity: 0.2, + + // TODO refactor, move to CRS + // @option worldCopyJump: Boolean = false + // With this option enabled, the map tracks when you pan to another "copy" + // of the world and seamlessly jumps to the original one so that all overlays + // like markers and vector layers are still visible. + worldCopyJump: false, + + // @option maxBoundsViscosity: Number = 0.0 + // If `maxBounds` is set, this option will control how solid the bounds + // are when dragging the map around. The default value of `0.0` allows the + // user to drag outside the bounds at normal speed, higher values will + // slow down map dragging outside bounds, and `1.0` makes the bounds fully + // solid, preventing the user from dragging outside the bounds. + maxBoundsViscosity: 0.0 +}); + +var Drag = Handler.extend({ + addHooks: function () { + if (!this._draggable) { + var map = this._map; + + this._draggable = new Draggable(map._mapPane, map._container); + + this._draggable.on({ + dragstart: this._onDragStart, + drag: this._onDrag, + dragend: this._onDragEnd + }, this); + + this._draggable.on('predrag', this._onPreDragLimit, this); + if (map.options.worldCopyJump) { + this._draggable.on('predrag', this._onPreDragWrap, this); + map.on('zoomend', this._onZoomEnd, this); + + map.whenReady(this._onZoomEnd, this); + } + } + addClass(this._map._container, 'leaflet-grab leaflet-touch-drag'); + this._draggable.enable(); + this._positions = []; + this._times = []; + }, + + removeHooks: function () { + removeClass(this._map._container, 'leaflet-grab'); + removeClass(this._map._container, 'leaflet-touch-drag'); + this._draggable.disable(); + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + moving: function () { + return this._draggable && this._draggable._moving; + }, + + _onDragStart: function () { + var map = this._map; + + map._stop(); + if (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) { + var bounds = toLatLngBounds(this._map.options.maxBounds); + + this._offsetLimit = toBounds( + this._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1), + this._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1) + .add(this._map.getSize())); + + this._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity)); + } else { + this._offsetLimit = null; + } + + map + .fire('movestart') + .fire('dragstart'); + + if (map.options.inertia) { + this._positions = []; + this._times = []; + } + }, + + _onDrag: function (e) { + if (this._map.options.inertia) { + var time = this._lastTime = +new Date(), + pos = this._lastPos = this._draggable._absPos || this._draggable._newPos; + + this._positions.push(pos); + this._times.push(time); + + this._prunePositions(time); + } + + this._map + .fire('move', e) + .fire('drag', e); + }, + + _prunePositions: function (time) { + while (this._positions.length > 1 && time - this._times[0] > 50) { + this._positions.shift(); + this._times.shift(); + } + }, + + _onZoomEnd: function () { + var pxCenter = this._map.getSize().divideBy(2), + pxWorldCenter = this._map.latLngToLayerPoint([0, 0]); + + this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x; + this._worldWidth = this._map.getPixelWorldBounds().getSize().x; + }, + + _viscousLimit: function (value, threshold) { + return value - (value - threshold) * this._viscosity; + }, + + _onPreDragLimit: function () { + if (!this._viscosity || !this._offsetLimit) { return; } + + var offset = this._draggable._newPos.subtract(this._draggable._startPos); + + var limit = this._offsetLimit; + if (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); } + if (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); } + if (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); } + if (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); } + + this._draggable._newPos = this._draggable._startPos.add(offset); + }, + + _onPreDragWrap: function () { + // TODO refactor to be able to adjust map pane position after zoom + var worldWidth = this._worldWidth, + halfWidth = Math.round(worldWidth / 2), + dx = this._initialWorldOffset, + x = this._draggable._newPos.x, + newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx, + newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx, + newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2; + + this._draggable._absPos = this._draggable._newPos.clone(); + this._draggable._newPos.x = newX; + }, + + _onDragEnd: function (e) { + var map = this._map, + options = map.options, + + noInertia = !options.inertia || this._times.length < 2; + + map.fire('dragend', e); + + if (noInertia) { + map.fire('moveend'); + + } else { + this._prunePositions(+new Date()); + + var direction = this._lastPos.subtract(this._positions[0]), + duration = (this._lastTime - this._times[0]) / 1000, + ease = options.easeLinearity, + + speedVector = direction.multiplyBy(ease / duration), + speed = speedVector.distanceTo([0, 0]), + + limitedSpeed = Math.min(options.inertiaMaxSpeed, speed), + limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed), + + decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease), + offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round(); + + if (!offset.x && !offset.y) { + map.fire('moveend'); + + } else { + offset = map._limitOffset(offset, map.options.maxBounds); + + requestAnimFrame(function () { + map.panBy(offset, { + duration: decelerationDuration, + easeLinearity: ease, + noMoveStart: true, + animate: true + }); + }); + } + } + } +}); + +// @section Handlers +// @property dragging: Handler +// Map dragging handler (by both mouse and touch). +Map.addInitHook('addHandler', 'dragging', Drag); + +/* + * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default. + */ + +// @namespace Map +// @section Keyboard Navigation Options +Map.mergeOptions({ + // @option keyboard: Boolean = true + // Makes the map focusable and allows users to navigate the map with keyboard + // arrows and `+`/`-` keys. + keyboard: true, + + // @option keyboardPanDelta: Number = 80 + // Amount of pixels to pan when pressing an arrow key. + keyboardPanDelta: 80 +}); + +var Keyboard = Handler.extend({ + + keyCodes: { + left: [37], + right: [39], + down: [40], + up: [38], + zoomIn: [187, 107, 61, 171], + zoomOut: [189, 109, 54, 173] + }, + + initialize: function (map) { + this._map = map; + + this._setPanDelta(map.options.keyboardPanDelta); + this._setZoomDelta(map.options.zoomDelta); + }, + + addHooks: function () { + var container = this._map._container; + + // make the container focusable by tabbing + if (container.tabIndex <= 0) { + container.tabIndex = '0'; + } + + on(container, { + focus: this._onFocus, + blur: this._onBlur, + mousedown: this._onMouseDown + }, this); + + this._map.on({ + focus: this._addHooks, + blur: this._removeHooks + }, this); + }, + + removeHooks: function () { + this._removeHooks(); + + off(this._map._container, { + focus: this._onFocus, + blur: this._onBlur, + mousedown: this._onMouseDown + }, this); + + this._map.off({ + focus: this._addHooks, + blur: this._removeHooks + }, this); + }, + + _onMouseDown: function () { + if (this._focused) { return; } + + var body = document.body, + docEl = document.documentElement, + top = body.scrollTop || docEl.scrollTop, + left = body.scrollLeft || docEl.scrollLeft; + + this._map._container.focus(); + + window.scrollTo(left, top); + }, + + _onFocus: function () { + this._focused = true; + this._map.fire('focus'); + }, + + _onBlur: function () { + this._focused = false; + this._map.fire('blur'); + }, + + _setPanDelta: function (panDelta) { + var keys = this._panKeys = {}, + codes = this.keyCodes, + i, len; + + for (i = 0, len = codes.left.length; i < len; i++) { + keys[codes.left[i]] = [-1 * panDelta, 0]; + } + for (i = 0, len = codes.right.length; i < len; i++) { + keys[codes.right[i]] = [panDelta, 0]; + } + for (i = 0, len = codes.down.length; i < len; i++) { + keys[codes.down[i]] = [0, panDelta]; + } + for (i = 0, len = codes.up.length; i < len; i++) { + keys[codes.up[i]] = [0, -1 * panDelta]; + } + }, + + _setZoomDelta: function (zoomDelta) { + var keys = this._zoomKeys = {}, + codes = this.keyCodes, + i, len; + + for (i = 0, len = codes.zoomIn.length; i < len; i++) { + keys[codes.zoomIn[i]] = zoomDelta; + } + for (i = 0, len = codes.zoomOut.length; i < len; i++) { + keys[codes.zoomOut[i]] = -zoomDelta; + } + }, + + _addHooks: function () { + on(document, 'keydown', this._onKeyDown, this); + }, + + _removeHooks: function () { + off(document, 'keydown', this._onKeyDown, this); + }, + + _onKeyDown: function (e) { + if (e.altKey || e.ctrlKey || e.metaKey) { return; } + + var key = e.keyCode, + map = this._map, + offset; + + if (key in this._panKeys) { + + if (map._panAnim && map._panAnim._inProgress) { return; } + + offset = this._panKeys[key]; + if (e.shiftKey) { + offset = toPoint(offset).multiplyBy(3); + } + + map.panBy(offset); + + if (map.options.maxBounds) { + map.panInsideBounds(map.options.maxBounds); + } + + } else if (key in this._zoomKeys) { + map.setZoom(map.getZoom() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]); + + } else if (key === 27 && map._popup && map._popup.options.closeOnEscapeKey) { + map.closePopup(); + + } else { + return; + } + + stop(e); + } +}); + +// @section Handlers +// @section Handlers +// @property keyboard: Handler +// Keyboard navigation handler. +Map.addInitHook('addHandler', 'keyboard', Keyboard); + +/* + * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map. + */ + +// @namespace Map +// @section Interaction Options +Map.mergeOptions({ + // @section Mousewheel options + // @option scrollWheelZoom: Boolean|String = true + // Whether the map can be zoomed by using the mouse wheel. If passed `'center'`, + // it will zoom to the center of the view regardless of where the mouse was. + scrollWheelZoom: true, + + // @option wheelDebounceTime: Number = 40 + // Limits the rate at which a wheel can fire (in milliseconds). By default + // user can't zoom via wheel more often than once per 40 ms. + wheelDebounceTime: 40, + + // @option wheelPxPerZoomLevel: Number = 60 + // How many scroll pixels (as reported by [L.DomEvent.getWheelDelta](#domevent-getwheeldelta)) + // mean a change of one full zoom level. Smaller values will make wheel-zooming + // faster (and vice versa). + wheelPxPerZoomLevel: 60 +}); + +var ScrollWheelZoom = Handler.extend({ + addHooks: function () { + on(this._map._container, 'mousewheel', this._onWheelScroll, this); + + this._delta = 0; + }, + + removeHooks: function () { + off(this._map._container, 'mousewheel', this._onWheelScroll, this); + }, + + _onWheelScroll: function (e) { + var delta = getWheelDelta(e); + + var debounce = this._map.options.wheelDebounceTime; + + this._delta += delta; + this._lastMousePos = this._map.mouseEventToContainerPoint(e); + + if (!this._startTime) { + this._startTime = +new Date(); + } + + var left = Math.max(debounce - (+new Date() - this._startTime), 0); + + clearTimeout(this._timer); + this._timer = setTimeout(bind(this._performZoom, this), left); + + stop(e); + }, + + _performZoom: function () { + var map = this._map, + zoom = map.getZoom(), + snap = this._map.options.zoomSnap || 0; + + map._stop(); // stop panning and fly animations if any + + // map the delta with a sigmoid function to -4..4 range leaning on -1..1 + var d2 = this._delta / (this._map.options.wheelPxPerZoomLevel * 4), + d3 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(d2)))) / Math.LN2, + d4 = snap ? Math.ceil(d3 / snap) * snap : d3, + delta = map._limitZoom(zoom + (this._delta > 0 ? d4 : -d4)) - zoom; + + this._delta = 0; + this._startTime = null; + + if (!delta) { return; } + + if (map.options.scrollWheelZoom === 'center') { + map.setZoom(zoom + delta); + } else { + map.setZoomAround(this._lastMousePos, zoom + delta); + } + } +}); + +// @section Handlers +// @property scrollWheelZoom: Handler +// Scroll wheel zoom handler. +Map.addInitHook('addHandler', 'scrollWheelZoom', ScrollWheelZoom); + +/* + * L.Map.Tap is used to enable mobile hacks like quick taps and long hold. + */ + +// @namespace Map +// @section Interaction Options +Map.mergeOptions({ + // @section Touch interaction options + // @option tap: Boolean = true + // Enables mobile hacks for supporting instant taps (fixing 200ms click + // delay on iOS/Android) and touch holds (fired as `contextmenu` events). + tap: true, + + // @option tapTolerance: Number = 15 + // The max number of pixels a user can shift his finger during touch + // for it to be considered a valid tap. + tapTolerance: 15 +}); + +var Tap = Handler.extend({ + addHooks: function () { + on(this._map._container, 'touchstart', this._onDown, this); + }, + + removeHooks: function () { + off(this._map._container, 'touchstart', this._onDown, this); + }, + + _onDown: function (e) { + if (!e.touches) { return; } + + preventDefault(e); + + this._fireClick = true; + + // don't simulate click or track longpress if more than 1 touch + if (e.touches.length > 1) { + this._fireClick = false; + clearTimeout(this._holdTimeout); + return; + } + + var first = e.touches[0], + el = first.target; + + this._startPos = this._newPos = new Point(first.clientX, first.clientY); + + // if touching a link, highlight it + if (el.tagName && el.tagName.toLowerCase() === 'a') { + addClass(el, 'leaflet-active'); + } + + // simulate long hold but setting a timeout + this._holdTimeout = setTimeout(bind(function () { + if (this._isTapValid()) { + this._fireClick = false; + this._onUp(); + this._simulateEvent('contextmenu', first); + } + }, this), 1000); + + this._simulateEvent('mousedown', first); + + on(document, { + touchmove: this._onMove, + touchend: this._onUp + }, this); + }, + + _onUp: function (e) { + clearTimeout(this._holdTimeout); + + off(document, { + touchmove: this._onMove, + touchend: this._onUp + }, this); + + if (this._fireClick && e && e.changedTouches) { + + var first = e.changedTouches[0], + el = first.target; + + if (el && el.tagName && el.tagName.toLowerCase() === 'a') { + removeClass(el, 'leaflet-active'); + } + + this._simulateEvent('mouseup', first); + + // simulate click if the touch didn't move too much + if (this._isTapValid()) { + this._simulateEvent('click', first); + } + } + }, + + _isTapValid: function () { + return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance; + }, + + _onMove: function (e) { + var first = e.touches[0]; + this._newPos = new Point(first.clientX, first.clientY); + this._simulateEvent('mousemove', first); + }, + + _simulateEvent: function (type, e) { + var simulatedEvent = document.createEvent('MouseEvents'); + + simulatedEvent._simulated = true; + e.target._simulatedClick = true; + + simulatedEvent.initMouseEvent( + type, true, true, window, 1, + e.screenX, e.screenY, + e.clientX, e.clientY, + false, false, false, false, 0, null); + + e.target.dispatchEvent(simulatedEvent); + } +}); + +// @section Handlers +// @property tap: Handler +// Mobile touch hacks (quick tap and touch hold) handler. +if (touch && !pointer) { + Map.addInitHook('addHandler', 'tap', Tap); +} + +/* + * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers. + */ + +// @namespace Map +// @section Interaction Options +Map.mergeOptions({ + // @section Touch interaction options + // @option touchZoom: Boolean|String = * + // Whether the map can be zoomed by touch-dragging with two fingers. If + // passed `'center'`, it will zoom to the center of the view regardless of + // where the touch events (fingers) were. Enabled for touch-capable web + // browsers except for old Androids. + touchZoom: touch && !android23, + + // @option bounceAtZoomLimits: Boolean = true + // Set it to false if you don't want the map to zoom beyond min/max zoom + // and then bounce back when pinch-zooming. + bounceAtZoomLimits: true +}); + +var TouchZoom = Handler.extend({ + addHooks: function () { + addClass(this._map._container, 'leaflet-touch-zoom'); + on(this._map._container, 'touchstart', this._onTouchStart, this); + }, + + removeHooks: function () { + removeClass(this._map._container, 'leaflet-touch-zoom'); + off(this._map._container, 'touchstart', this._onTouchStart, this); + }, + + _onTouchStart: function (e) { + var map = this._map; + if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; } + + var p1 = map.mouseEventToContainerPoint(e.touches[0]), + p2 = map.mouseEventToContainerPoint(e.touches[1]); + + this._centerPoint = map.getSize()._divideBy(2); + this._startLatLng = map.containerPointToLatLng(this._centerPoint); + if (map.options.touchZoom !== 'center') { + this._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2)); + } + + this._startDist = p1.distanceTo(p2); + this._startZoom = map.getZoom(); + + this._moved = false; + this._zooming = true; + + map._stop(); + + on(document, 'touchmove', this._onTouchMove, this); + on(document, 'touchend', this._onTouchEnd, this); + + preventDefault(e); + }, + + _onTouchMove: function (e) { + if (!e.touches || e.touches.length !== 2 || !this._zooming) { return; } + + var map = this._map, + p1 = map.mouseEventToContainerPoint(e.touches[0]), + p2 = map.mouseEventToContainerPoint(e.touches[1]), + scale = p1.distanceTo(p2) / this._startDist; + + this._zoom = map.getScaleZoom(scale, this._startZoom); + + if (!map.options.bounceAtZoomLimits && ( + (this._zoom < map.getMinZoom() && scale < 1) || + (this._zoom > map.getMaxZoom() && scale > 1))) { + this._zoom = map._limitZoom(this._zoom); + } + + if (map.options.touchZoom === 'center') { + this._center = this._startLatLng; + if (scale === 1) { return; } + } else { + // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng + var delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint); + if (scale === 1 && delta.x === 0 && delta.y === 0) { return; } + this._center = map.unproject(map.project(this._pinchStartLatLng, this._zoom).subtract(delta), this._zoom); + } + + if (!this._moved) { + map._moveStart(true, false); + this._moved = true; + } + + cancelAnimFrame(this._animRequest); + + var moveFn = bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}); + this._animRequest = requestAnimFrame(moveFn, this, true); + + preventDefault(e); + }, + + _onTouchEnd: function () { + if (!this._moved || !this._zooming) { + this._zooming = false; + return; + } + + this._zooming = false; + cancelAnimFrame(this._animRequest); + + off(document, 'touchmove', this._onTouchMove); + off(document, 'touchend', this._onTouchEnd); + + // Pinch updates GridLayers' levels only when zoomSnap is off, so zoomSnap becomes noUpdate. + if (this._map.options.zoomAnimation) { + this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap); + } else { + this._map._resetView(this._center, this._map._limitZoom(this._zoom)); + } + } +}); + +// @section Handlers +// @property touchZoom: Handler +// Touch zoom handler. +Map.addInitHook('addHandler', 'touchZoom', TouchZoom); + +Map.BoxZoom = BoxZoom; +Map.DoubleClickZoom = DoubleClickZoom; +Map.Drag = Drag; +Map.Keyboard = Keyboard; +Map.ScrollWheelZoom = ScrollWheelZoom; +Map.Tap = Tap; +Map.TouchZoom = TouchZoom; + +// misc + +var oldL = window.L; +function noConflict() { + window.L = oldL; + return this; +} + +// Always export us to window global (see #2364) +window.L = exports; + +Object.freeze = freeze; + +exports.version = version; +exports.noConflict = noConflict; +exports.Control = Control; +exports.control = control; +exports.Browser = Browser; +exports.Evented = Evented; +exports.Mixin = Mixin; +exports.Util = Util; +exports.Class = Class; +exports.Handler = Handler; +exports.extend = extend; +exports.bind = bind; +exports.stamp = stamp; +exports.setOptions = setOptions; +exports.DomEvent = DomEvent; +exports.DomUtil = DomUtil; +exports.PosAnimation = PosAnimation; +exports.Draggable = Draggable; +exports.LineUtil = LineUtil; +exports.PolyUtil = PolyUtil; +exports.Point = Point; +exports.point = toPoint; +exports.Bounds = Bounds; +exports.bounds = toBounds; +exports.Transformation = Transformation; +exports.transformation = toTransformation; +exports.Projection = index; +exports.LatLng = LatLng; +exports.latLng = toLatLng; +exports.LatLngBounds = LatLngBounds; +exports.latLngBounds = toLatLngBounds; +exports.CRS = CRS; +exports.GeoJSON = GeoJSON; +exports.geoJSON = geoJSON; +exports.geoJson = geoJson; +exports.Layer = Layer; +exports.LayerGroup = LayerGroup; +exports.layerGroup = layerGroup; +exports.FeatureGroup = FeatureGroup; +exports.featureGroup = featureGroup; +exports.ImageOverlay = ImageOverlay; +exports.imageOverlay = imageOverlay; +exports.VideoOverlay = VideoOverlay; +exports.videoOverlay = videoOverlay; +exports.DivOverlay = DivOverlay; +exports.Popup = Popup; +exports.popup = popup; +exports.Tooltip = Tooltip; +exports.tooltip = tooltip; +exports.Icon = Icon; +exports.icon = icon; +exports.DivIcon = DivIcon; +exports.divIcon = divIcon; +exports.Marker = Marker; +exports.marker = marker; +exports.TileLayer = TileLayer; +exports.tileLayer = tileLayer; +exports.GridLayer = GridLayer; +exports.gridLayer = gridLayer; +exports.SVG = SVG; +exports.svg = svg$1; +exports.Renderer = Renderer; +exports.Canvas = Canvas; +exports.canvas = canvas$1; +exports.Path = Path; +exports.CircleMarker = CircleMarker; +exports.circleMarker = circleMarker; +exports.Circle = Circle; +exports.circle = circle; +exports.Polyline = Polyline; +exports.polyline = polyline; +exports.Polygon = Polygon; +exports.polygon = polygon; +exports.Rectangle = Rectangle; +exports.rectangle = rectangle; +exports.Map = Map; +exports.map = createMap; + +}))); +/* + * Leaflet.markercluster 1.3.0+master.a4cf31f, + * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. + * https://github.com/Leaflet/Leaflet.markercluster + * (c) 2012-2017, Dave Leaver, smartrak + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = global.Leaflet.markercluster || {}))); +}(this, (function (exports) { 'use strict'; + +/* + * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within + */ + +var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({ + + options: { + maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center + iconCreateFunction: null, + clusterPane: L.Marker.prototype.options.pane, + + spiderfyOnMaxZoom: true, + showCoverageOnHover: true, + zoomToBoundsOnClick: true, + singleMarkerMode: false, + + disableClusteringAtZoom: null, + + // Setting this to false prevents the removal of any clusters outside of the viewpoint, which + // is the default behaviour for performance reasons. + removeOutsideVisibleBounds: true, + + // Set to false to disable all animations (zoom and spiderfy). + // If false, option animateAddingMarkers below has no effect. + // If L.DomUtil.TRANSITION is falsy, this option has no effect. + animate: true, + + //Whether to animate adding markers after adding the MarkerClusterGroup to the map + // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. + animateAddingMarkers: false, + + //Increase to increase the distance away that spiderfied markers appear from the center + spiderfyDistanceMultiplier: 1, + + // Make it possible to specify a polyline options on a spider leg + spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 }, + + // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts + chunkedLoading: false, + chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) + chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser + chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) + + //Options to pass to the L.Polygon constructor + polygonOptions: {} + }, + + initialize: function (options) { + L.Util.setOptions(this, options); + if (!this.options.iconCreateFunction) { + this.options.iconCreateFunction = this._defaultIconCreateFunction; + } + + this._featureGroup = L.featureGroup(); + this._featureGroup.addEventParent(this); + + this._nonPointGroup = L.featureGroup(); + this._nonPointGroup.addEventParent(this); + + this._inZoomAnimation = 0; + this._needsClustering = []; + this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of + //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move + this._currentShownBounds = null; + + this._queue = []; + + this._childMarkerEventHandlers = { + 'dragstart': this._childMarkerDragStart, + 'move': this._childMarkerMoved, + 'dragend': this._childMarkerDragEnd, + }; + + // Hook the appropriate animation methods. + var animate = L.DomUtil.TRANSITION && this.options.animate; + L.extend(this, animate ? this._withAnimation : this._noAnimation); + // Remember which MarkerCluster class to instantiate (animated or not). + this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated; + }, + + addLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + return this.addLayers([layer]); + } + + //Don't cluster non point data + if (!layer.getLatLng) { + this._nonPointGroup.addLayer(layer); + this.fire('layeradd', { layer: layer }); + return this; + } + + if (!this._map) { + this._needsClustering.push(layer); + this.fire('layeradd', { layer: layer }); + return this; + } + + if (this.hasLayer(layer)) { + return this; + } + + + //If we have already clustered we'll need to add this one to a cluster + + if (this._unspiderfy) { + this._unspiderfy(); + } + + this._addLayer(layer, this._maxZoom); + this.fire('layeradd', { layer: layer }); + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + //Work out what is visible + var visibleLayer = layer, + currentZoom = this._zoom; + if (layer.__parent) { + while (visibleLayer.__parent._zoom >= currentZoom) { + visibleLayer = visibleLayer.__parent; + } + } + + if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { + if (this.options.animateAddingMarkers) { + this._animationAddLayer(layer, visibleLayer); + } else { + this._animationAddLayerNonAnimated(layer, visibleLayer); + } + } + return this; + }, + + removeLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + return this.removeLayers([layer]); + } + + //Non point layers + if (!layer.getLatLng) { + this._nonPointGroup.removeLayer(layer); + this.fire('layerremove', { layer: layer }); + return this; + } + + if (!this._map) { + if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { + this._needsRemoving.push({ layer: layer, latlng: layer._latlng }); + } + this.fire('layerremove', { layer: layer }); + return this; + } + + if (!layer.__parent) { + return this; + } + + if (this._unspiderfy) { + this._unspiderfy(); + this._unspiderfyLayer(layer); + } + + //Remove the marker from clusters + this._removeLayer(layer, true); + this.fire('layerremove', { layer: layer }); + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + layer.off(this._childMarkerEventHandlers, this); + + if (this._featureGroup.hasLayer(layer)) { + this._featureGroup.removeLayer(layer); + if (layer.clusterShow) { + layer.clusterShow(); + } + } + + return this; + }, + + //Takes an array of markers and adds them in bulk + addLayers: function (layersArray, skipLayerAddEvent) { + if (!L.Util.isArray(layersArray)) { + return this.addLayer(layersArray); + } + + var fg = this._featureGroup, + npg = this._nonPointGroup, + chunked = this.options.chunkedLoading, + chunkInterval = this.options.chunkInterval, + chunkProgress = this.options.chunkProgress, + l = layersArray.length, + offset = 0, + originalArray = true, + m; + + if (this._map) { + var started = (new Date()).getTime(); + var process = L.bind(function () { + var start = (new Date()).getTime(); + for (; offset < l; offset++) { + if (chunked && offset % 200 === 0) { + // every couple hundred markers, instrument the time elapsed since processing started: + var elapsed = (new Date()).getTime() - start; + if (elapsed > chunkInterval) { + break; // been working too hard, time to take a break :-) + } + } + + m = layersArray[offset]; + + // Group of layers, append children to layersArray and skip. + // Side effects: + // - Total increases, so chunkProgress ratio jumps backward. + // - Groups are not included in this group, only their non-group child layers (hasLayer). + // Changing array length while looping does not affect performance in current browsers: + // http://jsperf.com/for-loop-changing-length/6 + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + //Not point data, can't be clustered + if (!m.getLatLng) { + npg.addLayer(m); + if (!skipLayerAddEvent) { + this.fire('layeradd', { layer: m }); + } + continue; + } + + if (this.hasLayer(m)) { + continue; + } + + this._addLayer(m, this._maxZoom); + if (!skipLayerAddEvent) { + this.fire('layeradd', { layer: m }); + } + + //If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will + if (m.__parent) { + if (m.__parent.getChildCount() === 2) { + var markers = m.__parent.getAllChildMarkers(), + otherMarker = markers[0] === m ? markers[1] : markers[0]; + fg.removeLayer(otherMarker); + } + } + } + + if (chunkProgress) { + // report progress and time elapsed: + chunkProgress(offset, l, (new Date()).getTime() - started); + } + + // Completed processing all markers. + if (offset === l) { + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); + } else { + setTimeout(process, this.options.chunkDelay); + } + }, this); + + process(); + } else { + var needsClustering = this._needsClustering; + + for (; offset < l; offset++) { + m = layersArray[offset]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + //Not point data, can't be clustered + if (!m.getLatLng) { + npg.addLayer(m); + continue; + } + + if (this.hasLayer(m)) { + continue; + } + + needsClustering.push(m); + } + } + return this; + }, + + //Takes an array of markers and removes them in bulk + removeLayers: function (layersArray) { + var i, m, + l = layersArray.length, + fg = this._featureGroup, + npg = this._nonPointGroup, + originalArray = true; + + if (!this._map) { + for (i = 0; i < l; i++) { + m = layersArray[i]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + this._arraySplice(this._needsClustering, m); + npg.removeLayer(m); + if (this.hasLayer(m)) { + this._needsRemoving.push({ layer: m, latlng: m._latlng }); + } + this.fire('layerremove', { layer: m }); + } + return this; + } + + if (this._unspiderfy) { + this._unspiderfy(); + + // Work on a copy of the array, so that next loop is not affected. + var layersArray2 = layersArray.slice(), + l2 = l; + for (i = 0; i < l2; i++) { + m = layersArray2[i]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + this._extractNonGroupLayers(m, layersArray2); + l2 = layersArray2.length; + continue; + } + + this._unspiderfyLayer(m); + } + } + + for (i = 0; i < l; i++) { + m = layersArray[i]; + + // Group of layers, append children to layersArray and skip. + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; + } + this._extractNonGroupLayers(m, layersArray); + l = layersArray.length; + continue; + } + + if (!m.__parent) { + npg.removeLayer(m); + this.fire('layerremove', { layer: m }); + continue; + } + + this._removeLayer(m, true, true); + this.fire('layerremove', { layer: m }); + + if (fg.hasLayer(m)) { + fg.removeLayer(m); + if (m.clusterShow) { + m.clusterShow(); + } + } + } + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + //Fix up the clusters and markers on the map + this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds); + + return this; + }, + + //Removes all layers from the MarkerClusterGroup + clearLayers: function () { + //Need our own special implementation as the LayerGroup one doesn't work for us + + //If we aren't on the map (yet), blow away the markers we know of + if (!this._map) { + this._needsClustering = []; + delete this._gridClusters; + delete this._gridUnclustered; + } + + if (this._noanimationUnspiderfy) { + this._noanimationUnspiderfy(); + } + + //Remove all the visible layers + this._featureGroup.clearLayers(); + this._nonPointGroup.clearLayers(); + + this.eachLayer(function (marker) { + marker.off(this._childMarkerEventHandlers, this); + delete marker.__parent; + }, this); + + if (this._map) { + //Reset _topClusterLevel and the DistanceGrids + this._generateInitialClusters(); + } + + return this; + }, + + //Override FeatureGroup.getBounds as it doesn't work + getBounds: function () { + var bounds = new L.LatLngBounds(); + + if (this._topClusterLevel) { + bounds.extend(this._topClusterLevel._bounds); + } + + for (var i = this._needsClustering.length - 1; i >= 0; i--) { + bounds.extend(this._needsClustering[i].getLatLng()); + } + + bounds.extend(this._nonPointGroup.getBounds()); + + return bounds; + }, + + //Overrides LayerGroup.eachLayer + eachLayer: function (method, context) { + var markers = this._needsClustering.slice(), + needsRemoving = this._needsRemoving, + thisNeedsRemoving, i, j; + + if (this._topClusterLevel) { + this._topClusterLevel.getAllChildMarkers(markers); + } + + for (i = markers.length - 1; i >= 0; i--) { + thisNeedsRemoving = true; + + for (j = needsRemoving.length - 1; j >= 0; j--) { + if (needsRemoving[j].layer === markers[i]) { + thisNeedsRemoving = false; + break; + } + } + + if (thisNeedsRemoving) { + method.call(context, markers[i]); + } + } + + this._nonPointGroup.eachLayer(method, context); + }, + + //Overrides LayerGroup.getLayers + getLayers: function () { + var layers = []; + this.eachLayer(function (l) { + layers.push(l); + }); + return layers; + }, + + //Overrides LayerGroup.getLayer, WARNING: Really bad performance + getLayer: function (id) { + var result = null; + + id = parseInt(id, 10); + + this.eachLayer(function (l) { + if (L.stamp(l) === id) { + result = l; + } + }); + + return result; + }, + + //Returns true if the given layer is in this MarkerClusterGroup + hasLayer: function (layer) { + if (!layer) { + return false; + } + + var i, anArray = this._needsClustering; + + for (i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === layer) { + return true; + } + } + + anArray = this._needsRemoving; + for (i = anArray.length - 1; i >= 0; i--) { + if (anArray[i].layer === layer) { + return false; + } + } + + return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer); + }, + + //Zoom down to show the given layer (spiderfying if necessary) then calls the callback + zoomToShowLayer: function (layer, callback) { + + if (typeof callback !== 'function') { + callback = function () {}; + } + + var showMarker = function () { + if ((layer._icon || layer.__parent._icon) && !this._inZoomAnimation) { + this._map.off('moveend', showMarker, this); + this.off('animationend', showMarker, this); + + if (layer._icon) { + callback(); + } else if (layer.__parent._icon) { + this.once('spiderfied', callback, this); + layer.__parent.spiderfy(); + } + } + }; + + if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) { + //Layer is visible ond on screen, immediate return + callback(); + } else if (layer.__parent._zoom < Math.round(this._map._zoom)) { + //Layer should be visible at this zoom level. It must not be on screen so just pan over to it + this._map.on('moveend', showMarker, this); + this._map.panTo(layer.getLatLng()); + } else { + this._map.on('moveend', showMarker, this); + this.on('animationend', showMarker, this); + layer.__parent.zoomToBounds(); + } + }, + + //Overrides FeatureGroup.onAdd + onAdd: function (map) { + this._map = map; + var i, l, layer; + + if (!isFinite(this._map.getMaxZoom())) { + throw "Map has no maxZoom specified"; + } + + this._featureGroup.addTo(map); + this._nonPointGroup.addTo(map); + + if (!this._gridClusters) { + this._generateInitialClusters(); + } + + this._maxLat = map.options.crs.projection.MAX_LATITUDE; + + //Restore all the positions as they are in the MCG before removing them + for (i = 0, l = this._needsRemoving.length; i < l; i++) { + layer = this._needsRemoving[i]; + layer.newlatlng = layer.layer._latlng; + layer.layer._latlng = layer.latlng; + } + //Remove them, then restore their new positions + for (i = 0, l = this._needsRemoving.length; i < l; i++) { + layer = this._needsRemoving[i]; + this._removeLayer(layer.layer, true); + layer.layer._latlng = layer.newlatlng; + } + this._needsRemoving = []; + + //Remember the current zoom level and bounds + this._zoom = Math.round(this._map._zoom); + this._currentShownBounds = this._getExpandedVisibleBounds(); + + this._map.on('zoomend', this._zoomEnd, this); + this._map.on('moveend', this._moveEnd, this); + + if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely + this._spiderfierOnAdd(); + } + + this._bindEvents(); + + //Actually add our markers to the map: + l = this._needsClustering; + this._needsClustering = []; + this.addLayers(l, true); + }, + + //Overrides FeatureGroup.onRemove + onRemove: function (map) { + map.off('zoomend', this._zoomEnd, this); + map.off('moveend', this._moveEnd, this); + + this._unbindEvents(); + + //In case we are in a cluster animation + this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); + + if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely + this._spiderfierOnRemove(); + } + + delete this._maxLat; + + //Clean up all the layers we added to the map + this._hideCoverage(); + this._featureGroup.remove(); + this._nonPointGroup.remove(); + + this._featureGroup.clearLayers(); + + this._map = null; + }, + + getVisibleParent: function (marker) { + var vMarker = marker; + while (vMarker && !vMarker._icon) { + vMarker = vMarker.__parent; + } + return vMarker || null; + }, + + //Remove the given object from the given array + _arraySplice: function (anArray, obj) { + for (var i = anArray.length - 1; i >= 0; i--) { + if (anArray[i] === obj) { + anArray.splice(i, 1); + return true; + } + } + }, + + /** + * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom. + * @param marker to be removed from _gridUnclustered. + * @param z integer bottom start zoom level (included) + * @private + */ + _removeFromGridUnclustered: function (marker, z) { + var map = this._map, + gridUnclustered = this._gridUnclustered, + minZoom = Math.floor(this._map.getMinZoom()); + + for (; z >= minZoom; z--) { + if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) { + break; + } + } + }, + + _childMarkerDragStart: function (e) { + e.target.__dragStart = e.target._latlng; + }, + + _childMarkerMoved: function (e) { + if (!this._ignoreMove && !e.target.__dragStart) { + var isPopupOpen = e.target._popup && e.target._popup.isOpen(); + + this._moveChild(e.target, e.oldLatLng, e.latlng); + + if (isPopupOpen) { + e.target.openPopup(); + } + } + }, + + _moveChild: function (layer, from, to) { + layer._latlng = from; + this.removeLayer(layer); + + layer._latlng = to; + this.addLayer(layer); + }, + + _childMarkerDragEnd: function (e) { + if (e.target.__dragStart) { + this._moveChild(e.target, e.target.__dragStart, e.target._latlng); + } + delete e.target.__dragStart; + }, + + + //Internal function for removing a marker from everything. + //dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions) + _removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) { + var gridClusters = this._gridClusters, + gridUnclustered = this._gridUnclustered, + fg = this._featureGroup, + map = this._map, + minZoom = Math.floor(this._map.getMinZoom()); + + //Remove the marker from distance clusters it might be in + if (removeFromDistanceGrid) { + this._removeFromGridUnclustered(marker, this._maxZoom); + } + + //Work our way up the clusters removing them as we go if required + var cluster = marker.__parent, + markers = cluster._markers, + otherMarker; + + //Remove the marker from the immediate parents marker list + this._arraySplice(markers, marker); + + while (cluster) { + cluster._childCount--; + cluster._boundsNeedUpdate = true; + + if (cluster._zoom < minZoom) { + //Top level, do nothing + break; + } else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required + //We need to push the other marker up to the parent + otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0]; + + //Update distance grid + gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom)); + gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom)); + + //Move otherMarker up to parent + this._arraySplice(cluster.__parent._childClusters, cluster); + cluster.__parent._markers.push(otherMarker); + otherMarker.__parent = cluster.__parent; + + if (cluster._icon) { + //Cluster is currently on the map, need to put the marker on the map instead + fg.removeLayer(cluster); + if (!dontUpdateMap) { + fg.addLayer(otherMarker); + } + } + } else { + cluster._iconNeedsUpdate = true; + } + + cluster = cluster.__parent; + } + + delete marker.__parent; + }, + + _isOrIsParent: function (el, oel) { + while (oel) { + if (el === oel) { + return true; + } + oel = oel.parentNode; + } + return false; + }, + + //Override L.Evented.fire + fire: function (type, data, propagate) { + if (data && data.layer instanceof L.MarkerCluster) { + //Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget) + if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) { + return; + } + type = 'cluster' + type; + } + + L.FeatureGroup.prototype.fire.call(this, type, data, propagate); + }, + + //Override L.Evented.listens + listens: function (type, propagate) { + return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate); + }, + + //Default functionality + _defaultIconCreateFunction: function (cluster) { + var childCount = cluster.getChildCount(); + + var c = ' marker-cluster-'; + if (childCount < 10) { + c += 'small'; + } else if (childCount < 100) { + c += 'medium'; + } else { + c += 'large'; + } + + return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) }); + }, + + _bindEvents: function () { + var map = this._map, + spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, + showCoverageOnHover = this.options.showCoverageOnHover, + zoomToBoundsOnClick = this.options.zoomToBoundsOnClick; + + //Zoom on cluster click or spiderfy if we are at the lowest level + if (spiderfyOnMaxZoom || zoomToBoundsOnClick) { + this.on('clusterclick', this._zoomOrSpiderfy, this); + } + + //Show convex hull (boundary) polygon on mouse over + if (showCoverageOnHover) { + this.on('clustermouseover', this._showCoverage, this); + this.on('clustermouseout', this._hideCoverage, this); + map.on('zoomend', this._hideCoverage, this); + } + }, + + _zoomOrSpiderfy: function (e) { + var cluster = e.layer, + bottomCluster = cluster; + + while (bottomCluster._childClusters.length === 1) { + bottomCluster = bottomCluster._childClusters[0]; + } + + if (bottomCluster._zoom === this._maxZoom && + bottomCluster._childCount === cluster._childCount && + this.options.spiderfyOnMaxZoom) { + + // All child markers are contained in a single cluster from this._maxZoom to this cluster. + cluster.spiderfy(); + } else if (this.options.zoomToBoundsOnClick) { + cluster.zoomToBounds(); + } + + // Focus the map again for keyboard users. + if (e.originalEvent && e.originalEvent.keyCode === 13) { + this._map._container.focus(); + } + }, + + _showCoverage: function (e) { + var map = this._map; + if (this._inZoomAnimation) { + return; + } + if (this._shownPolygon) { + map.removeLayer(this._shownPolygon); + } + if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) { + this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions); + map.addLayer(this._shownPolygon); + } + }, + + _hideCoverage: function () { + if (this._shownPolygon) { + this._map.removeLayer(this._shownPolygon); + this._shownPolygon = null; + } + }, + + _unbindEvents: function () { + var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom, + showCoverageOnHover = this.options.showCoverageOnHover, + zoomToBoundsOnClick = this.options.zoomToBoundsOnClick, + map = this._map; + + if (spiderfyOnMaxZoom || zoomToBoundsOnClick) { + this.off('clusterclick', this._zoomOrSpiderfy, this); + } + if (showCoverageOnHover) { + this.off('clustermouseover', this._showCoverage, this); + this.off('clustermouseout', this._hideCoverage, this); + map.off('zoomend', this._hideCoverage, this); + } + }, + + _zoomEnd: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } + this._mergeSplitClusters(); + + this._zoom = Math.round(this._map._zoom); + this._currentShownBounds = this._getExpandedVisibleBounds(); + }, + + _moveEnd: function () { + if (this._inZoomAnimation) { + return; + } + + var newBounds = this._getExpandedVisibleBounds(); + + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds); + this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds); + + this._currentShownBounds = newBounds; + return; + }, + + _generateInitialClusters: function () { + var maxZoom = Math.ceil(this._map.getMaxZoom()), + minZoom = Math.floor(this._map.getMinZoom()), + radius = this.options.maxClusterRadius, + radiusFn = radius; + + //If we just set maxClusterRadius to a single number, we need to create + //a simple function to return that number. Otherwise, we just have to + //use the function we've passed in. + if (typeof radius !== "function") { + radiusFn = function () { return radius; }; + } + + if (this.options.disableClusteringAtZoom !== null) { + maxZoom = this.options.disableClusteringAtZoom - 1; + } + this._maxZoom = maxZoom; + this._gridClusters = {}; + this._gridUnclustered = {}; + + //Set up DistanceGrids for each zoom + for (var zoom = maxZoom; zoom >= minZoom; zoom--) { + this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom)); + this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom)); + } + + // Instantiate the appropriate L.MarkerCluster class (animated or not). + this._topClusterLevel = new this._markerCluster(this, minZoom - 1); + }, + + //Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom) + _addLayer: function (layer, zoom) { + var gridClusters = this._gridClusters, + gridUnclustered = this._gridUnclustered, + minZoom = Math.floor(this._map.getMinZoom()), + markerPoint, z; + + if (this.options.singleMarkerMode) { + this._overrideMarkerIcon(layer); + } + + layer.on(this._childMarkerEventHandlers, this); + + //Find the lowest zoom level to slot this one in + for (; zoom >= minZoom; zoom--) { + markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position + + //Try find a cluster close by + var closest = gridClusters[zoom].getNearObject(markerPoint); + if (closest) { + closest._addChild(layer); + layer.__parent = closest; + return; + } + + //Try find a marker close by to form a new cluster with + closest = gridUnclustered[zoom].getNearObject(markerPoint); + if (closest) { + var parent = closest.__parent; + if (parent) { + this._removeLayer(closest, false); + } + + //Create new cluster with these 2 in it + + var newCluster = new this._markerCluster(this, zoom, closest, layer); + gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom)); + closest.__parent = newCluster; + layer.__parent = newCluster; + + //First create any new intermediate parent clusters that don't exist + var lastParent = newCluster; + for (z = zoom - 1; z > parent._zoom; z--) { + lastParent = new this._markerCluster(this, z, lastParent); + gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z)); + } + parent._addChild(lastParent); + + //Remove closest from this zoom level and any above that it is in, replace with newCluster + this._removeFromGridUnclustered(closest, zoom); + + return; + } + + //Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards + gridUnclustered[zoom].addObject(layer, markerPoint); + } + + //Didn't get in anything, add us to the top + this._topClusterLevel._addChild(layer); + layer.__parent = this._topClusterLevel; + return; + }, + + /** + * Refreshes the icon of all "dirty" visible clusters. + * Non-visible "dirty" clusters will be updated when they are added to the map. + * @private + */ + _refreshClustersIcons: function () { + this._featureGroup.eachLayer(function (c) { + if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) { + c._updateIcon(); + } + }); + }, + + //Enqueue code to fire after the marker expand/contract has happened + _enqueue: function (fn) { + this._queue.push(fn); + if (!this._queueTimeout) { + this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300); + } + }, + _processQueue: function () { + for (var i = 0; i < this._queue.length; i++) { + this._queue[i].call(this); + } + this._queue.length = 0; + clearTimeout(this._queueTimeout); + this._queueTimeout = null; + }, + + //Merge and split any existing clusters that are too big or small + _mergeSplitClusters: function () { + var mapZoom = Math.round(this._map._zoom); + + //In case we are starting to split before the animation finished + this._processQueue(); + + if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split + this._animationStart(); + //Remove clusters now off screen + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds()); + + this._animationZoomIn(this._zoom, mapZoom); + + } else if (this._zoom > mapZoom) { //Zoom out, merge + this._animationStart(); + + this._animationZoomOut(this._zoom, mapZoom); + } else { + this._moveEnd(); + } + }, + + //Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan) + _getExpandedVisibleBounds: function () { + if (!this.options.removeOutsideVisibleBounds) { + return this._mapBoundsInfinite; + } else if (L.Browser.mobile) { + return this._checkBoundsMaxLat(this._map.getBounds()); + } + + return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor. + }, + + /** + * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude + * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas). + * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without + * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit, + * making the user think that MCG "eats" them and never displays them again. + * @param bounds L.LatLngBounds + * @returns {L.LatLngBounds} + * @private + */ + _checkBoundsMaxLat: function (bounds) { + var maxLat = this._maxLat; + + if (maxLat !== undefined) { + if (bounds.getNorth() >= maxLat) { + bounds._northEast.lat = Infinity; + } + if (bounds.getSouth() <= -maxLat) { + bounds._southWest.lat = -Infinity; + } + } + + return bounds; + }, + + //Shared animation code + _animationAddLayerNonAnimated: function (layer, newCluster) { + if (newCluster === layer) { + this._featureGroup.addLayer(layer); + } else if (newCluster._childCount === 2) { + newCluster._addToMap(); + + var markers = newCluster.getAllChildMarkers(); + this._featureGroup.removeLayer(markers[0]); + this._featureGroup.removeLayer(markers[1]); + } else { + newCluster._updateIcon(); + } + }, + + /** + * Extracts individual (i.e. non-group) layers from a Layer Group. + * @param group to extract layers from. + * @param output {Array} in which to store the extracted layers. + * @returns {*|Array} + * @private + */ + _extractNonGroupLayers: function (group, output) { + var layers = group.getLayers(), + i = 0, + layer; + + output = output || []; + + for (; i < layers.length; i++) { + layer = layers[i]; + + if (layer instanceof L.LayerGroup) { + this._extractNonGroupLayers(layer, output); + continue; + } + + output.push(layer); + } + + return output; + }, + + /** + * Implements the singleMarkerMode option. + * @param layer Marker to re-style using the Clusters iconCreateFunction. + * @returns {L.Icon} The newly created icon. + * @private + */ + _overrideMarkerIcon: function (layer) { + var icon = layer.options.icon = this.options.iconCreateFunction({ + getChildCount: function () { + return 1; + }, + getAllChildMarkers: function () { + return [layer]; + } + }); + + return icon; + } +}); + +// Constant bounds used in case option "removeOutsideVisibleBounds" is set to false. +L.MarkerClusterGroup.include({ + _mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity)) +}); + +L.MarkerClusterGroup.include({ + _noAnimation: { + //Non Animated versions of everything + _animationStart: function () { + //Do nothing... + }, + _animationZoomIn: function (previousZoomLevel, newZoomLevel) { + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + + //We didn't actually animate, but we use this event to mean "clustering animations have finished" + this.fire('animationend'); + }, + _animationZoomOut: function (previousZoomLevel, newZoomLevel) { + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel); + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + + //We didn't actually animate, but we use this event to mean "clustering animations have finished" + this.fire('animationend'); + }, + _animationAddLayer: function (layer, newCluster) { + this._animationAddLayerNonAnimated(layer, newCluster); + } + }, + + _withAnimation: { + //Animated versions here + _animationStart: function () { + this._map._mapPane.className += ' leaflet-cluster-anim'; + this._inZoomAnimation++; + }, + + _animationZoomIn: function (previousZoomLevel, newZoomLevel) { + var bounds = this._getExpandedVisibleBounds(), + fg = this._featureGroup, + minZoom = Math.floor(this._map.getMinZoom()), + i; + + this._ignoreMove = true; + + //Add all children of current clusters to map and remove those clusters from map + this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { + var startPos = c._latlng, + markers = c._markers, + m; + + if (!bounds.contains(startPos)) { + startPos = null; + } + + if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us + fg.removeLayer(c); + c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds); + } else { + //Fade out old cluster + c.clusterHide(); + c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds); + } + + //Remove all markers that aren't visible any more + //TODO: Do we actually need to do this on the higher levels too? + for (i = markers.length - 1; i >= 0; i--) { + m = markers[i]; + if (!bounds.contains(m._latlng)) { + fg.removeLayer(m); + } + } + + }); + + this._forceLayout(); + + //Update opacities + this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel); + //TODO Maybe? Update markers in _recursivelyBecomeVisible + fg.eachLayer(function (n) { + if (!(n instanceof L.MarkerCluster) && n._icon) { + n.clusterShow(); + } + }); + + //update the positions of the just added clusters/markers + this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) { + c._recursivelyRestoreChildPositions(newZoomLevel); + }); + + this._ignoreMove = false; + + //Remove the old clusters and close the zoom animation + this._enqueue(function () { + //update the positions of the just added clusters/markers + this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) { + fg.removeLayer(c); + c.clusterShow(); + }); + + this._animationEnd(); + }); + }, + + _animationZoomOut: function (previousZoomLevel, newZoomLevel) { + this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel); + + //Need to add markers for those that weren't on the map before but are now + this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds()); + //Remove markers that were on the map before but won't be now + this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds()); + }, + + _animationAddLayer: function (layer, newCluster) { + var me = this, + fg = this._featureGroup; + + fg.addLayer(layer); + if (newCluster !== layer) { + if (newCluster._childCount > 2) { //Was already a cluster + + newCluster._updateIcon(); + this._forceLayout(); + this._animationStart(); + + layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng())); + layer.clusterHide(); + + this._enqueue(function () { + fg.removeLayer(layer); + layer.clusterShow(); + + me._animationEnd(); + }); + + } else { //Just became a cluster + this._forceLayout(); + + me._animationStart(); + me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom); + } + } + } + }, + + // Private methods for animated versions. + _animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) { + var bounds = this._getExpandedVisibleBounds(), + minZoom = Math.floor(this._map.getMinZoom()); + + //Animate all of the markers in the clusters to move to their cluster center point + cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel); + + var me = this; + + //Update the opacity (If we immediately set it they won't animate) + this._forceLayout(); + cluster._recursivelyBecomeVisible(bounds, newZoomLevel); + + //TODO: Maybe use the transition timing stuff to make this more reliable + //When the animations are done, tidy up + this._enqueue(function () { + + //This cluster stopped being a cluster before the timeout fired + if (cluster._childCount === 1) { + var m = cluster._markers[0]; + //If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it + this._ignoreMove = true; + m.setLatLng(m.getLatLng()); + this._ignoreMove = false; + if (m.clusterShow) { + m.clusterShow(); + } + } else { + cluster._recursively(bounds, newZoomLevel, minZoom, function (c) { + c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1); + }); + } + me._animationEnd(); + }); + }, + + _animationEnd: function () { + if (this._map) { + this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', ''); + } + this._inZoomAnimation--; + this.fire('animationend'); + }, + + //Force a browser layout of stuff in the map + // Should apply the current opacity and location to all elements so we can update them again for an animation + _forceLayout: function () { + //In my testing this works, infact offsetWidth of any element seems to work. + //Could loop all this._layers and do this for each _icon if it stops working + + L.Util.falseFn(document.body.offsetWidth); + } +}); + +L.markerClusterGroup = function (options) { + return new L.MarkerClusterGroup(options); +}; + +var MarkerCluster = L.MarkerCluster = L.Marker.extend({ + options: L.Icon.prototype.options, + + initialize: function (group, zoom, a, b) { + + L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0), + { icon: this, pane: group.options.clusterPane }); + + this._group = group; + this._zoom = zoom; + + this._markers = []; + this._childClusters = []; + this._childCount = 0; + this._iconNeedsUpdate = true; + this._boundsNeedUpdate = true; + + this._bounds = new L.LatLngBounds(); + + if (a) { + this._addChild(a); + } + if (b) { + this._addChild(b); + } + }, + + //Recursively retrieve all child markers of this cluster + getAllChildMarkers: function (storageArray) { + storageArray = storageArray || []; + + for (var i = this._childClusters.length - 1; i >= 0; i--) { + this._childClusters[i].getAllChildMarkers(storageArray); + } + + for (var j = this._markers.length - 1; j >= 0; j--) { + storageArray.push(this._markers[j]); + } + + return storageArray; + }, + + //Returns the count of how many child markers we have + getChildCount: function () { + return this._childCount; + }, + + //Zoom to the minimum of showing all of the child markers, or the extents of this cluster + zoomToBounds: function (fitBoundsOptions) { + var childClusters = this._childClusters.slice(), + map = this._group._map, + boundsZoom = map.getBoundsZoom(this._bounds), + zoom = this._zoom + 1, + mapZoom = map.getZoom(), + i; + + //calculate how far we need to zoom down to see all of the markers + while (childClusters.length > 0 && boundsZoom > zoom) { + zoom++; + var newClusters = []; + for (i = 0; i < childClusters.length; i++) { + newClusters = newClusters.concat(childClusters[i]._childClusters); + } + childClusters = newClusters; + } + + if (boundsZoom > zoom) { + this._group._map.setView(this._latlng, zoom); + } else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead + this._group._map.setView(this._latlng, mapZoom + 1); + } else { + this._group._map.fitBounds(this._bounds, fitBoundsOptions); + } + }, + + getBounds: function () { + var bounds = new L.LatLngBounds(); + bounds.extend(this._bounds); + return bounds; + }, + + _updateIcon: function () { + this._iconNeedsUpdate = true; + if (this._icon) { + this.setIcon(this); + } + }, + + //Cludge for Icon, we pretend to be an icon for performance + createIcon: function () { + if (this._iconNeedsUpdate) { + this._iconObj = this._group.options.iconCreateFunction(this); + this._iconNeedsUpdate = false; + } + return this._iconObj.createIcon(); + }, + createShadow: function () { + return this._iconObj.createShadow(); + }, + + + _addChild: function (new1, isNotificationFromChild) { + + this._iconNeedsUpdate = true; + + this._boundsNeedUpdate = true; + this._setClusterCenter(new1); + + if (new1 instanceof L.MarkerCluster) { + if (!isNotificationFromChild) { + this._childClusters.push(new1); + new1.__parent = this; + } + this._childCount += new1._childCount; + } else { + if (!isNotificationFromChild) { + this._markers.push(new1); + } + this._childCount++; + } + + if (this.__parent) { + this.__parent._addChild(new1, true); + } + }, + + /** + * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position. + * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet. + * @private + */ + _setClusterCenter: function (child) { + if (!this._cLatLng) { + // when clustering, take position of the first point as the cluster center + this._cLatLng = child._cLatLng || child._latlng; + } + }, + + /** + * Assigns impossible bounding values so that the next extend entirely determines the new bounds. + * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class. + * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended. + * @private + */ + _resetBounds: function () { + var bounds = this._bounds; + + if (bounds._southWest) { + bounds._southWest.lat = Infinity; + bounds._southWest.lng = Infinity; + } + if (bounds._northEast) { + bounds._northEast.lat = -Infinity; + bounds._northEast.lng = -Infinity; + } + }, + + _recalculateBounds: function () { + var markers = this._markers, + childClusters = this._childClusters, + latSum = 0, + lngSum = 0, + totalCount = this._childCount, + i, child, childLatLng, childCount; + + // Case where all markers are removed from the map and we are left with just an empty _topClusterLevel. + if (totalCount === 0) { + return; + } + + // Reset rather than creating a new object, for performance. + this._resetBounds(); + + // Child markers. + for (i = 0; i < markers.length; i++) { + childLatLng = markers[i]._latlng; + + this._bounds.extend(childLatLng); + + latSum += childLatLng.lat; + lngSum += childLatLng.lng; + } + + // Child clusters. + for (i = 0; i < childClusters.length; i++) { + child = childClusters[i]; + + // Re-compute child bounds and weighted position first if necessary. + if (child._boundsNeedUpdate) { + child._recalculateBounds(); + } + + this._bounds.extend(child._bounds); + + childLatLng = child._wLatLng; + childCount = child._childCount; + + latSum += childLatLng.lat * childCount; + lngSum += childLatLng.lng * childCount; + } + + this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount); + + // Reset dirty flag. + this._boundsNeedUpdate = false; + }, + + //Set our markers position as given and add it to the map + _addToMap: function (startPos) { + if (startPos) { + this._backupLatlng = this._latlng; + this.setLatLng(startPos); + } + this._group._featureGroup.addLayer(this); + }, + + _recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) { + this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1, + function (c) { + var markers = c._markers, + i, m; + for (i = markers.length - 1; i >= 0; i--) { + m = markers[i]; + + //Only do it if the icon is still on the map + if (m._icon) { + m._setPos(center); + m.clusterHide(); + } + } + }, + function (c) { + var childClusters = c._childClusters, + j, cm; + for (j = childClusters.length - 1; j >= 0; j--) { + cm = childClusters[j]; + if (cm._icon) { + cm._setPos(center); + cm.clusterHide(); + } + } + } + ); + }, + + _recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) { + this._recursively(bounds, newZoomLevel, mapMinZoom, + function (c) { + c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel); + + //TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be. + //As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate + if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) { + c.clusterShow(); + c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds + } else { + c.clusterHide(); + } + + c._addToMap(); + } + ); + }, + + _recursivelyBecomeVisible: function (bounds, zoomLevel) { + this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) { + c.clusterShow(); + }); + }, + + _recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) { + this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel, + function (c) { + if (zoomLevel === c._zoom) { + return; + } + + //Add our child markers at startPos (so they can be animated out) + for (var i = c._markers.length - 1; i >= 0; i--) { + var nm = c._markers[i]; + + if (!bounds.contains(nm._latlng)) { + continue; + } + + if (startPos) { + nm._backupLatlng = nm.getLatLng(); + + nm.setLatLng(startPos); + if (nm.clusterHide) { + nm.clusterHide(); + } + } + + c._group._featureGroup.addLayer(nm); + } + }, + function (c) { + c._addToMap(startPos); + } + ); + }, + + _recursivelyRestoreChildPositions: function (zoomLevel) { + //Fix positions of child markers + for (var i = this._markers.length - 1; i >= 0; i--) { + var nm = this._markers[i]; + if (nm._backupLatlng) { + nm.setLatLng(nm._backupLatlng); + delete nm._backupLatlng; + } + } + + if (zoomLevel - 1 === this._zoom) { + //Reposition child clusters + for (var j = this._childClusters.length - 1; j >= 0; j--) { + this._childClusters[j]._restorePosition(); + } + } else { + for (var k = this._childClusters.length - 1; k >= 0; k--) { + this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel); + } + } + }, + + _restorePosition: function () { + if (this._backupLatlng) { + this.setLatLng(this._backupLatlng); + delete this._backupLatlng; + } + }, + + //exceptBounds: If set, don't remove any markers/clusters in it + _recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) { + var m, i; + this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1, + function (c) { + //Remove markers at every level + for (i = c._markers.length - 1; i >= 0; i--) { + m = c._markers[i]; + if (!exceptBounds || !exceptBounds.contains(m._latlng)) { + c._group._featureGroup.removeLayer(m); + if (m.clusterShow) { + m.clusterShow(); + } + } + } + }, + function (c) { + //Remove child clusters at just the bottom level + for (i = c._childClusters.length - 1; i >= 0; i--) { + m = c._childClusters[i]; + if (!exceptBounds || !exceptBounds.contains(m._latlng)) { + c._group._featureGroup.removeLayer(m); + if (m.clusterShow) { + m.clusterShow(); + } + } + } + } + ); + }, + + //Run the given functions recursively to this and child clusters + // boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to + // zoomLevelToStart: zoom level to start running functions (inclusive) + // zoomLevelToStop: zoom level to stop running functions (inclusive) + // runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level + // runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level + _recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) { + var childClusters = this._childClusters, + zoom = this._zoom, + i, c; + + if (zoomLevelToStart <= zoom) { + if (runAtEveryLevel) { + runAtEveryLevel(this); + } + if (runAtBottomLevel && zoom === zoomLevelToStop) { + runAtBottomLevel(this); + } + } + + if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) { + for (i = childClusters.length - 1; i >= 0; i--) { + c = childClusters[i]; + if (boundsToApplyTo.intersects(c._bounds)) { + c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel); + } + } + } + }, + + //Returns true if we are the parent of only one cluster and that cluster is the same as us + _isSingleParent: function () { + //Don't need to check this._markers as the rest won't work if there are any + return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount; + } +}); + +/* +* Extends L.Marker to include two extra methods: clusterHide and clusterShow. +* +* They work as setOpacity(0) and setOpacity(1) respectively, but +* they will remember the marker's opacity when hiding and showing it again. +* +*/ + + +L.Marker.include({ + + clusterHide: function () { + this.options.opacityWhenUnclustered = this.options.opacity || 1; + return this.setOpacity(0); + }, + + clusterShow: function () { + var ret = this.setOpacity(this.options.opacity || this.options.opacityWhenUnclustered); + delete this.options.opacityWhenUnclustered; + return ret; + } + +}); + +L.DistanceGrid = function (cellSize) { + this._cellSize = cellSize; + this._sqCellSize = cellSize * cellSize; + this._grid = {}; + this._objectPoint = { }; +}; + +L.DistanceGrid.prototype = { + + addObject: function (obj, point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + grid = this._grid, + row = grid[y] = grid[y] || {}, + cell = row[x] = row[x] || [], + stamp = L.Util.stamp(obj); + + this._objectPoint[stamp] = point; + + cell.push(obj); + }, + + updateObject: function (obj, point) { + this.removeObject(obj); + this.addObject(obj, point); + }, + + //Returns true if the object was found + removeObject: function (obj, point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + grid = this._grid, + row = grid[y] = grid[y] || {}, + cell = row[x] = row[x] || [], + i, len; + + delete this._objectPoint[L.Util.stamp(obj)]; + + for (i = 0, len = cell.length; i < len; i++) { + if (cell[i] === obj) { + + cell.splice(i, 1); + + if (len === 1) { + delete row[x]; + } + + return true; + } + } + + }, + + eachObject: function (fn, context) { + var i, j, k, len, row, cell, removed, + grid = this._grid; + + for (i in grid) { + row = grid[i]; + + for (j in row) { + cell = row[j]; + + for (k = 0, len = cell.length; k < len; k++) { + removed = fn.call(context, cell[k]); + if (removed) { + k--; + len--; + } + } + } + } + }, + + getNearObject: function (point) { + var x = this._getCoord(point.x), + y = this._getCoord(point.y), + i, j, k, row, cell, len, obj, dist, + objectPoint = this._objectPoint, + closestDistSq = this._sqCellSize, + closest = null; + + for (i = y - 1; i <= y + 1; i++) { + row = this._grid[i]; + if (row) { + + for (j = x - 1; j <= x + 1; j++) { + cell = row[j]; + if (cell) { + + for (k = 0, len = cell.length; k < len; k++) { + obj = cell[k]; + dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point); + if (dist < closestDistSq || + dist <= closestDistSq && closest === null) { + closestDistSq = dist; + closest = obj; + } + } + } + } + } + } + return closest; + }, + + _getCoord: function (x) { + var coord = Math.floor(x / this._cellSize); + return isFinite(coord) ? coord : x; + }, + + _sqDist: function (p, p2) { + var dx = p2.x - p.x, + dy = p2.y - p.y; + return dx * dx + dy * dy; + } +}; + +/* Copyright (c) 2012 the authors listed at the following URL, and/or +the authors of referenced articles or incorporated external code: +http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256 + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434 +*/ + +(function () { + L.QuickHull = { + + /* + * @param {Object} cpt a point to be measured from the baseline + * @param {Array} bl the baseline, as represented by a two-element + * array of latlng objects. + * @returns {Number} an approximate distance measure + */ + getDistant: function (cpt, bl) { + var vY = bl[1].lat - bl[0].lat, + vX = bl[0].lng - bl[1].lng; + return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng)); + }, + + /* + * @param {Array} baseLine a two-element array of latlng objects + * representing the baseline to project from + * @param {Array} latLngs an array of latlng objects + * @returns {Object} the maximum point and all new points to stay + * in consideration for the hull. + */ + findMostDistantPointFromBaseLine: function (baseLine, latLngs) { + var maxD = 0, + maxPt = null, + newPoints = [], + i, pt, d; + + for (i = latLngs.length - 1; i >= 0; i--) { + pt = latLngs[i]; + d = this.getDistant(pt, baseLine); + + if (d > 0) { + newPoints.push(pt); + } else { + continue; + } + + if (d > maxD) { + maxD = d; + maxPt = pt; + } + } + + return { maxPoint: maxPt, newPoints: newPoints }; + }, + + + /* + * Given a baseline, compute the convex hull of latLngs as an array + * of latLngs. + * + * @param {Array} latLngs + * @returns {Array} + */ + buildConvexHull: function (baseLine, latLngs) { + var convexHullBaseLines = [], + t = this.findMostDistantPointFromBaseLine(baseLine, latLngs); + + if (t.maxPoint) { // if there is still a point "outside" the base line + convexHullBaseLines = + convexHullBaseLines.concat( + this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints) + ); + convexHullBaseLines = + convexHullBaseLines.concat( + this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints) + ); + return convexHullBaseLines; + } else { // if there is no more point "outside" the base line, the current base line is part of the convex hull + return [baseLine[0]]; + } + }, + + /* + * Given an array of latlngs, compute a convex hull as an array + * of latlngs + * + * @param {Array} latLngs + * @returns {Array} + */ + getConvexHull: function (latLngs) { + // find first baseline + var maxLat = false, minLat = false, + maxLng = false, minLng = false, + maxLatPt = null, minLatPt = null, + maxLngPt = null, minLngPt = null, + maxPt = null, minPt = null, + i; + + for (i = latLngs.length - 1; i >= 0; i--) { + var pt = latLngs[i]; + if (maxLat === false || pt.lat > maxLat) { + maxLatPt = pt; + maxLat = pt.lat; + } + if (minLat === false || pt.lat < minLat) { + minLatPt = pt; + minLat = pt.lat; + } + if (maxLng === false || pt.lng > maxLng) { + maxLngPt = pt; + maxLng = pt.lng; + } + if (minLng === false || pt.lng < minLng) { + minLngPt = pt; + minLng = pt.lng; + } + } + + if (minLat !== maxLat) { + minPt = minLatPt; + maxPt = maxLatPt; + } else { + minPt = minLngPt; + maxPt = maxLngPt; + } + + var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs), + this.buildConvexHull([maxPt, minPt], latLngs)); + return ch; + } + }; +}()); + +L.MarkerCluster.include({ + getConvexHull: function () { + var childMarkers = this.getAllChildMarkers(), + points = [], + p, i; + + for (i = childMarkers.length - 1; i >= 0; i--) { + p = childMarkers[i].getLatLng(); + points.push(p); + } + + return L.QuickHull.getConvexHull(points); + } +}); + +//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet +//Huge thanks to jawj for implementing it first to make my job easy :-) + +L.MarkerCluster.include({ + + _2PI: Math.PI * 2, + _circleFootSeparation: 25, //related to circumference of circle + _circleStartAngle: 0, + + _spiralFootSeparation: 28, //related to size of spiral (experiment!) + _spiralLengthStart: 11, + _spiralLengthFactor: 5, + + _circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards. + // 0 -> always spiral; Infinity -> always circle + + spiderfy: function () { + if (this._group._spiderfied === this || this._group._inZoomAnimation) { + return; + } + + var childMarkers = this.getAllChildMarkers(), + group = this._group, + map = group._map, + center = map.latLngToLayerPoint(this._latlng), + positions; + + this._group._unspiderfy(); + this._group._spiderfied = this; + + //TODO Maybe: childMarkers order by distance to center + + if (childMarkers.length >= this._circleSpiralSwitchover) { + positions = this._generatePointsSpiral(childMarkers.length, center); + } else { + center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons. + positions = this._generatePointsCircle(childMarkers.length, center); + } + + this._animationSpiderfy(childMarkers, positions); + }, + + unspiderfy: function (zoomDetails) { + /// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param> + if (this._group._inZoomAnimation) { + return; + } + this._animationUnspiderfy(zoomDetails); + + this._group._spiderfied = null; + }, + + _generatePointsCircle: function (count, centerPt) { + var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count), + legLength = circumference / this._2PI, //radius from circumference + angleStep = this._2PI / count, + res = [], + i, angle; + + legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon. + + res.length = count; + + for (i = 0; i < count; i++) { // Clockwise, like spiral. + angle = this._circleStartAngle + i * angleStep; + res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); + } + + return res; + }, + + _generatePointsSpiral: function (count, centerPt) { + var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier, + legLength = spiderfyDistanceMultiplier * this._spiralLengthStart, + separation = spiderfyDistanceMultiplier * this._spiralFootSeparation, + lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI, + angle = 0, + res = [], + i; + + res.length = count; + + // Higher index, closer position to cluster center. + for (i = count; i >= 0; i--) { + // Skip the first position, so that we are already farther from center and we avoid + // being under the default cluster icon (especially important for Circle Markers). + if (i < count) { + res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round(); + } + angle += separation / legLength + i * 0.0005; + legLength += lengthFactor / angle; + } + return res; + }, + + _noanimationUnspiderfy: function () { + var group = this._group, + map = group._map, + fg = group._featureGroup, + childMarkers = this.getAllChildMarkers(), + m, i; + + group._ignoreMove = true; + + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + fg.removeLayer(m); + + if (m._preSpiderfyLatlng) { + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; + } + if (m.setZIndexOffset) { + m.setZIndexOffset(0); + } + + if (m._spiderLeg) { + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + } + + group.fire('unspiderfied', { + cluster: this, + markers: childMarkers + }); + group._ignoreMove = false; + group._spiderfied = null; + } +}); + +//Non Animated versions of everything +L.MarkerClusterNonAnimated = L.MarkerCluster.extend({ + _animationSpiderfy: function (childMarkers, positions) { + var group = this._group, + map = group._map, + fg = group._featureGroup, + legOptions = this._group.options.spiderLegPolylineOptions, + i, m, leg, newPos; + + group._ignoreMove = true; + + // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. + // The reverse order trick no longer improves performance on modern browsers. + for (i = 0; i < childMarkers.length; i++) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; + + // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. + leg = new L.Polyline([this._latlng, newPos], legOptions); + map.addLayer(leg); + m._spiderLeg = leg; + + // Now add the marker. + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + if (m.setZIndexOffset) { + m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING + } + + fg.addLayer(m); + } + this.setOpacity(0.3); + + group._ignoreMove = false; + group.fire('spiderfied', { + cluster: this, + markers: childMarkers + }); + }, + + _animationUnspiderfy: function () { + this._noanimationUnspiderfy(); + } +}); + +//Animated versions here +L.MarkerCluster.include({ + + _animationSpiderfy: function (childMarkers, positions) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerLatLng = this._latlng, + thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng), + svg = L.Path.SVG, + legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation. + finalLegOpacity = legOptions.opacity, + i, m, leg, legPath, legLength, newPos; + + if (finalLegOpacity === undefined) { + finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity; + } + + if (svg) { + // If the initial opacity of the spider leg is not 0 then it appears before the animation starts. + legOptions.opacity = 0; + + // Add the class for CSS transitions. + legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg'; + } else { + // Make sure we have a defined opacity. + legOptions.opacity = finalLegOpacity; + } + + group._ignoreMove = true; + + // Add markers and spider legs to map, hidden at our center point. + // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. + // The reverse order trick no longer improves performance on modern browsers. + for (i = 0; i < childMarkers.length; i++) { + m = childMarkers[i]; + + newPos = map.layerPointToLatLng(positions[i]); + + // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. + leg = new L.Polyline([thisLayerLatLng, newPos], legOptions); + map.addLayer(leg); + m._spiderLeg = leg; + + // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/ + // In our case the transition property is declared in the CSS file. + if (svg) { + legPath = leg._path; + legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox. + legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated. + legPath.style.strokeDashoffset = legLength; + } + + // If it is a marker, add it now and we'll animate it out + if (m.setZIndexOffset) { + m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING + } + if (m.clusterHide) { + m.clusterHide(); + } + + // Vectors just get immediately added + fg.addLayer(m); + + if (m._setPos) { + m._setPos(thisLayerPos); + } + } + + group._forceLayout(); + group._animationStart(); + + // Reveal markers and spider legs. + for (i = childMarkers.length - 1; i >= 0; i--) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; + + //Move marker to new position + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + + if (m.clusterShow) { + m.clusterShow(); + } + + // Animate leg (animation is actually delegated to CSS transition). + if (svg) { + leg = m._spiderLeg; + legPath = leg._path; + legPath.style.strokeDashoffset = 0; + //legPath.style.strokeOpacity = finalLegOpacity; + leg.setStyle({opacity: finalLegOpacity}); + } + } + this.setOpacity(0.3); + + group._ignoreMove = false; + + setTimeout(function () { + group._animationEnd(); + group.fire('spiderfied', { + cluster: me, + markers: childMarkers + }); + }, 200); + }, + + _animationUnspiderfy: function (zoomDetails) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), + childMarkers = this.getAllChildMarkers(), + svg = L.Path.SVG, + m, i, leg, legPath, legLength, nonAnimatable; + + group._ignoreMove = true; + group._animationStart(); + + //Make us visible and bring the child markers back in + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + //Marker was added to us after we were spiderfied + if (!m._preSpiderfyLatlng) { + continue; + } + + //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll + m.closePopup(); + + //Fix up the location to the real one + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; + + //Hack override the location to be our center + nonAnimatable = true; + if (m._setPos) { + m._setPos(thisLayerPos); + nonAnimatable = false; + } + if (m.clusterHide) { + m.clusterHide(); + nonAnimatable = false; + } + if (nonAnimatable) { + fg.removeLayer(m); + } + + // Animate the spider leg back in (animation is actually delegated to CSS transition). + if (svg) { + leg = m._spiderLeg; + legPath = leg._path; + legLength = legPath.getTotalLength() + 0.1; + legPath.style.strokeDashoffset = legLength; + leg.setStyle({opacity: 0}); + } + } + + group._ignoreMove = false; + + setTimeout(function () { + //If we have only <= one child left then that marker will be shown on the map so don't remove it! + var stillThereChildCount = 0; + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + if (m._spiderLeg) { + stillThereChildCount++; + } + } + + + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + + if (!m._spiderLeg) { //Has already been unspiderfied + continue; + } + + if (m.clusterShow) { + m.clusterShow(); + } + if (m.setZIndexOffset) { + m.setZIndexOffset(0); + } + + if (stillThereChildCount > 1) { + fg.removeLayer(m); + } + + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + group._animationEnd(); + group.fire('unspiderfied', { + cluster: me, + markers: childMarkers + }); + }, 200); + } +}); + + +L.MarkerClusterGroup.include({ + //The MarkerCluster currently spiderfied (if any) + _spiderfied: null, + + unspiderfy: function () { + this._unspiderfy.apply(this, arguments); + }, + + _spiderfierOnAdd: function () { + this._map.on('click', this._unspiderfyWrapper, this); + + if (this._map.options.zoomAnimation) { + this._map.on('zoomstart', this._unspiderfyZoomStart, this); + } + //Browsers without zoomAnimation or a big zoom don't fire zoomstart + this._map.on('zoomend', this._noanimationUnspiderfy, this); + + if (!L.Browser.touch) { + this._map.getRenderer(this); + //Needs to happen in the pageload, not after, or animations don't work in webkit + // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements + //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable + } + }, + + _spiderfierOnRemove: function () { + this._map.off('click', this._unspiderfyWrapper, this); + this._map.off('zoomstart', this._unspiderfyZoomStart, this); + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._map.off('zoomend', this._noanimationUnspiderfy, this); + + //Ensure that markers are back where they should be + // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane + this._noanimationUnspiderfy(); + }, + + //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) + //This means we can define the animation they do rather than Markers doing an animation to their actual location + _unspiderfyZoomStart: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } + + this._map.on('zoomanim', this._unspiderfyZoomAnim, this); + }, + + _unspiderfyZoomAnim: function (zoomDetails) { + //Wait until the first zoomanim after the user has finished touch-zooming before running the animation + if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { + return; + } + + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._unspiderfy(zoomDetails); + }, + + _unspiderfyWrapper: function () { + /// <summary>_unspiderfy but passes no arguments</summary> + this._unspiderfy(); + }, + + _unspiderfy: function (zoomDetails) { + if (this._spiderfied) { + this._spiderfied.unspiderfy(zoomDetails); + } + }, + + _noanimationUnspiderfy: function () { + if (this._spiderfied) { + this._spiderfied._noanimationUnspiderfy(); + } + }, + + //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc + _unspiderfyLayer: function (layer) { + if (layer._spiderLeg) { + this._featureGroup.removeLayer(layer); + + if (layer.clusterShow) { + layer.clusterShow(); + } + //Position will be fixed up immediately in _animationUnspiderfy + if (layer.setZIndexOffset) { + layer.setZIndexOffset(0); + } + + this._map.removeLayer(layer._spiderLeg); + delete layer._spiderLeg; + } + } +}); + +/** + * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing + * markers' icon options and refreshing their icon and their parent clusters + * accordingly (case where their iconCreateFunction uses data of childMarkers + * to make up the cluster icon). + */ + + +L.MarkerClusterGroup.include({ + /** + * Updates the icon of all clusters which are parents of the given marker(s). + * In singleMarkerMode, also updates the given marker(s) icon. + * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)| + * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent + * clusters need to be updated. If not provided, retrieves all child markers of this. + * @returns {L.MarkerClusterGroup} + */ + refreshClusters: function (layers) { + if (!layers) { + layers = this._topClusterLevel.getAllChildMarkers(); + } else if (layers instanceof L.MarkerClusterGroup) { + layers = layers._topClusterLevel.getAllChildMarkers(); + } else if (layers instanceof L.LayerGroup) { + layers = layers._layers; + } else if (layers instanceof L.MarkerCluster) { + layers = layers.getAllChildMarkers(); + } else if (layers instanceof L.Marker) { + layers = [layers]; + } // else: must be an Array(L.Marker)|Map(L.Marker) + this._flagParentsIconsNeedUpdate(layers); + this._refreshClustersIcons(); + + // In case of singleMarkerMode, also re-draw the markers. + if (this.options.singleMarkerMode) { + this._refreshSingleMarkerModeMarkers(layers); + } + + return this; + }, + + /** + * Simply flags all parent clusters of the given markers as having a "dirty" icon. + * @param layers Array(L.Marker)|Map(L.Marker) list of markers. + * @private + */ + _flagParentsIconsNeedUpdate: function (layers) { + var id, parent; + + // Assumes layers is an Array or an Object whose prototype is non-enumerable. + for (id in layers) { + // Flag parent clusters' icon as "dirty", all the way up. + // Dumb process that flags multiple times upper parents, but still + // much more efficient than trying to be smart and make short lists, + // at least in the case of a hierarchy following a power law: + // http://jsperf.com/flag-nodes-in-power-hierarchy/2 + parent = layers[id].__parent; + while (parent) { + parent._iconNeedsUpdate = true; + parent = parent.__parent; + } + } + }, + + /** + * Re-draws the icon of the supplied markers. + * To be used in singleMarkerMode only. + * @param layers Array(L.Marker)|Map(L.Marker) list of markers. + * @private + */ + _refreshSingleMarkerModeMarkers: function (layers) { + var id, layer; + + for (id in layers) { + layer = layers[id]; + + // Make sure we do not override markers that do not belong to THIS group. + if (this.hasLayer(layer)) { + // Need to re-create the icon first, then re-draw the marker. + layer.setIcon(this._overrideMarkerIcon(layer)); + } + } + } +}); + +L.Marker.include({ + /** + * Updates the given options in the marker's icon and refreshes the marker. + * @param options map object of icon options. + * @param directlyRefreshClusters boolean (optional) true to trigger + * MCG.refreshClustersOf() right away with this single marker. + * @returns {L.Marker} + */ + refreshIconOptions: function (options, directlyRefreshClusters) { + var icon = this.options.icon; + + L.setOptions(icon, options); + + this.setIcon(icon); + + // Shortcut to refresh the associated MCG clusters right away. + // To be used when refreshing a single marker. + // Otherwise, better use MCG.refreshClusters() once at the end with + // the list of modified markers. + if (directlyRefreshClusters && this.__parent) { + this.__parent._group.refreshClusters(this); + } + + return this; + } +}); + +exports.MarkerClusterGroup = MarkerClusterGroup; +exports.MarkerCluster = MarkerCluster; + +}))); +/* + Leaflet.AwesomeMarkers, a plugin that adds colorful iconic markers for Leaflet, based on the Font Awesome icons + (c) 2012-2013, Lennard Voogdt + + http://leafletjs.com + https://github.com/lvoogdt +*/ + +/*global L*/ + + +(function (window, document, undefined) { + "use strict"; + /* + * Leaflet.AwesomeMarkers assumes that you have already included the Leaflet library. + */ + + L.AwesomeMarkers = {}; + + L.AwesomeMarkers.version = '2.0.1'; + + L.AwesomeMarkers.Icon = L.Icon.extend({ + options: { + iconSize: [35, 45], + iconAnchor: [17, 42], + popupAnchor: [1, -32], + shadowAnchor: [10, 12], + shadowSize: [36, 16], + className: 'awesome-marker', + prefix: 'glyphicon', + spinClass: 'fa-spin', + extraClasses: '', + icon: 'home', + markerColor: 'blue', + iconColor: 'white' + }, + + initialize: function (options) { + options = L.Util.setOptions(this, options); + }, + + createIcon: function () { + var div = document.createElement('div'), + options = this.options; + + if (options.icon) { + div.innerHTML = this._createInner(); + } + + if (options.bgPos) { + div.style.backgroundPosition = + (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px'; + } + + this._setIconStyles(div, 'icon-' + options.markerColor); + return div; + }, + + _createInner: function() { + var iconClass, iconSpinClass = "", iconColorClass = "", iconColorStyle = "", options = this.options; + + if(options.icon.slice(0,options.prefix.length+1) === options.prefix + "-") { + iconClass = options.icon; + } else { + iconClass = options.prefix + "-" + options.icon; + } + + if(options.spin && typeof options.spinClass === "string") { + iconSpinClass = options.spinClass; + } + + if(options.iconColor) { + if(options.iconColor === 'white' || options.iconColor === 'black') { + iconColorClass = "icon-" + options.iconColor; + } else { + iconColorStyle = "style='color: " + options.iconColor + "' "; + } + } + + return "<i " + iconColorStyle + "class='" + options.extraClasses + " " + options.prefix + " " + iconClass + " " + iconSpinClass + " " + iconColorClass + "'></i>"; + }, + + _setIconStyles: function (img, name) { + var options = this.options, + size = L.point(options[name === 'shadow' ? 'shadowSize' : 'iconSize']), + anchor; + + if (name === 'shadow') { + anchor = L.point(options.shadowAnchor || options.iconAnchor); + } else { + anchor = L.point(options.iconAnchor); + } + + if (!anchor && size) { + anchor = size.divideBy(2, true); + } + + img.className = 'awesome-marker-' + name + ' ' + options.className; + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + createShadow: function () { + var div = document.createElement('div'); + + this._setIconStyles(div, 'shadow'); + return div; + } + }); + + L.AwesomeMarkers.icon = function (options) { + return new L.AwesomeMarkers.Icon(options); + }; + +}(this, document)); + + + + +/* + @licstart The following is the entire license notice for the JavaScript code in this page. + + frTypo, la typographie française simplifiée + + Copyright (C) 2013 acoeuro + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + + @licend The above is the entire license notice for the JavaScript code in this page. + */ + +(function() { + var regexp, regexpPost; + + regexp = /(^|[\wà éèêç])\s*([!?:;»%€¢]+)(\s|[^\w\/]|$)/g; + + regexpPost = /([«])\s*([\w])/g; + + $(document).on('turbolinks:load', function() { + if ($('html').attr('lang') === 'fr') { + return $('body *').contents().filter(function() { + return this.nodeType === Node.TEXT_NODE; + }).filter(function() { + return 0 > ['CODE', 'PRE', 'STYLE'].indexOf(this.parentNode.tagName); + }).filter(function() { + return !$(this).parent().hasClass('finePre') && !$(this).parent().hasClass('start_time') && !$(this).parent().hasClass('end_time'); + }).filter(function() { + return (this.nodeValue.match(regexp) != null) || (this.nodeValue.match(regexpPost) != null); + }).each(function() { + return $(this).replaceWith(function() { + return this.nodeValue.replace(regexp, '$1<span class="finePre">$2</span>$3').replace(regexpPost, '<span class="finePost">$1</span>$2'); + }); + }); + } + }); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() { + $('#event_start_time').change(function() { + if ($('#event_start_time').val() >= $('#event_end_time').val()) { + return $('#event_end_time').val($('#event_start_time').val()); + } + }); + $('#event_end_time').change(function() { + if ($('#event_start_time').val() >= $('#event_end_time').val()) { + return $('#event_start_time').val($('#event_end_time').val()); + } + }); + $('#event_repeat').each(function() { + if ($(this).val() === '0') { + $('.field.rule').hide(); + } + return $(this).change(function() { + if ($(this).val() > 0) { + $('.field.rule').show(); + return $('.field.rule input').attr('required', 'required'); + } else { + $('.field.rule').hide(); + return $('.field.rule input').removeAttr('required'); + } + }); + }); + return $('#event_tags').each(function() { + var elt; + elt = $(this); + return $.ajax({ + url: '/tags.json' + }).done(function(data) { + var tags; + return tags = jQuery.map(data, function(n) { + return n[0]; + }); + }); + }); + }); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() { + $('body.pages form :input').prop('disabled', false); + return $('body.pages form').submit(function() { + $('input[name=utf8]').prop('disabled', true); + return $(':input', this).filter(function() { + return this.value.length === 0 && this.name !== 'region'; + }).prop('disabled', true); + }); + }); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() {}); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() {}); + +}).call(this); +(function() { + var modulo = function(a, b) { return (+a % (b = +b) + b) % b; }; + + $(document).on('turbolinks:load', function() { + var idx, markerColors; + markerColors = ['blue', 'red', 'darkred', 'orange', 'green', 'darkgreen', 'purple', 'darkpuple', 'cadetblue']; + idx = 0; + $('#map.list').each(function() { + var controls, map; + map = L.map('map'); + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a>' + }).addTo(map); + controls = L.control.layers(null, null, { + collapsed: false + }).addTo(map); + return $('li a', this).each(function() { + var markerColor, text, url; + url = $(this).attr('href'); + text = $(this).html(); + markerColor = markerColors[modulo(idx++, markerColors.length)]; + if (location.search && url.indexOf('?') >= 0) { + url += '&' + location.search.substr(1); + } else { + url += location.search; + } + return $.getJSON(url, function(json) { + var layer; + if (json) { + layer = L.markerClusterGroup({ + maxClusterRadius: 30 + }).addLayer(L.geoJson(json, { + pointToLayer: function(feature, latlng) { + var marker; + marker = L.AwesomeMarkers.icon({ + prefix: 'fa', + icon: feature.properties.icon || 'calendar', + markerColor: markerColor + }); + return L.marker(latlng, { + icon: marker + }); + }, + onEachFeature: function(feature, layer) { + if (feature.properties && feature.properties.popupContent) { + return layer.bindPopup(feature.properties.popupContent); + } + } + })); + map.addLayer(layer); + controls.addOverlay(layer, text + ' - ' + json.length); + if ((/maps\//.test(location.href) || /maps.json/.test(url)) && layer.getBounds()._northEast && layer.getBounds()._southWest) { + return map.fitBounds(layer.getBounds()); + } + } + }); + }); + }); + return $('#map.event, #map.orga').each(function() { + var coord, map, marker, markerColor, url; + coord = [$(this).data('latitude'), $(this).data('longitude')]; + map = L.map('map').setView([coord[0], coord[1]], 16); + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + attribution: '© <a href="https://osm.org/copyright">OpenStreetMap</a>' + }).addTo(map); + url = $(this).data('url'); + markerColor = markerColors[modulo(idx++, markerColors.length)]; + if (location.search && url.indexOf('?') >= 0) { + url += '&' + location.search.substr(1); + } else { + url += location.search; + } + marker = L.AwesomeMarkers.icon({ + prefix: 'fa', + icon: 'calendar' + }); + L.marker([coord[0], coord[1]], { + icon: marker + }).addTo(map); + return $.getJSON(url, function(json) { + var layer; + layer = L.markerClusterGroup({ + maxClusterRadius: 30 + }).addLayer(L.geoJson(json, { + pointToLayer: function(feature, latlng) { + marker = L.AwesomeMarkers.icon({ + prefix: 'fa', + icon: feature.properties.icon || 'calendar', + markerColor: markerColor + }); + return L.marker(latlng, { + icon: marker + }); + }, + onEachFeature: function(feature, layer) { + if (feature.properties && feature.properties.popupContent) { + return layer.bindPopup(feature.properties.popupContent); + } + } + })); + return map.addLayer(layer); + }); + }); + }); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() { + $('body.moderations .radios label').click(function() { + return $('body.moderations #event_reason').parent().slideUp(); + }); + return $('body.moderations .radios label:last-child').click(function() { + return $('body.moderations #event_reason').parent().slideDown(); + }); + }); + +}).call(this); +(function() { + + +}).call(this); +(function() { + + +}).call(this); +(function() { + var pager; + + pager = true; + + $(document).on('turbolinks:load', function() { + $('.pagination .next a').attr('data-remote', true).click(function() { + return $('#loading').fadeIn(); + }); + if (pager) { + pager = false; + $(document).on('ajax:success', '.pagination .next a', function(event, data, status, xhr) { + var elts, next; + $('#loading').fadeOut(); + elts = $('tbody tr', data); + $(this).parents('tfoot').prev().append(elts); + next = $('.pagination .next a', data).attr('href'); + if (next != null) { + return $(this).show().data('remote', true).attr('href', next); + } else { + return $(this).parents('.pagination').remove(); + } + }); + } + if ($('.pagination .next a').size() > 0) { + return $(document).scroll(function() { + if ($(window).scrollTop() === $(document).height() - $(window).height() && $('.pagination .next a').is(':visible')) { + return $('.pagination .next a').hide().click(); + } + }); + } + }); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() { + return tinyMCE.init({ + schema: 'html5', + height: '40em', + menubar: false, + branding: false, + language: 'fr_FR', + selector: 'input.description', + content_css: '/assets/application-ddd51c759b5e3246c9f4f116a86a1471cedd7e4b30686c90a2d0a5f0224fa5cf.css', + entity_encoding: 'raw', + add_unload_trigger: true, + browser_spellcheck: true, + toolbar: [' cut copy paste | undo redo | searchreplace | link image media charmap table | code visualblocks preview fullscreen', ' removeformat | bold italic strikethrough | superscript subscript | bullist numlist | alignleft aligncenter alignright alignjustify alignnone | outdent indent'], + plugins: 'lists, advlist, autolink, link, image, charmap, paste, print, preview, table, fullscreen, searchreplace, media, insertdatetime, visualblocks, wordcount, contextmenu, code' + }); + }); + + $(document).on('turbolinks:before-cache', function() { + return tinymce.remove(); + }); + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() { + $('table.list.dates tbody tr').each(function() { + var vals; + vals = $(this).find('td.quantity').map(function() { + var val; + val = $(this).find('a').html().replace(' ', '').trim(); + if (val && val !== '') { + return parseInt(val); + } else { + return 0; + } + }); + return $(this).find('.sparkline').sparkline(vals, { + width: '5em' + }); + }); + return $('table.list.dates tfoot').each(function() { + var vals; + vals = $(this).find('th.quantity').map(function() { + return parseInt($(this).html().replace(' ', '')); + }); + return $(this).find('.sparkline').sparkline(vals, { + type: 'bar', + height: '3em', + barWidth: '100%', + barColor: '#9CC5EE', + barSpacing: 2 + }); + }); + }); + +}).call(this); +(function() { + + +}).call(this); +(function() { + $(document).on('turbolinks:load', function() { + if (!Modernizr.testAllProps('forceBrokenImageIcon')) { + $('img.favicon').one('error', function() { + return $(this).css({ + visibility: 'hidden' + }); + }); + } + return $('.field.tags input').tagsInput({ + delimiter: [' '], + defaultText: '', + autocomplete_url: '/tags.json' + }); + }); + +}).call(this); diff --git a/public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js.gz b/public/assets/application-72d31a98f763f8d7c64eb3a9a56216db56c683c32b97f14ac21d595c4eeea3b0.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..89cb0d2157ed002e9fa75469103d511edcfc2cff GIT binary patch literal 475223 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≪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�%zipY4YkbfXfMTGDAav{sMRg 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�d#>Z}%+y6pRk#;M{Ysxi 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 literal 0 HcmV?d00001 diff --git a/public/assets/communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png b/public/assets/communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png new file mode 100644 index 0000000000000000000000000000000000000000..d7efd7497697d8794831be04696626492652c9b3 GIT binary patch literal 2760 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 O0000<MNUMnLSTX-*2ne$ literal 0 HcmV?d00001 diff --git a/public/assets/lef-15f93c1dccd4849a5e30613a3303013292a76cc4997877e626f123fe9afc2f75.png b/public/assets/lef-15f93c1dccd4849a5e30613a3303013292a76cc4997877e626f123fe9afc2f75.png new file mode 100644 index 0000000000000000000000000000000000000000..b21875dc73ab08b87644674d75f9423476832470 GIT binary patch literal 7377 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 D6Y@EZ literal 0 HcmV?d00001 diff --git a/public/assets/lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png b/public/assets/lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png new file mode 100644 index 0000000000000000000000000000000000000000..d449b7d011987a89c379f7d053248167570e9ac3 GIT binary patch literal 1059 zcmV+;1l;?HP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004XF*Lt007q5 z)K6G400006VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru z*8&3&1p&Rx9U1@t1E5JnK~y*q1;JZvQ*{8q;orHn-MuYiD;tasD`XQ~*iaJ807Dd~ zV2FYe6JrRz5aJR^_8?1qP#;W4d@;T#5RD4rbs{m4=w<*X*#>mnTE@1rja^x{cI)Xm zJ-5H#C+!SFY_%U-lSt199Kg2is`Xo&_s%2}JwqvdRFS0>i<+vr1$)Ny!0$m$0!x6> z5LTp$GM}8+1%?4-6<*}&ooy#x==kFJKu>qBGE&pD>)oTD$Yqty6L;@SsIqJeA@Y_4 z9-uTtG)XB~LMabzi|uH8FOx28KYa4S;hOq7b#i1hw)<%NO9$S0JLZ^9^x#{2_un5G zD;=Ajo|6>WbcHBzV7;F=Hx{pIfBo4n|Gk^=PXBPW(0hB(8#RUar#~+4WehQ)yJ9Tw z2*Wl+yuUwp{<p4Fu(-HY24qcDnVNMrH|_7(XE{jQUU|*uSc+upCQ@h(4nCG`2i=sA zBtK1Cwv<Gp(HhV5>SRD^-mqp*+mR1H_VT%EtvuwjErH~h864;*as4lbZ{1*WXqLL# z2sPni0IDMqrM|v?)9+nf|EabcSl9Z-q0L1Bl}A%kEH0!OO5C6@_9<oA6jmO_jToZk z6hyZJ0AS?vLCf=evR`v2XOaW6!-+9mQ%BDjkn3fAD1}n0ktrywDjFs?-iu=`fpEcd zsI9G%s#g?;<m|}(OP?P<_IEz}kYGtEK1~K|0TmFcpx{a@=b-0Gl50cDWF&=UAu%%> zw|BROBeGK4aG>MVkNaA7?Z)&Z6ip&f^(y1p8Un6ExWeJFSB?{DVab(w@W@~^EqJo& zU^wwGSf)z0IX8UcW=fx#h&f8YU%4{El5R6+b&{IsCeIw@joT>=uSIwU6;-QHTsV35 z++ctF&Kc#2fc~Jj>)aLH_MX{usD1U++$;(ftJgk-KeU<J4Lhl<YhY{Z4we=c7#~g% zzk2y`^437l-P`dC@_gO{h1rd*ZAxY#O+GtMFth?$5k#tjG&VI;q^dZcLDiZlrNtHe z`u*vP=gxfHsevvh=3PwW>^Gf9j=lf<rVr8+(~B!>YRMS}o+1;_R7%PM^mTW;wq^3w zXCM92clGiKAngE(DZnR$TVh({x$N?_LLnbm(v9Hs=zZ448cRo$$+?I3ZcbkO`MW<a z{dD$^!Fb=di`mR|000RfS_IV+n1JcYfhEfeYDK<vEziC9a&lzo_E_pcpC>EJ1;?3} d000jF_#bd)#JcJ%J;DG0002ovPDHLkV1mp@=yd=9 literal 0 HcmV?d00001 diff --git a/public/assets/team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png b/public/assets/team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png new file mode 100644 index 0000000000000000000000000000000000000000..1da5a922f7e2065ea7fc9a78d652f77a0e35e2f2 GIT binary patch literal 3586 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 IM6N<$f~KVA&j0`b literal 0 HcmV?d00001 diff --git a/public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js b/public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js new file mode 100644 index 000000000..b1d12d5bc --- /dev/null +++ b/public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js @@ -0,0 +1,26165 @@ +window.TinyMCERails = { + configuration: { + default: {} + }, + + initialize: function(config, options) { + if (typeof tinyMCE != 'undefined') { + // Merge the custom options with the given configuration + var configuration = TinyMCERails.configuration[config || 'default']; + configuration = TinyMCERails._merge(configuration, options); + + tinyMCE.init(configuration); + } else { + // Wait until TinyMCE is loaded + setTimeout(function() { + TinyMCERails.initialize(config, options); + }, 50); + } + }, + + setupTurbolinks: function() { + // Remove all TinyMCE instances before rendering + document.addEventListener('turbolinks:before-render', function() { + tinymce.remove(); + }); + }, + + _merge: function() { + var result = {}; + + for (var i = 0; i < arguments.length; ++i) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + if (Object.prototype.toString.call(source[key]) === '[object Object]') { + result[key] = TinyMCERails._merge(result[key], source[key]); + } else { + result[key] = source[key]; + } + } + } + } + + return result; + } +}; + +if (typeof Turbolinks != 'undefined' && Turbolinks.supported) { + TinyMCERails.setupTurbolinks(); +} +; +window.tinymce = window.tinymce || { + base: '/assets/tinymce', + suffix: '' +}; +// 4.7.9 (2018-02-27) +(function () { +(function () { + 'use strict'; + + var noop = function () { + }; + var noarg = function (f) { + return function () { + return f(); + }; + }; + var compose = function (fa, fb) { + return function () { + return fa(fb.apply(null, arguments)); + }; + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var tripleEquals = function (a, b) { + return a === b; + }; + var curry = function (f) { + var args = new Array(arguments.length - 1); + for (var i = 1; i < arguments.length; i++) + args[i - 1] = arguments[i]; + return function () { + var newArgs = new Array(arguments.length); + for (var j = 0; j < newArgs.length; j++) + newArgs[j] = arguments[j]; + var all = args.concat(newArgs); + return f.apply(null, all); + }; + }; + var not = function (f) { + return function () { + return !f.apply(null, arguments); + }; + }; + var die = function (msg) { + return function () { + throw new Error(msg); + }; + }; + var apply = function (f) { + return f(); + }; + var call = function (f) { + f(); + }; + var never = constant(false); + var always = constant(true); + var $_enfhkv6je5o2ply = { + noop: noop, + noarg: noarg, + compose: compose, + constant: constant, + identity: identity, + tripleEquals: tripleEquals, + curry: curry, + not: not, + die: die, + apply: apply, + call: call, + never: never, + always: always + }; + + var never$1 = $_enfhkv6je5o2ply.never; + var always$1 = $_enfhkv6je5o2ply.always; + var none = function () { + return NONE; + }; + var NONE = function () { + var eq = function (o) { + return o.isNone(); + }; + var call = function (thunk) { + return thunk(); + }; + var id = function (n) { + return n; + }; + var noop = function () { + }; + var me = { + fold: function (n, s) { + return n(); + }, + is: never$1, + isSome: never$1, + isNone: always$1, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + or: id, + orThunk: call, + map: none, + ap: none, + each: noop, + bind: none, + flatten: none, + exists: never$1, + forall: always$1, + filter: none, + equals: eq, + equals_: eq, + toArray: function () { + return []; + }, + toString: $_enfhkv6je5o2ply.constant('none()') + }; + if (Object.freeze) + Object.freeze(me); + return me; + }(); + var some = function (a) { + var constant_a = function () { + return a; + }; + var self = function () { + return me; + }; + var map = function (f) { + return some(f(a)); + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + is: function (v) { + return a === v; + }, + isSome: always$1, + isNone: never$1, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + or: self, + orThunk: self, + map: map, + ap: function (optfab) { + return optfab.fold(none, function (fab) { + return some(fab(a)); + }); + }, + each: function (f) { + f(a); + }, + bind: bind, + flatten: constant_a, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + equals: function (o) { + return o.is(a); + }, + equals_: function (o, elementEq) { + return o.fold(never$1, function (b) { + return elementEq(a, b); + }); + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Option = { + some: some, + none: none, + from: from + }; + + var rawIndexOf = function () { + var pIndexOf = Array.prototype.indexOf; + var fastIndex = function (xs, x) { + return pIndexOf.call(xs, x); + }; + var slowIndex = function (xs, x) { + return slowIndexOf(xs, x); + }; + return pIndexOf === undefined ? slowIndex : fastIndex; + }(); + var indexOf = function (xs, x) { + var r = rawIndexOf(xs, x); + return r === -1 ? Option.none() : Option.some(r); + }; + var contains = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var exists = function (xs, pred) { + return findIndex(xs, pred).isSome(); + }; + var range = function (num, f) { + var r = []; + for (var i = 0; i < num; i++) { + r.push(f(i)); + } + return r; + }; + var chunk = function (array, size) { + var r = []; + for (var i = 0; i < array.length; i += size) { + var s = array.slice(i, i + size); + r.push(s); + } + return r; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i, xs); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i, xs); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i, xs); + } + }; + var partition = function (xs, pred) { + var pass = []; + var fail = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var arr = pred(x, i, xs) ? pass : fail; + arr.push(x); + } + return { + pass: pass, + fail: fail + }; + }; + var filter = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + r.push(x); + } + } + return r; + }; + var groupBy = function (xs, f) { + if (xs.length === 0) { + return []; + } else { + var wasType = f(xs[0]); + var r = []; + var group = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var type = f(x); + if (type !== wasType) { + r.push(group); + group = []; + } + wasType = type; + group.push(x); + } + if (group.length !== 0) { + r.push(group); + } + return r; + } + }; + var foldr = function (xs, f, acc) { + eachr(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var foldl = function (xs, f, acc) { + each(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var find = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return Option.some(x); + } + } + return Option.none(); + }; + var findIndex = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return Option.some(i); + } + } + return Option.none(); + }; + var slowIndexOf = function (xs, x) { + for (var i = 0, len = xs.length; i < len; ++i) { + if (xs[i] === x) { + return i; + } + } + return -1; + }; + var push = Array.prototype.push; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!Array.prototype.isPrototypeOf(xs[i])) + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + push.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + var output = map(xs, f); + return flatten(output); + }; + var forall = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; ++i) { + var x = xs[i]; + if (pred(x, i, xs) !== true) { + return false; + } + } + return true; + }; + var equal = function (a1, a2) { + return a1.length === a2.length && forall(a1, function (x, i) { + return x === a2[i]; + }); + }; + var slice = Array.prototype.slice; + var reverse = function (xs) { + var r = slice.call(xs, 0); + r.reverse(); + return r; + }; + var difference = function (a1, a2) { + return filter(a1, function (x) { + return !contains(a2, x); + }); + }; + var mapToObject = function (xs, f) { + var r = {}; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + r[String(x)] = f(x, i); + } + return r; + }; + var pure = function (x) { + return [x]; + }; + var sort = function (xs, comparator) { + var copy = slice.call(xs, 0); + copy.sort(comparator); + return copy; + }; + var head = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[0]); + }; + var last = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]); + }; + var $_bwcteb4je5o2pl4 = { + map: map, + each: each, + eachr: eachr, + partition: partition, + filter: filter, + groupBy: groupBy, + indexOf: indexOf, + foldr: foldr, + foldl: foldl, + find: find, + findIndex: findIndex, + flatten: flatten, + bind: bind, + forall: forall, + exists: exists, + contains: contains, + equal: equal, + reverse: reverse, + chunk: chunk, + difference: difference, + mapToObject: mapToObject, + pure: pure, + sort: sort, + range: range, + head: head, + last: last + }; + + var global = typeof window !== 'undefined' ? window : Function('return this;')(); + + var path = function (parts, scope) { + var o = scope !== undefined && scope !== null ? scope : global; + for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) + o = o[parts[i]]; + return o; + }; + var resolve = function (p, scope) { + var parts = p.split('.'); + return path(parts, scope); + }; + var step = function (o, part) { + if (o[part] === undefined || o[part] === null) + o[part] = {}; + return o[part]; + }; + var forge = function (parts, target) { + var o = target !== undefined ? target : global; + for (var i = 0; i < parts.length; ++i) + o = step(o, parts[i]); + return o; + }; + var namespace = function (name, target) { + var parts = name.split('.'); + return forge(parts, target); + }; + var $_m1ooucje5o2ppc = { + path: path, + resolve: resolve, + forge: forge, + namespace: namespace + }; + + var unsafe = function (name, scope) { + return $_m1ooucje5o2ppc.resolve(name, scope); + }; + var getOrDie = function (name, scope) { + var actual = unsafe(name, scope); + if (actual === undefined || actual === null) + throw name + ' not available on this browser'; + return actual; + }; + var $_lmz5vbje5o2pp9 = { getOrDie: getOrDie }; + + var url = function () { + return $_lmz5vbje5o2pp9.getOrDie('URL'); + }; + var createObjectURL = function (blob) { + return url().createObjectURL(blob); + }; + var revokeObjectURL = function (u) { + url().revokeObjectURL(u); + }; + var $_g0v736aje5o2pp8 = { + createObjectURL: createObjectURL, + revokeObjectURL: revokeObjectURL + }; + + var nav = navigator; + var userAgent = nav.userAgent; + var opera; + var webkit; + var ie; + var ie11; + var ie12; + var gecko; + var mac; + var iDevice; + var android; + var fileApi; + var phone; + var tablet; + var windowsPhone; + var matchMediaQuery = function (query) { + return 'matchMedia' in window ? matchMedia(query).matches : false; + }; + opera = false; + android = /Android/.test(userAgent); + webkit = /WebKit/.test(userAgent); + ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName); + ie = ie && /MSIE (\w+)\./.exec(userAgent)[1]; + ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false; + ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false; + ie = ie || ie11 || ie12; + gecko = !webkit && !ie11 && /Gecko/.test(userAgent); + mac = userAgent.indexOf('Mac') !== -1; + iDevice = /(iPad|iPhone)/.test(userAgent); + fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!$_g0v736aje5o2pp8.createObjectURL; + phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice); + tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice); + windowsPhone = userAgent.indexOf('Windows Phone') !== -1; + if (ie12) { + webkit = false; + } + var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534; + var $_9bd8pn9je5o2pp2 = { + opera: opera, + webkit: webkit, + ie: ie, + gecko: gecko, + mac: mac, + iOS: iDevice, + android: android, + contentEditable: contentEditable, + transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', + caretAfter: ie !== 8, + range: window.getSelection && 'Range' in window, + documentMode: ie && !ie12 ? document.documentMode || 7 : 10, + fileApi: fileApi, + ceFalse: ie === false || ie > 8, + cacheSuffix: '', + container: null, + overrideViewPort: null, + experimentalShadowDom: false, + canHaveCSP: ie === false || ie > 11, + desktop: !phone && !tablet, + windowsPhone: windowsPhone + }; + + var promise = function () { + function bind(fn, thisArg) { + return function () { + fn.apply(thisArg, arguments); + }; + } + var isArray = Array.isArray || function (value) { + return Object.prototype.toString.call(value) === '[object Array]'; + }; + var Promise = function (fn) { + if (typeof this !== 'object') { + throw new TypeError('Promises must be constructed via new'); + } + if (typeof fn !== 'function') { + throw new TypeError('not a function'); + } + this._state = null; + this._value = null; + this._deferreds = []; + doResolve(fn, bind(resolve, this), bind(reject, this)); + }; + var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) { + setTimeout(fn, 1); + }; + function handle(deferred) { + var me = this; + if (this._state === null) { + this._deferreds.push(deferred); + return; + } + asap(function () { + var cb = me._state ? deferred.onFulfilled : deferred.onRejected; + if (cb === null) { + (me._state ? deferred.resolve : deferred.reject)(me._value); + return; + } + var ret; + try { + ret = cb(me._value); + } catch (e) { + deferred.reject(e); + return; + } + deferred.resolve(ret); + }); + } + function resolve(newValue) { + try { + if (newValue === this) { + throw new TypeError('A promise cannot be resolved with itself.'); + } + if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { + var then = newValue.then; + if (typeof then === 'function') { + doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this)); + return; + } + } + this._state = true; + this._value = newValue; + finale.call(this); + } catch (e) { + reject.call(this, e); + } + } + function reject(newValue) { + this._state = false; + this._value = newValue; + finale.call(this); + } + function finale() { + for (var i = 0, len = this._deferreds.length; i < len; i++) { + handle.call(this, this._deferreds[i]); + } + this._deferreds = null; + } + function Handler(onFulfilled, onRejected, resolve, reject) { + this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; + this.onRejected = typeof onRejected === 'function' ? onRejected : null; + this.resolve = resolve; + this.reject = reject; + } + function doResolve(fn, onFulfilled, onRejected) { + var done = false; + try { + fn(function (value) { + if (done) { + return; + } + done = true; + onFulfilled(value); + }, function (reason) { + if (done) { + return; + } + done = true; + onRejected(reason); + }); + } catch (ex) { + if (done) { + return; + } + done = true; + onRejected(ex); + } + } + Promise.prototype.catch = function (onRejected) { + return this.then(null, onRejected); + }; + Promise.prototype.then = function (onFulfilled, onRejected) { + var me = this; + return new Promise(function (resolve, reject) { + handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject)); + }); + }; + Promise.all = function () { + var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments); + return new Promise(function (resolve, reject) { + if (args.length === 0) { + return resolve([]); + } + var remaining = args.length; + function res(i, val) { + try { + if (val && (typeof val === 'object' || typeof val === 'function')) { + var then = val.then; + if (typeof then === 'function') { + then.call(val, function (val) { + res(i, val); + }, reject); + return; + } + } + args[i] = val; + if (--remaining === 0) { + resolve(args); + } + } catch (ex) { + reject(ex); + } + } + for (var i = 0; i < args.length; i++) { + res(i, args[i]); + } + }); + }; + Promise.resolve = function (value) { + if (value && typeof value === 'object' && value.constructor === Promise) { + return value; + } + return new Promise(function (resolve) { + resolve(value); + }); + }; + Promise.reject = function (value) { + return new Promise(function (resolve, reject) { + reject(value); + }); + }; + Promise.race = function (values) { + return new Promise(function (resolve, reject) { + for (var i = 0, len = values.length; i < len; i++) { + values[i].then(resolve, reject); + } + }); + }; + return Promise; + }; + var promiseObj = window.Promise ? window.Promise : promise(); + + var requestAnimationFramePromise; + var requestAnimationFrame = function (callback, element) { + var i, requestAnimationFrameFunc = window.requestAnimationFrame; + var vendors = [ + 'ms', + 'moz', + 'webkit' + ]; + var featurefill = function (callback) { + window.setTimeout(callback, 0); + }; + for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) { + requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame']; + } + if (!requestAnimationFrameFunc) { + requestAnimationFrameFunc = featurefill; + } + requestAnimationFrameFunc(callback, element); + }; + var wrappedSetTimeout = function (callback, time) { + if (typeof time !== 'number') { + time = 0; + } + return setTimeout(callback, time); + }; + var wrappedSetInterval = function (callback, time) { + if (typeof time !== 'number') { + time = 1; + } + return setInterval(callback, time); + }; + var wrappedClearTimeout = function (id) { + return clearTimeout(id); + }; + var wrappedClearInterval = function (id) { + return clearInterval(id); + }; + var debounce = function (callback, time) { + var timer, func; + func = function () { + var args = arguments; + clearTimeout(timer); + timer = wrappedSetTimeout(function () { + callback.apply(this, args); + }, time); + }; + func.stop = function () { + clearTimeout(timer); + }; + return func; + }; + var $_db41wogje5o2ps3 = { + requestAnimationFrame: function (callback, element) { + if (requestAnimationFramePromise) { + requestAnimationFramePromise.then(callback); + return; + } + requestAnimationFramePromise = new promiseObj(function (resolve) { + if (!element) { + element = document.body; + } + requestAnimationFrame(resolve, element); + }).then(callback); + }, + setTimeout: wrappedSetTimeout, + setInterval: wrappedSetInterval, + setEditorTimeout: function (editor, callback, time) { + return wrappedSetTimeout(function () { + if (!editor.removed) { + callback(); + } + }, time); + }, + setEditorInterval: function (editor, callback, time) { + var timer; + timer = wrappedSetInterval(function () { + if (!editor.removed) { + callback(); + } else { + clearInterval(timer); + } + }, time); + return timer; + }, + debounce: debounce, + throttle: debounce, + clearInterval: wrappedClearInterval, + clearTimeout: wrappedClearTimeout + }; + + var eventExpandoPrefix = 'mce-data-'; + var mouseEventRe = /^(?:mouse|contextmenu)|click/; + var deprecated = { + keyLocation: 1, + layerX: 1, + layerY: 1, + returnValue: 1, + webkitMovementX: 1, + webkitMovementY: 1, + keyIdentifier: 1 + }; + var hasIsDefaultPrevented = function (event) { + return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse; + }; + var returnFalse = function () { + return false; + }; + var returnTrue = function () { + return true; + }; + var addEvent = function (target, name, callback, capture) { + if (target.addEventListener) { + target.addEventListener(name, callback, capture || false); + } else if (target.attachEvent) { + target.attachEvent('on' + name, callback); + } + }; + var removeEvent = function (target, name, callback, capture) { + if (target.removeEventListener) { + target.removeEventListener(name, callback, capture || false); + } else if (target.detachEvent) { + target.detachEvent('on' + name, callback); + } + }; + var getTargetFromShadowDom = function (event, defaultTarget) { + var path, target = defaultTarget; + path = event.path; + if (path && path.length > 0) { + target = path[0]; + } + if (event.composedPath) { + path = event.composedPath(); + if (path && path.length > 0) { + target = path[0]; + } + } + return target; + }; + var fix = function (originalEvent, data) { + var name; + var event = data || {}; + for (name in originalEvent) { + if (!deprecated[name]) { + event[name] = originalEvent[name]; + } + } + if (!event.target) { + event.target = event.srcElement || document; + } + if ($_9bd8pn9je5o2pp2.experimentalShadowDom) { + event.target = getTargetFromShadowDom(originalEvent, event.target); + } + if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) { + var eventDoc = event.target.ownerDocument || document; + var doc = eventDoc.documentElement; + var body = eventDoc.body; + event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + event.preventDefault = function () { + event.isDefaultPrevented = returnTrue; + if (originalEvent) { + if (originalEvent.preventDefault) { + originalEvent.preventDefault(); + } else { + originalEvent.returnValue = false; + } + } + }; + event.stopPropagation = function () { + event.isPropagationStopped = returnTrue; + if (originalEvent) { + if (originalEvent.stopPropagation) { + originalEvent.stopPropagation(); + } else { + originalEvent.cancelBubble = true; + } + } + }; + event.stopImmediatePropagation = function () { + event.isImmediatePropagationStopped = returnTrue; + event.stopPropagation(); + }; + if (hasIsDefaultPrevented(event) === false) { + event.isDefaultPrevented = returnFalse; + event.isPropagationStopped = returnFalse; + event.isImmediatePropagationStopped = returnFalse; + } + if (typeof event.metaKey === 'undefined') { + event.metaKey = false; + } + return event; + }; + var bindOnReady = function (win, callback, eventUtils) { + var doc = win.document, event = { type: 'ready' }; + if (eventUtils.domLoaded) { + callback(event); + return; + } + var isDocReady = function () { + return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body; + }; + var readyHandler = function () { + if (!eventUtils.domLoaded) { + eventUtils.domLoaded = true; + callback(event); + } + }; + var waitForDomLoaded = function () { + if (isDocReady()) { + removeEvent(doc, 'readystatechange', waitForDomLoaded); + readyHandler(); + } + }; + var tryScroll = function () { + try { + doc.documentElement.doScroll('left'); + } catch (ex) { + $_db41wogje5o2ps3.setTimeout(tryScroll); + return; + } + readyHandler(); + }; + if (doc.addEventListener && !($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11)) { + if (isDocReady()) { + readyHandler(); + } else { + addEvent(win, 'DOMContentLoaded', readyHandler); + } + } else { + addEvent(doc, 'readystatechange', waitForDomLoaded); + if (doc.documentElement.doScroll && win.self === win.top) { + tryScroll(); + } + } + addEvent(win, 'load', readyHandler); + }; + var EventUtils = function () { + var self = this; + var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave; + expando = eventExpandoPrefix + (+new Date()).toString(32); + hasMouseEnterLeave = 'onmouseenter' in document.documentElement; + hasFocusIn = 'onfocusin' in document.documentElement; + mouseEnterLeave = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + count = 1; + self.domLoaded = false; + self.events = events; + var executeHandlers = function (evt, id) { + var callbackList, i, l, callback; + var container = events[id]; + callbackList = container && container[evt.type]; + if (callbackList) { + for (i = 0, l = callbackList.length; i < l; i++) { + callback = callbackList[i]; + if (callback && callback.func.call(callback.scope, evt) === false) { + evt.preventDefault(); + } + if (evt.isImmediatePropagationStopped()) { + return; + } + } + } + }; + self.bind = function (target, names, callback, scope) { + var id, callbackList, i, name, fakeName, nativeHandler, capture; + var win = window; + var defaultNativeHandler = function (evt) { + executeHandlers(fix(evt || win.event), id); + }; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return; + } + if (!target[expando]) { + id = count++; + target[expando] = id; + events[id] = {}; + } else { + id = target[expando]; + } + scope = scope || target; + names = names.split(' '); + i = names.length; + while (i--) { + name = names[i]; + nativeHandler = defaultNativeHandler; + fakeName = capture = false; + if (name === 'DOMContentLoaded') { + name = 'ready'; + } + if (self.domLoaded && name === 'ready' && target.readyState === 'complete') { + callback.call(scope, fix({ type: name })); + continue; + } + if (!hasMouseEnterLeave) { + fakeName = mouseEnterLeave[name]; + if (fakeName) { + nativeHandler = function (evt) { + var current, related; + current = evt.currentTarget; + related = evt.relatedTarget; + if (related && current.contains) { + related = current.contains(related); + } else { + while (related && related !== current) { + related = related.parentNode; + } + } + if (!related) { + evt = fix(evt || win.event); + evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter'; + evt.target = current; + executeHandlers(evt, id); + } + }; + } + } + if (!hasFocusIn && (name === 'focusin' || name === 'focusout')) { + capture = true; + fakeName = name === 'focusin' ? 'focus' : 'blur'; + nativeHandler = function (evt) { + evt = fix(evt || win.event); + evt.type = evt.type === 'focus' ? 'focusin' : 'focusout'; + executeHandlers(evt, id); + }; + } + callbackList = events[id][name]; + if (!callbackList) { + events[id][name] = callbackList = [{ + func: callback, + scope: scope + }]; + callbackList.fakeName = fakeName; + callbackList.capture = capture; + callbackList.nativeHandler = nativeHandler; + if (name === 'ready') { + bindOnReady(target, nativeHandler, self); + } else { + addEvent(target, fakeName || name, nativeHandler, capture); + } + } else { + if (name === 'ready' && self.domLoaded) { + callback({ type: name }); + } else { + callbackList.push({ + func: callback, + scope: scope + }); + } + } + } + target = callbackList = 0; + return callback; + }; + self.unbind = function (target, names, callback) { + var id, callbackList, i, ci, name, eventMap; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + id = target[expando]; + if (id) { + eventMap = events[id]; + if (names) { + names = names.split(' '); + i = names.length; + while (i--) { + name = names[i]; + callbackList = eventMap[name]; + if (callbackList) { + if (callback) { + ci = callbackList.length; + while (ci--) { + if (callbackList[ci].func === callback) { + var nativeHandler = callbackList.nativeHandler; + var fakeName = callbackList.fakeName, capture = callbackList.capture; + callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1)); + callbackList.nativeHandler = nativeHandler; + callbackList.fakeName = fakeName; + callbackList.capture = capture; + eventMap[name] = callbackList; + } + } + } + if (!callback || callbackList.length === 0) { + delete eventMap[name]; + removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture); + } + } + } + } else { + for (name in eventMap) { + callbackList = eventMap[name]; + removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture); + } + eventMap = {}; + } + for (name in eventMap) { + return self; + } + delete events[id]; + try { + delete target[expando]; + } catch (ex) { + target[expando] = null; + } + } + return self; + }; + self.fire = function (target, name, args) { + var id; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + args = fix(null, args); + args.type = name; + args.target = target; + do { + id = target[expando]; + if (id) { + executeHandlers(args, id); + } + target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow; + } while (target && !args.isPropagationStopped()); + return self; + }; + self.clean = function (target) { + var i, children; + var unbind = self.unbind; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + if (target[expando]) { + unbind(target); + } + if (!target.getElementsByTagName) { + target = target.document; + } + if (target && target.getElementsByTagName) { + unbind(target); + children = target.getElementsByTagName('*'); + i = children.length; + while (i--) { + target = children[i]; + if (target[expando]) { + unbind(target); + } + } + } + return self; + }; + self.destroy = function () { + events = {}; + }; + self.cancel = function (e) { + if (e) { + e.preventDefault(); + e.stopImmediatePropagation(); + } + return false; + }; + }; + EventUtils.Event = new EventUtils(); + EventUtils.Event.bind(window, 'ready', function () { + }); + + var i; + var support; + var Expr; + var getText; + var isXML; + var tokenize; + var compile; + var select; + var outermostContext; + var sortInput; + var hasDuplicate; + var setDocument; + var document$1; + var docElem; + var documentIsHTML; + var rbuggyQSA; + var rbuggyMatches; + var matches; + var contains$1; + var expando = 'sizzle' + -new Date(); + var preferredDoc = window.document; + var dirruns = 0; + var done = 0; + var classCache = createCache(); + var tokenCache = createCache(); + var compilerCache = createCache(); + var sortOrder = function (a, b) { + if (a === b) { + hasDuplicate = true; + } + return 0; + }; + var strundefined = typeof undefined; + var MAX_NEGATIVE = 1 << 31; + var hasOwn = {}.hasOwnProperty; + var arr = []; + var pop = arr.pop; + var push_native = arr.push; + var push$1 = arr.push; + var slice$1 = arr.slice; + var indexOf$1 = arr.indexOf || function (elem) { + var i = 0, len = this.length; + for (; i < len; i++) { + if (this[i] === elem) { + return i; + } + } + return -1; + }; + var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped'; + var whitespace = '[\\x20\\t\\r\\n\\f]'; + var identifier = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+'; + var attributes = '\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + identifier + '))|)' + whitespace + '*\\]'; + var pseudos = ':(' + identifier + ')(?:\\((' + '(\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|' + '((?:\\\\.|[^\\\\()[\\]]|' + attributes + ')*)|' + '.*' + ')\\)|)'; + var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\])(?:\\\\.)*)' + whitespace + '+$', 'g'); + var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*'); + var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*'); + var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\]\'"]*?)' + whitespace + '*\\]', 'g'); + var rpseudo = new RegExp(pseudos); + var ridentifier = new RegExp('^' + identifier + '$'); + var matchExpr = { + ID: new RegExp('^#(' + identifier + ')'), + CLASS: new RegExp('^\\.(' + identifier + ')'), + TAG: new RegExp('^(' + identifier + '|[*])'), + ATTR: new RegExp('^' + attributes), + PSEUDO: new RegExp('^' + pseudos), + CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(' + whitespace + '*(even|odd|(([+-]|)(\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\d+)|))' + whitespace + '*\\)|)', 'i'), + bool: new RegExp('^(?:' + booleans + ')$', 'i'), + needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(' + whitespace + '*((?:-\\d)?\\d*)' + whitespace + '*\\)|)(?=[^-]|$)', 'i') + }; + var rinputs = /^(?:input|select|textarea|button)$/i; + var rheader = /^h\d$/i; + var rnative = /^[^{]+\{\s*\[native \w/; + var rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/; + var rsibling = /[+~]/; + var rescape = /'|\\/g; + var runescape = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'); + var funescape = function (_, escaped, escapedWhitespace) { + var high = '0x' + escaped - 65536; + return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); + }; + try { + push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes); + arr[preferredDoc.childNodes.length].nodeType; + } catch (e) { + push$1 = { + apply: arr.length ? function (target, els) { + push_native.apply(target, slice$1.call(els)); + } : function (target, els) { + var j = target.length, i = 0; + while (target[j++] = els[i++]) { + } + target.length = j - 1; + } + }; + } + var Sizzle = function (selector, context, results, seed) { + var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector; + if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) { + setDocument(context); + } + context = context || document$1; + results = results || []; + if (!selector || typeof selector !== 'string') { + return results; + } + if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) { + return []; + } + if (documentIsHTML && !seed) { + if (match = rquickExpr.exec(selector)) { + if (m = match[1]) { + if (nodeType === 9) { + elem = context.getElementById(m); + if (elem && elem.parentNode) { + if (elem.id === m) { + results.push(elem); + return results; + } + } else { + return results; + } + } else { + if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) { + results.push(elem); + return results; + } + } + } else if (match[2]) { + push$1.apply(results, context.getElementsByTagName(selector)); + return results; + } else if ((m = match[3]) && support.getElementsByClassName) { + push$1.apply(results, context.getElementsByClassName(m)); + return results; + } + } + if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') { + groups = tokenize(selector); + if (old = context.getAttribute('id')) { + nid = old.replace(rescape, '\\$&'); + } else { + context.setAttribute('id', nid); + } + nid = '[id=\'' + nid + '\'] '; + i = groups.length; + while (i--) { + groups[i] = nid + toSelector(groups[i]); + } + newContext = rsibling.test(selector) && testContext(context.parentNode) || context; + newSelector = groups.join(','); + } + if (newSelector) { + try { + push$1.apply(results, newContext.querySelectorAll(newSelector)); + return results; + } catch (qsaError) { + } finally { + if (!old) { + context.removeAttribute('id'); + } + } + } + } + } + return select(selector.replace(rtrim, '$1'), context, results, seed); + }; + function createCache() { + var keys = []; + function cache(key, value) { + if (keys.push(key + ' ') > Expr.cacheLength) { + delete cache[keys.shift()]; + } + return cache[key + ' '] = value; + } + return cache; + } + function markFunction(fn) { + fn[expando] = true; + return fn; + } + function siblingCheck(a, b) { + var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE); + if (diff) { + return diff; + } + if (cur) { + while (cur = cur.nextSibling) { + if (cur === b) { + return -1; + } + } + } + return a ? 1 : -1; + } + function createInputPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === 'input' && elem.type === type; + }; + } + function createButtonPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return (name === 'input' || name === 'button') && elem.type === type; + }; + } + function createPositionalPseudo(fn) { + return markFunction(function (argument) { + argument = +argument; + return markFunction(function (seed, matches) { + var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; + while (i--) { + if (seed[j = matchIndexes[i]]) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); + } + function testContext(context) { + return context && typeof context.getElementsByTagName !== strundefined && context; + } + support = Sizzle.support = {}; + isXML = Sizzle.isXML = function (elem) { + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== 'HTML' : false; + }; + setDocument = Sizzle.setDocument = function (node) { + var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent = doc.defaultView; + function getTop(win) { + try { + return win.top; + } catch (ex) { + } + return null; + } + if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) { + return document$1; + } + document$1 = doc; + docElem = doc.documentElement; + documentIsHTML = !isXML(doc); + if (parent && parent !== getTop(parent)) { + if (parent.addEventListener) { + parent.addEventListener('unload', function () { + setDocument(); + }, false); + } else if (parent.attachEvent) { + parent.attachEvent('onunload', function () { + setDocument(); + }); + } + } + support.attributes = true; + support.getElementsByTagName = true; + support.getElementsByClassName = rnative.test(doc.getElementsByClassName); + support.getById = true; + Expr.find.ID = function (id, context) { + if (typeof context.getElementById !== strundefined && documentIsHTML) { + var m = context.getElementById(id); + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter.ID = function (id) { + var attrId = id.replace(runescape, funescape); + return function (elem) { + return elem.getAttribute('id') === attrId; + }; + }; + Expr.find.TAG = support.getElementsByTagName ? function (tag, context) { + if (typeof context.getElementsByTagName !== strundefined) { + return context.getElementsByTagName(tag); + } + } : function (tag, context) { + var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag); + if (tag === '*') { + while (elem = results[i++]) { + if (elem.nodeType === 1) { + tmp.push(elem); + } + } + return tmp; + } + return results; + }; + Expr.find.CLASS = support.getElementsByClassName && function (className, context) { + if (documentIsHTML) { + return context.getElementsByClassName(className); + } + }; + rbuggyMatches = []; + rbuggyQSA = []; + support.disconnectedMatch = true; + rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|')); + rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|')); + hasCompare = rnative.test(docElem.compareDocumentPosition); + contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) { + var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; + return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); + } : function (a, b) { + if (b) { + while (b = b.parentNode) { + if (b === a) { + return true; + } + } + } + return false; + }; + sortOrder = hasCompare ? function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if (compare) { + return compare; + } + compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1; + if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { + if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) { + return -1; + } + if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) { + return 1; + } + return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0; + } + return compare & 4 ? -1 : 1; + } : function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b]; + if (!aup || !bup) { + return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0; + } else if (aup === bup) { + return siblingCheck(a, b); + } + cur = a; + while (cur = cur.parentNode) { + ap.unshift(cur); + } + cur = b; + while (cur = cur.parentNode) { + bp.unshift(cur); + } + while (ap[i] === bp[i]) { + i++; + } + return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; + }; + return doc; + }; + Sizzle.matches = function (expr, elements) { + return Sizzle(expr, null, null, elements); + }; + Sizzle.matchesSelector = function (elem, expr) { + if ((elem.ownerDocument || elem) !== document$1) { + setDocument(elem); + } + expr = expr.replace(rattributeQuotes, '=\'$1\']'); + if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { + try { + var ret = matches.call(elem, expr); + if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) { + return ret; + } + } catch (e) { + } + } + return Sizzle(expr, document$1, null, [elem]).length > 0; + }; + Sizzle.contains = function (context, elem) { + if ((context.ownerDocument || context) !== document$1) { + setDocument(context); + } + return contains$1(context, elem); + }; + Sizzle.attr = function (elem, name) { + if ((elem.ownerDocument || elem) !== document$1) { + setDocument(elem); + } + var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined; + return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; + }; + Sizzle.error = function (msg) { + throw new Error('Syntax error, unrecognized expression: ' + msg); + }; + Sizzle.uniqueSort = function (results) { + var elem, duplicates = [], j = 0, i = 0; + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice(0); + results.sort(sortOrder); + if (hasDuplicate) { + while (elem = results[i++]) { + if (elem === results[i]) { + j = duplicates.push(i); + } + } + while (j--) { + results.splice(duplicates[j], 1); + } + } + sortInput = null; + return results; + }; + getText = Sizzle.getText = function (elem) { + var node, ret = '', i = 0, nodeType = elem.nodeType; + if (!nodeType) { + while (node = elem[i++]) { + ret += getText(node); + } + } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { + if (typeof elem.textContent === 'string') { + return elem.textContent; + } else { + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText(elem); + } + } + } else if (nodeType === 3 || nodeType === 4) { + return elem.nodeValue; + } + return ret; + }; + Expr = Sizzle.selectors = { + cacheLength: 50, + createPseudo: markFunction, + match: matchExpr, + attrHandle: {}, + find: {}, + relative: { + '>': { + dir: 'parentNode', + first: true + }, + ' ': { dir: 'parentNode' }, + '+': { + dir: 'previousSibling', + first: true + }, + '~': { dir: 'previousSibling' } + }, + preFilter: { + ATTR: function (match) { + match[1] = match[1].replace(runescape, funescape); + match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape); + if (match[2] === '~=') { + match[3] = ' ' + match[3] + ' '; + } + return match.slice(0, 4); + }, + CHILD: function (match) { + match[1] = match[1].toLowerCase(); + if (match[1].slice(0, 3) === 'nth') { + if (!match[3]) { + Sizzle.error(match[0]); + } + match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd')); + match[5] = +(match[7] + match[8] || match[3] === 'odd'); + } else if (match[3]) { + Sizzle.error(match[0]); + } + return match; + }, + PSEUDO: function (match) { + var excess, unquoted = !match[6] && match[2]; + if (matchExpr.CHILD.test(match[0])) { + return null; + } + if (match[3]) { + match[2] = match[4] || match[5] || ''; + } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) { + match[0] = match[0].slice(0, excess); + match[2] = unquoted.slice(0, excess); + } + return match.slice(0, 3); + } + }, + filter: { + TAG: function (nodeNameSelector) { + var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); + return nodeNameSelector === '*' ? function () { + return true; + } : function (elem) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + CLASS: function (className) { + var pattern = classCache[className + ' ']; + return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) { + return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || ''); + }); + }, + ATTR: function (name, operator, check) { + return function (elem) { + var result = Sizzle.attr(elem, name); + if (result == null) { + return operator === '!='; + } + if (!operator) { + return true; + } + result += ''; + return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false; + }; + }, + CHILD: function (type, what, argument, first, last) { + var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type'; + return first === 1 && last === 0 ? function (elem) { + return !!elem.parentNode; + } : function (elem, context, xml) { + var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType; + if (parent) { + if (simple) { + while (dir) { + node = elem; + while (node = node[dir]) { + if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) { + return false; + } + } + start = dir = type === 'only' && !start && 'nextSibling'; + } + return true; + } + start = [forward ? parent.firstChild : parent.lastChild]; + if (forward && useCache) { + outerCache = parent[expando] || (parent[expando] = {}); + cache = outerCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[nodeIndex]; + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if (node.nodeType === 1 && ++diff && node === elem) { + outerCache[type] = [ + dirruns, + nodeIndex, + diff + ]; + break; + } + } + } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) { + diff = cache[1]; + } else { + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) { + if (useCache) { + (node[expando] || (node[expando] = {}))[type] = [ + dirruns, + diff + ]; + } + if (node === elem) { + break; + } + } + } + } + diff -= last; + return diff === first || diff % first === 0 && diff / first >= 0; + } + }; + }, + PSEUDO: function (pseudo, argument) { + var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo); + if (fn[expando]) { + return fn(argument); + } + if (fn.length > 1) { + args = [ + pseudo, + pseudo, + '', + argument + ]; + return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) { + var idx, matched = fn(seed, argument), i = matched.length; + while (i--) { + idx = indexOf$1.call(seed, matched[i]); + seed[idx] = !(matches[idx] = matched[i]); + } + }) : function (elem) { + return fn(elem, 0, args); + }; + } + return fn; + } + }, + pseudos: { + not: markFunction(function (selector) { + var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1')); + return matcher[expando] ? markFunction(function (seed, matches, context, xml) { + var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; + while (i--) { + if (elem = unmatched[i]) { + seed[i] = !(matches[i] = elem); + } + } + }) : function (elem, context, xml) { + input[0] = elem; + matcher(input, null, xml, results); + return !results.pop(); + }; + }), + has: markFunction(function (selector) { + return function (elem) { + return Sizzle(selector, elem).length > 0; + }; + }), + contains: markFunction(function (text) { + text = text.replace(runescape, funescape); + return function (elem) { + return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; + }; + }), + lang: markFunction(function (lang) { + if (!ridentifier.test(lang || '')) { + Sizzle.error('unsupported lang: ' + lang); + } + lang = lang.replace(runescape, funescape).toLowerCase(); + return function (elem) { + var elemLang; + do { + if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) { + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf(lang + '-') === 0; + } + } while ((elem = elem.parentNode) && elem.nodeType === 1); + return false; + }; + }), + target: function (elem) { + var hash = window.location && window.location.hash; + return hash && hash.slice(1) === elem.id; + }, + root: function (elem) { + return elem === docElem; + }, + focus: function (elem) { + return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + enabled: function (elem) { + return elem.disabled === false; + }, + disabled: function (elem) { + return elem.disabled === true; + }, + checked: function (elem) { + var nodeName = elem.nodeName.toLowerCase(); + return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected; + }, + selected: function (elem) { + if (elem.parentNode) { + elem.parentNode.selectedIndex; + } + return elem.selected === true; + }, + empty: function (elem) { + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + if (elem.nodeType < 6) { + return false; + } + } + return true; + }, + parent: function (elem) { + return !Expr.pseudos.empty(elem); + }, + header: function (elem) { + return rheader.test(elem.nodeName); + }, + input: function (elem) { + return rinputs.test(elem.nodeName); + }, + button: function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === 'input' && elem.type === 'button' || name === 'button'; + }, + text: function (elem) { + var attr; + return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text'); + }, + first: createPositionalPseudo(function () { + return [0]; + }), + last: createPositionalPseudo(function (matchIndexes, length) { + return [length - 1]; + }), + eq: createPositionalPseudo(function (matchIndexes, length, argument) { + return [argument < 0 ? argument + length : argument]; + }), + even: createPositionalPseudo(function (matchIndexes, length) { + var i = 0; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + odd: createPositionalPseudo(function (matchIndexes, length) { + var i = 1; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + lt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; --i >= 0;) { + matchIndexes.push(i); + } + return matchIndexes; + }), + gt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; ++i < length;) { + matchIndexes.push(i); + } + return matchIndexes; + }) + } + }; + Expr.pseudos.nth = Expr.pseudos.eq; + for (i in { + radio: true, + checkbox: true, + file: true, + password: true, + image: true + }) { + Expr.pseudos[i] = createInputPseudo(i); + } + for (i in { + submit: true, + reset: true + }) { + Expr.pseudos[i] = createButtonPseudo(i); + } + function setFilters() { + } + setFilters.prototype = Expr.filters = Expr.pseudos; + Expr.setFilters = new setFilters(); + tokenize = Sizzle.tokenize = function (selector, parseOnly) { + var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' ']; + if (cached) { + return parseOnly ? 0 : cached.slice(0); + } + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + while (soFar) { + if (!matched || (match = rcomma.exec(soFar))) { + if (match) { + soFar = soFar.slice(match[0].length) || soFar; + } + groups.push(tokens = []); + } + matched = false; + if (match = rcombinators.exec(soFar)) { + matched = match.shift(); + tokens.push({ + value: matched, + type: match[0].replace(rtrim, ' ') + }); + soFar = soFar.slice(matched.length); + } + for (type in Expr.filter) { + if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice(matched.length); + } + } + if (!matched) { + break; + } + } + return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0); + }; + function toSelector(tokens) { + var i = 0, len = tokens.length, selector = ''; + for (; i < len; i++) { + selector += tokens[i].value; + } + return selector; + } + function addCombinator(matcher, combinator, base) { + var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++; + return combinator.first ? function (elem, context, xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + return matcher(elem, context, xml); + } + } + } : function (elem, context, xml) { + var oldCache, outerCache, newCache = [ + dirruns, + doneName + ]; + if (xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + if (matcher(elem, context, xml)) { + return true; + } + } + } + } else { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + outerCache = elem[expando] || (elem[expando] = {}); + if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) { + return newCache[2] = oldCache[2]; + } else { + outerCache[dir] = newCache; + if (newCache[2] = matcher(elem, context, xml)) { + return true; + } + } + } + } + } + }; + } + function elementMatcher(matchers) { + return matchers.length > 1 ? function (elem, context, xml) { + var i = matchers.length; + while (i--) { + if (!matchers[i](elem, context, xml)) { + return false; + } + } + return true; + } : matchers[0]; + } + function multipleContexts(selector, contexts, results) { + var i = 0, len = contexts.length; + for (; i < len; i++) { + Sizzle(selector, contexts[i], results); + } + return results; + } + function condense(unmatched, map, filter, context, xml) { + var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; + for (; i < len; i++) { + if (elem = unmatched[i]) { + if (!filter || filter(elem, context, xml)) { + newUnmatched.push(elem); + if (mapped) { + map.push(i); + } + } + } + } + return newUnmatched; + } + function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { + if (postFilter && !postFilter[expando]) { + postFilter = setMatcher(postFilter); + } + if (postFinder && !postFinder[expando]) { + postFinder = setMatcher(postFinder, postSelector); + } + return markFunction(function (seed, results, context, xml) { + var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn; + if (matcher) { + matcher(matcherIn, matcherOut, context, xml); + } + if (postFilter) { + temp = condense(matcherOut, postMap); + postFilter(temp, [], context, xml); + i = temp.length; + while (i--) { + if (elem = temp[i]) { + matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); + } + } + } + if (seed) { + if (postFinder || preFilter) { + if (postFinder) { + temp = []; + i = matcherOut.length; + while (i--) { + if (elem = matcherOut[i]) { + temp.push(matcherIn[i] = elem); + } + } + postFinder(null, matcherOut = [], temp, xml); + } + i = matcherOut.length; + while (i--) { + if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) { + seed[temp] = !(results[temp] = elem); + } + } + } + } else { + matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut); + if (postFinder) { + postFinder(null, results, matcherOut, xml); + } else { + push$1.apply(results, matcherOut); + } + } + }); + } + function matcherFromTokens(tokens) { + var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) { + return elem === checkContext; + }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) { + return indexOf$1.call(checkContext, elem) > -1; + }, implicitRelative, true), matchers = [function (elem, context, xml) { + return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); + }]; + for (; i < len; i++) { + if (matcher = Expr.relative[tokens[i].type]) { + matchers = [addCombinator(elementMatcher(matchers), matcher)]; + } else { + matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); + if (matcher[expando]) { + j = ++i; + for (; j < len; j++) { + if (Expr.relative[tokens[j].type]) { + break; + } + } + return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)); + } + matchers.push(matcher); + } + } + return elementMatcher(matchers); + } + function matcherFromGroupMatchers(elementMatchers, setMatchers) { + var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) { + var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length; + if (outermost) { + outermostContext = context !== document$1 && context; + } + for (; i !== len && (elem = elems[i]) != null; i++) { + if (byElement && elem) { + j = 0; + while (matcher = elementMatchers[j++]) { + if (matcher(elem, context, xml)) { + results.push(elem); + break; + } + } + if (outermost) { + dirruns = dirrunsUnique; + } + } + if (bySet) { + if (elem = !matcher && elem) { + matchedCount--; + } + if (seed) { + unmatched.push(elem); + } + } + } + matchedCount += i; + if (bySet && i !== matchedCount) { + j = 0; + while (matcher = setMatchers[j++]) { + matcher(unmatched, setMatched, context, xml); + } + if (seed) { + if (matchedCount > 0) { + while (i--) { + if (!(unmatched[i] || setMatched[i])) { + setMatched[i] = pop.call(results); + } + } + } + setMatched = condense(setMatched); + } + push$1.apply(results, setMatched); + if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { + Sizzle.uniqueSort(results); + } + } + if (outermost) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + return unmatched; + }; + return bySet ? markFunction(superMatcher) : superMatcher; + } + compile = Sizzle.compile = function (selector, match) { + var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' ']; + if (!cached) { + if (!match) { + match = tokenize(selector); + } + i = match.length; + while (i--) { + cached = matcherFromTokens(match[i]); + if (cached[expando]) { + setMatchers.push(cached); + } else { + elementMatchers.push(cached); + } + } + cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); + cached.selector = selector; + } + return cached; + }; + select = Sizzle.select = function (selector, context, results, seed) { + var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector); + results = results || []; + if (match.length === 1) { + tokens = match[0] = match[0].slice(0); + if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { + context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0]; + if (!context) { + return results; + } else if (compiled) { + context = context.parentNode; + } + selector = selector.slice(tokens.shift().value.length); + } + i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; + while (i--) { + token = tokens[i]; + if (Expr.relative[type = token.type]) { + break; + } + if (find = Expr.find[type]) { + if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) { + tokens.splice(i, 1); + selector = seed.length && toSelector(tokens); + if (!selector) { + push$1.apply(results, seed); + return results; + } + break; + } + } + } + } + (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context); + return results; + }; + support.sortStable = expando.split('').sort(sortOrder).join('') === expando; + support.detectDuplicates = !!hasDuplicate; + setDocument(); + support.sortDetached = true; + + var isArray = Array.isArray || function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + var toArray = function (obj) { + var array = obj, i, l; + if (!isArray(obj)) { + array = []; + for (i = 0, l = obj.length; i < l; i++) { + array[i] = obj[i]; + } + } + return array; + }; + var each$1 = function (o, cb, s) { + var n, l; + if (!o) { + return 0; + } + s = s || o; + if (o.length !== undefined) { + for (n = 0, l = o.length; n < l; n++) { + if (cb.call(s, o[n], n, o) === false) { + return 0; + } + } + } else { + for (n in o) { + if (o.hasOwnProperty(n)) { + if (cb.call(s, o[n], n, o) === false) { + return 0; + } + } + } + } + return 1; + }; + var map$1 = function (array, callback) { + var out = []; + each$1(array, function (item, index) { + out.push(callback(item, index, array)); + }); + return out; + }; + var filter$1 = function (a, f) { + var o = []; + each$1(a, function (v, index) { + if (!f || f(v, index, a)) { + o.push(v); + } + }); + return o; + }; + var indexOf$2 = function (a, v) { + var i, l; + if (a) { + for (i = 0, l = a.length; i < l; i++) { + if (a[i] === v) { + return i; + } + } + } + return -1; + }; + var reduce = function (collection, iteratee, accumulator, thisArg) { + var i = 0; + if (arguments.length < 3) { + accumulator = collection[0]; + } + for (; i < collection.length; i++) { + accumulator = iteratee.call(thisArg, accumulator, collection[i], i); + } + return accumulator; + }; + var findIndex$1 = function (array, predicate, thisArg) { + var i, l; + for (i = 0, l = array.length; i < l; i++) { + if (predicate.call(thisArg, array[i], i, array)) { + return i; + } + } + return -1; + }; + var find$1 = function (array, predicate, thisArg) { + var idx = findIndex$1(array, predicate, thisArg); + if (idx !== -1) { + return array[idx]; + } + return undefined; + }; + var last$1 = function (collection) { + return collection[collection.length - 1]; + }; + var $_c2vc3pkje5o2puw = { + isArray: isArray, + toArray: toArray, + each: each$1, + map: map$1, + filter: filter$1, + indexOf: indexOf$2, + reduce: reduce, + findIndex: findIndex$1, + find: find$1, + last: last$1 + }; + + var whiteSpaceRegExp = /^\s*|\s*$/g; + var trim = function (str) { + return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, ''); + }; + var is = function (obj, type) { + if (!type) { + return obj !== undefined; + } + if (type === 'array' && $_c2vc3pkje5o2puw.isArray(obj)) { + return true; + } + return typeof obj === type; + }; + var makeMap = function (items, delim, map) { + var i; + items = items || []; + delim = delim || ','; + if (typeof items === 'string') { + items = items.split(delim); + } + map = map || {}; + i = items.length; + while (i--) { + map[items[i]] = {}; + } + return map; + }; + var hasOwnProperty = function (obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + }; + var create = function (s, p, root) { + var self = this; + var sp, ns, cn, scn, c, de = 0; + s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s); + cn = s[3].match(/(^|\.)(\w+)$/i)[2]; + ns = self.createNS(s[3].replace(/\.\w+$/, ''), root); + if (ns[cn]) { + return; + } + if (s[2] === 'static') { + ns[cn] = p; + if (this.onCreate) { + this.onCreate(s[2], s[3], ns[cn]); + } + return; + } + if (!p[cn]) { + p[cn] = function () { + }; + de = 1; + } + ns[cn] = p[cn]; + self.extend(ns[cn].prototype, p); + if (s[5]) { + sp = self.resolve(s[5]).prototype; + scn = s[5].match(/\.(\w+)$/i)[1]; + c = ns[cn]; + if (de) { + ns[cn] = function () { + return sp[scn].apply(this, arguments); + }; + } else { + ns[cn] = function () { + this.parent = sp[scn]; + return c.apply(this, arguments); + }; + } + ns[cn].prototype[cn] = ns[cn]; + self.each(sp, function (f, n) { + ns[cn].prototype[n] = sp[n]; + }); + self.each(p, function (f, n) { + if (sp[n]) { + ns[cn].prototype[n] = function () { + this.parent = sp[n]; + return f.apply(this, arguments); + }; + } else { + if (n !== cn) { + ns[cn].prototype[n] = f; + } + } + }); + } + self.each(p.static, function (f, n) { + ns[cn][n] = f; + }); + }; + var extend = function (obj, ext) { + var x = []; + for (var _i = 2; _i < arguments.length; _i++) { + x[_i - 2] = arguments[_i]; + } + var i, l, name; + var args = arguments; + var value; + for (i = 1, l = args.length; i < l; i++) { + ext = args[i]; + for (name in ext) { + if (ext.hasOwnProperty(name)) { + value = ext[name]; + if (value !== undefined) { + obj[name] = value; + } + } + } + } + return obj; + }; + var walk = function (o, f, n, s) { + s = s || this; + if (o) { + if (n) { + o = o[n]; + } + $_c2vc3pkje5o2puw.each(o, function (o, i) { + if (f.call(s, o, i, n) === false) { + return false; + } + walk(o, f, n, s); + }); + } + }; + var createNS = function (n, o) { + var i, v; + o = o || window; + n = n.split('.'); + for (i = 0; i < n.length; i++) { + v = n[i]; + if (!o[v]) { + o[v] = {}; + } + o = o[v]; + } + return o; + }; + var resolve$1 = function (n, o) { + var i, l; + o = o || window; + n = n.split('.'); + for (i = 0, l = n.length; i < l; i++) { + o = o[n[i]]; + if (!o) { + break; + } + } + return o; + }; + var explode = function (s, d) { + if (!s || is(s, 'array')) { + return s; + } + return $_c2vc3pkje5o2puw.map(s.split(d || ','), trim); + }; + var _addCacheSuffix = function (url) { + var cacheSuffix = $_9bd8pn9je5o2pp2.cacheSuffix; + if (cacheSuffix) { + url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix; + } + return url; + }; + var $_a5gegtjje5o2pum = { + trim: trim, + isArray: $_c2vc3pkje5o2puw.isArray, + is: is, + toArray: $_c2vc3pkje5o2puw.toArray, + makeMap: makeMap, + each: $_c2vc3pkje5o2puw.each, + map: $_c2vc3pkje5o2puw.map, + grep: $_c2vc3pkje5o2puw.filter, + inArray: $_c2vc3pkje5o2puw.indexOf, + hasOwn: hasOwnProperty, + extend: extend, + create: create, + walk: walk, + createNS: createNS, + resolve: resolve$1, + explode: explode, + _addCacheSuffix: _addCacheSuffix + }; + + var doc = document; + var push$2 = Array.prototype.push; + var slice$2 = Array.prototype.slice; + var rquickExpr$1 = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/; + var Event = EventUtils.Event; + var skipUniques = $_a5gegtjje5o2pum.makeMap('children,contents,next,prev'); + var isDefined = function (obj) { + return typeof obj !== 'undefined'; + }; + var isString = function (obj) { + return typeof obj === 'string'; + }; + var isWindow = function (obj) { + return obj && obj === obj.window; + }; + var createFragment = function (html, fragDoc) { + var frag, node, container; + fragDoc = fragDoc || doc; + container = fragDoc.createElement('div'); + frag = fragDoc.createDocumentFragment(); + container.innerHTML = html; + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }; + var domManipulate = function (targetNodes, sourceItem, callback, reverse) { + var i; + if (isString(sourceItem)) { + sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0])); + } else if (sourceItem.length && !sourceItem.nodeType) { + sourceItem = DomQuery.makeArray(sourceItem); + if (reverse) { + for (i = sourceItem.length - 1; i >= 0; i--) { + domManipulate(targetNodes, sourceItem[i], callback, reverse); + } + } else { + for (i = 0; i < sourceItem.length; i++) { + domManipulate(targetNodes, sourceItem[i], callback, reverse); + } + } + return targetNodes; + } + if (sourceItem.nodeType) { + i = targetNodes.length; + while (i--) { + callback.call(targetNodes[i], sourceItem); + } + } + return targetNodes; + }; + var hasClass = function (node, className) { + return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1; + }; + var wrap = function (elements, wrapper, all) { + var lastParent, newWrapper; + wrapper = DomQuery(wrapper)[0]; + elements.each(function () { + var self = this; + if (!all || lastParent !== self.parentNode) { + lastParent = self.parentNode; + newWrapper = wrapper.cloneNode(false); + self.parentNode.insertBefore(newWrapper, self); + newWrapper.appendChild(self); + } else { + newWrapper.appendChild(self); + } + }); + return elements; + }; + var numericCssMap = $_a5gegtjje5o2pum.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' '); + var booleanMap = $_a5gegtjje5o2pum.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' '); + var propFix = { + for: 'htmlFor', + class: 'className', + readonly: 'readOnly' + }; + var cssFix = { float: 'cssFloat' }; + var attrHooks = {}; + var cssHooks = {}; + var DomQuery = function (selector, context) { + return new DomQuery.fn.init(selector, context); + }; + var inArray = function (item, array) { + var i; + if (array.indexOf) { + return array.indexOf(item); + } + i = array.length; + while (i--) { + if (array[i] === item) { + return i; + } + } + return -1; + }; + var whiteSpaceRegExp$1 = /^\s*|\s*$/g; + var trim$1 = function (str) { + return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, ''); + }; + var each$2 = function (obj, callback) { + var length, key, i, value; + if (obj) { + length = obj.length; + if (length === undefined) { + for (key in obj) { + if (obj.hasOwnProperty(key)) { + value = obj[key]; + if (callback.call(value, key, value) === false) { + break; + } + } + } + } else { + for (i = 0; i < length; i++) { + value = obj[i]; + if (callback.call(value, i, value) === false) { + break; + } + } + } + } + return obj; + }; + var grep = function (array, callback) { + var out = []; + each$2(array, function (i, item) { + if (callback(item, i)) { + out.push(item); + } + }); + return out; + }; + var getElementDocument = function (element) { + if (!element) { + return doc; + } + if (element.nodeType === 9) { + return element; + } + return element.ownerDocument; + }; + DomQuery.fn = DomQuery.prototype = { + constructor: DomQuery, + selector: '', + context: null, + length: 0, + init: function (selector, context) { + var self = this; + var match, node; + if (!selector) { + return self; + } + if (selector.nodeType) { + self.context = self[0] = selector; + self.length = 1; + return self; + } + if (context && context.nodeType) { + self.context = context; + } else { + if (context) { + return DomQuery(selector).attr(context); + } + self.context = context = document; + } + if (isString(selector)) { + self.selector = selector; + if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) { + match = [ + null, + selector, + null + ]; + } else { + match = rquickExpr$1.exec(selector); + } + if (match) { + if (match[1]) { + node = createFragment(selector, getElementDocument(context)).firstChild; + while (node) { + push$2.call(self, node); + node = node.nextSibling; + } + } else { + node = getElementDocument(context).getElementById(match[2]); + if (!node) { + return self; + } + if (node.id !== match[2]) { + return self.find(selector); + } + self.length = 1; + self[0] = node; + } + } else { + return DomQuery(context).find(selector); + } + } else { + this.add(selector, false); + } + return self; + }, + toArray: function () { + return $_a5gegtjje5o2pum.toArray(this); + }, + add: function (items, sort) { + var self = this; + var nodes, i; + if (isString(items)) { + return self.add(DomQuery(items)); + } + if (sort !== false) { + nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items))); + self.length = nodes.length; + for (i = 0; i < nodes.length; i++) { + self[i] = nodes[i]; + } + } else { + push$2.apply(self, DomQuery.makeArray(items)); + } + return self; + }, + attr: function (name, value) { + var self = this; + var hook; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.attr(name, value); + }); + } else if (isDefined(value)) { + this.each(function () { + var hook; + if (this.nodeType === 1) { + hook = attrHooks[name]; + if (hook && hook.set) { + hook.set(this, value); + return; + } + if (value === null) { + this.removeAttribute(name, 2); + } else { + this.setAttribute(name, value, 2); + } + } + }); + } else { + if (self[0] && self[0].nodeType === 1) { + hook = attrHooks[name]; + if (hook && hook.get) { + return hook.get(self[0], name); + } + if (booleanMap[name]) { + return self.prop(name) ? name : undefined; + } + value = self[0].getAttribute(name, 2); + if (value === null) { + value = undefined; + } + } + return value; + } + return self; + }, + removeAttr: function (name) { + return this.attr(name, null); + }, + prop: function (name, value) { + var self = this; + name = propFix[name] || name; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.prop(name, value); + }); + } else if (isDefined(value)) { + this.each(function () { + if (this.nodeType === 1) { + this[name] = value; + } + }); + } else { + if (self[0] && self[0].nodeType && name in self[0]) { + return self[0][name]; + } + return value; + } + return self; + }, + css: function (name, value) { + var self = this; + var elm, hook; + var camel = function (name) { + return name.replace(/-(\D)/g, function (a, b) { + return b.toUpperCase(); + }); + }; + var dashed = function (name) { + return name.replace(/[A-Z]/g, function (a) { + return '-' + a; + }); + }; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.css(name, value); + }); + } else { + if (isDefined(value)) { + name = camel(name); + if (typeof value === 'number' && !numericCssMap[name]) { + value = value.toString() + 'px'; + } + self.each(function () { + var style = this.style; + hook = cssHooks[name]; + if (hook && hook.set) { + hook.set(this, value); + return; + } + try { + this.style[cssFix[name] || name] = value; + } catch (ex) { + } + if (value === null || value === '') { + if (style.removeProperty) { + style.removeProperty(dashed(name)); + } else { + style.removeAttribute(name); + } + } + }); + } else { + elm = self[0]; + hook = cssHooks[name]; + if (hook && hook.get) { + return hook.get(elm); + } + if (elm.ownerDocument.defaultView) { + try { + return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name)); + } catch (ex) { + return undefined; + } + } else if (elm.currentStyle) { + return elm.currentStyle[camel(name)]; + } + } + } + return self; + }, + remove: function () { + var self = this; + var node, i = this.length; + while (i--) { + node = self[i]; + Event.clean(node); + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + return this; + }, + empty: function () { + var self = this; + var node, i = this.length; + while (i--) { + node = self[i]; + while (node.firstChild) { + node.removeChild(node.firstChild); + } + } + return this; + }, + html: function (value) { + var self = this; + var i; + if (isDefined(value)) { + i = self.length; + try { + while (i--) { + self[i].innerHTML = value; + } + } catch (ex) { + DomQuery(self[i]).empty().append(value); + } + return self; + } + return self[0] ? self[0].innerHTML : ''; + }, + text: function (value) { + var self = this; + var i; + if (isDefined(value)) { + i = self.length; + while (i--) { + if ('innerText' in self[i]) { + self[i].innerText = value; + } else { + self[0].textContent = value; + } + } + return self; + } + return self[0] ? self[0].innerText || self[0].textContent : ''; + }, + append: function () { + return domManipulate(this, arguments, function (node) { + if (this.nodeType === 1 || this.host && this.host.nodeType === 1) { + this.appendChild(node); + } + }); + }, + prepend: function () { + return domManipulate(this, arguments, function (node) { + if (this.nodeType === 1 || this.host && this.host.nodeType === 1) { + this.insertBefore(node, this.firstChild); + } + }, true); + }, + before: function () { + var self = this; + if (self[0] && self[0].parentNode) { + return domManipulate(self, arguments, function (node) { + this.parentNode.insertBefore(node, this); + }); + } + return self; + }, + after: function () { + var self = this; + if (self[0] && self[0].parentNode) { + return domManipulate(self, arguments, function (node) { + this.parentNode.insertBefore(node, this.nextSibling); + }, true); + } + return self; + }, + appendTo: function (val) { + DomQuery(val).append(this); + return this; + }, + prependTo: function (val) { + DomQuery(val).prepend(this); + return this; + }, + replaceWith: function (content) { + return this.before(content).remove(); + }, + wrap: function (content) { + return wrap(this, content); + }, + wrapAll: function (content) { + return wrap(this, content, true); + }, + wrapInner: function (content) { + this.each(function () { + DomQuery(this).contents().wrapAll(content); + }); + return this; + }, + unwrap: function () { + return this.parent().each(function () { + DomQuery(this).replaceWith(this.childNodes); + }); + }, + clone: function () { + var result = []; + this.each(function () { + result.push(this.cloneNode(true)); + }); + return DomQuery(result); + }, + addClass: function (className) { + return this.toggleClass(className, true); + }, + removeClass: function (className) { + return this.toggleClass(className, false); + }, + toggleClass: function (className, state) { + var self = this; + if (typeof className !== 'string') { + return self; + } + if (className.indexOf(' ') !== -1) { + each$2(className.split(' '), function () { + self.toggleClass(this, state); + }); + } else { + self.each(function (index, node) { + var existingClassName, classState; + classState = hasClass(node, className); + if (classState !== state) { + existingClassName = node.className; + if (classState) { + node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' ')); + } else { + node.className += existingClassName ? ' ' + className : className; + } + } + }); + } + return self; + }, + hasClass: function (className) { + return hasClass(this[0], className); + }, + each: function (callback) { + return each$2(this, callback); + }, + on: function (name, callback) { + return this.each(function () { + Event.bind(this, name, callback); + }); + }, + off: function (name, callback) { + return this.each(function () { + Event.unbind(this, name, callback); + }); + }, + trigger: function (name) { + return this.each(function () { + if (typeof name === 'object') { + Event.fire(this, name.type, name); + } else { + Event.fire(this, name); + } + }); + }, + show: function () { + return this.css('display', ''); + }, + hide: function () { + return this.css('display', 'none'); + }, + slice: function () { + return new DomQuery(slice$2.apply(this, arguments)); + }, + eq: function (index) { + return index === -1 ? this.slice(index) : this.slice(index, +index + 1); + }, + first: function () { + return this.eq(0); + }, + last: function () { + return this.eq(-1); + }, + find: function (selector) { + var i, l; + var ret = []; + for (i = 0, l = this.length; i < l; i++) { + DomQuery.find(selector, this[i], ret); + } + return DomQuery(ret); + }, + filter: function (selector) { + if (typeof selector === 'function') { + return DomQuery(grep(this.toArray(), function (item, i) { + return selector(i, item); + })); + } + return DomQuery(DomQuery.filter(selector, this.toArray())); + }, + closest: function (selector) { + var result = []; + if (selector instanceof DomQuery) { + selector = selector[0]; + } + this.each(function (i, node) { + while (node) { + if (typeof selector === 'string' && DomQuery(node).is(selector)) { + result.push(node); + break; + } else if (node === selector) { + result.push(node); + break; + } + node = node.parentNode; + } + }); + return DomQuery(result); + }, + offset: function (offset) { + var elm, doc, docElm; + var x = 0, y = 0, pos; + if (!offset) { + elm = this[0]; + if (elm) { + doc = elm.ownerDocument; + docElm = doc.documentElement; + if (elm.getBoundingClientRect) { + pos = elm.getBoundingClientRect(); + x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft; + y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop; + } + } + return { + left: x, + top: y + }; + } + return this.css(offset); + }, + push: push$2, + sort: [].sort, + splice: [].splice + }; + $_a5gegtjje5o2pum.extend(DomQuery, { + extend: $_a5gegtjje5o2pum.extend, + makeArray: function (object) { + if (isWindow(object) || object.nodeType) { + return [object]; + } + return $_a5gegtjje5o2pum.toArray(object); + }, + inArray: inArray, + isArray: $_a5gegtjje5o2pum.isArray, + each: each$2, + trim: trim$1, + grep: grep, + find: Sizzle, + expr: Sizzle.selectors, + unique: Sizzle.uniqueSort, + text: Sizzle.getText, + contains: Sizzle.contains, + filter: function (expr, elems, not) { + var i = elems.length; + if (not) { + expr = ':not(' + expr + ')'; + } + while (i--) { + if (elems[i].nodeType !== 1) { + elems.splice(i, 1); + } + } + if (elems.length === 1) { + elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : []; + } else { + elems = DomQuery.find.matches(expr, elems); + } + return elems; + } + }); + var dir = function (el, prop, until) { + var matched = []; + var cur = el[prop]; + if (typeof until !== 'string' && until instanceof DomQuery) { + until = until[0]; + } + while (cur && cur.nodeType !== 9) { + if (until !== undefined) { + if (cur === until) { + break; + } + if (typeof until === 'string' && DomQuery(cur).is(until)) { + break; + } + } + if (cur.nodeType === 1) { + matched.push(cur); + } + cur = cur[prop]; + } + return matched; + }; + var sibling = function (node, siblingName, nodeType, until) { + var result = []; + if (until instanceof DomQuery) { + until = until[0]; + } + for (; node; node = node[siblingName]) { + if (nodeType && node.nodeType !== nodeType) { + continue; + } + if (until !== undefined) { + if (node === until) { + break; + } + if (typeof until === 'string' && DomQuery(node).is(until)) { + break; + } + } + result.push(node); + } + return result; + }; + var firstSibling = function (node, siblingName, nodeType) { + for (node = node[siblingName]; node; node = node[siblingName]) { + if (node.nodeType === nodeType) { + return node; + } + } + return null; + }; + each$2({ + parent: function (node) { + var parent = node.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function (node) { + return dir(node, 'parentNode'); + }, + next: function (node) { + return firstSibling(node, 'nextSibling', 1); + }, + prev: function (node) { + return firstSibling(node, 'previousSibling', 1); + }, + children: function (node) { + return sibling(node.firstChild, 'nextSibling', 1); + }, + contents: function (node) { + return $_a5gegtjje5o2pum.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes); + } + }, function (name, fn) { + DomQuery.fn[name] = function (selector) { + var self = this; + var result = []; + self.each(function () { + var nodes = fn.call(result, this, selector, result); + if (nodes) { + if (DomQuery.isArray(nodes)) { + result.push.apply(result, nodes); + } else { + result.push(nodes); + } + } + }); + if (this.length > 1) { + if (!skipUniques[name]) { + result = DomQuery.unique(result); + } + if (name.indexOf('parents') === 0) { + result = result.reverse(); + } + } + result = DomQuery(result); + if (selector) { + return result.filter(selector); + } + return result; + }; + }); + each$2({ + parentsUntil: function (node, until) { + return dir(node, 'parentNode', until); + }, + nextUntil: function (node, until) { + return sibling(node, 'nextSibling', 1, until).slice(1); + }, + prevUntil: function (node, until) { + return sibling(node, 'previousSibling', 1, until).slice(1); + } + }, function (name, fn) { + DomQuery.fn[name] = function (selector, filter) { + var self = this; + var result = []; + self.each(function () { + var nodes = fn.call(result, this, selector, result); + if (nodes) { + if (DomQuery.isArray(nodes)) { + result.push.apply(result, nodes); + } else { + result.push(nodes); + } + } + }); + if (this.length > 1) { + result = DomQuery.unique(result); + if (name.indexOf('parents') === 0 || name === 'prevUntil') { + result = result.reverse(); + } + } + result = DomQuery(result); + if (filter) { + return result.filter(filter); + } + return result; + }; + }); + DomQuery.fn.is = function (selector) { + return !!selector && this.filter(selector).length > 0; + }; + DomQuery.fn.init.prototype = DomQuery.fn; + DomQuery.overrideDefaults = function (callback) { + var defaults; + var sub = function (selector, context) { + defaults = defaults || callback(); + if (arguments.length === 0) { + selector = defaults.element; + } + if (!context) { + context = defaults.context; + } + return new sub.fn.init(selector, context); + }; + DomQuery.extend(sub, this); + return sub; + }; + var appendHooks = function (targetHooks, prop, hooks) { + each$2(hooks, function (name, func) { + targetHooks[name] = targetHooks[name] || {}; + targetHooks[name][prop] = func; + }); + }; + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 8) { + appendHooks(attrHooks, 'get', { + maxlength: function (elm) { + var value = elm.maxLength; + if (value === 2147483647) { + return undefined; + } + return value; + }, + size: function (elm) { + var value = elm.size; + if (value === 20) { + return undefined; + } + return value; + }, + class: function (elm) { + return elm.className; + }, + style: function (elm) { + var value = elm.style.cssText; + if (value.length === 0) { + return undefined; + } + return value; + } + }); + appendHooks(attrHooks, 'set', { + class: function (elm, value) { + elm.className = value; + }, + style: function (elm, value) { + elm.style.cssText = value; + } + }); + } + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 9) { + cssFix.float = 'styleFloat'; + appendHooks(cssHooks, 'set', { + opacity: function (elm, value) { + var style = elm.style; + if (value === null || value === '') { + style.removeAttribute('filter'); + } else { + style.zoom = 1; + style.filter = 'alpha(opacity=' + value * 100 + ')'; + } + } + }); + } + DomQuery.attrHooks = attrHooks; + DomQuery.cssHooks = cssHooks; + + var cached = function (f) { + var called = false; + var r; + return function () { + if (!called) { + called = true; + r = f.apply(null, arguments); + } + return r; + }; + }; + var $_g85o1xnje5o2pvw = { cached: cached }; + + var firstMatch = function (regexes, s) { + for (var i = 0; i < regexes.length; i++) { + var x = regexes[i]; + if (x.test(s)) + return x; + } + return undefined; + }; + var find$2 = function (regexes, agent) { + var r = firstMatch(regexes, agent); + if (!r) + return { + major: 0, + minor: 0 + }; + var group = function (i) { + return Number(agent.replace(r, '$' + i)); + }; + return nu(group(1), group(2)); + }; + var detect = function (versionRegexes, agent) { + var cleanedAgent = String(agent).toLowerCase(); + if (versionRegexes.length === 0) + return unknown(); + return find$2(versionRegexes, cleanedAgent); + }; + var unknown = function () { + return nu(0, 0); + }; + var nu = function (major, minor) { + return { + major: major, + minor: minor + }; + }; + var $_df13jvqje5o2pw3 = { + nu: nu, + detect: detect, + unknown: unknown + }; + + var edge = 'Edge'; + var chrome = 'Chrome'; + var ie$1 = 'IE'; + var opera$1 = 'Opera'; + var firefox = 'Firefox'; + var safari = 'Safari'; + var isBrowser = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$1 = function () { + return nu$1({ + current: undefined, + version: $_df13jvqje5o2pw3.unknown() + }); + }; + var nu$1 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isEdge: isBrowser(edge, current), + isChrome: isBrowser(chrome, current), + isIE: isBrowser(ie$1, current), + isOpera: isBrowser(opera$1, current), + isFirefox: isBrowser(firefox, current), + isSafari: isBrowser(safari, current) + }; + }; + var $_3tg2x6pje5o2pvz = { + unknown: unknown$1, + nu: nu$1, + edge: $_enfhkv6je5o2ply.constant(edge), + chrome: $_enfhkv6je5o2ply.constant(chrome), + ie: $_enfhkv6je5o2ply.constant(ie$1), + opera: $_enfhkv6je5o2ply.constant(opera$1), + firefox: $_enfhkv6je5o2ply.constant(firefox), + safari: $_enfhkv6je5o2ply.constant(safari) + }; + + var windows = 'Windows'; + var ios = 'iOS'; + var android$1 = 'Android'; + var linux = 'Linux'; + var osx = 'OSX'; + var solaris = 'Solaris'; + var freebsd = 'FreeBSD'; + var isOS = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$2 = function () { + return nu$2({ + current: undefined, + version: $_df13jvqje5o2pw3.unknown() + }); + }; + var nu$2 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isWindows: isOS(windows, current), + isiOS: isOS(ios, current), + isAndroid: isOS(android$1, current), + isOSX: isOS(osx, current), + isLinux: isOS(linux, current), + isSolaris: isOS(solaris, current), + isFreeBSD: isOS(freebsd, current) + }; + }; + var $_w4a0lrje5o2pw4 = { + unknown: unknown$2, + nu: nu$2, + windows: $_enfhkv6je5o2ply.constant(windows), + ios: $_enfhkv6je5o2ply.constant(ios), + android: $_enfhkv6je5o2ply.constant(android$1), + linux: $_enfhkv6je5o2ply.constant(linux), + osx: $_enfhkv6je5o2ply.constant(osx), + solaris: $_enfhkv6je5o2ply.constant(solaris), + freebsd: $_enfhkv6je5o2ply.constant(freebsd) + }; + + function DeviceType (os, browser, userAgent) { + var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; + var isiPhone = os.isiOS() && !isiPad; + var isAndroid3 = os.isAndroid() && os.version.major === 3; + var isAndroid4 = os.isAndroid() && os.version.major === 4; + var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true; + var isTouch = os.isiOS() || os.isAndroid(); + var isPhone = isTouch && !isTablet; + var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; + return { + isiPad: $_enfhkv6je5o2ply.constant(isiPad), + isiPhone: $_enfhkv6je5o2ply.constant(isiPhone), + isTablet: $_enfhkv6je5o2ply.constant(isTablet), + isPhone: $_enfhkv6je5o2ply.constant(isPhone), + isTouch: $_enfhkv6je5o2ply.constant(isTouch), + isAndroid: os.isAndroid, + isiOS: os.isiOS, + isWebView: $_enfhkv6je5o2ply.constant(iOSwebview) + }; + } + + var detect$1 = function (candidates, userAgent) { + var agent = String(userAgent).toLowerCase(); + return $_bwcteb4je5o2pl4.find(candidates, function (candidate) { + return candidate.search(agent); + }); + }; + var detectBrowser = function (browsers, userAgent) { + return detect$1(browsers, userAgent).map(function (browser) { + var version = $_df13jvqje5o2pw3.detect(browser.versionRegexes, userAgent); + return { + current: browser.name, + version: version + }; + }); + }; + var detectOs = function (oses, userAgent) { + return detect$1(oses, userAgent).map(function (os) { + var version = $_df13jvqje5o2pw3.detect(os.versionRegexes, userAgent); + return { + current: os.name, + version: version + }; + }); + }; + var $_4evi4wtje5o2pwb = { + detectBrowser: detectBrowser, + detectOs: detectOs + }; + + var addToStart = function (str, prefix) { + return prefix + str; + }; + var addToEnd = function (str, suffix) { + return str + suffix; + }; + var removeFromStart = function (str, numChars) { + return str.substring(numChars); + }; + var removeFromEnd = function (str, numChars) { + return str.substring(0, str.length - numChars); + }; + var $_3qinixwje5o2pwr = { + addToStart: addToStart, + addToEnd: addToEnd, + removeFromStart: removeFromStart, + removeFromEnd: removeFromEnd + }; + + var first = function (str, count) { + return str.substr(0, count); + }; + var last$2 = function (str, count) { + return str.substr(str.length - count, str.length); + }; + var head$1 = function (str) { + return str === '' ? Option.none() : Option.some(str.substr(0, 1)); + }; + var tail = function (str) { + return str === '' ? Option.none() : Option.some(str.substring(1)); + }; + var $_7ingkmxje5o2pws = { + first: first, + last: last$2, + head: head$1, + tail: tail + }; + + var checkRange = function (str, substr, start) { + if (substr === '') + return true; + if (str.length < substr.length) + return false; + var x = str.substr(start, start + substr.length); + return x === substr; + }; + var supplant = function (str, obj) { + var isStringOrNumber = function (a) { + var t = typeof a; + return t === 'string' || t === 'number'; + }; + return str.replace(/\${([^{}]*)}/g, function (a, b) { + var value = obj[b]; + return isStringOrNumber(value) ? value : a; + }); + }; + var removeLeading = function (str, prefix) { + return startsWith(str, prefix) ? $_3qinixwje5o2pwr.removeFromStart(str, prefix.length) : str; + }; + var removeTrailing = function (str, prefix) { + return endsWith(str, prefix) ? $_3qinixwje5o2pwr.removeFromEnd(str, prefix.length) : str; + }; + var ensureLeading = function (str, prefix) { + return startsWith(str, prefix) ? str : $_3qinixwje5o2pwr.addToStart(str, prefix); + }; + var ensureTrailing = function (str, prefix) { + return endsWith(str, prefix) ? str : $_3qinixwje5o2pwr.addToEnd(str, prefix); + }; + var contains$2 = function (str, substr) { + return str.indexOf(substr) !== -1; + }; + var capitalize = function (str) { + return $_7ingkmxje5o2pws.head(str).bind(function (head) { + return $_7ingkmxje5o2pws.tail(str).map(function (tail) { + return head.toUpperCase() + tail; + }); + }).getOr(str); + }; + var startsWith = function (str, prefix) { + return checkRange(str, prefix, 0); + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + var trim$2 = function (str) { + return str.replace(/^\s+|\s+$/g, ''); + }; + var lTrim = function (str) { + return str.replace(/^\s+/g, ''); + }; + var rTrim = function (str) { + return str.replace(/\s+$/g, ''); + }; + var $_6dh61xvje5o2pwo = { + supplant: supplant, + startsWith: startsWith, + removeLeading: removeLeading, + removeTrailing: removeTrailing, + ensureLeading: ensureLeading, + ensureTrailing: ensureTrailing, + endsWith: endsWith, + contains: contains$2, + trim: trim$2, + lTrim: lTrim, + rTrim: rTrim, + capitalize: capitalize + }; + + var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; + var checkContains = function (target) { + return function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, target); + }; + }; + var browsers = [ + { + name: 'Edge', + versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], + search: function (uastring) { + var monstrosity = $_6dh61xvje5o2pwo.contains(uastring, 'edge/') && $_6dh61xvje5o2pwo.contains(uastring, 'chrome') && $_6dh61xvje5o2pwo.contains(uastring, 'safari') && $_6dh61xvje5o2pwo.contains(uastring, 'applewebkit'); + return monstrosity; + } + }, + { + name: 'Chrome', + versionRegexes: [ + /.*?chrome\/([0-9]+)\.([0-9]+).*/, + normalVersionRegex + ], + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'chrome') && !$_6dh61xvje5o2pwo.contains(uastring, 'chromeframe'); + } + }, + { + name: 'IE', + versionRegexes: [ + /.*?msie\ ?([0-9]+)\.([0-9]+).*/, + /.*?rv:([0-9]+)\.([0-9]+).*/ + ], + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'msie') || $_6dh61xvje5o2pwo.contains(uastring, 'trident'); + } + }, + { + name: 'Opera', + versionRegexes: [ + normalVersionRegex, + /.*?opera\/([0-9]+)\.([0-9]+).*/ + ], + search: checkContains('opera') + }, + { + name: 'Firefox', + versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], + search: checkContains('firefox') + }, + { + name: 'Safari', + versionRegexes: [ + normalVersionRegex, + /.*?cpu os ([0-9]+)_([0-9]+).*/ + ], + search: function (uastring) { + return ($_6dh61xvje5o2pwo.contains(uastring, 'safari') || $_6dh61xvje5o2pwo.contains(uastring, 'mobile/')) && $_6dh61xvje5o2pwo.contains(uastring, 'applewebkit'); + } + } + ]; + var oses = [ + { + name: 'Windows', + search: checkContains('win'), + versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'iOS', + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'iphone') || $_6dh61xvje5o2pwo.contains(uastring, 'ipad'); + }, + versionRegexes: [ + /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, + /.*cpu os ([0-9]+)_([0-9]+).*/, + /.*cpu iphone os ([0-9]+)_([0-9]+).*/ + ] + }, + { + name: 'Android', + search: checkContains('android'), + versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'OSX', + search: checkContains('os x'), + versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] + }, + { + name: 'Linux', + search: checkContains('linux'), + versionRegexes: [] + }, + { + name: 'Solaris', + search: checkContains('sunos'), + versionRegexes: [] + }, + { + name: 'FreeBSD', + search: checkContains('freebsd'), + versionRegexes: [] + } + ]; + var $_5dts3kuje5o2pwh = { + browsers: $_enfhkv6je5o2ply.constant(browsers), + oses: $_enfhkv6je5o2ply.constant(oses) + }; + + var detect$2 = function (userAgent) { + var browsers = $_5dts3kuje5o2pwh.browsers(); + var oses = $_5dts3kuje5o2pwh.oses(); + var browser = $_4evi4wtje5o2pwb.detectBrowser(browsers, userAgent).fold($_3tg2x6pje5o2pvz.unknown, $_3tg2x6pje5o2pvz.nu); + var os = $_4evi4wtje5o2pwb.detectOs(oses, userAgent).fold($_w4a0lrje5o2pw4.unknown, $_w4a0lrje5o2pw4.nu); + var deviceType = DeviceType(os, browser, userAgent); + return { + browser: browser, + os: os, + deviceType: deviceType + }; + }; + var $_7glnnooje5o2pvy = { detect: detect$2 }; + + var detect$3 = $_g85o1xnje5o2pvw.cached(function () { + var userAgent = navigator.userAgent; + return $_7glnnooje5o2pvy.detect(userAgent); + }); + var $_2hq237mje5o2pvu = { detect: detect$3 }; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw 'HTML must have a single root node'; + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) + throw new Error('Node cannot be null or undefined'); + return { dom: $_enfhkv6je5o2ply.constant(node) }; + }; + var fromPoint = function (doc, x, y) { + return Option.from(doc.dom().elementFromPoint(x, y)).map(fromDom); + }; + var $_5tcb2dyje5o2pwu = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var $_62vbac10je5o2px2 = { + ATTRIBUTE: 2, + CDATA_SECTION: 4, + COMMENT: 8, + DOCUMENT: 9, + DOCUMENT_TYPE: 10, + DOCUMENT_FRAGMENT: 11, + ELEMENT: 1, + TEXT: 3, + PROCESSING_INSTRUCTION: 7, + ENTITY_REFERENCE: 5, + ENTITY: 6, + NOTATION: 12 + }; + + var name = function (element) { + var r = element.dom().nodeName; + return r.toLowerCase(); + }; + var type = function (element) { + return element.dom().nodeType; + }; + var value = function (element) { + return element.dom().nodeValue; + }; + var isType = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isComment = function (element) { + return type(element) === $_62vbac10je5o2px2.COMMENT || name(element) === '#comment'; + }; + var isElement = isType($_62vbac10je5o2px2.ELEMENT); + var isText = isType($_62vbac10je5o2px2.TEXT); + var isDocument = isType($_62vbac10je5o2px2.DOCUMENT); + var $_95wn8qzje5o2px0 = { + name: name, + type: type, + value: value, + isElement: isElement, + isText: isText, + isDocument: isDocument, + isComment: isComment + }; + + var typeOf = function (x) { + if (x === null) + return 'null'; + var t = typeof x; + if (t === 'object' && Array.prototype.isPrototypeOf(x)) + return 'array'; + if (t === 'object' && String.prototype.isPrototypeOf(x)) + return 'string'; + return t; + }; + var isType$1 = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var $_be3q8w12je5o2pxj = { + isString: isType$1('string'), + isObject: isType$1('object'), + isArray: isType$1('array'), + isNull: isType$1('null'), + isBoolean: isType$1('boolean'), + isUndefined: isType$1('undefined'), + isFunction: isType$1('function'), + isNumber: isType$1('number') + }; + + var keys = function () { + var fastKeys = Object.keys; + var slowKeys = function (o) { + var r = []; + for (var i in o) { + if (o.hasOwnProperty(i)) { + r.push(i); + } + } + return r; + }; + return fastKeys === undefined ? slowKeys : fastKeys; + }(); + var each$3 = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i, obj); + } + }; + var objectMap = function (obj, f) { + return tupleMap(obj, function (x, i, obj) { + return { + k: i, + v: f(x, i, obj) + }; + }); + }; + var tupleMap = function (obj, f) { + var r = {}; + each$3(obj, function (x, i) { + var tuple = f(x, i, obj); + r[tuple.k] = tuple.v; + }); + return r; + }; + var bifilter = function (obj, pred) { + var t = {}; + var f = {}; + each$3(obj, function (x, i) { + var branch = pred(x, i) ? t : f; + branch[i] = x; + }); + return { + t: t, + f: f + }; + }; + var mapToArray = function (obj, f) { + var r = []; + each$3(obj, function (value, name) { + r.push(f(value, name)); + }); + return r; + }; + var find$3 = function (obj, pred) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + if (pred(x, i, obj)) { + return Option.some(x); + } + } + return Option.none(); + }; + var values = function (obj) { + return mapToArray(obj, function (v) { + return v; + }); + }; + var size = function (obj) { + return values(obj).length; + }; + var $_8v44sy13je5o2pxm = { + bifilter: bifilter, + each: each$3, + map: objectMap, + mapToArray: mapToArray, + tupleMap: tupleMap, + find: find$3, + keys: keys, + values: values, + size: size + }; + + var rawSet = function (dom, key, value) { + if ($_be3q8w12je5o2pxj.isString(value) || $_be3q8w12je5o2pxj.isBoolean(value) || $_be3q8w12je5o2pxj.isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set = function (element, key, value) { + rawSet(element.dom(), key, value); + }; + var setAll = function (element, attrs) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(attrs, function (v, k) { + rawSet(dom, k, v); + }); + }; + var get = function (element, key) { + var v = element.dom().getAttribute(key); + return v === null ? undefined : v; + }; + var has = function (element, key) { + var dom = element.dom(); + return dom && dom.hasAttribute ? dom.hasAttribute(key) : false; + }; + var remove = function (element, key) { + element.dom().removeAttribute(key); + }; + var hasNone = function (element) { + var attrs = element.dom().attributes; + return attrs === undefined || attrs === null || attrs.length === 0; + }; + var clone = function (element) { + return $_bwcteb4je5o2pl4.foldl(element.dom().attributes, function (acc, attr) { + acc[attr.name] = attr.value; + return acc; + }, {}); + }; + var transferOne = function (source, destination, attr) { + if (has(source, attr) && !has(destination, attr)) + set(destination, attr, get(source, attr)); + }; + var transfer = function (source, destination, attrs) { + if (!$_95wn8qzje5o2px0.isElement(source) || !$_95wn8qzje5o2px0.isElement(destination)) + return; + $_bwcteb4je5o2pl4.each(attrs, function (attr) { + transferOne(source, destination, attr); + }); + }; + var $_3uo9pl14je5o2pxq = { + clone: clone, + set: set, + setAll: setAll, + get: get, + has: has, + remove: remove, + hasNone: hasNone, + transfer: transfer + }; + + var inBody = function (element) { + var dom = $_95wn8qzje5o2px0.isText(element) ? element.dom().parentNode : element.dom(); + return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom); + }; + var body = $_g85o1xnje5o2pvw.cached(function () { + return getBody($_5tcb2dyje5o2pwu.fromDom(document)); + }); + var getBody = function (doc) { + var body = doc.dom().body; + if (body === null || body === undefined) + throw 'Body is not available yet'; + return $_5tcb2dyje5o2pwu.fromDom(body); + }; + var $_484buq15je5o2py8 = { + body: body, + getBody: getBody, + inBody: inBody + }; + + var isSupported = function (dom) { + return dom.style !== undefined; + }; + var $_g9o6j616je5o2pyb = { isSupported: isSupported }; + + var internalSet = function (dom, property, value) { + if (!$_be3q8w12je5o2pxj.isString(value)) { + console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); + throw new Error('CSS value must be a string: ' + value); + } + if ($_g9o6j616je5o2pyb.isSupported(dom)) + dom.style.setProperty(property, value); + }; + var internalRemove = function (dom, property) { + if ($_g9o6j616je5o2pyb.isSupported(dom)) + dom.style.removeProperty(property); + }; + var set$1 = function (element, property, value) { + var dom = element.dom(); + internalSet(dom, property, value); + }; + var setAll$1 = function (element, css) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(css, function (v, k) { + internalSet(dom, k, v); + }); + }; + var setOptions = function (element, css) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(css, function (v, k) { + v.fold(function () { + internalRemove(dom, k); + }, function (value) { + internalSet(dom, k, value); + }); + }); + }; + var get$1 = function (element, property) { + var dom = element.dom(); + var styles = window.getComputedStyle(dom); + var r = styles.getPropertyValue(property); + var v = r === '' && !$_484buq15je5o2py8.inBody(element) ? getUnsafeProperty(dom, property) : r; + return v === null ? undefined : v; + }; + var getUnsafeProperty = function (dom, property) { + return $_g9o6j616je5o2pyb.isSupported(dom) ? dom.style.getPropertyValue(property) : ''; + }; + var getRaw = function (element, property) { + var dom = element.dom(); + var raw = getUnsafeProperty(dom, property); + return Option.from(raw).filter(function (r) { + return r.length > 0; + }); + }; + var getAllRaw = function (element) { + var css = {}; + var dom = element.dom(); + if ($_g9o6j616je5o2pyb.isSupported(dom)) { + for (var i = 0; i < dom.style.length; i++) { + var ruleName = dom.style.item(i); + css[ruleName] = dom.style[ruleName]; + } + } + return css; + }; + var isValidValue = function (tag, property, value) { + var element = $_5tcb2dyje5o2pwu.fromTag(tag); + set$1(element, property, value); + var style = getRaw(element, property); + return style.isSome(); + }; + var remove$1 = function (element, property) { + var dom = element.dom(); + internalRemove(dom, property); + if ($_3uo9pl14je5o2pxq.has(element, 'style') && $_6dh61xvje5o2pwo.trim($_3uo9pl14je5o2pxq.get(element, 'style')) === '') { + $_3uo9pl14je5o2pxq.remove(element, 'style'); + } + }; + var preserve = function (element, f) { + var oldStyles = $_3uo9pl14je5o2pxq.get(element, 'style'); + var result = f(element); + var restore = oldStyles === undefined ? $_3uo9pl14je5o2pxq.remove : $_3uo9pl14je5o2pxq.set; + restore(element, 'style', oldStyles); + return result; + }; + var copy = function (source, target) { + var sourceDom = source.dom(); + var targetDom = target.dom(); + if ($_g9o6j616je5o2pyb.isSupported(sourceDom) && $_g9o6j616je5o2pyb.isSupported(targetDom)) { + targetDom.style.cssText = sourceDom.style.cssText; + } + }; + var reflow = function (e) { + return e.dom().offsetWidth; + }; + var transferOne$1 = function (source, destination, style) { + getRaw(source, style).each(function (value) { + if (getRaw(destination, style).isNone()) + set$1(destination, style, value); + }); + }; + var transfer$1 = function (source, destination, styles) { + if (!$_95wn8qzje5o2px0.isElement(source) || !$_95wn8qzje5o2px0.isElement(destination)) + return; + $_bwcteb4je5o2pl4.each(styles, function (style) { + transferOne$1(source, destination, style); + }); + }; + var $_1ioope11je5o2px4 = { + copy: copy, + set: set$1, + preserve: preserve, + setAll: setAll$1, + setOptions: setOptions, + remove: remove$1, + get: get$1, + getRaw: getRaw, + getAllRaw: getAllRaw, + isValidValue: isValidValue, + reflow: reflow, + transfer: transfer$1 + }; + + function Immutable () { + var fields = arguments; + return function () { + var values = new Array(arguments.length); + for (var i = 0; i < values.length; i++) + values[i] = arguments[i]; + if (fields.length !== values.length) + throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments'); + var struct = {}; + $_bwcteb4je5o2pl4.each(fields, function (name, i) { + struct[name] = $_enfhkv6je5o2ply.constant(values[i]); + }); + return struct; + }; + } + + var sort$1 = function (arr) { + return arr.slice(0).sort(); + }; + var reqMessage = function (required, keys) { + throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.'); + }; + var unsuppMessage = function (unsupported) { + throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', ')); + }; + var validateStrArr = function (label, array) { + if (!$_be3q8w12je5o2pxj.isArray(array)) + throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.'); + $_bwcteb4je5o2pl4.each(array, function (a) { + if (!$_be3q8w12je5o2pxj.isString(a)) + throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.'); + }); + }; + var invalidTypeMessage = function (incorrect, type) { + throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.'); + }; + var checkDupes = function (everything) { + var sorted = sort$1(everything); + var dupe = $_bwcteb4je5o2pl4.find(sorted, function (s, i) { + return i < sorted.length - 1 && s === sorted[i + 1]; + }); + dupe.each(function (d) { + throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].'); + }); + }; + var $_avjnh51bje5o2pyw = { + sort: sort$1, + reqMessage: reqMessage, + unsuppMessage: unsuppMessage, + validateStrArr: validateStrArr, + invalidTypeMessage: invalidTypeMessage, + checkDupes: checkDupes + }; + + function MixedBag (required, optional) { + var everything = required.concat(optional); + if (everything.length === 0) + throw new Error('You must specify at least one required or optional field.'); + $_avjnh51bje5o2pyw.validateStrArr('required', required); + $_avjnh51bje5o2pyw.validateStrArr('optional', optional); + $_avjnh51bje5o2pyw.checkDupes(everything); + return function (obj) { + var keys = $_8v44sy13je5o2pxm.keys(obj); + var allReqd = $_bwcteb4je5o2pl4.forall(required, function (req) { + return $_bwcteb4je5o2pl4.contains(keys, req); + }); + if (!allReqd) + $_avjnh51bje5o2pyw.reqMessage(required, keys); + var unsupported = $_bwcteb4je5o2pl4.filter(keys, function (key) { + return !$_bwcteb4je5o2pl4.contains(everything, key); + }); + if (unsupported.length > 0) + $_avjnh51bje5o2pyw.unsuppMessage(unsupported); + var r = {}; + $_bwcteb4je5o2pl4.each(required, function (req) { + r[req] = $_enfhkv6je5o2ply.constant(obj[req]); + }); + $_bwcteb4je5o2pl4.each(optional, function (opt) { + r[opt] = $_enfhkv6je5o2ply.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none()); + }); + return r; + }; + } + + var $_86drv18je5o2pyn = { + immutable: Immutable, + immutableBag: MixedBag + }; + + var toArray$1 = function (target, f) { + var r = []; + var recurse = function (e) { + r.push(e); + return f(e); + }; + var cur = f(target); + do { + cur = cur.bind(recurse); + } while (cur.isSome()); + return r; + }; + var $_zryvs1cje5o2pyz = { toArray: toArray$1 }; + + var node = function () { + var f = $_lmz5vbje5o2pp9.getOrDie('Node'); + return f; + }; + var compareDocumentPosition = function (a, b, match) { + return (a.compareDocumentPosition(b) & match) !== 0; + }; + var documentPositionPreceding = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING); + }; + var documentPositionContainedBy = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY); + }; + var $_3s8zkc1eje5o2pz7 = { + documentPositionPreceding: documentPositionPreceding, + documentPositionContainedBy: documentPositionContainedBy + }; + + var ELEMENT = $_62vbac10je5o2px2.ELEMENT; + var DOCUMENT = $_62vbac10je5o2px2.DOCUMENT; + var is$1 = function (element, selector) { + var elem = element.dom(); + if (elem.nodeType !== ELEMENT) + return false; + else if (elem.matches !== undefined) + return elem.matches(selector); + else if (elem.msMatchesSelector !== undefined) + return elem.msMatchesSelector(selector); + else if (elem.webkitMatchesSelector !== undefined) + return elem.webkitMatchesSelector(selector); + else if (elem.mozMatchesSelector !== undefined) + return elem.mozMatchesSelector(selector); + else + throw new Error('Browser lacks native selectors'); + }; + var bypassSelector = function (dom) { + return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0; + }; + var all = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? [] : $_bwcteb4je5o2pl4.map(base.querySelectorAll(selector), $_5tcb2dyje5o2pwu.fromDom); + }; + var one = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map($_5tcb2dyje5o2pwu.fromDom); + }; + var $_87zu5k1fje5o2pz9 = { + all: all, + is: is$1, + one: one + }; + + var eq = function (e1, e2) { + return e1.dom() === e2.dom(); + }; + var isEqualNode = function (e1, e2) { + return e1.dom().isEqualNode(e2.dom()); + }; + var member = function (element, elements) { + return $_bwcteb4je5o2pl4.exists(elements, $_enfhkv6je5o2ply.curry(eq, element)); + }; + var regularContains = function (e1, e2) { + var d1 = e1.dom(), d2 = e2.dom(); + return d1 === d2 ? false : d1.contains(d2); + }; + var ieContains = function (e1, e2) { + return $_3s8zkc1eje5o2pz7.documentPositionContainedBy(e1.dom(), e2.dom()); + }; + var browser = $_2hq237mje5o2pvu.detect().browser; + var contains$3 = browser.isIE() ? ieContains : regularContains; + var $_7oppmo1dje5o2pz1 = { + eq: eq, + isEqualNode: isEqualNode, + member: member, + contains: contains$3, + is: $_87zu5k1fje5o2pz9.is + }; + + var owner = function (element) { + return $_5tcb2dyje5o2pwu.fromDom(element.dom().ownerDocument); + }; + var documentElement = function (element) { + var doc = owner(element); + return $_5tcb2dyje5o2pwu.fromDom(doc.dom().documentElement); + }; + var defaultView = function (element) { + var el = element.dom(); + var defaultView = el.ownerDocument.defaultView; + return $_5tcb2dyje5o2pwu.fromDom(defaultView); + }; + var parent = function (element) { + var dom = element.dom(); + return Option.from(dom.parentNode).map($_5tcb2dyje5o2pwu.fromDom); + }; + var findIndex$2 = function (element) { + return parent(element).bind(function (p) { + var kin = children(p); + return $_bwcteb4je5o2pl4.findIndex(kin, function (elem) { + return $_7oppmo1dje5o2pz1.eq(element, elem); + }); + }); + }; + var parents = function (element, isRoot) { + var stop = $_be3q8w12je5o2pxj.isFunction(isRoot) ? isRoot : $_enfhkv6je5o2ply.constant(false); + var dom = element.dom(); + var ret = []; + while (dom.parentNode !== null && dom.parentNode !== undefined) { + var rawParent = dom.parentNode; + var parent = $_5tcb2dyje5o2pwu.fromDom(rawParent); + ret.push(parent); + if (stop(parent) === true) + break; + else + dom = rawParent; + } + return ret; + }; + var siblings = function (element) { + var filterSelf = function (elements) { + return $_bwcteb4je5o2pl4.filter(elements, function (x) { + return !$_7oppmo1dje5o2pz1.eq(element, x); + }); + }; + return parent(element).map(children).map(filterSelf).getOr([]); + }; + var offsetParent = function (element) { + var dom = element.dom(); + return Option.from(dom.offsetParent).map($_5tcb2dyje5o2pwu.fromDom); + }; + var prevSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.previousSibling).map($_5tcb2dyje5o2pwu.fromDom); + }; + var nextSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.nextSibling).map($_5tcb2dyje5o2pwu.fromDom); + }; + var prevSiblings = function (element) { + return $_bwcteb4je5o2pl4.reverse($_zryvs1cje5o2pyz.toArray(element, prevSibling)); + }; + var nextSiblings = function (element) { + return $_zryvs1cje5o2pyz.toArray(element, nextSibling); + }; + var children = function (element) { + var dom = element.dom(); + return $_bwcteb4je5o2pl4.map(dom.childNodes, $_5tcb2dyje5o2pwu.fromDom); + }; + var child = function (element, index) { + var children = element.dom().childNodes; + return Option.from(children[index]).map($_5tcb2dyje5o2pwu.fromDom); + }; + var firstChild = function (element) { + return child(element, 0); + }; + var lastChild = function (element) { + return child(element, element.dom().childNodes.length - 1); + }; + var childNodesCount = function (element) { + return element.dom().childNodes.length; + }; + var hasChildNodes = function (element) { + return element.dom().hasChildNodes(); + }; + var spot = $_86drv18je5o2pyn.immutable('element', 'offset'); + var leaf = function (element, offset) { + var cs = children(element); + return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset); + }; + var $_a6mttx17je5o2pyd = { + owner: owner, + defaultView: defaultView, + documentElement: documentElement, + parent: parent, + findIndex: findIndex$2, + parents: parents, + siblings: siblings, + prevSibling: prevSibling, + offsetParent: offsetParent, + prevSiblings: prevSiblings, + nextSibling: nextSibling, + nextSiblings: nextSiblings, + children: children, + child: child, + firstChild: firstChild, + lastChild: lastChild, + childNodesCount: childNodesCount, + hasChildNodes: hasChildNodes, + leaf: leaf + }; + + var browser$1 = $_2hq237mje5o2pvu.detect().browser; + var firstElement = function (nodes) { + return $_bwcteb4je5o2pl4.find(nodes, $_95wn8qzje5o2px0.isElement); + }; + var getTableCaptionDeltaY = function (elm) { + if (browser$1.isFirefox() && $_95wn8qzje5o2px0.name(elm) === 'table') { + return firstElement($_a6mttx17je5o2pyd.children(elm)).filter(function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'caption'; + }).bind(function (caption) { + return firstElement($_a6mttx17je5o2pyd.nextSiblings(caption)).map(function (body) { + var bodyTop = body.dom().offsetTop; + var captionTop = caption.dom().offsetTop; + var captionHeight = caption.dom().offsetHeight; + return bodyTop <= captionTop ? -captionHeight : 0; + }); + }).getOr(0); + } else { + return 0; + } + }; + var getPos = function (body, elm, rootElm) { + var x = 0, y = 0, offsetParent; + var doc = body.ownerDocument; + var pos; + rootElm = rootElm ? rootElm : body; + if (elm) { + if (rootElm === body && elm.getBoundingClientRect && $_1ioope11je5o2px4.get($_5tcb2dyje5o2pwu.fromDom(body), 'position') === 'static') { + pos = elm.getBoundingClientRect(); + x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft; + y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop; + return { + x: x, + y: y + }; + } + offsetParent = elm; + while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) { + x += offsetParent.offsetLeft || 0; + y += offsetParent.offsetTop || 0; + offsetParent = offsetParent.offsetParent; + } + offsetParent = elm.parentNode; + while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) { + x -= offsetParent.scrollLeft || 0; + y -= offsetParent.scrollTop || 0; + offsetParent = offsetParent.parentNode; + } + y += getTableCaptionDeltaY($_5tcb2dyje5o2pwu.fromDom(elm)); + } + return { + x: x, + y: y + }; + }; + var $_5uqvv2lje5o2pvj = { getPos: getPos }; + + var nu$3 = function (baseFn) { + var data = Option.none(); + var callbacks = []; + var map = function (f) { + return nu$3(function (nCallback) { + get(function (data) { + nCallback(f(data)); + }); + }); + }; + var get = function (nCallback) { + if (isReady()) + call(nCallback); + else + callbacks.push(nCallback); + }; + var set = function (x) { + data = Option.some(x); + run(callbacks); + callbacks = []; + }; + var isReady = function () { + return data.isSome(); + }; + var run = function (cbs) { + $_bwcteb4je5o2pl4.each(cbs, call); + }; + var call = function (cb) { + data.each(function (x) { + setTimeout(function () { + cb(x); + }, 0); + }); + }; + baseFn(set); + return { + get: get, + map: map, + isReady: isReady + }; + }; + var pure$1 = function (a) { + return nu$3(function (callback) { + callback(a); + }); + }; + var LazyValue = { + nu: nu$3, + pure: pure$1 + }; + + var bounce = function (f) { + return function () { + var args = Array.prototype.slice.call(arguments); + var me = this; + setTimeout(function () { + f.apply(me, args); + }, 0); + }; + }; + var $_bz4se01jje5o2pzu = { bounce: bounce }; + + var nu$4 = function (baseFn) { + var get = function (callback) { + baseFn($_bz4se01jje5o2pzu.bounce(callback)); + }; + var map = function (fab) { + return nu$4(function (callback) { + get(function (a) { + var value = fab(a); + callback(value); + }); + }); + }; + var bind = function (aFutureB) { + return nu$4(function (callback) { + get(function (a) { + aFutureB(a).get(callback); + }); + }); + }; + var anonBind = function (futureB) { + return nu$4(function (callback) { + get(function (a) { + futureB.get(callback); + }); + }); + }; + var toLazy = function () { + return LazyValue.nu(get); + }; + return { + map: map, + bind: bind, + anonBind: anonBind, + toLazy: toLazy, + get: get + }; + }; + var pure$2 = function (a) { + return nu$4(function (callback) { + callback(a); + }); + }; + var Future = { + nu: nu$4, + pure: pure$2 + }; + + var par = function (asyncValues, nu) { + return nu(function (callback) { + var r = []; + var count = 0; + var cb = function (i) { + return function (value) { + r[i] = value; + count++; + if (count >= asyncValues.length) { + callback(r); + } + }; + }; + if (asyncValues.length === 0) { + callback([]); + } else { + $_bwcteb4je5o2pl4.each(asyncValues, function (asyncValue, i) { + asyncValue.get(cb(i)); + }); + } + }); + }; + var $_7idrm1lje5o2pzx = { par: par }; + + var par$1 = function (futures) { + return $_7idrm1lje5o2pzx.par(futures, Future.nu); + }; + var mapM = function (array, fn) { + var futures = $_bwcteb4je5o2pl4.map(array, fn); + return par$1(futures); + }; + var compose$1 = function (f, g) { + return function (a) { + return g(a).bind(f); + }; + }; + var $_bqrv8i1kje5o2pzv = { + par: par$1, + mapM: mapM, + compose: compose$1 + }; + + var value$1 = function (o) { + var is = function (v) { + return o === v; + }; + var or = function (opt) { + return value$1(o); + }; + var orThunk = function (f) { + return value$1(o); + }; + var map = function (f) { + return value$1(f(o)); + }; + var each = function (f) { + f(o); + }; + var bind = function (f) { + return f(o); + }; + var fold = function (_, onValue) { + return onValue(o); + }; + var exists = function (f) { + return f(o); + }; + var forall = function (f) { + return f(o); + }; + var toOption = function () { + return Option.some(o); + }; + return { + is: is, + isValue: $_enfhkv6je5o2ply.always, + isError: $_enfhkv6je5o2ply.never, + getOr: $_enfhkv6je5o2ply.constant(o), + getOrThunk: $_enfhkv6je5o2ply.constant(o), + getOrDie: $_enfhkv6je5o2ply.constant(o), + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOption: toOption + }; + }; + var error = function (message) { + var getOrThunk = function (f) { + return f(); + }; + var getOrDie = function () { + return $_enfhkv6je5o2ply.die(message)(); + }; + var or = function (opt) { + return opt; + }; + var orThunk = function (f) { + return f(); + }; + var map = function (f) { + return error(message); + }; + var bind = function (f) { + return error(message); + }; + var fold = function (onError, _) { + return onError(message); + }; + return { + is: $_enfhkv6je5o2ply.never, + isValue: $_enfhkv6je5o2ply.never, + isError: $_enfhkv6je5o2ply.always, + getOr: $_enfhkv6je5o2ply.identity, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: $_enfhkv6je5o2ply.noop, + bind: bind, + exists: $_enfhkv6je5o2ply.never, + forall: $_enfhkv6je5o2ply.always, + toOption: Option.none + }; + }; + var Result = { + value: value$1, + error: error + }; + + function StyleSheetLoader (document, settings) { + var idCount = 0; + var loadedStates = {}; + var maxLoadTime; + settings = settings || {}; + maxLoadTime = settings.maxLoadTime || 5000; + var appendToHead = function (node) { + document.getElementsByTagName('head')[0].appendChild(node); + }; + var load = function (url, loadedCallback, errorCallback) { + var link, style, startTime, state; + var passed = function () { + var callbacks = state.passed; + var i = callbacks.length; + while (i--) { + callbacks[i](); + } + state.status = 2; + state.passed = []; + state.failed = []; + }; + var failed = function () { + var callbacks = state.failed; + var i = callbacks.length; + while (i--) { + callbacks[i](); + } + state.status = 3; + state.passed = []; + state.failed = []; + }; + var isOldWebKit = function () { + var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/); + return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536); + }; + var wait = function (testCallback, waitCallback) { + if (!testCallback()) { + if (new Date().getTime() - startTime < maxLoadTime) { + $_db41wogje5o2ps3.setTimeout(waitCallback); + } else { + failed(); + } + } + }; + var waitForWebKitLinkLoaded = function () { + wait(function () { + var styleSheets = document.styleSheets; + var styleSheet, i = styleSheets.length, owner; + while (i--) { + styleSheet = styleSheets[i]; + owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement; + if (owner && owner.id === link.id) { + passed(); + return true; + } + } + }, waitForWebKitLinkLoaded); + }; + var waitForGeckoLinkLoaded = function () { + wait(function () { + try { + var cssRules = style.sheet.cssRules; + passed(); + return !!cssRules; + } catch (ex) { + } + }, waitForGeckoLinkLoaded); + }; + url = $_a5gegtjje5o2pum._addCacheSuffix(url); + if (!loadedStates[url]) { + state = { + passed: [], + failed: [] + }; + loadedStates[url] = state; + } else { + state = loadedStates[url]; + } + if (loadedCallback) { + state.passed.push(loadedCallback); + } + if (errorCallback) { + state.failed.push(errorCallback); + } + if (state.status === 1) { + return; + } + if (state.status === 2) { + passed(); + return; + } + if (state.status === 3) { + failed(); + return; + } + state.status = 1; + link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.id = 'u' + idCount++; + link.async = false; + link.defer = false; + startTime = new Date().getTime(); + if ('onload' in link && !isOldWebKit()) { + link.onload = waitForWebKitLinkLoaded; + link.onerror = failed; + } else { + if (navigator.userAgent.indexOf('Firefox') > 0) { + style = document.createElement('style'); + style.textContent = '@import "' + url + '"'; + waitForGeckoLinkLoaded(); + appendToHead(style); + return; + } + waitForWebKitLinkLoaded(); + } + appendToHead(link); + link.href = url; + }; + var loadF = function (url) { + return Future.nu(function (resolve) { + load(url, $_enfhkv6je5o2ply.compose(resolve, $_enfhkv6je5o2ply.constant(Result.value(url))), $_enfhkv6je5o2ply.compose(resolve, $_enfhkv6je5o2ply.constant(Result.error(url)))); + }); + }; + var unbox = function (result) { + return result.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var loadAll = function (urls, success, failure) { + $_bqrv8i1kje5o2pzv.par($_bwcteb4je5o2pl4.map(urls, loadF)).get(function (result) { + var parts = $_bwcteb4je5o2pl4.partition(result, function (r) { + return r.isValue(); + }); + if (parts.fail.length > 0) { + failure(parts.fail.map(unbox)); + } else { + success(parts.pass.map(unbox)); + } + }); + }; + return { + load: load, + loadAll: loadAll + }; + } + + function TreeWalker (startNode, rootNode) { + var node = startNode; + var findSibling = function (node, startName, siblingName, shallow) { + var sibling, parent; + if (node) { + if (!shallow && node[startName]) { + return node[startName]; + } + if (node !== rootNode) { + sibling = node[siblingName]; + if (sibling) { + return sibling; + } + for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) { + sibling = parent[siblingName]; + if (sibling) { + return sibling; + } + } + } + } + }; + var findPreviousNode = function (node, startName, siblingName, shallow) { + var sibling, parent, child; + if (node) { + sibling = node[siblingName]; + if (rootNode && sibling === rootNode) { + return; + } + if (sibling) { + if (!shallow) { + for (child = sibling[startName]; child; child = child[startName]) { + if (!child[startName]) { + return child; + } + } + } + return sibling; + } + parent = node.parentNode; + if (parent && parent !== rootNode) { + return parent; + } + } + }; + this.current = function () { + return node; + }; + this.next = function (shallow) { + node = findSibling(node, 'firstChild', 'nextSibling', shallow); + return node; + }; + this.prev = function (shallow) { + node = findSibling(node, 'lastChild', 'previousSibling', shallow); + return node; + }; + this.prev2 = function (shallow) { + node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow); + return node; + }; + } + + var blocks = [ + 'article', + 'aside', + 'details', + 'div', + 'dt', + 'figcaption', + 'footer', + 'form', + 'fieldset', + 'header', + 'hgroup', + 'html', + 'main', + 'nav', + 'section', + 'summary', + 'body', + 'p', + 'dl', + 'multicol', + 'dd', + 'figure', + 'address', + 'center', + 'blockquote', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'listing', + 'xmp', + 'pre', + 'plaintext', + 'menu', + 'dir', + 'ul', + 'ol', + 'li', + 'hr', + 'table', + 'tbody', + 'thead', + 'tfoot', + 'th', + 'tr', + 'td', + 'caption' + ]; + var voids = [ + 'area', + 'base', + 'basefont', + 'br', + 'col', + 'frame', + 'hr', + 'img', + 'input', + 'isindex', + 'link', + 'meta', + 'param', + 'embed', + 'source', + 'wbr', + 'track' + ]; + var tableCells = [ + 'td', + 'th' + ]; + var tableSections = [ + 'thead', + 'tbody', + 'tfoot' + ]; + var textBlocks = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'div', + 'address', + 'pre', + 'form', + 'blockquote', + 'center', + 'dir', + 'fieldset', + 'header', + 'footer', + 'article', + 'section', + 'hgroup', + 'aside', + 'nav', + 'figure' + ]; + var headings = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6' + ]; + var listItems = [ + 'li', + 'dd', + 'dt' + ]; + var lists = [ + 'ul', + 'ol', + 'dl' + ]; + var lazyLookup = function (items) { + var lookup; + return function (node) { + lookup = lookup ? lookup : $_bwcteb4je5o2pl4.mapToObject(items, $_enfhkv6je5o2ply.constant(true)); + return lookup.hasOwnProperty($_95wn8qzje5o2px0.name(node)); + }; + }; + var isHeading = lazyLookup(headings); + var isBlock = lazyLookup(blocks); + var isInline = function (node) { + return $_95wn8qzje5o2px0.isElement(node) && !isBlock(node); + }; + var isBr = function (node) { + return $_95wn8qzje5o2px0.isElement(node) && $_95wn8qzje5o2px0.name(node) === 'br'; + }; + var isTextBlock = lazyLookup(textBlocks); + var isList = lazyLookup(lists); + var isListItem = lazyLookup(listItems); + var isVoid = lazyLookup(voids); + var isTableSection = lazyLookup(tableSections); + var isTableCell = lazyLookup(tableCells); + + var isNodeType = function (type) { + return function (node) { + return !!node && node.nodeType === type; + }; + }; + var isElement$1 = isNodeType(1); + var matchNodeNames = function (names) { + var items = names.toLowerCase().split(' '); + return function (node) { + var i, name; + if (node && node.nodeType) { + name = node.nodeName.toLowerCase(); + for (i = 0; i < items.length; i++) { + if (name === items[i]) { + return true; + } + } + } + return false; + }; + }; + var matchStyleValues = function (name, values) { + var items = values.toLowerCase().split(' '); + return function (node) { + var i, cssValue; + if (isElement$1(node)) { + for (i = 0; i < items.length; i++) { + cssValue = node.ownerDocument.defaultView.getComputedStyle(node, null).getPropertyValue(name); + if (cssValue === items[i]) { + return true; + } + } + } + return false; + }; + }; + var hasPropValue = function (propName, propValue) { + return function (node) { + return isElement$1(node) && node[propName] === propValue; + }; + }; + var hasAttribute = function (attrName, attrValue) { + return function (node) { + return isElement$1(node) && node.hasAttribute(attrName); + }; + }; + var hasAttributeValue = function (attrName, attrValue) { + return function (node) { + return isElement$1(node) && node.getAttribute(attrName) === attrValue; + }; + }; + var isBogus = function (node) { + return isElement$1(node) && node.hasAttribute('data-mce-bogus'); + }; + var isBogusAll = function (node) { + return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all'; + }; + var isTable = function (node) { + return isElement$1(node) && node.tagName === 'TABLE'; + }; + var hasContentEditableState = function (value) { + return function (node) { + if (isElement$1(node)) { + if (node.contentEditable === value) { + return true; + } + if (node.getAttribute('data-mce-contenteditable') === value) { + return true; + } + } + return false; + }; + }; + var isText$1 = isNodeType(3); + var isComment$1 = isNodeType(8); + var isDocument$1 = isNodeType(9); + var isBr$1 = matchNodeNames('br'); + var isContentEditableTrue = hasContentEditableState('true'); + var isContentEditableFalse = hasContentEditableState('false'); + var $_9owqcy1qje5o2q0e = { + isText: isText$1, + isElement: isElement$1, + isComment: isComment$1, + isDocument: isDocument$1, + isBr: isBr$1, + isContentEditableTrue: isContentEditableTrue, + isContentEditableFalse: isContentEditableFalse, + matchNodeNames: matchNodeNames, + hasPropValue: hasPropValue, + hasAttribute: hasAttribute, + hasAttributeValue: hasAttributeValue, + matchStyleValues: matchStyleValues, + isBogus: isBogus, + isBogusAll: isBogusAll, + isTable: isTable + }; + + var surroundedBySpans = function (node) { + var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN'; + var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN'; + return previousIsSpan && nextIsSpan; + }; + var isBookmarkNode = function (node) { + return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark'; + }; + var trimNode = function (dom, node) { + var i, children = node.childNodes; + if ($_9owqcy1qje5o2q0e.isElement(node) && isBookmarkNode(node)) { + return; + } + for (i = children.length - 1; i >= 0; i--) { + trimNode(dom, children[i]); + } + if ($_9owqcy1qje5o2q0e.isDocument(node) === false) { + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + var trimmedLength = $_a5gegtjje5o2pum.trim(node.nodeValue).length; + if (dom.isBlock(node.parentNode) || trimmedLength > 0) { + return; + } + if (trimmedLength === 0 && surroundedBySpans(node)) { + return; + } + } else if ($_9owqcy1qje5o2q0e.isElement(node)) { + children = node.childNodes; + if (children.length === 1 && isBookmarkNode(children[0])) { + node.parentNode.insertBefore(children[0], node); + } + if (children.length || isVoid($_5tcb2dyje5o2pwu.fromDom(node))) { + return; + } + } + dom.remove(node); + } + return node; + }; + var $_cfe5l31oje5o2q05 = { trimNode: trimNode }; + + var makeMap$1 = $_a5gegtjje5o2pum.makeMap; + var namedEntities; + var baseEntities; + var reverseEntities; + var attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var rawCharsRegExp = /[<>&\"\']/g; + var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi; + var asciiMap = { + 128: '\u20AC', + 130: '\u201A', + 131: '\u0192', + 132: '\u201E', + 133: '\u2026', + 134: '\u2020', + 135: '\u2021', + 136: '\u02c6', + 137: '\u2030', + 138: '\u0160', + 139: '\u2039', + 140: '\u0152', + 142: '\u017d', + 145: '\u2018', + 146: '\u2019', + 147: '\u201C', + 148: '\u201D', + 149: '\u2022', + 150: '\u2013', + 151: '\u2014', + 152: '\u02DC', + 153: '\u2122', + 154: '\u0161', + 155: '\u203A', + 156: '\u0153', + 158: '\u017e', + 159: '\u0178' + }; + baseEntities = { + '"': '"', + '\'': ''', + '<': '<', + '>': '>', + '&': '&', + '`': '`' + }; + reverseEntities = { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + ''': '\'' + }; + var nativeDecode = function (text) { + var elm; + elm = $_5tcb2dyje5o2pwu.fromTag('div').dom(); + elm.innerHTML = text; + return elm.textContent || elm.innerText || text; + }; + var buildEntitiesLookup = function (items, radix) { + var i, chr, entity; + var lookup = {}; + if (items) { + items = items.split(','); + radix = radix || 10; + for (i = 0; i < items.length; i += 2) { + chr = String.fromCharCode(parseInt(items[i], radix)); + if (!baseEntities[chr]) { + entity = '&' + items[i + 1] + ';'; + lookup[chr] = entity; + lookup[entity] = chr; + } + } + return lookup; + } + }; + namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32); + var encodeRaw = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + return baseEntities[chr] || chr; + }); + }; + var encodeAllRaw = function (text) { + return ('' + text).replace(rawCharsRegExp, function (chr) { + return baseEntities[chr] || chr; + }); + }; + var encodeNumeric = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + if (chr.length > 1) { + return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';'; + } + return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';'; + }); + }; + var encodeNamed = function (text, attr, entities) { + entities = entities || namedEntities; + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + return baseEntities[chr] || entities[chr] || chr; + }); + }; + var getEncodeFunc = function (name, entities) { + var entitiesMap = buildEntitiesLookup(entities) || namedEntities; + var encodeNamedAndNumeric = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + if (baseEntities[chr] !== undefined) { + return baseEntities[chr]; + } + if (entitiesMap[chr] !== undefined) { + return entitiesMap[chr]; + } + if (chr.length > 1) { + return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';'; + } + return '&#' + chr.charCodeAt(0) + ';'; + }); + }; + var encodeCustomNamed = function (text, attr) { + return encodeNamed(text, attr, entitiesMap); + }; + var nameMap = makeMap$1(name.replace(/\+/g, ',')); + if (nameMap.named && nameMap.numeric) { + return encodeNamedAndNumeric; + } + if (nameMap.named) { + if (entities) { + return encodeCustomNamed; + } + return encodeNamed; + } + if (nameMap.numeric) { + return encodeNumeric; + } + return encodeRaw; + }; + var decode = function (text) { + return text.replace(entityRegExp, function (all, numeric) { + if (numeric) { + if (numeric.charAt(0).toLowerCase() === 'x') { + numeric = parseInt(numeric.substr(1), 16); + } else { + numeric = parseInt(numeric, 10); + } + if (numeric > 65535) { + numeric -= 65536; + return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023)); + } + return asciiMap[numeric] || String.fromCharCode(numeric); + } + return reverseEntities[all] || namedEntities[all] || nativeDecode(all); + }); + }; + var $_fzh4ld1rje5o2q0t = { + encodeRaw: encodeRaw, + encodeAllRaw: encodeAllRaw, + encodeNumeric: encodeNumeric, + encodeNamed: encodeNamed, + getEncodeFunc: getEncodeFunc, + decode: decode + }; + + var mapCache = {}; + var dummyObj = {}; + var makeMap$2 = $_a5gegtjje5o2pum.makeMap; + var each$4 = $_a5gegtjje5o2pum.each; + var extend$1 = $_a5gegtjje5o2pum.extend; + var explode$1 = $_a5gegtjje5o2pum.explode; + var inArray$1 = $_a5gegtjje5o2pum.inArray; + var split = function (items, delim) { + items = $_a5gegtjje5o2pum.trim(items); + return items ? items.split(delim || ' ') : []; + }; + var compileSchema = function (type) { + var schema = {}; + var globalAttributes, blockContent; + var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent; + var add = function (name, attributes, children) { + var ni, attributesOrder, element; + var arrayToMap = function (array, obj) { + var map = {}; + var i, l; + for (i = 0, l = array.length; i < l; i++) { + map[array[i]] = obj || {}; + } + return map; + }; + children = children || []; + attributes = attributes || ''; + if (typeof children === 'string') { + children = split(children); + } + name = split(name); + ni = name.length; + while (ni--) { + attributesOrder = split([ + globalAttributes, + attributes + ].join(' ')); + element = { + attributes: arrayToMap(attributesOrder), + attributesOrder: attributesOrder, + children: arrayToMap(children, dummyObj) + }; + schema[name[ni]] = element; + } + }; + var addAttrs = function (name, attributes) { + var ni, schemaItem, i, l; + name = split(name); + ni = name.length; + attributes = split(attributes); + while (ni--) { + schemaItem = schema[name[ni]]; + for (i = 0, l = attributes.length; i < l; i++) { + schemaItem.attributes[attributes[i]] = {}; + schemaItem.attributesOrder.push(attributes[i]); + } + } + }; + if (mapCache[type]) { + return mapCache[type]; + } + globalAttributes = 'id accesskey class dir lang style tabindex title role'; + blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul'; + phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment'; + if (type !== 'html4') { + globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate'; + blockContent += ' article aside details dialog figure header footer hgroup section nav'; + phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen'; + } + if (type !== 'html5-strict') { + globalAttributes += ' xml:lang'; + html4PhrasingContent = 'acronym applet basefont big font strike tt'; + phrasingContent = [ + phrasingContent, + html4PhrasingContent + ].join(' '); + each$4(split(html4PhrasingContent), function (name) { + add(name, '', phrasingContent); + }); + html4BlockContent = 'center dir isindex noframes'; + blockContent = [ + blockContent, + html4BlockContent + ].join(' '); + flowContent = [ + blockContent, + phrasingContent + ].join(' '); + each$4(split(html4BlockContent), function (name) { + add(name, '', flowContent); + }); + } + flowContent = flowContent || [ + blockContent, + phrasingContent + ].join(' '); + add('html', 'manifest', 'head body'); + add('head', '', 'base command link meta noscript script style title'); + add('title hr noscript br'); + add('base', 'href target'); + add('link', 'href rel media hreflang type sizes hreflang'); + add('meta', 'name http-equiv content charset'); + add('style', 'media type scoped'); + add('script', 'src async defer type charset'); + add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent); + add('address dt dd div caption', '', flowContent); + add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent); + add('blockquote', 'cite', flowContent); + add('ol', 'reversed start type', 'li'); + add('ul', '', 'li'); + add('li', 'value', flowContent); + add('dl', '', 'dt dd'); + add('a', 'href target rel media hreflang type', phrasingContent); + add('q', 'cite', phrasingContent); + add('ins del', 'cite datetime', flowContent); + add('img', 'src sizes srcset alt usemap ismap width height'); + add('iframe', 'src name width height', flowContent); + add('embed', 'src type width height'); + add('object', 'data type typemustmatch name usemap form width height', [ + flowContent, + 'param' + ].join(' ')); + add('param', 'name value'); + add('map', 'name', [ + flowContent, + 'area' + ].join(' ')); + add('area', 'alt coords shape href target rel media hreflang type'); + add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : '')); + add('colgroup', 'span', 'col'); + add('col', 'span'); + add('tbody thead tfoot', '', 'tr'); + add('tr', '', 'td th'); + add('td', 'colspan rowspan headers', flowContent); + add('th', 'colspan rowspan headers scope abbr', flowContent); + add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent); + add('fieldset', 'disabled form name', [ + flowContent, + 'legend' + ].join(' ')); + add('label', 'form for', phrasingContent); + add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width'); + add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent); + add('select', 'disabled form multiple name required size', 'option optgroup'); + add('optgroup', 'disabled label', 'option'); + add('option', 'disabled label selected value'); + add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap'); + add('menu', 'type label', [ + flowContent, + 'li' + ].join(' ')); + add('noscript', '', flowContent); + if (type !== 'html4') { + add('wbr'); + add('ruby', '', [ + phrasingContent, + 'rt rp' + ].join(' ')); + add('figcaption', '', flowContent); + add('mark rt rp summary bdi', '', phrasingContent); + add('canvas', 'width height', flowContent); + add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [ + flowContent, + 'track source' + ].join(' ')); + add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [ + flowContent, + 'track source' + ].join(' ')); + add('picture', '', 'img source'); + add('source', 'src srcset type media sizes'); + add('track', 'kind src srclang label default'); + add('datalist', '', [ + phrasingContent, + 'option' + ].join(' ')); + add('article section nav aside header footer', '', flowContent); + add('hgroup', '', 'h1 h2 h3 h4 h5 h6'); + add('figure', '', [ + flowContent, + 'figcaption' + ].join(' ')); + add('time', 'datetime', phrasingContent); + add('dialog', 'open', flowContent); + add('command', 'type label icon disabled checked radiogroup command'); + add('output', 'for form name', phrasingContent); + add('progress', 'value max', phrasingContent); + add('meter', 'value min max low high optimum', phrasingContent); + add('details', 'open', [ + flowContent, + 'summary' + ].join(' ')); + add('keygen', 'autofocus challenge disabled form keytype name'); + } + if (type !== 'html5-strict') { + addAttrs('script', 'language xml:space'); + addAttrs('style', 'xml:space'); + addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace'); + addAttrs('embed', 'align name hspace vspace'); + addAttrs('param', 'valuetype type'); + addAttrs('a', 'charset name rev shape coords'); + addAttrs('br', 'clear'); + addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace'); + addAttrs('img', 'name longdesc align border hspace vspace'); + addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align'); + addAttrs('font basefont', 'size color face'); + addAttrs('input', 'usemap align'); + addAttrs('select', 'onchange'); + addAttrs('textarea'); + addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align'); + addAttrs('ul', 'type compact'); + addAttrs('li', 'type'); + addAttrs('ol dl menu dir', 'compact'); + addAttrs('pre', 'width xml:space'); + addAttrs('hr', 'align noshade size width'); + addAttrs('isindex', 'prompt'); + addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor'); + addAttrs('col', 'width align char charoff valign'); + addAttrs('colgroup', 'width align char charoff valign'); + addAttrs('thead', 'align char charoff valign'); + addAttrs('tr', 'align char charoff valign bgcolor'); + addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height'); + addAttrs('form', 'accept'); + addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height'); + addAttrs('tfoot', 'align char charoff valign'); + addAttrs('tbody', 'align char charoff valign'); + addAttrs('area', 'nohref'); + addAttrs('body', 'background bgcolor text link vlink alink'); + } + if (type !== 'html4') { + addAttrs('input button select textarea', 'autofocus'); + addAttrs('input textarea', 'placeholder'); + addAttrs('a', 'download'); + addAttrs('link script img', 'crossorigin'); + addAttrs('iframe', 'sandbox seamless allowfullscreen'); + } + each$4(split('a form meter progress dfn'), function (name) { + if (schema[name]) { + delete schema[name].children[name]; + } + }); + delete schema.caption.children.table; + delete schema.script; + mapCache[type] = schema; + return schema; + }; + var compileElementMap = function (value, mode) { + var styles; + if (value) { + styles = {}; + if (typeof value === 'string') { + value = { '*': value }; + } + each$4(value, function (value, key) { + styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/); + }); + } + return styles; + }; + function Schema(settings) { + var elements = {}; + var children = {}; + var patternElements = []; + var validStyles; + var invalidStyles; + var schemaItems; + var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses; + var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap; + var customElementsMap = {}, specialElements = {}; + var createLookupTable = function (option, defaultValue, extendWith) { + var value = settings[option]; + if (!value) { + value = mapCache[option]; + if (!value) { + value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' ')); + value = extend$1(value, extendWith); + mapCache[option] = value; + } + } else { + value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/)); + } + return value; + }; + settings = settings || {}; + schemaItems = compileSchema(settings.schema); + if (settings.verify_html === false) { + settings.valid_elements = '*[*]'; + } + validStyles = compileElementMap(settings.valid_styles); + invalidStyles = compileElementMap(settings.invalid_styles, 'map'); + validClasses = compileElementMap(settings.valid_classes, 'map'); + whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code'); + selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr'); + shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track'); + boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls'); + nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap); + moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap); + textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside nav figure'); + blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption', textBlockElementsMap); + textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp'); + each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) { + specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi'); + }); + var patternToRegExp = function (str) { + return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$'); + }; + var addValidElements = function (validElements) { + var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value; + var elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/, attrRuleRegExp = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/; + if (validElements) { + validElements = split(validElements, ','); + if (elements['@']) { + globalAttributes = elements['@'].attributes; + globalAttributesOrder = elements['@'].attributesOrder; + } + for (ei = 0, el = validElements.length; ei < el; ei++) { + matches = elementRuleRegExp.exec(validElements[ei]); + if (matches) { + prefix = matches[1]; + elementName = matches[2]; + outputName = matches[3]; + attrData = matches[5]; + attributes = {}; + attributesOrder = []; + element = { + attributes: attributes, + attributesOrder: attributesOrder + }; + if (prefix === '#') { + element.paddEmpty = true; + } + if (prefix === '-') { + element.removeEmpty = true; + } + if (matches[4] === '!') { + element.removeEmptyAttrs = true; + } + if (globalAttributes) { + for (key in globalAttributes) { + attributes[key] = globalAttributes[key]; + } + attributesOrder.push.apply(attributesOrder, globalAttributesOrder); + } + if (attrData) { + attrData = split(attrData, '|'); + for (ai = 0, al = attrData.length; ai < al; ai++) { + matches = attrRuleRegExp.exec(attrData[ai]); + if (matches) { + attr = {}; + attrType = matches[1]; + attrName = matches[2].replace(/[\\:]:/g, ':'); + prefix = matches[3]; + value = matches[4]; + if (attrType === '!') { + element.attributesRequired = element.attributesRequired || []; + element.attributesRequired.push(attrName); + attr.required = true; + } + if (attrType === '-') { + delete attributes[attrName]; + attributesOrder.splice(inArray$1(attributesOrder, attrName), 1); + continue; + } + if (prefix) { + if (prefix === '=') { + element.attributesDefault = element.attributesDefault || []; + element.attributesDefault.push({ + name: attrName, + value: value + }); + attr.defaultValue = value; + } + if (prefix === ':') { + element.attributesForced = element.attributesForced || []; + element.attributesForced.push({ + name: attrName, + value: value + }); + attr.forcedValue = value; + } + if (prefix === '<') { + attr.validValues = makeMap$2(value, '?'); + } + } + if (hasPatternsRegExp.test(attrName)) { + element.attributePatterns = element.attributePatterns || []; + attr.pattern = patternToRegExp(attrName); + element.attributePatterns.push(attr); + } else { + if (!attributes[attrName]) { + attributesOrder.push(attrName); + } + attributes[attrName] = attr; + } + } + } + } + if (!globalAttributes && elementName === '@') { + globalAttributes = attributes; + globalAttributesOrder = attributesOrder; + } + if (outputName) { + element.outputName = elementName; + elements[outputName] = element; + } + if (hasPatternsRegExp.test(elementName)) { + element.pattern = patternToRegExp(elementName); + patternElements.push(element); + } else { + elements[elementName] = element; + } + } + } + } + }; + var setValidElements = function (validElements) { + elements = {}; + patternElements = []; + addValidElements(validElements); + each$4(schemaItems, function (element, name) { + children[name] = element.children; + }); + }; + var addCustomElements = function (customElements) { + var customElementRegExp = /^(~)?(.+)$/; + if (customElements) { + mapCache.text_block_elements = mapCache.block_elements = null; + each$4(split(customElements, ','), function (rule) { + var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2]; + children[name] = children[cloneName]; + customElementsMap[name] = cloneName; + if (!inline) { + blockElementsMap[name.toUpperCase()] = {}; + blockElementsMap[name] = {}; + } + if (!elements[name]) { + var customRule = elements[cloneName]; + customRule = extend$1({}, customRule); + delete customRule.removeEmptyAttrs; + delete customRule.removeEmpty; + elements[name] = customRule; + } + each$4(children, function (element, elmName) { + if (element[cloneName]) { + children[elmName] = element = extend$1({}, children[elmName]); + element[name] = element[cloneName]; + } + }); + }); + } + }; + var addValidChildren = function (validChildren) { + var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/; + mapCache[settings.schema] = null; + if (validChildren) { + each$4(split(validChildren, ','), function (rule) { + var matches = childRuleRegExp.exec(rule); + var parent, prefix; + if (matches) { + prefix = matches[1]; + if (prefix) { + parent = children[matches[2]]; + } else { + parent = children[matches[2]] = { '#comment': {} }; + } + parent = children[matches[2]]; + each$4(split(matches[3], '|'), function (child) { + if (prefix === '-') { + delete parent[child]; + } else { + parent[child] = {}; + } + }); + } + }); + } + }; + var getElementRule = function (name) { + var element = elements[name], i; + if (element) { + return element; + } + i = patternElements.length; + while (i--) { + element = patternElements[i]; + if (element.pattern.test(name)) { + return element; + } + } + }; + if (!settings.valid_elements) { + each$4(schemaItems, function (element, name) { + elements[name] = { + attributes: element.attributes, + attributesOrder: element.attributesOrder + }; + children[name] = element.children; + }); + if (settings.schema !== 'html5') { + each$4(split('strong/b em/i'), function (item) { + item = split(item, '/'); + elements[item[1]].outputName = item[0]; + }); + } + each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) { + if (elements[name]) { + elements[name].removeEmpty = true; + } + }); + each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) { + elements[name].paddEmpty = true; + }); + each$4(split('span'), function (name) { + elements[name].removeEmptyAttrs = true; + }); + } else { + setValidElements(settings.valid_elements); + } + addCustomElements(settings.custom_elements); + addValidChildren(settings.valid_children); + addValidElements(settings.extended_valid_elements); + addValidChildren('+ol[ul|ol],+ul[ul|ol]'); + each$4({ + dd: 'dl', + dt: 'dl', + li: 'ul ol', + td: 'tr', + th: 'tr', + tr: 'tbody thead tfoot', + tbody: 'table', + thead: 'table', + tfoot: 'table', + legend: 'fieldset', + area: 'map', + param: 'video audio object' + }, function (parents, item) { + if (elements[item]) { + elements[item].parentsRequired = split(parents); + } + }); + if (settings.invalid_elements) { + each$4(explode$1(settings.invalid_elements), function (item) { + if (elements[item]) { + delete elements[item]; + } + }); + } + if (!getElementRule('span')) { + addValidElements('span[!data-mce-type|*]'); + } + var getValidStyles = function () { + return validStyles; + }; + var getInvalidStyles = function () { + return invalidStyles; + }; + var getValidClasses = function () { + return validClasses; + }; + var getBoolAttrs = function () { + return boolAttrMap; + }; + var getBlockElements = function () { + return blockElementsMap; + }; + var getTextBlockElements = function () { + return textBlockElementsMap; + }; + var getTextInlineElements = function () { + return textInlineElementsMap; + }; + var getShortEndedElements = function () { + return shortEndedElementsMap; + }; + var getSelfClosingElements = function () { + return selfClosingElementsMap; + }; + var getNonEmptyElements = function () { + return nonEmptyElementsMap; + }; + var getMoveCaretBeforeOnEnterElements = function () { + return moveCaretBeforeOnEnterElementsMap; + }; + var getWhiteSpaceElements = function () { + return whiteSpaceElementsMap; + }; + var getSpecialElements = function () { + return specialElements; + }; + var isValidChild = function (name, child) { + var parent = children[name.toLowerCase()]; + return !!(parent && parent[child.toLowerCase()]); + }; + var isValid = function (name, attr) { + var attrPatterns, i; + var rule = getElementRule(name); + if (rule) { + if (attr) { + if (rule.attributes[attr]) { + return true; + } + attrPatterns = rule.attributePatterns; + if (attrPatterns) { + i = attrPatterns.length; + while (i--) { + if (attrPatterns[i].pattern.test(name)) { + return true; + } + } + } + } else { + return true; + } + } + return false; + }; + var getCustomElements = function () { + return customElementsMap; + }; + return { + children: children, + elements: elements, + getValidStyles: getValidStyles, + getValidClasses: getValidClasses, + getBlockElements: getBlockElements, + getInvalidStyles: getInvalidStyles, + getShortEndedElements: getShortEndedElements, + getTextBlockElements: getTextBlockElements, + getTextInlineElements: getTextInlineElements, + getBoolAttrs: getBoolAttrs, + getElementRule: getElementRule, + getSelfClosingElements: getSelfClosingElements, + getNonEmptyElements: getNonEmptyElements, + getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements, + getWhiteSpaceElements: getWhiteSpaceElements, + getSpecialElements: getSpecialElements, + isValidChild: isValidChild, + isValid: isValid, + getCustomElements: getCustomElements, + addValidElements: addValidElements, + setValidElements: setValidElements, + addCustomElements: addCustomElements, + addValidChildren: addValidChildren + }; + } + + var toHex = function (match, r, g, b) { + var hex = function (val) { + val = parseInt(val, 10).toString(16); + return val.length > 1 ? val : '0' + val; + }; + return '#' + hex(r) + hex(g) + hex(b); + }; + function Styles (settings, schema) { + var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi; + var urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi; + var styleRegExp = /\s*([^:]+):\s*([^;]+);?/g; + var trimRightRegExp = /\s+$/; + var i; + var encodingLookup = {}; + var encodingItems; + var validStyles; + var invalidStyles; + var invisibleChar = '\uFEFF'; + settings = settings || {}; + if (schema) { + validStyles = schema.getValidStyles(); + invalidStyles = schema.getInvalidStyles(); + } + encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' '); + for (i = 0; i < encodingItems.length; i++) { + encodingLookup[encodingItems[i]] = invisibleChar + i; + encodingLookup[invisibleChar + i] = encodingItems[i]; + } + return { + toHex: function (color) { + return color.replace(rgbRegExp, toHex); + }, + parse: function (css) { + var styles = {}; + var matches, name, value, isEncoded; + var urlConverter = settings.url_converter; + var urlConverterScope = settings.url_converter_scope || this; + var compress = function (prefix, suffix, noJoin) { + var top, right, bottom, left; + top = styles[prefix + '-top' + suffix]; + if (!top) { + return; + } + right = styles[prefix + '-right' + suffix]; + if (!right) { + return; + } + bottom = styles[prefix + '-bottom' + suffix]; + if (!bottom) { + return; + } + left = styles[prefix + '-left' + suffix]; + if (!left) { + return; + } + var box = [ + top, + right, + bottom, + left + ]; + i = box.length - 1; + while (i--) { + if (box[i] !== box[i + 1]) { + break; + } + } + if (i > -1 && noJoin) { + return; + } + styles[prefix + suffix] = i === -1 ? box[0] : box.join(' '); + delete styles[prefix + '-top' + suffix]; + delete styles[prefix + '-right' + suffix]; + delete styles[prefix + '-bottom' + suffix]; + delete styles[prefix + '-left' + suffix]; + }; + var canCompress = function (key) { + var value = styles[key], i; + if (!value) { + return; + } + value = value.split(' '); + i = value.length; + while (i--) { + if (value[i] !== value[0]) { + return false; + } + } + styles[key] = value[0]; + return true; + }; + var compress2 = function (target, a, b, c) { + if (!canCompress(a)) { + return; + } + if (!canCompress(b)) { + return; + } + if (!canCompress(c)) { + return; + } + styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c]; + delete styles[a]; + delete styles[b]; + delete styles[c]; + }; + var encode = function (str) { + isEncoded = true; + return encodingLookup[str]; + }; + var decode = function (str, keepSlashes) { + if (isEncoded) { + str = str.replace(/\uFEFF[0-9]/g, function (str) { + return encodingLookup[str]; + }); + } + if (!keepSlashes) { + str = str.replace(/\\([\'\";:])/g, '$1'); + } + return str; + }; + var decodeSingleHexSequence = function (escSeq) { + return String.fromCharCode(parseInt(escSeq.slice(1), 16)); + }; + var decodeHexSequences = function (value) { + return value.replace(/\\[0-9a-f]+/gi, decodeSingleHexSequence); + }; + var processUrl = function (match, url, url2, url3, str, str2) { + str = str || str2; + if (str) { + str = decode(str); + return '\'' + str.replace(/\'/g, '\\\'') + '\''; + } + url = decode(url || url2 || url3); + if (!settings.allow_script_urls) { + var scriptUrl = url.replace(/[\s\r\n]+/g, ''); + if (/(java|vb)script:/i.test(scriptUrl)) { + return ''; + } + if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) { + return ''; + } + } + if (urlConverter) { + url = urlConverter.call(urlConverterScope, url, 'style'); + } + return 'url(\'' + url.replace(/\'/g, '\\\'') + '\')'; + }; + if (css) { + css = css.replace(/[\u0000-\u001F]/g, ''); + css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function (str) { + return str.replace(/[;:]/g, encode); + }); + while (matches = styleRegExp.exec(css)) { + styleRegExp.lastIndex = matches.index + matches[0].length; + name = matches[1].replace(trimRightRegExp, '').toLowerCase(); + value = matches[2].replace(trimRightRegExp, ''); + if (name && value) { + name = decodeHexSequences(name); + value = decodeHexSequences(value); + if (name.indexOf(invisibleChar) !== -1 || name.indexOf('"') !== -1) { + continue; + } + if (!settings.allow_script_urls && (name === 'behavior' || /expression\s*\(|\/\*|\*\//.test(value))) { + continue; + } + if (name === 'font-weight' && value === '700') { + value = 'bold'; + } else if (name === 'color' || name === 'background-color') { + value = value.toLowerCase(); + } + value = value.replace(rgbRegExp, toHex); + value = value.replace(urlOrStrRegExp, processUrl); + styles[name] = isEncoded ? decode(value, true) : value; + } + } + compress('border', '', true); + compress('border', '-width'); + compress('border', '-color'); + compress('border', '-style'); + compress('padding', ''); + compress('margin', ''); + compress2('border', 'border-width', 'border-style', 'border-color'); + if (styles.border === 'medium none') { + delete styles.border; + } + if (styles['border-image'] === 'none') { + delete styles['border-image']; + } + } + return styles; + }, + serialize: function (styles, elementName) { + var css = '', name, value; + var serializeStyles = function (name) { + var styleList, i, l, value; + styleList = validStyles[name]; + if (styleList) { + for (i = 0, l = styleList.length; i < l; i++) { + name = styleList[i]; + value = styles[name]; + if (value) { + css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; + } + } + } + }; + var isValid = function (name, elementName) { + var styleMap; + styleMap = invalidStyles['*']; + if (styleMap && styleMap[name]) { + return false; + } + styleMap = invalidStyles[elementName]; + if (styleMap && styleMap[name]) { + return false; + } + return true; + }; + if (elementName && validStyles) { + serializeStyles('*'); + serializeStyles(elementName); + } else { + for (name in styles) { + value = styles[name]; + if (value && (!invalidStyles || isValid(name, elementName))) { + css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; + } + } + } + return css; + } + }; + } + + var each$5 = $_a5gegtjje5o2pum.each; + var is$2 = $_a5gegtjje5o2pum.is; + var grep$1 = $_a5gegtjje5o2pum.grep; + var isIE = $_9bd8pn9je5o2pp2.ie; + var simpleSelectorRe = /^([a-z0-9],?)+$/i; + var whiteSpaceRegExp$2 = /^[ \t\r\n]*$/; + var setupAttrHooks = function (domUtils, settings) { + var attrHooks = {}; + var keepValues = settings.keep_values; + var keepUrlHook; + keepUrlHook = { + set: function ($elm, value, name) { + if (settings.url_converter) { + value = settings.url_converter.call(settings.url_converter_scope || domUtils, value, name, $elm[0]); + } + $elm.attr('data-mce-' + name, value).attr(name, value); + }, + get: function ($elm, name) { + return $elm.attr('data-mce-' + name) || $elm.attr(name); + } + }; + attrHooks = { + style: { + set: function ($elm, value) { + if (value !== null && typeof value === 'object') { + $elm.css(value); + return; + } + if (keepValues) { + $elm.attr('data-mce-style', value); + } + $elm.attr('style', value); + }, + get: function ($elm) { + var value = $elm.attr('data-mce-style') || $elm.attr('style'); + value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName); + return value; + } + } + }; + if (keepValues) { + attrHooks.href = attrHooks.src = keepUrlHook; + } + return attrHooks; + }; + var updateInternalStyleAttr = function (domUtils, $elm) { + var value = $elm.attr('style'); + value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName); + if (!value) { + value = null; + } + $elm.attr('data-mce-style', value); + }; + var nodeIndex = function (node, normalized) { + var idx = 0, lastNodeType, nodeType; + if (node) { + for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) { + nodeType = node.nodeType; + if (normalized && nodeType === 3) { + if (nodeType === lastNodeType || !node.nodeValue.length) { + continue; + } + } + idx++; + lastNodeType = nodeType; + } + } + return idx; + }; + var DOMUtils = function (doc, settings) { + var self = this; + var blockElementsMap; + self.doc = doc; + self.win = window; + self.files = {}; + self.counter = 0; + self.stdMode = !isIE || doc.documentMode >= 8; + self.boxModel = !isIE || doc.compatMode === 'CSS1Compat' || self.stdMode; + self.styleSheetLoader = StyleSheetLoader(doc); + self.boundEvents = []; + self.settings = settings = settings || {}; + self.schema = settings.schema ? settings.schema : Schema({}); + self.styles = Styles({ + url_converter: settings.url_converter, + url_converter_scope: settings.url_converter_scope + }, settings.schema); + self.fixDoc(doc); + self.events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event; + self.attrHooks = setupAttrHooks(self, settings); + blockElementsMap = self.schema.getBlockElements(); + self.$ = DomQuery.overrideDefaults(function () { + return { + context: doc, + element: self.getRoot() + }; + }); + self.isBlock = function (node) { + if (!node) { + return false; + } + var type = node.nodeType; + if (type) { + return !!(type === 1 && blockElementsMap[node.nodeName]); + } + return !!blockElementsMap[node]; + }; + }; + DOMUtils.prototype = { + $$: function (elm) { + if (typeof elm === 'string') { + elm = this.get(elm); + } + return this.$(elm); + }, + root: null, + fixDoc: function (doc) { + }, + clone: function (node, deep) { + var self = this; + var clone, doc; + if (!isIE || node.nodeType !== 1 || deep) { + return node.cloneNode(deep); + } + doc = self.doc; + if (!deep) { + clone = doc.createElement(node.nodeName); + each$5(self.getAttribs(node), function (attr) { + self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName)); + }); + return clone; + } + return clone.firstChild; + }, + getRoot: function () { + var self = this; + return self.settings.root_element || self.doc.body; + }, + getViewPort: function (win) { + var doc, rootElm; + win = !win ? this.win : win; + doc = win.document; + rootElm = this.boxModel ? doc.documentElement : doc.body; + return { + x: win.pageXOffset || rootElm.scrollLeft, + y: win.pageYOffset || rootElm.scrollTop, + w: win.innerWidth || rootElm.clientWidth, + h: win.innerHeight || rootElm.clientHeight + }; + }, + getRect: function (elm) { + var self = this; + var pos, size; + elm = self.get(elm); + pos = self.getPos(elm); + size = self.getSize(elm); + return { + x: pos.x, + y: pos.y, + w: size.w, + h: size.h + }; + }, + getSize: function (elm) { + var self = this; + var w, h; + elm = self.get(elm); + w = self.getStyle(elm, 'width'); + h = self.getStyle(elm, 'height'); + if (w.indexOf('px') === -1) { + w = 0; + } + if (h.indexOf('px') === -1) { + h = 0; + } + return { + w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth, + h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight + }; + }, + getParent: function (node, selector, root) { + return this.getParents(node, selector, root, false); + }, + getParents: function (node, selector, root, collect) { + var self = this; + var selectorVal; + var result = []; + node = self.get(node); + collect = collect === undefined; + root = root || (self.getRoot().nodeName !== 'BODY' ? self.getRoot().parentNode : null); + if (is$2(selector, 'string')) { + selectorVal = selector; + if (selector === '*') { + selector = function (node) { + return node.nodeType === 1; + }; + } else { + selector = function (node) { + return self.is(node, selectorVal); + }; + } + } + while (node) { + if (node === root || !node.nodeType || node.nodeType === 9) { + break; + } + if (!selector || selector(node)) { + if (collect) { + result.push(node); + } else { + return node; + } + } + node = node.parentNode; + } + return collect ? result : null; + }, + get: function (elm) { + var name; + if (elm && this.doc && typeof elm === 'string') { + name = elm; + elm = this.doc.getElementById(elm); + if (elm && elm.id !== name) { + return this.doc.getElementsByName(name)[1]; + } + } + return elm; + }, + getNext: function (node, selector) { + return this._findSib(node, selector, 'nextSibling'); + }, + getPrev: function (node, selector) { + return this._findSib(node, selector, 'previousSibling'); + }, + select: function (selector, scope) { + var self = this; + return Sizzle(selector, self.get(scope) || self.settings.root_element || self.doc, []); + }, + is: function (elm, selector) { + var i; + if (!elm) { + return false; + } + if (elm.length === undefined) { + if (selector === '*') { + return elm.nodeType === 1; + } + if (simpleSelectorRe.test(selector)) { + selector = selector.toLowerCase().split(/,/); + elm = elm.nodeName.toLowerCase(); + for (i = selector.length - 1; i >= 0; i--) { + if (selector[i] === elm) { + return true; + } + } + return false; + } + } + if (elm.nodeType && elm.nodeType !== 1) { + return false; + } + var elms = elm.nodeType ? [elm] : elm; + return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0; + }, + add: function (parentElm, name, attrs, html, create) { + var self = this; + return this.run(parentElm, function (parentElm) { + var newElm; + newElm = is$2(name, 'string') ? self.doc.createElement(name) : name; + self.setAttribs(newElm, attrs); + if (html) { + if (html.nodeType) { + newElm.appendChild(html); + } else { + self.setHTML(newElm, html); + } + } + return !create ? parentElm.appendChild(newElm) : newElm; + }); + }, + create: function (name, attrs, html) { + return this.add(this.doc.createElement(name), name, attrs, html, 1); + }, + createHTML: function (name, attrs, html) { + var outHtml = '', key; + outHtml += '<' + name; + for (key in attrs) { + if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') { + outHtml += ' ' + key + '="' + this.encode(attrs[key]) + '"'; + } + } + if (typeof html !== 'undefined') { + return outHtml + '>' + html + '</' + name + '>'; + } + return outHtml + ' />'; + }, + createFragment: function (html) { + var frag, node; + var doc = this.doc; + var container; + container = doc.createElement('div'); + frag = doc.createDocumentFragment(); + if (html) { + container.innerHTML = html; + } + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }, + remove: function (node, keepChildren) { + node = this.$$(node); + if (keepChildren) { + node.each(function () { + var child; + while (child = this.firstChild) { + if (child.nodeType === 3 && child.data.length === 0) { + this.removeChild(child); + } else { + this.parentNode.insertBefore(child, this); + } + } + }).remove(); + } else { + node.remove(); + } + return node.length > 1 ? node.toArray() : node[0]; + }, + setStyle: function (elm, name, value) { + elm = this.$$(elm).css(name, value); + if (this.settings.update_styles) { + updateInternalStyleAttr(this, elm); + } + }, + getStyle: function (elm, name, computed) { + elm = this.$$(elm); + if (computed) { + return elm.css(name); + } + name = name.replace(/-(\D)/g, function (a, b) { + return b.toUpperCase(); + }); + if (name === 'float') { + name = $_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 12 ? 'styleFloat' : 'cssFloat'; + } + return elm[0] && elm[0].style ? elm[0].style[name] : undefined; + }, + setStyles: function (elm, styles) { + elm = this.$$(elm).css(styles); + if (this.settings.update_styles) { + updateInternalStyleAttr(this, elm); + } + }, + removeAllAttribs: function (e) { + return this.run(e, function (e) { + var i; + var attrs = e.attributes; + for (i = attrs.length - 1; i >= 0; i--) { + e.removeAttributeNode(attrs.item(i)); + } + }); + }, + setAttrib: function (elm, name, value) { + var self = this; + var originalValue, hook; + var settings = self.settings; + if (value === '') { + value = null; + } + elm = self.$$(elm); + originalValue = elm.attr(name); + if (!elm.length) { + return; + } + hook = self.attrHooks[name]; + if (hook && hook.set) { + hook.set(elm, value, name); + } else { + elm.attr(name, value); + } + if (originalValue !== value && settings.onSetAttrib) { + settings.onSetAttrib({ + attrElm: elm, + attrName: name, + attrValue: value + }); + } + }, + setAttribs: function (elm, attrs) { + var self = this; + self.$$(elm).each(function (i, node) { + each$5(attrs, function (value, name) { + self.setAttrib(node, name, value); + }); + }); + }, + getAttrib: function (elm, name, defaultVal) { + var self = this; + var hook, value; + elm = self.$$(elm); + if (elm.length) { + hook = self.attrHooks[name]; + if (hook && hook.get) { + value = hook.get(elm, name); + } else { + value = elm.attr(name); + } + } + if (typeof value === 'undefined') { + value = defaultVal || ''; + } + return value; + }, + getPos: function (elm, rootElm) { + return $_5uqvv2lje5o2pvj.getPos(this.doc.body, this.get(elm), rootElm); + }, + parseStyle: function (cssText) { + return this.styles.parse(cssText); + }, + serializeStyle: function (styles, name) { + return this.styles.serialize(styles, name); + }, + addStyle: function (cssText) { + var self = this; + var doc = self.doc; + var head, styleElm; + if (self !== DOMUtils.DOM && doc === document) { + var addedStyles = DOMUtils.DOM.addedStyles; + addedStyles = addedStyles || []; + if (addedStyles[cssText]) { + return; + } + addedStyles[cssText] = true; + DOMUtils.DOM.addedStyles = addedStyles; + } + styleElm = doc.getElementById('mceDefaultStyles'); + if (!styleElm) { + styleElm = doc.createElement('style'); + styleElm.id = 'mceDefaultStyles'; + styleElm.type = 'text/css'; + head = doc.getElementsByTagName('head')[0]; + if (head.firstChild) { + head.insertBefore(styleElm, head.firstChild); + } else { + head.appendChild(styleElm); + } + } + if (styleElm.styleSheet) { + styleElm.styleSheet.cssText += cssText; + } else { + styleElm.appendChild(doc.createTextNode(cssText)); + } + }, + loadCSS: function (url) { + var self = this; + var doc = self.doc; + var head; + if (self !== DOMUtils.DOM && doc === document) { + DOMUtils.DOM.loadCSS(url); + return; + } + if (!url) { + url = ''; + } + head = doc.getElementsByTagName('head')[0]; + each$5(url.split(','), function (url) { + var link; + url = $_a5gegtjje5o2pum._addCacheSuffix(url); + if (self.files[url]) { + return; + } + self.files[url] = true; + link = self.create('link', { + rel: 'stylesheet', + href: url + }); + if (isIE && doc.documentMode && doc.recalc) { + link.onload = function () { + if (doc.recalc) { + doc.recalc(); + } + link.onload = null; + }; + } + head.appendChild(link); + }); + }, + addClass: function (elm, cls) { + this.$$(elm).addClass(cls); + }, + removeClass: function (elm, cls) { + this.toggleClass(elm, cls, false); + }, + hasClass: function (elm, cls) { + return this.$$(elm).hasClass(cls); + }, + toggleClass: function (elm, cls, state) { + this.$$(elm).toggleClass(cls, state).each(function () { + if (this.className === '') { + DomQuery(this).attr('class', null); + } + }); + }, + show: function (elm) { + this.$$(elm).show(); + }, + hide: function (elm) { + this.$$(elm).hide(); + }, + isHidden: function (elm) { + return this.$$(elm).css('display') === 'none'; + }, + uniqueId: function (prefix) { + return (!prefix ? 'mce_' : prefix) + this.counter++; + }, + setHTML: function (elm, html) { + elm = this.$$(elm); + if (isIE) { + elm.each(function (i, target) { + if (target.canHaveHTML === false) { + return; + } + while (target.firstChild) { + target.removeChild(target.firstChild); + } + try { + target.innerHTML = '<br>' + html; + target.removeChild(target.firstChild); + } catch (ex) { + DomQuery('<div></div>').html('<br>' + html).contents().slice(1).appendTo(target); + } + return html; + }); + } else { + elm.html(html); + } + }, + getOuterHTML: function (elm) { + elm = this.get(elm); + return elm.nodeType === 1 && 'outerHTML' in elm ? elm.outerHTML : DomQuery('<div></div>').append(DomQuery(elm).clone()).html(); + }, + setOuterHTML: function (elm, html) { + var self = this; + self.$$(elm).each(function () { + try { + if ('outerHTML' in this) { + this.outerHTML = html; + return; + } + } catch (ex) { + } + self.remove(DomQuery(this).html(html), true); + }); + }, + decode: $_fzh4ld1rje5o2q0t.decode, + encode: $_fzh4ld1rje5o2q0t.encodeAllRaw, + insertAfter: function (node, referenceNode) { + referenceNode = this.get(referenceNode); + return this.run(node, function (node) { + var parent, nextSibling; + parent = referenceNode.parentNode; + nextSibling = referenceNode.nextSibling; + if (nextSibling) { + parent.insertBefore(node, nextSibling); + } else { + parent.appendChild(node); + } + return node; + }); + }, + replace: function (newElm, oldElm, keepChildren) { + var self = this; + return self.run(oldElm, function (oldElm) { + if (is$2(oldElm, 'array')) { + newElm = newElm.cloneNode(true); + } + if (keepChildren) { + each$5(grep$1(oldElm.childNodes), function (node) { + newElm.appendChild(node); + }); + } + return oldElm.parentNode.replaceChild(newElm, oldElm); + }); + }, + rename: function (elm, name) { + var self = this; + var newElm; + if (elm.nodeName !== name.toUpperCase()) { + newElm = self.create(name); + each$5(self.getAttribs(elm), function (attrNode) { + self.setAttrib(newElm, attrNode.nodeName, self.getAttrib(elm, attrNode.nodeName)); + }); + self.replace(newElm, elm, 1); + } + return newElm || elm; + }, + findCommonAncestor: function (a, b) { + var ps = a, pe; + while (ps) { + pe = b; + while (pe && ps !== pe) { + pe = pe.parentNode; + } + if (ps === pe) { + break; + } + ps = ps.parentNode; + } + if (!ps && a.ownerDocument) { + return a.ownerDocument.documentElement; + } + return ps; + }, + toHex: function (rgbVal) { + return this.styles.toHex($_a5gegtjje5o2pum.trim(rgbVal)); + }, + run: function (elm, func, scope) { + var self = this; + var result; + if (typeof elm === 'string') { + elm = self.get(elm); + } + if (!elm) { + return false; + } + scope = scope || this; + if (!elm.nodeType && (elm.length || elm.length === 0)) { + result = []; + each$5(elm, function (elm, i) { + if (elm) { + if (typeof elm === 'string') { + elm = self.get(elm); + } + result.push(func.call(scope, elm, i)); + } + }); + return result; + } + return func.call(scope, elm); + }, + getAttribs: function (elm) { + var attrs; + elm = this.get(elm); + if (!elm) { + return []; + } + if (isIE) { + attrs = []; + if (elm.nodeName === 'OBJECT') { + return elm.attributes; + } + if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) { + attrs.push({ + specified: 1, + nodeName: 'selected' + }); + } + var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi; + elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function (a) { + attrs.push({ + specified: 1, + nodeName: a + }); + }); + return attrs; + } + return elm.attributes; + }, + isEmpty: function (node, elements) { + var self = this; + var i, attributes, type, whitespace, walker, name, brCount = 0; + node = node.firstChild; + if (node) { + walker = new TreeWalker(node, node.parentNode); + elements = elements || (self.schema ? self.schema.getNonEmptyElements() : null); + whitespace = self.schema ? self.schema.getWhiteSpaceElements() : {}; + do { + type = node.nodeType; + if (type === 1) { + var bogusVal = node.getAttribute('data-mce-bogus'); + if (bogusVal) { + node = walker.next(bogusVal === 'all'); + continue; + } + name = node.nodeName.toLowerCase(); + if (elements && elements[name]) { + if (name === 'br') { + brCount++; + node = walker.next(); + continue; + } + return false; + } + attributes = self.getAttribs(node); + i = attributes.length; + while (i--) { + name = attributes[i].nodeName; + if (name === 'name' || name === 'data-mce-bookmark') { + return false; + } + } + } + if (type === 8) { + return false; + } + if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) { + return false; + } + if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) { + return false; + } + node = walker.next(); + } while (node); + } + return brCount <= 1; + }, + createRng: function () { + return this.doc.createRange(); + }, + nodeIndex: nodeIndex, + split: function (parentElm, splitElm, replacementElm) { + var self = this; + var r = self.createRng(), bef, aft, pa; + if (parentElm && splitElm) { + r.setStart(parentElm.parentNode, self.nodeIndex(parentElm)); + r.setEnd(splitElm.parentNode, self.nodeIndex(splitElm)); + bef = r.extractContents(); + r = self.createRng(); + r.setStart(splitElm.parentNode, self.nodeIndex(splitElm) + 1); + r.setEnd(parentElm.parentNode, self.nodeIndex(parentElm) + 1); + aft = r.extractContents(); + pa = parentElm.parentNode; + pa.insertBefore($_cfe5l31oje5o2q05.trimNode(self, bef), parentElm); + if (replacementElm) { + pa.insertBefore(replacementElm, parentElm); + } else { + pa.insertBefore(splitElm, parentElm); + } + pa.insertBefore($_cfe5l31oje5o2q05.trimNode(self, aft), parentElm); + self.remove(parentElm); + return replacementElm || splitElm; + } + }, + bind: function (target, name, func, scope) { + var self = this; + if ($_a5gegtjje5o2pum.isArray(target)) { + var i = target.length; + while (i--) { + target[i] = self.bind(target[i], name, func, scope); + } + return target; + } + if (self.settings.collect && (target === self.doc || target === self.win)) { + self.boundEvents.push([ + target, + name, + func, + scope + ]); + } + return self.events.bind(target, name, func, scope || self); + }, + unbind: function (target, name, func) { + var self = this; + var i; + if ($_a5gegtjje5o2pum.isArray(target)) { + i = target.length; + while (i--) { + target[i] = self.unbind(target[i], name, func); + } + return target; + } + if (self.boundEvents && (target === self.doc || target === self.win)) { + i = self.boundEvents.length; + while (i--) { + var item = self.boundEvents[i]; + if (target === item[0] && (!name || name === item[1]) && (!func || func === item[2])) { + this.events.unbind(item[0], item[1], item[2]); + } + } + } + return this.events.unbind(target, name, func); + }, + fire: function (target, name, evt) { + return this.events.fire(target, name, evt); + }, + getContentEditable: function (node) { + var contentEditable; + if (!node || node.nodeType !== 1) { + return null; + } + contentEditable = node.getAttribute('data-mce-contenteditable'); + if (contentEditable && contentEditable !== 'inherit') { + return contentEditable; + } + return node.contentEditable !== 'inherit' ? node.contentEditable : null; + }, + getContentEditableParent: function (node) { + var root = this.getRoot(); + var state = null; + for (; node && node !== root; node = node.parentNode) { + state = this.getContentEditable(node); + if (state !== null) { + break; + } + } + return state; + }, + destroy: function () { + var self = this; + if (self.boundEvents) { + var i = self.boundEvents.length; + while (i--) { + var item = self.boundEvents[i]; + this.events.unbind(item[0], item[1], item[2]); + } + self.boundEvents = null; + } + if (Sizzle.setDocument) { + Sizzle.setDocument(); + } + self.win = self.doc = self.root = self.events = self.frag = null; + }, + isChildOf: function (node, parent) { + while (node) { + if (parent === node) { + return true; + } + node = node.parentNode; + } + return false; + }, + dumpRng: function (r) { + return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset; + }, + _findSib: function (node, selector, name) { + var self = this; + var func = selector; + if (node) { + if (typeof func === 'string') { + func = function (node) { + return self.is(node, selector); + }; + } + for (node = node[name]; node; node = node[name]) { + if (func(node)) { + return node; + } + } + } + return null; + } + }; + DOMUtils.DOM = new DOMUtils(document); + DOMUtils.nodeIndex = nodeIndex; + + var DOM = DOMUtils.DOM; + var each$6 = $_a5gegtjje5o2pum.each; + var grep$2 = $_a5gegtjje5o2pum.grep; + var isFunction = function (f) { + return typeof f === 'function'; + }; + var ScriptLoader = function () { + var QUEUED = 0; + var LOADING = 1; + var LOADED = 2; + var FAILED = 3; + var states = {}; + var queue = []; + var scriptLoadedCallbacks = {}; + var queueLoadedCallbacks = []; + var loading = 0; + var loadScript = function (url, success, failure) { + var dom = DOM; + var elm, id; + var done = function () { + dom.remove(id); + if (elm) { + elm.onreadystatechange = elm.onload = elm = null; + } + success(); + }; + var error = function () { + if (isFunction(failure)) { + failure(); + } else { + if (typeof console !== 'undefined' && console.log) { + console.log('Failed to load script: ' + url); + } + } + }; + id = dom.uniqueId(); + elm = document.createElement('script'); + elm.id = id; + elm.type = 'text/javascript'; + elm.src = $_a5gegtjje5o2pum._addCacheSuffix(url); + if ('onreadystatechange' in elm) { + elm.onreadystatechange = function () { + if (/loaded|complete/.test(elm.readyState)) { + done(); + } + }; + } else { + elm.onload = done; + } + elm.onerror = error; + (document.getElementsByTagName('head')[0] || document.body).appendChild(elm); + }; + this.isDone = function (url) { + return states[url] === LOADED; + }; + this.markDone = function (url) { + states[url] = LOADED; + }; + this.add = this.load = function (url, success, scope, failure) { + var state = states[url]; + if (state === undefined) { + queue.push(url); + states[url] = QUEUED; + } + if (success) { + if (!scriptLoadedCallbacks[url]) { + scriptLoadedCallbacks[url] = []; + } + scriptLoadedCallbacks[url].push({ + success: success, + failure: failure, + scope: scope || this + }); + } + }; + this.remove = function (url) { + delete states[url]; + delete scriptLoadedCallbacks[url]; + }; + this.loadQueue = function (success, scope, failure) { + this.loadScripts(queue, success, scope, failure); + }; + this.loadScripts = function (scripts, success, scope, failure) { + var loadScripts; + var failures = []; + var execCallbacks = function (name, url) { + each$6(scriptLoadedCallbacks[url], function (callback) { + if (isFunction(callback[name])) { + callback[name].call(callback.scope); + } + }); + scriptLoadedCallbacks[url] = undefined; + }; + queueLoadedCallbacks.push({ + success: success, + failure: failure, + scope: scope || this + }); + loadScripts = function () { + var loadingScripts = grep$2(scripts); + scripts.length = 0; + each$6(loadingScripts, function (url) { + if (states[url] === LOADED) { + execCallbacks('success', url); + return; + } + if (states[url] === FAILED) { + execCallbacks('failure', url); + return; + } + if (states[url] !== LOADING) { + states[url] = LOADING; + loading++; + loadScript(url, function () { + states[url] = LOADED; + loading--; + execCallbacks('success', url); + loadScripts(); + }, function () { + states[url] = FAILED; + loading--; + failures.push(url); + execCallbacks('failure', url); + loadScripts(); + }); + } + }); + if (!loading) { + var notifyCallbacks = queueLoadedCallbacks.slice(0); + queueLoadedCallbacks.length = 0; + each$6(notifyCallbacks, function (callback) { + if (failures.length === 0) { + if (isFunction(callback.success)) { + callback.success.call(callback.scope); + } + } else { + if (isFunction(callback.failure)) { + callback.failure.call(callback.scope, failures); + } + } + }); + } + }; + loadScripts(); + }; + }; + ScriptLoader.ScriptLoader = new ScriptLoader(); + + var each$7 = $_a5gegtjje5o2pum.each; + var AddOnManager = function () { + var self = this; + self.items = []; + self.urls = {}; + self.lookup = {}; + self._listeners = []; + }; + AddOnManager.prototype = { + get: function (name) { + if (this.lookup[name]) { + return this.lookup[name].instance; + } + return undefined; + }, + dependencies: function (name) { + var result; + if (this.lookup[name]) { + result = this.lookup[name].dependencies; + } + return result || []; + }, + requireLangPack: function (name, languages) { + var language = AddOnManager.language; + if (language && AddOnManager.languageLoad !== false) { + if (languages) { + languages = ',' + languages + ','; + if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) { + language = language.substr(0, 2); + } else if (languages.indexOf(',' + language + ',') === -1) { + return; + } + } + ScriptLoader.ScriptLoader.add(this.urls[name] + '/langs/' + language + '.js'); + } + }, + add: function (id, addOn, dependencies) { + this.items.push(addOn); + this.lookup[id] = { + instance: addOn, + dependencies: dependencies + }; + var result = $_bwcteb4je5o2pl4.partition(this._listeners, function (listener) { + return listener.name === id; + }); + this._listeners = result.fail; + each$7(result.pass, function (listener) { + listener.callback(); + }); + return addOn; + }, + remove: function (name) { + delete this.urls[name]; + delete this.lookup[name]; + }, + createUrl: function (baseUrl, dep) { + if (typeof dep === 'object') { + return dep; + } + return { + prefix: baseUrl.prefix, + resource: dep, + suffix: baseUrl.suffix + }; + }, + addComponents: function (pluginName, scripts) { + var pluginUrl = this.urls[pluginName]; + each$7(scripts, function (script) { + ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script); + }); + }, + load: function (name, addOnUrl, success, scope, failure) { + var self = this; + var url = addOnUrl; + var loadDependencies = function () { + var dependencies = self.dependencies(name); + each$7(dependencies, function (dep) { + var newUrl = self.createUrl(addOnUrl, dep); + self.load(newUrl.resource, newUrl, undefined, undefined); + }); + if (success) { + if (scope) { + success.call(scope); + } else { + success.call(ScriptLoader); + } + } + }; + if (self.urls[name]) { + return; + } + if (typeof addOnUrl === 'object') { + url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix; + } + if (url.indexOf('/') !== 0 && url.indexOf('://') === -1) { + url = AddOnManager.baseURL + '/' + url; + } + self.urls[name] = url.substring(0, url.lastIndexOf('/')); + if (self.lookup[name]) { + loadDependencies(); + } else { + ScriptLoader.ScriptLoader.add(url, loadDependencies, scope, failure); + } + }, + waitFor: function (name, callback) { + if (this.lookup.hasOwnProperty(name)) { + callback(); + } else { + this._listeners.push({ + name: name, + callback: callback + }); + } + } + }; + AddOnManager.PluginManager = new AddOnManager(); + AddOnManager.ThemeManager = new AddOnManager(); + + var ZWSP = '\uFEFF'; + var isZwsp = function (chr) { + return chr === ZWSP; + }; + var trim$3 = function (text) { + return text.replace(new RegExp(ZWSP, 'g'), ''); + }; + var $_4md31c21je5o2q5f = { + isZwsp: isZwsp, + ZWSP: ZWSP, + trim: trim$3 + }; + + var isElement$2 = $_9owqcy1qje5o2q0e.isElement; + var isText$2 = $_9owqcy1qje5o2q0e.isText; + var isCaretContainerBlock = function (node) { + if (isText$2(node)) { + node = node.parentNode; + } + return isElement$2(node) && node.hasAttribute('data-mce-caret'); + }; + var isCaretContainerInline = function (node) { + return isText$2(node) && $_4md31c21je5o2q5f.isZwsp(node.data); + }; + var isCaretContainer = function (node) { + return isCaretContainerBlock(node) || isCaretContainerInline(node); + }; + var hasContent = function (node) { + return node.firstChild !== node.lastChild || !$_9owqcy1qje5o2q0e.isBr(node.firstChild); + }; + var insertInline = function (node, before) { + var doc, sibling, textNode, parentNode; + doc = node.ownerDocument; + textNode = doc.createTextNode($_4md31c21je5o2q5f.ZWSP); + parentNode = node.parentNode; + if (!before) { + sibling = node.nextSibling; + if (isText$2(sibling)) { + if (isCaretContainer(sibling)) { + return sibling; + } + if (startsWithCaretContainer(sibling)) { + sibling.splitText(1); + return sibling; + } + } + if (node.nextSibling) { + parentNode.insertBefore(textNode, node.nextSibling); + } else { + parentNode.appendChild(textNode); + } + } else { + sibling = node.previousSibling; + if (isText$2(sibling)) { + if (isCaretContainer(sibling)) { + return sibling; + } + if (endsWithCaretContainer(sibling)) { + return sibling.splitText(sibling.data.length - 1); + } + } + parentNode.insertBefore(textNode, node); + } + return textNode; + }; + var isBeforeInline = function (pos) { + var container = pos.container(); + return pos && $_9owqcy1qje5o2q0e.isText(container) && container.data.charAt(pos.offset()) === $_4md31c21je5o2q5f.ZWSP; + }; + var isAfterInline = function (pos) { + var container = pos.container(); + return pos && $_9owqcy1qje5o2q0e.isText(container) && container.data.charAt(pos.offset() - 1) === $_4md31c21je5o2q5f.ZWSP; + }; + var createBogusBr = function () { + var br = document.createElement('br'); + br.setAttribute('data-mce-bogus', '1'); + return br; + }; + var insertBlock = function (blockName, node, before) { + var doc, blockNode, parentNode; + doc = node.ownerDocument; + blockNode = doc.createElement(blockName); + blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after'); + blockNode.setAttribute('data-mce-bogus', 'all'); + blockNode.appendChild(createBogusBr()); + parentNode = node.parentNode; + if (!before) { + if (node.nextSibling) { + parentNode.insertBefore(blockNode, node.nextSibling); + } else { + parentNode.appendChild(blockNode); + } + } else { + parentNode.insertBefore(blockNode, node); + } + return blockNode; + }; + var startsWithCaretContainer = function (node) { + return isText$2(node) && node.data[0] === $_4md31c21je5o2q5f.ZWSP; + }; + var endsWithCaretContainer = function (node) { + return isText$2(node) && node.data[node.data.length - 1] === $_4md31c21je5o2q5f.ZWSP; + }; + var trimBogusBr = function (elm) { + var brs = elm.getElementsByTagName('br'); + var lastBr = brs[brs.length - 1]; + if ($_9owqcy1qje5o2q0e.isBogus(lastBr)) { + lastBr.parentNode.removeChild(lastBr); + } + }; + var showCaretContainerBlock = function (caretContainer) { + if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) { + trimBogusBr(caretContainer); + caretContainer.removeAttribute('data-mce-caret'); + caretContainer.removeAttribute('data-mce-bogus'); + caretContainer.removeAttribute('style'); + caretContainer.removeAttribute('_moz_abspos'); + return caretContainer; + } + return null; + }; + var isRangeInCaretContainerBlock = function (range) { + return isCaretContainerBlock(range.startContainer); + }; + + var isContentEditableTrue$1 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$1 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isBr$2 = $_9owqcy1qje5o2q0e.isBr; + var isText$3 = $_9owqcy1qje5o2q0e.isText; + var isInvalidTextElement = $_9owqcy1qje5o2q0e.matchNodeNames('script style textarea'); + var isAtomicInline = $_9owqcy1qje5o2q0e.matchNodeNames('img input textarea hr iframe video audio object'); + var isTable$1 = $_9owqcy1qje5o2q0e.matchNodeNames('table'); + var isCaretContainer$1 = isCaretContainer; + var isCaretCandidate = function (node) { + if (isCaretContainer$1(node)) { + return false; + } + if (isText$3(node)) { + if (isInvalidTextElement(node.parentNode)) { + return false; + } + return true; + } + return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isContentEditableFalse$1(node); + }; + var isInEditable = function (node, root) { + for (node = node.parentNode; node && node !== root; node = node.parentNode) { + if (isContentEditableFalse$1(node)) { + return false; + } + if (isContentEditableTrue$1(node)) { + return true; + } + } + return true; + }; + var isAtomicContentEditableFalse = function (node) { + if (!isContentEditableFalse$1(node)) { + return false; + } + return $_c2vc3pkje5o2puw.reduce(node.getElementsByTagName('*'), function (result, elm) { + return result || isContentEditableTrue$1(elm); + }, false) !== true; + }; + var isAtomic = function (node) { + return isAtomicInline(node) || isAtomicContentEditableFalse(node); + }; + var isEditableCaretCandidate = function (node, root) { + return isCaretCandidate(node) && isInEditable(node, root); + }; + + var round = Math.round; + var clone$1 = function (rect) { + if (!rect) { + return { + left: 0, + top: 0, + bottom: 0, + right: 0, + width: 0, + height: 0 + }; + } + return { + left: round(rect.left), + top: round(rect.top), + bottom: round(rect.bottom), + right: round(rect.right), + width: round(rect.width), + height: round(rect.height) + }; + }; + var collapse = function (rect, toStart) { + rect = clone$1(rect); + if (toStart) { + rect.right = rect.left; + } else { + rect.left = rect.left + rect.width; + rect.right = rect.left; + } + rect.width = 0; + return rect; + }; + var isEqual = function (rect1, rect2) { + return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right; + }; + var isValidOverflow = function (overflowY, rect1, rect2) { + return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2; + }; + var isAbove = function (rect1, rect2) { + if (rect1.bottom - rect1.height / 2 < rect2.top) { + return true; + } + if (rect1.top > rect2.bottom) { + return false; + } + return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2); + }; + var isBelow = function (rect1, rect2) { + if (rect1.top > rect2.bottom) { + return true; + } + if (rect1.bottom < rect2.top) { + return false; + } + return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2); + }; + var containsXY = function (rect, clientX, clientY) { + return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom; + }; + + var getSelectedNode = function (range) { + var startContainer = range.startContainer, startOffset = range.startOffset; + if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) { + return startContainer.childNodes[startOffset]; + } + return null; + }; + var getNode = function (container, offset) { + if (container.nodeType === 1 && container.hasChildNodes()) { + if (offset >= container.childNodes.length) { + offset = container.childNodes.length - 1; + } + container = container.childNodes[offset]; + } + return container; + }; + + var extendingChars = new RegExp('[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a' + '\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0' + '\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08E3-\u0902\u093a\u093c' + '\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3' + '\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc' + '\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57' + '\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56' + '\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44' + '\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9' + '\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97' + '\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074' + '\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5' + '\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18' + '\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1ABE\u1b00-\u1b03\u1b34' + '\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9' + '\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9' + '\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20DD-\u20E0\u20e1\u20E2-\u20E4\u20e5-\u20f0\u2cef-\u2cf1' + '\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\uA670-\uA672\ua674-\ua67d\uA69E-\ua69f\ua6f0-\ua6f1' + '\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc' + '\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1' + '\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\uFE2F\uff9e-\uff9f]'); + var isExtendingChar = function (ch) { + return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch); + }; + + var slice$3 = [].slice; + var constant$1 = function (value) { + return function () { + return value; + }; + }; + var negate = function (predicate) { + return function (x) { + return !predicate(x); + }; + }; + var compose$2 = function (f, g) { + return function (x) { + return f(g(x)); + }; + }; + var or = function () { + var x = []; + for (var _i = 0; _i < arguments.length; _i++) { + x[_i] = arguments[_i]; + } + var args = slice$3.call(arguments); + return function (x) { + for (var i = 0; i < args.length; i++) { + if (args[i](x)) { + return true; + } + } + return false; + }; + }; + var and = function () { + var x = []; + for (var _i = 0; _i < arguments.length; _i++) { + x[_i] = arguments[_i]; + } + var args = slice$3.call(arguments); + return function (x) { + for (var i = 0; i < args.length; i++) { + if (!args[i](x)) { + return false; + } + } + return true; + }; + }; + var curry$1 = function (fn) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var args = slice$3.call(arguments); + if (args.length - 1 >= fn.length) { + return fn.apply(this, args.slice(1)); + } + return function () { + var tempArgs = args.concat([].slice.call(arguments)); + return curry$1.apply(this, tempArgs); + }; + }; + var noop$1 = function () { + }; + var $_ghq3nq25je5o2q5q = { + constant: constant$1, + negate: negate, + and: and, + or: or, + curry: curry$1, + compose: compose$2, + noop: noop$1 + }; + + var isElement$3 = $_9owqcy1qje5o2q0e.isElement; + var isCaretCandidate$1 = isCaretCandidate; + var isBlock$1 = $_9owqcy1qje5o2q0e.matchStyleValues('display', 'block table'); + var isFloated = $_9owqcy1qje5o2q0e.matchStyleValues('float', 'left right'); + var isValidElementCaretCandidate = $_ghq3nq25je5o2q5q.and(isElement$3, isCaretCandidate$1, $_ghq3nq25je5o2q5q.negate(isFloated)); + var isNotPre = $_ghq3nq25je5o2q5q.negate($_9owqcy1qje5o2q0e.matchStyleValues('white-space', 'pre pre-line pre-wrap')); + var isText$4 = $_9owqcy1qje5o2q0e.isText; + var isBr$3 = $_9owqcy1qje5o2q0e.isBr; + var nodeIndex$1 = DOMUtils.nodeIndex; + var resolveIndex = getNode; + var createRange = function (doc) { + return 'createRange' in doc ? doc.createRange() : DOMUtils.DOM.createRng(); + }; + var isWhiteSpace = function (chr) { + return chr && /[\r\n\t ]/.test(chr); + }; + var isRange = function (rng) { + return !!rng.setStart && !!rng.setEnd; + }; + var isHiddenWhiteSpaceRange = function (range) { + var container = range.startContainer; + var offset = range.startOffset; + var text; + if (isWhiteSpace(range.toString()) && isNotPre(container.parentNode) && $_9owqcy1qje5o2q0e.isText(container)) { + text = container.data; + if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) { + return true; + } + } + return false; + }; + var getBrClientRect = function (brNode) { + var doc = brNode.ownerDocument; + var rng = createRange(doc); + var nbsp = doc.createTextNode('\xA0'); + var parentNode = brNode.parentNode; + var clientRect; + parentNode.insertBefore(nbsp, brNode); + rng.setStart(nbsp, 0); + rng.setEnd(nbsp, 1); + clientRect = clone$1(rng.getBoundingClientRect()); + parentNode.removeChild(nbsp); + return clientRect; + }; + var getBoundingClientRectWebKitText = function (rng) { + var sc = rng.startContainer; + var ec = rng.endContainer; + var so = rng.startOffset; + var eo = rng.endOffset; + if (sc === ec && $_9owqcy1qje5o2q0e.isText(ec) && so === 0 && eo === 1) { + var newRng = rng.cloneRange(); + newRng.setEndAfter(ec); + return getBoundingClientRect(newRng); + } else { + return null; + } + }; + var isZeroRect = function (r) { + return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0; + }; + var getBoundingClientRect = function (item) { + var clientRect, clientRects; + clientRects = item.getClientRects(); + if (clientRects.length > 0) { + clientRect = clone$1(clientRects[0]); + } else { + clientRect = clone$1(item.getBoundingClientRect()); + } + if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) { + return getBrClientRect(item); + } + if (isZeroRect(clientRect) && isRange(item)) { + return getBoundingClientRectWebKitText(item); + } + return clientRect; + }; + var collapseAndInflateWidth = function (clientRect, toStart) { + var newClientRect = collapse(clientRect, toStart); + newClientRect.width = 1; + newClientRect.right = newClientRect.left + 1; + return newClientRect; + }; + var getCaretPositionClientRects = function (caretPosition) { + var clientRects = []; + var beforeNode, node; + var addUniqueAndValidRect = function (clientRect) { + if (clientRect.height === 0) { + return; + } + if (clientRects.length > 0) { + if (isEqual(clientRect, clientRects[clientRects.length - 1])) { + return; + } + } + clientRects.push(clientRect); + }; + var addCharacterOffset = function (container, offset) { + var range = createRange(container.ownerDocument); + if (offset < container.data.length) { + if (isExtendingChar(container.data[offset])) { + return clientRects; + } + if (isExtendingChar(container.data[offset - 1])) { + range.setStart(container, offset); + range.setEnd(container, offset + 1); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false)); + return clientRects; + } + } + } + if (offset > 0) { + range.setStart(container, offset - 1); + range.setEnd(container, offset); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false)); + } + } + if (offset < container.data.length) { + range.setStart(container, offset); + range.setEnd(container, offset + 1); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), true)); + } + } + }; + if (isText$4(caretPosition.container())) { + addCharacterOffset(caretPosition.container(), caretPosition.offset()); + return clientRects; + } + if (isElement$3(caretPosition.container())) { + if (caretPosition.isAtEnd()) { + node = resolveIndex(caretPosition.container(), caretPosition.offset()); + if (isText$4(node)) { + addCharacterOffset(node, node.data.length); + } + if (isValidElementCaretCandidate(node) && !isBr$3(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false)); + } + } else { + node = resolveIndex(caretPosition.container(), caretPosition.offset()); + if (isText$4(node)) { + addCharacterOffset(node, 0); + } + if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false)); + return clientRects; + } + beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1); + if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) { + if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false)); + } + } + if (isValidElementCaretCandidate(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true)); + } + } + } + return clientRects; + }; + function CaretPosition(container, offset, clientRects) { + var isAtStart = function () { + if (isText$4(container)) { + return offset === 0; + } + return offset === 0; + }; + var isAtEnd = function () { + if (isText$4(container)) { + return offset >= container.data.length; + } + return offset >= container.childNodes.length; + }; + var toRange = function () { + var range; + range = createRange(container.ownerDocument); + range.setStart(container, offset); + range.setEnd(container, offset); + return range; + }; + var getClientRects = function () { + if (!clientRects) { + clientRects = getCaretPositionClientRects(CaretPosition(container, offset)); + } + return clientRects; + }; + var isVisible = function () { + return getClientRects().length > 0; + }; + var isEqual$$1 = function (caretPosition) { + return caretPosition && container === caretPosition.container() && offset === caretPosition.offset(); + }; + var getNode$$1 = function (before) { + return resolveIndex(container, before ? offset - 1 : offset); + }; + return { + container: $_ghq3nq25je5o2q5q.constant(container), + offset: $_ghq3nq25je5o2q5q.constant(offset), + toRange: toRange, + getClientRects: getClientRects, + isVisible: isVisible, + isAtStart: isAtStart, + isAtEnd: isAtEnd, + isEqual: isEqual$$1, + getNode: getNode$$1 + }; + } + (function (CaretPosition) { + CaretPosition.fromRangeStart = function (range) { + return CaretPosition(range.startContainer, range.startOffset); + }; + CaretPosition.fromRangeEnd = function (range) { + return CaretPosition(range.endContainer, range.endOffset); + }; + CaretPosition.after = function (node) { + return CaretPosition(node.parentNode, nodeIndex$1(node) + 1); + }; + CaretPosition.before = function (node) { + return CaretPosition(node.parentNode, nodeIndex$1(node)); + }; + CaretPosition.isAtStart = function (pos) { + return pos ? pos.isAtStart() : false; + }; + CaretPosition.isAtEnd = function (pos) { + return pos ? pos.isAtEnd() : false; + }; + CaretPosition.isTextPosition = function (pos) { + return pos ? $_9owqcy1qje5o2q0e.isText(pos.container()) : false; + }; + }(CaretPosition || (CaretPosition = {}))); + var CaretPosition$1 = CaretPosition; + + var isElement$4 = $_9owqcy1qje5o2q0e.isElement; + var isText$5 = $_9owqcy1qje5o2q0e.isText; + var removeNode = function (node) { + var parentNode = node.parentNode; + if (parentNode) { + parentNode.removeChild(node); + } + }; + var getNodeValue = function (node) { + try { + return node.nodeValue; + } catch (ex) { + return ''; + } + }; + var setNodeValue = function (node, text) { + if (text.length === 0) { + removeNode(node); + } else { + node.nodeValue = text; + } + }; + var trimCount = function (text) { + var trimmedText = $_4md31c21je5o2q5f.trim(text); + return { + count: text.length - trimmedText.length, + text: trimmedText + }; + }; + var removeUnchanged = function (caretContainer, pos) { + remove$2(caretContainer); + return pos; + }; + var removeTextAndReposition = function (caretContainer, pos) { + var before = trimCount(caretContainer.data.substr(0, pos.offset())); + var after = trimCount(caretContainer.data.substr(pos.offset())); + var text = before.text + after.text; + if (text.length > 0) { + setNodeValue(caretContainer, text); + return CaretPosition$1(caretContainer, pos.offset() - before.count); + } else { + return pos; + } + }; + var removeElementAndReposition = function (caretContainer, pos) { + var parentNode = pos.container(); + var newPosition = $_bwcteb4je5o2pl4.indexOf(parentNode.childNodes, caretContainer).map(function (index) { + return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos; + }).getOr(pos); + remove$2(caretContainer); + return newPosition; + }; + var removeTextCaretContainer = function (caretContainer, pos) { + return isText$5(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos); + }; + var removeElementCaretContainer = function (caretContainer, pos) { + return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos); + }; + var removeAndReposition = function (container, pos) { + return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos); + }; + var remove$2 = function (caretContainerNode) { + if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) { + if (hasContent(caretContainerNode)) { + caretContainerNode.removeAttribute('data-mce-caret'); + } else { + removeNode(caretContainerNode); + } + } + if (isText$5(caretContainerNode)) { + var text = $_4md31c21je5o2q5f.trim(getNodeValue(caretContainerNode)); + setNodeValue(caretContainerNode, text); + } + }; + var $_3djwbs29je5o2q74 = { + removeAndReposition: removeAndReposition, + remove: remove$2 + }; + + var walkToPositionIn = function (forward, root, start) { + var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start); + return fromPosition(forward, root, position); + }; + var afterElement = function (node) { + return $_9owqcy1qje5o2q0e.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node); + }; + var isBeforeOrStart = function (position) { + if (CaretPosition$1.isTextPosition(position)) { + return position.offset() === 0; + } else { + return isCaretCandidate(position.getNode()); + } + }; + var isAfterOrEnd = function (position) { + if (CaretPosition$1.isTextPosition(position)) { + var container = position.container(); + return position.offset() === container.data.length; + } else { + return isCaretCandidate(position.getNode(true)); + } + }; + var isBeforeAfterSameElement = function (from, to) { + return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true); + }; + var isAtBr = function (position) { + return !CaretPosition$1.isTextPosition(position) && $_9owqcy1qje5o2q0e.isBr(position.getNode()); + }; + var shouldSkipPosition = function (forward, from, to) { + if (forward) { + return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to); + } else { + return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to); + } + }; + var fromPosition = function (forward, root, pos) { + var walker = CaretWalker(root); + return Option.from(forward ? walker.next(pos) : walker.prev(pos)); + }; + var navigate = function (forward, root, from) { + return fromPosition(forward, root, from).bind(function (to) { + if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) { + return fromPosition(forward, root, to); + } else { + return Option.some(to); + } + }); + }; + var positionIn = function (forward, element) { + var startNode = forward ? element.firstChild : element.lastChild; + if ($_9owqcy1qje5o2q0e.isText(startNode)) { + return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length)); + } else if (startNode) { + if (isCaretCandidate(startNode)) { + return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode)); + } else { + return walkToPositionIn(forward, element, startNode); + } + } else { + return Option.none(); + } + }; + var $_g2kzjo2bje5o2q7n = { + fromPosition: fromPosition, + nextPosition: $_enfhkv6je5o2ply.curry(fromPosition, true), + prevPosition: $_enfhkv6je5o2ply.curry(fromPosition, false), + navigate: navigate, + positionIn: positionIn, + firstPositionIn: $_enfhkv6je5o2ply.curry(positionIn, true), + lastPositionIn: $_enfhkv6je5o2ply.curry(positionIn, false) + }; + + var isContentEditableTrue$2 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$2 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var showCaret = function (direction, editor, node, before, scrollIntoView) { + return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView); + }; + var getNodeRange = function (node) { + var rng = node.ownerDocument.createRange(); + rng.selectNode(node); + return rng; + }; + var selectNode = function (editor, node) { + var e; + e = editor.fire('BeforeObjectSelected', { target: node }); + if (e.isDefaultPrevented()) { + return null; + } + return getNodeRange(node); + }; + var renderCaretAtRange = function (editor, range, scrollIntoView) { + var caretPosition, ceRoot; + range = normalizeRange(1, editor.getBody(), range); + caretPosition = CaretPosition$1.fromRangeStart(range); + if (isContentEditableFalse$2(caretPosition.getNode())) { + return showCaret(1, editor, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + if (isContentEditableFalse$2(caretPosition.getNode(true))) { + return showCaret(1, editor, caretPosition.getNode(true), false, false); + } + ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) { + return isContentEditableFalse$2(node) || isContentEditableTrue$2(node); + }); + if (isContentEditableFalse$2(ceRoot)) { + return showCaret(1, editor, ceRoot, false, scrollIntoView); + } + return null; + }; + var renderRangeCaret = function (editor, range, scrollIntoView) { + var caretRange; + if (!range || !range.collapsed) { + return range; + } + caretRange = renderCaretAtRange(editor, range, scrollIntoView); + if (caretRange) { + return caretRange; + } + return range; + }; + + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Option.none(); + }; + var liftN = function (arr, f) { + var r = []; + for (var i = 0; i < arr.length; i++) { + var x = arr[i]; + if (x.isSome()) { + r.push(x.getOrDie()); + } else { + return Option.none(); + } + } + return Option.some(f.apply(null, r)); + }; + var $_c8weyc2eje5o2q85 = { + cat: cat, + findMap: findMap, + liftN: liftN + }; + + var BreakType; + (function (BreakType) { + BreakType[BreakType['Br'] = 0] = 'Br'; + BreakType[BreakType['Block'] = 1] = 'Block'; + BreakType[BreakType['Wrap'] = 2] = 'Wrap'; + BreakType[BreakType['Eol'] = 3] = 'Eol'; + }(BreakType || (BreakType = {}))); + var isAbove$1 = function (pos1, pos2) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.head(pos2.getClientRects()), + $_bwcteb4je5o2pl4.last(pos1.getClientRects()) + ], isAbove).getOr(false); + }; + var isBelow$1 = function (pos1, pos2) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.last(pos2.getClientRects()), + $_bwcteb4je5o2pl4.head(pos1.getClientRects()) + ], function (r1, r2) { + return isBelow(r1, r2); + }).getOr(false); + }; + var flip = function (direction, positions) { + return direction === HDirection.Backwards ? positions.reverse() : positions; + }; + var walk$1 = function (direction, caretWalker, pos) { + return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos); + }; + var getBreakType = function (scope, direction, currentPos, nextPos) { + if ($_9owqcy1qje5o2q0e.isBr(nextPos.getNode(direction === HDirection.Forwards))) { + return BreakType.Br; + } else if (isInSameBlock(currentPos, nextPos) === false) { + return BreakType.Block; + } else { + return BreakType.Wrap; + } + }; + var getPositionsUntil = function (predicate, direction, scope, start) { + var caretWalker = CaretWalker(scope); + var currentPos = start, nextPos; + var positions = []; + while (currentPos) { + nextPos = walk$1(direction, caretWalker, currentPos); + if (!nextPos) { + break; + } + if ($_9owqcy1qje5o2q0e.isBr(nextPos.getNode(false))) { + if (direction === HDirection.Forwards) { + return { + positions: flip(direction, positions).concat([nextPos]), + breakType: BreakType.Br, + breakAt: Option.some(nextPos) + }; + } else { + return { + positions: flip(direction, positions), + breakType: BreakType.Br, + breakAt: Option.some(nextPos) + }; + } + } + if (!nextPos.isVisible()) { + currentPos = nextPos; + continue; + } + if (predicate(currentPos, nextPos)) { + var breakType = getBreakType(scope, direction, currentPos, nextPos); + return { + positions: flip(direction, positions), + breakType: breakType, + breakAt: Option.some(nextPos) + }; + } + positions.push(nextPos); + currentPos = nextPos; + } + return { + positions: flip(direction, positions), + breakType: BreakType.Eol, + breakAt: Option.none() + }; + }; + var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) { + return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) { + var positions = getPositionsUntilBreak(scope, pos).positions; + return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions); + }).getOr([]); + }; + var findClosestHorizontalPositionFromPoint = function (positions, x) { + return $_bwcteb4je5o2pl4.foldl(positions, function (acc, newPos) { + return acc.fold(function () { + return Option.some(newPos); + }, function (lastPos) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.head(lastPos.getClientRects()), + $_bwcteb4je5o2pl4.head(newPos.getClientRects()) + ], function (lastRect, newRect) { + var lastDist = Math.abs(x - lastRect.left); + var newDist = Math.abs(x - newRect.left); + return newDist <= lastDist ? newPos : lastPos; + }).or(acc); + }); + }, Option.none()); + }; + var findClosestHorizontalPosition = function (positions, pos) { + return $_bwcteb4je5o2pl4.head(pos.getClientRects()).bind(function (targetRect) { + return findClosestHorizontalPositionFromPoint(positions, targetRect.left); + }); + }; + var getPositionsUntilPreviousLine = $_enfhkv6je5o2ply.curry(getPositionsUntil, isAbove$1, -1); + var getPositionsUntilNextLine = $_enfhkv6je5o2ply.curry(getPositionsUntil, isBelow$1, 1); + var getPositionsAbove = $_enfhkv6je5o2ply.curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine); + var getPositionsBelow = $_enfhkv6je5o2ply.curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine); + var getFirstLinePositions = function (scope) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(scope).map(function (pos) { + return [pos].concat(getPositionsUntilNextLine(scope, pos).positions); + }).getOr([]); + }; + var getLastLinePositions = function (scope) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(scope).map(function (pos) { + return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos); + }).getOr([]); + }; + + var all$1 = function (predicate) { + return descendants($_484buq15je5o2py8.body(), predicate); + }; + var ancestors = function (scope, predicate, isRoot) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.parents(scope, isRoot), predicate); + }; + var siblings$1 = function (scope, predicate) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.siblings(scope), predicate); + }; + var children$1 = function (scope, predicate) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.children(scope), predicate); + }; + var descendants = function (scope, predicate) { + var result = []; + $_bwcteb4je5o2pl4.each($_a6mttx17je5o2pyd.children(scope), function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(descendants(x, predicate)); + }); + return result; + }; + var $_47brb52hje5o2q8h = { + all: all$1, + ancestors: ancestors, + siblings: siblings$1, + children: children$1, + descendants: descendants + }; + + var all$2 = function (selector) { + return $_87zu5k1fje5o2pz9.all(selector); + }; + var ancestors$1 = function (scope, selector, isRoot) { + return $_47brb52hje5o2q8h.ancestors(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }, isRoot); + }; + var siblings$2 = function (scope, selector) { + return $_47brb52hje5o2q8h.siblings(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var children$2 = function (scope, selector) { + return $_47brb52hje5o2q8h.children(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var descendants$1 = function (scope, selector) { + return $_87zu5k1fje5o2pz9.all(selector, scope); + }; + var $_b4jhpu2gje5o2q8e = { + all: all$2, + ancestors: ancestors$1, + siblings: siblings$2, + children: children$2, + descendants: descendants$1 + }; + + var deflate = function (rect, delta) { + return { + left: rect.left - delta, + top: rect.top - delta, + right: rect.right + delta * 2, + bottom: rect.bottom + delta * 2, + width: rect.width + delta, + height: rect.height + delta + }; + }; + var getCorners = function (getYAxisValue, tds) { + return $_bwcteb4je5o2pl4.bind(tds, function (td) { + var rect = deflate(td.getBoundingClientRect(), -1); + return [ + { + x: rect.left, + y: getYAxisValue(rect), + cell: td + }, + { + x: rect.right, + y: getYAxisValue(rect), + cell: td + } + ]; + }); + }; + var findClosestCorner = function (corners, x, y) { + return $_bwcteb4je5o2pl4.foldl(corners, function (acc, newCorner) { + return acc.fold(function () { + return Option.some(newCorner); + }, function (oldCorner) { + var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y)); + var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y)); + return Option.some(newDist < oldDist ? newCorner : oldCorner); + }); + }, Option.none()); + }; + var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) { + var cells = $_b4jhpu2gje5o2q8e.descendants($_5tcb2dyje5o2pwu.fromDom(table), 'td,th').map(function (e) { + return e.dom(); + }); + var corners = $_bwcteb4je5o2pl4.filter(getCorners(getYAxisValue, cells), function (corner) { + return isTargetCorner(corner, y); + }); + return findClosestCorner(corners, x, y).map(function (corner) { + return corner.cell; + }); + }; + var getBottomValue = function (rect) { + return rect.bottom; + }; + var getTopValue = function (rect) { + return rect.top; + }; + var isAbove$2 = function (corner, y) { + return corner.y < y; + }; + var isBelow$2 = function (corner, y) { + return corner.y > y; + }; + var getClosestCellAbove = $_enfhkv6je5o2ply.curry(getClosestCell, getBottomValue, isAbove$2); + var getClosestCellBelow = $_enfhkv6je5o2ply.curry(getClosestCell, getTopValue, isBelow$2); + var findClosestPositionInAboveCell = function (table, pos) { + return $_bwcteb4je5o2pl4.head(pos.getClientRects()).bind(function (rect) { + return getClosestCellAbove(table, rect.left, rect.top); + }).bind(function (cell) { + return findClosestHorizontalPosition(getLastLinePositions(cell), pos); + }); + }; + var findClosestPositionInBelowCell = function (table, pos) { + return $_bwcteb4je5o2pl4.last(pos.getClientRects()).bind(function (rect) { + return getClosestCellBelow(table, rect.left, rect.top); + }).bind(function (cell) { + return findClosestHorizontalPosition(getFirstLinePositions(cell), pos); + }); + }; + + var browser$2 = $_2hq237mje5o2pvu.detect().browser; + var isFakeCaretTableBrowser = function () { + return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox(); + }; + var isAtTableCellLine = function (getPositionsUntil, scope, pos) { + var lineInfo = getPositionsUntil(scope, pos); + if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) { + return lineInfo.breakAt.map(function (breakPos) { + return getPositionsUntil(scope, breakPos).breakAt.isNone(); + }).getOr(true); + } else { + return lineInfo.breakAt.isNone(); + } + }; + var isAtFirstTableCellLine = $_ghq3nq25je5o2q5q.curry(isAtTableCellLine, getPositionsUntilPreviousLine); + var isAtLastTableCellLine = $_ghq3nq25je5o2q5q.curry(isAtTableCellLine, getPositionsUntilNextLine); + var isCaretAtStartOrEndOfTable = function (forward, rng, table) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + return $_g2kzjo2bje5o2q7n.positionIn(!forward, table).map(function (pos) { + return pos.isEqual(caretPos); + }).getOr(false); + }; + var navigateHorizontally = function (editor, forward, table, td) { + var rng = editor.selection.getRng(); + var direction = forward ? 1 : -1; + if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) { + var newRng = showCaret(direction, editor, table, !forward, true); + editor.selection.setRng(newRng); + return true; + } + return false; + }; + var getClosestAbovePosition = function (root, table, start) { + return findClosestPositionInAboveCell(table, start).orThunk(function () { + return $_bwcteb4je5o2pl4.head(start.getClientRects()).bind(function (rect) { + return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left); + }); + }).getOr(CaretPosition$1.before(table)); + }; + var getClosestBelowPosition = function (root, table, start) { + return findClosestPositionInBelowCell(table, start).orThunk(function () { + return $_bwcteb4je5o2pl4.head(start.getClientRects()).bind(function (rect) { + return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left); + }); + }).getOr(CaretPosition$1.after(table)); + }; + var navigateVertically = function (editor, down, table, td) { + var rng = editor.selection.getRng(); + var pos = CaretPosition$1.fromRangeStart(rng); + var root = editor.getBody(); + if (!down && isAtFirstTableCellLine(td, pos)) { + var newPos = getClosestAbovePosition(root, table, pos); + editor.selection.setRng(newPos.toRange()); + return true; + } else if (down && isAtLastTableCellLine(td, pos)) { + var newPos = getClosestBelowPosition(root, table, pos); + editor.selection.setRng(newPos.toRange()); + return true; + } else { + return false; + } + }; + var moveH = function (editor, forward) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { + return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { + return navigateHorizontally(editor, forward, table, td); + }); + }).getOr(false); + }; + }; + var moveV = function (editor, forward) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { + return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { + return navigateVertically(editor, forward, table, td); + }); + }).getOr(false); + }; + }; + + var isContentEditableFalse$3 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isTableCell$1 = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && /^(TD|TH)$/i.test(node.tagName); + }; + var getAbsoluteClientRect = function (root, element, before) { + var clientRect = collapse(element.getBoundingClientRect(), before); + var docElm, scrollX, scrollY, margin, rootRect; + if (root.tagName === 'BODY') { + docElm = root.ownerDocument.documentElement; + scrollX = root.scrollLeft || docElm.scrollLeft; + scrollY = root.scrollTop || docElm.scrollTop; + } else { + rootRect = root.getBoundingClientRect(); + scrollX = root.scrollLeft - rootRect.left; + scrollY = root.scrollTop - rootRect.top; + } + clientRect.left += scrollX; + clientRect.right += scrollX; + clientRect.top += scrollY; + clientRect.bottom += scrollY; + clientRect.width = 1; + margin = element.offsetWidth - element.clientWidth; + if (margin > 0) { + if (before) { + margin *= -1; + } + clientRect.left += margin; + clientRect.right += margin; + } + return clientRect; + }; + var trimInlineCaretContainers = function (root) { + var contentEditableFalseNodes, node, sibling, i, data; + contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root); + for (i = 0; i < contentEditableFalseNodes.length; i++) { + node = contentEditableFalseNodes[i]; + sibling = node.previousSibling; + if (endsWithCaretContainer(sibling)) { + data = sibling.data; + if (data.length === 1) { + sibling.parentNode.removeChild(sibling); + } else { + sibling.deleteData(data.length - 1, 1); + } + } + sibling = node.nextSibling; + if (startsWithCaretContainer(sibling)) { + data = sibling.data; + if (data.length === 1) { + sibling.parentNode.removeChild(sibling); + } else { + sibling.deleteData(0, 1); + } + } + } + }; + var FakeCaret = function (root, isBlock, hasFocus) { + var cursorInterval, $lastVisualCaret = null, caretContainerNode; + var show = function (before, element) { + var clientRect, rng; + hide(); + if (isTableCell$1(element)) { + return null; + } + if (isBlock(element)) { + caretContainerNode = insertBlock('p', element, before); + clientRect = getAbsoluteClientRect(root, element, before); + DomQuery(caretContainerNode).css('top', clientRect.top); + $lastVisualCaret = DomQuery('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(clientRect).appendTo(root); + if (before) { + $lastVisualCaret.addClass('mce-visual-caret-before'); + } + startBlink(); + rng = element.ownerDocument.createRange(); + rng.setStart(caretContainerNode, 0); + rng.setEnd(caretContainerNode, 0); + } else { + caretContainerNode = insertInline(element, before); + rng = element.ownerDocument.createRange(); + if (isContentEditableFalse$3(caretContainerNode.nextSibling)) { + rng.setStart(caretContainerNode, 0); + rng.setEnd(caretContainerNode, 0); + } else { + rng.setStart(caretContainerNode, 1); + rng.setEnd(caretContainerNode, 1); + } + return rng; + } + return rng; + }; + var hide = function () { + trimInlineCaretContainers(root); + if (caretContainerNode) { + $_3djwbs29je5o2q74.remove(caretContainerNode); + caretContainerNode = null; + } + if ($lastVisualCaret) { + $lastVisualCaret.remove(); + $lastVisualCaret = null; + } + clearInterval(cursorInterval); + }; + var startBlink = function () { + cursorInterval = $_db41wogje5o2ps3.setInterval(function () { + if (hasFocus()) { + DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden'); + } else { + DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden'); + } + }, 500); + }; + var destroy = function () { + return $_db41wogje5o2ps3.clearInterval(cursorInterval); + }; + var getCss = function () { + return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}'; + }; + return { + show: show, + hide: hide, + getCss: getCss, + destroy: destroy + }; + }; + var isFakeCaretTarget = function (node) { + return isContentEditableFalse$3(node) || $_9owqcy1qje5o2q0e.isTable(node) && isFakeCaretTableBrowser(); + }; + + var isContentEditableFalse$4 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isBlockLike = $_9owqcy1qje5o2q0e.matchStyleValues('display', 'block table table-cell table-caption list-item'); + var isCaretContainer$2 = isCaretContainer; + var isCaretContainerBlock$1 = isCaretContainerBlock; + var curry$2 = $_ghq3nq25je5o2q5q.curry; + var isElement$5 = $_9owqcy1qje5o2q0e.isElement; + var isCaretCandidate$2 = isCaretCandidate; + var isForwards = function (direction) { + return direction > 0; + }; + var isBackwards = function (direction) { + return direction < 0; + }; + var skipCaretContainers = function (walk, shallow) { + var node; + while (node = walk(shallow)) { + if (!isCaretContainerBlock$1(node)) { + return node; + } + } + return null; + }; + var findNode = function (node, direction, predicateFn, rootNode, shallow) { + var walker = new TreeWalker(node, rootNode); + if (isBackwards(direction)) { + if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) { + node = skipCaretContainers(walker.prev, true); + if (predicateFn(node)) { + return node; + } + } + while (node = skipCaretContainers(walker.prev, shallow)) { + if (predicateFn(node)) { + return node; + } + } + } + if (isForwards(direction)) { + if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) { + node = skipCaretContainers(walker.next, true); + if (predicateFn(node)) { + return node; + } + } + while (node = skipCaretContainers(walker.next, shallow)) { + if (predicateFn(node)) { + return node; + } + } + } + return null; + }; + var getParentBlock = function (node, rootNode) { + while (node && node !== rootNode) { + if (isBlockLike(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) { + return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode); + }; + var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) { + var container, offset; + if (!caretPosition) { + return null; + } + container = caretPosition.container(); + offset = caretPosition.offset(); + if (!isElement$5(container)) { + return null; + } + return container.childNodes[offset + relativeOffset]; + }; + var beforeAfter = function (before, node) { + var range = node.ownerDocument.createRange(); + if (before) { + range.setStartBefore(node); + range.setEndBefore(node); + } else { + range.setStartAfter(node); + range.setEndAfter(node); + } + return range; + }; + var isNodesInSameBlock = function (root, node1, node2) { + return getParentBlock(node1, root) === getParentBlock(node2, root); + }; + var lean = function (left, root, node) { + var sibling, siblingName; + if (left) { + siblingName = 'previousSibling'; + } else { + siblingName = 'nextSibling'; + } + while (node && node !== root) { + sibling = node[siblingName]; + if (isCaretContainer$2(sibling)) { + sibling = sibling[siblingName]; + } + if (isContentEditableFalse$4(sibling)) { + if (isNodesInSameBlock(root, sibling, node)) { + return sibling; + } + break; + } + if (isCaretCandidate$2(sibling)) { + break; + } + node = node.parentNode; + } + return null; + }; + var before = curry$2(beforeAfter, true); + var after = curry$2(beforeAfter, false); + var normalizeRange = function (direction, root, range) { + var node, container, offset, location; + var leanLeft = curry$2(lean, true, root); + var leanRight = curry$2(lean, false, root); + container = range.startContainer; + offset = range.startOffset; + if (isCaretContainerBlock(container)) { + if (!isElement$5(container)) { + container = container.parentNode; + } + location = container.getAttribute('data-mce-caret'); + if (location === 'before') { + node = container.nextSibling; + if (isFakeCaretTarget(node)) { + return before(node); + } + } + if (location === 'after') { + node = container.previousSibling; + if (isFakeCaretTarget(node)) { + return after(node); + } + } + } + if (!range.collapsed) { + return range; + } + if ($_9owqcy1qje5o2q0e.isText(container)) { + if (isCaretContainer$2(container)) { + if (direction === 1) { + node = leanRight(container); + if (node) { + return before(node); + } + node = leanLeft(container); + if (node) { + return after(node); + } + } + if (direction === -1) { + node = leanLeft(container); + if (node) { + return after(node); + } + node = leanRight(container); + if (node) { + return before(node); + } + } + return range; + } + if (endsWithCaretContainer(container) && offset >= container.data.length - 1) { + if (direction === 1) { + node = leanRight(container); + if (node) { + return before(node); + } + } + return range; + } + if (startsWithCaretContainer(container) && offset <= 1) { + if (direction === -1) { + node = leanLeft(container); + if (node) { + return after(node); + } + } + return range; + } + if (offset === container.data.length) { + node = leanRight(container); + if (node) { + return before(node); + } + return range; + } + if (offset === 0) { + node = leanLeft(container); + if (node) { + return after(node); + } + return range; + } + } + return range; + }; + var isNextToContentEditableFalse = function (relativeOffset, caretPosition) { + var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition); + return isContentEditableFalse$4(node) && !$_9owqcy1qje5o2q0e.isBogusAll(node); + }; + var isNextToTable = function (relativeOffset, caretPosition) { + return $_9owqcy1qje5o2q0e.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition)); + }; + var getRelativeCefElm = function (forward, caretPosition) { + return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$4); + }; + var getNormalizedRangeEndPoint = function (direction, root, range) { + var normalizedRange = normalizeRange(direction, root, range); + if (direction === -1) { + return CaretPosition.fromRangeStart(normalizedRange); + } + return CaretPosition.fromRangeEnd(normalizedRange); + }; + var isBeforeContentEditableFalse = curry$2(isNextToContentEditableFalse, 0); + var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1); + var isBeforeTable = curry$2(isNextToTable, 0); + var isAfterTable = curry$2(isNextToTable, -1); + + var HDirection; + (function (HDirection) { + HDirection[HDirection['Backwards'] = -1] = 'Backwards'; + HDirection[HDirection['Forwards'] = 1] = 'Forwards'; + }(HDirection || (HDirection = {}))); + var isContentEditableFalse$5 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isText$6 = $_9owqcy1qje5o2q0e.isText; + var isElement$6 = $_9owqcy1qje5o2q0e.isElement; + var isBr$4 = $_9owqcy1qje5o2q0e.isBr; + var isCaretCandidate$3 = isCaretCandidate; + var isAtomic$1 = isAtomic; + var isEditableCaretCandidate$1 = isEditableCaretCandidate; + var getParents = function (node, root) { + var parents = []; + while (node && node !== root) { + parents.push(node); + node = node.parentNode; + } + return parents; + }; + var nodeAtIndex = function (container, offset) { + if (container.hasChildNodes() && offset < container.childNodes.length) { + return container.childNodes[offset]; + } + return null; + }; + var getCaretCandidatePosition = function (direction, node) { + if (isForwards(direction)) { + if (isCaretCandidate$3(node.previousSibling) && !isText$6(node.previousSibling)) { + return CaretPosition$1.before(node); + } + if (isText$6(node)) { + return CaretPosition$1(node, 0); + } + } + if (isBackwards(direction)) { + if (isCaretCandidate$3(node.nextSibling) && !isText$6(node.nextSibling)) { + return CaretPosition$1.after(node); + } + if (isText$6(node)) { + return CaretPosition$1(node, node.data.length); + } + } + if (isBackwards(direction)) { + if (isBr$4(node)) { + return CaretPosition$1.before(node); + } + return CaretPosition$1.after(node); + } + return CaretPosition$1.before(node); + }; + var isBrBeforeBlock = function (node, root) { + var next; + if (!$_9owqcy1qje5o2q0e.isBr(node)) { + return false; + } + next = findCaretPosition(1, CaretPosition$1.after(node), root); + if (!next) { + return false; + } + return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root); + }; + var findCaretPosition = function (direction, startPos, root) { + var node, nextNode, innerNode; + var rootContentEditableFalseElm, caretPosition; + if (!isElement$6(root) || !startPos) { + return null; + } + if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) { + caretPosition = CaretPosition$1.after(root.lastChild); + if (isBackwards(direction) && isCaretCandidate$3(root.lastChild) && isElement$6(root.lastChild)) { + return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition; + } + } else { + caretPosition = startPos; + } + var container = caretPosition.container(); + var offset = caretPosition.offset(); + if (isText$6(container)) { + if (isBackwards(direction) && offset > 0) { + return CaretPosition$1(container, --offset); + } + if (isForwards(direction) && offset < container.length) { + return CaretPosition$1(container, ++offset); + } + node = container; + } else { + if (isBackwards(direction) && offset > 0) { + nextNode = nodeAtIndex(container, offset - 1); + if (isCaretCandidate$3(nextNode)) { + if (!isAtomic$1(nextNode)) { + innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode); + if (innerNode) { + if (isText$6(innerNode)) { + return CaretPosition$1(innerNode, innerNode.data.length); + } + return CaretPosition$1.after(innerNode); + } + } + if (isText$6(nextNode)) { + return CaretPosition$1(nextNode, nextNode.data.length); + } + return CaretPosition$1.before(nextNode); + } + } + if (isForwards(direction) && offset < container.childNodes.length) { + nextNode = nodeAtIndex(container, offset); + if (isCaretCandidate$3(nextNode)) { + if (isBrBeforeBlock(nextNode, root)) { + return findCaretPosition(direction, CaretPosition$1.after(nextNode), root); + } + if (!isAtomic$1(nextNode)) { + innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode); + if (innerNode) { + if (isText$6(innerNode)) { + return CaretPosition$1(innerNode, 0); + } + return CaretPosition$1.before(innerNode); + } + } + if (isText$6(nextNode)) { + return CaretPosition$1(nextNode, 0); + } + return CaretPosition$1.after(nextNode); + } + } + node = nextNode ? nextNode : caretPosition.getNode(); + } + if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) { + node = findNode(node, direction, $_ghq3nq25je5o2q5q.constant(true), root, true); + if (isEditableCaretCandidate$1(node, root)) { + return getCaretCandidatePosition(direction, node); + } + } + nextNode = findNode(node, direction, isEditableCaretCandidate$1, root); + rootContentEditableFalseElm = $_c2vc3pkje5o2puw.last($_c2vc3pkje5o2puw.filter(getParents(container, root), isContentEditableFalse$5)); + if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) { + if (isForwards(direction)) { + caretPosition = CaretPosition$1.after(rootContentEditableFalseElm); + } else { + caretPosition = CaretPosition$1.before(rootContentEditableFalseElm); + } + return caretPosition; + } + if (nextNode) { + return getCaretCandidatePosition(direction, nextNode); + } + return null; + }; + var CaretWalker = function (root) { + return { + next: function (caretPosition) { + return findCaretPosition(HDirection.Forwards, caretPosition, root); + }, + prev: function (caretPosition) { + return findCaretPosition(HDirection.Backwards, caretPosition, root); + } + }; + }; + + var hasOnlyOneChild = function (node) { + return node.firstChild && node.firstChild === node.lastChild; + }; + var isPaddingNode = function (node) { + return node.name === 'br' || node.value === '\xA0'; + }; + var isPaddedEmptyBlock = function (schema, node) { + var blockElements = schema.getBlockElements(); + return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild); + }; + var isEmptyFragmentElement = function (schema, node) { + var nonEmptyElements = schema.getNonEmptyElements(); + return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node)); + }; + var isListFragment = function (schema, fragment) { + var firstChild = fragment.firstChild; + var lastChild = fragment.lastChild; + if (firstChild && firstChild.name === 'meta') { + firstChild = firstChild.next; + } + if (lastChild && lastChild.attr('id') === 'mce_marker') { + lastChild = lastChild.prev; + } + if (isEmptyFragmentElement(schema, lastChild)) { + lastChild = lastChild.prev; + } + if (!firstChild || firstChild !== lastChild) { + return false; + } + return firstChild.name === 'ul' || firstChild.name === 'ol'; + }; + var cleanupDomFragment = function (domFragment) { + var firstChild = domFragment.firstChild; + var lastChild = domFragment.lastChild; + if (firstChild && firstChild.nodeName === 'META') { + firstChild.parentNode.removeChild(firstChild); + } + if (lastChild && lastChild.id === 'mce_marker') { + lastChild.parentNode.removeChild(lastChild); + } + return domFragment; + }; + var toDomFragment = function (dom, serializer, fragment) { + var html = serializer.serialize(fragment); + var domFragment = dom.createFragment(html); + return cleanupDomFragment(domFragment); + }; + var listItems$1 = function (elm) { + return $_a5gegtjje5o2pum.grep(elm.childNodes, function (child) { + return child.nodeName === 'LI'; + }); + }; + var isPadding = function (node) { + return node.data === '\xA0' || $_9owqcy1qje5o2q0e.isBr(node); + }; + var isListItemPadded = function (node) { + return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild); + }; + var isEmptyOrPadded = function (elm) { + return !elm.firstChild || isListItemPadded(elm); + }; + var trimListItems = function (elms) { + return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms; + }; + var getParentLi = function (dom, node) { + var parentBlock = dom.getParent(node, dom.isBlock); + return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null; + }; + var isParentBlockLi = function (dom, node) { + return !!getParentLi(dom, node); + }; + var getSplit = function (parentNode, rng) { + var beforeRng = rng.cloneRange(); + var afterRng = rng.cloneRange(); + beforeRng.setStartBefore(parentNode); + afterRng.setEndAfter(parentNode); + return [ + beforeRng.cloneContents(), + afterRng.cloneContents() + ]; + }; + var findFirstIn = function (node, rootNode) { + var caretPos = CaretPosition$1.before(node); + var caretWalker = CaretWalker(rootNode); + var newCaretPos = caretWalker.next(caretPos); + return newCaretPos ? newCaretPos.toRange() : null; + }; + var findLastOf = function (node, rootNode) { + var caretPos = CaretPosition$1.after(node); + var caretWalker = CaretWalker(rootNode); + var newCaretPos = caretWalker.prev(caretPos); + return newCaretPos ? newCaretPos.toRange() : null; + }; + var insertMiddle = function (target, elms, rootNode, rng) { + var parts = getSplit(target, rng); + var parentElm = target.parentNode; + parentElm.insertBefore(parts[0], target); + $_a5gegtjje5o2pum.each(elms, function (li) { + parentElm.insertBefore(li, target); + }); + parentElm.insertBefore(parts[1], target); + parentElm.removeChild(target); + return findLastOf(elms[elms.length - 1], rootNode); + }; + var insertBefore = function (target, elms, rootNode) { + var parentElm = target.parentNode; + $_a5gegtjje5o2pum.each(elms, function (elm) { + parentElm.insertBefore(elm, target); + }); + return findFirstIn(target, rootNode); + }; + var insertAfter = function (target, elms, rootNode, dom) { + dom.insertAfter(elms.reverse(), target); + return findLastOf(elms[0], rootNode); + }; + var insertAtCaret = function (serializer, dom, rng, fragment) { + var domFragment = toDomFragment(dom, serializer, fragment); + var liTarget = getParentLi(dom, rng.startContainer); + var liElms = trimListItems(listItems$1(domFragment.firstChild)); + var BEGINNING = 1, END = 2; + var rootNode = dom.getRoot(); + var isAt = function (location) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + var caretWalker = CaretWalker(dom.getRoot()); + var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos); + return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true; + }; + if (isAt(BEGINNING)) { + return insertBefore(liTarget, liElms, rootNode); + } else if (isAt(END)) { + return insertAfter(liTarget, liElms, rootNode, dom); + } + return insertMiddle(liTarget, liElms, rootNode, rng); + }; + var $_3j1y5o1xje5o2q4o = { + isListFragment: isListFragment, + insertAtCaret: insertAtCaret, + isParentBlockLi: isParentBlockLi, + trimListItems: trimListItems, + listItems: listItems$1 + }; + + var isText$7 = $_9owqcy1qje5o2q0e.isText; + var isBogus$1 = $_9owqcy1qje5o2q0e.isBogus; + var nodeIndex$2 = DOMUtils.nodeIndex; + var normalizedParent = function (node) { + var parentNode = node.parentNode; + if (isBogus$1(parentNode)) { + return normalizedParent(parentNode); + } + return parentNode; + }; + var getChildNodes = function (node) { + if (!node) { + return []; + } + return $_c2vc3pkje5o2puw.reduce(node.childNodes, function (result, node) { + if (isBogus$1(node) && node.nodeName !== 'BR') { + result = result.concat(getChildNodes(node)); + } else { + result.push(node); + } + return result; + }, []); + }; + var normalizedTextOffset = function (node, offset) { + while (node = node.previousSibling) { + if (!isText$7(node)) { + break; + } + offset += node.data.length; + } + return offset; + }; + var equal$1 = function (a) { + return function (b) { + return a === b; + }; + }; + var normalizedNodeIndex = function (node) { + var nodes, index, numTextFragments; + nodes = getChildNodes(normalizedParent(node)); + index = $_c2vc3pkje5o2puw.findIndex(nodes, equal$1(node), node); + nodes = nodes.slice(0, index + 1); + numTextFragments = $_c2vc3pkje5o2puw.reduce(nodes, function (result, node, i) { + if (isText$7(node) && isText$7(nodes[i - 1])) { + result++; + } + return result; + }, 0); + nodes = $_c2vc3pkje5o2puw.filter(nodes, $_9owqcy1qje5o2q0e.matchNodeNames(node.nodeName)); + index = $_c2vc3pkje5o2puw.findIndex(nodes, equal$1(node), node); + return index - numTextFragments; + }; + var createPathItem = function (node) { + var name; + if (isText$7(node)) { + name = 'text()'; + } else { + name = node.nodeName.toLowerCase(); + } + return name + '[' + normalizedNodeIndex(node) + ']'; + }; + var parentsUntil = function (root, node, predicate) { + var parents = []; + for (node = node.parentNode; node !== root; node = node.parentNode) { + if (predicate && predicate(node)) { + break; + } + parents.push(node); + } + return parents; + }; + var create$1 = function (root, caretPosition) { + var container, offset, path = [], outputOffset, childNodes, parents; + container = caretPosition.container(); + offset = caretPosition.offset(); + if (isText$7(container)) { + outputOffset = normalizedTextOffset(container, offset); + } else { + childNodes = container.childNodes; + if (offset >= childNodes.length) { + outputOffset = 'after'; + offset = childNodes.length - 1; + } else { + outputOffset = 'before'; + } + container = childNodes[offset]; + } + path.push(createPathItem(container)); + parents = parentsUntil(root, container); + parents = $_c2vc3pkje5o2puw.filter(parents, $_ghq3nq25je5o2q5q.negate($_9owqcy1qje5o2q0e.isBogus)); + path = path.concat($_c2vc3pkje5o2puw.map(parents, function (node) { + return createPathItem(node); + })); + return path.reverse().join('/') + ',' + outputOffset; + }; + var resolvePathItem = function (node, name, index) { + var nodes = getChildNodes(node); + nodes = $_c2vc3pkje5o2puw.filter(nodes, function (node, index) { + return !isText$7(node) || !isText$7(nodes[index - 1]); + }); + nodes = $_c2vc3pkje5o2puw.filter(nodes, $_9owqcy1qje5o2q0e.matchNodeNames(name)); + return nodes[index]; + }; + var findTextPosition = function (container, offset) { + var node = container, targetOffset = 0, dataLen; + while (isText$7(node)) { + dataLen = node.data.length; + if (offset >= targetOffset && offset <= targetOffset + dataLen) { + container = node; + offset = offset - targetOffset; + break; + } + if (!isText$7(node.nextSibling)) { + container = node; + offset = dataLen; + break; + } + targetOffset += dataLen; + node = node.nextSibling; + } + if (isText$7(container) && offset > container.data.length) { + offset = container.data.length; + } + return CaretPosition$1(container, offset); + }; + var resolve$2 = function (root, path) { + var parts, container, offset; + if (!path) { + return null; + } + parts = path.split(','); + path = parts[0].split('/'); + offset = parts.length > 1 ? parts[1] : 'before'; + container = $_c2vc3pkje5o2puw.reduce(path, function (result, value) { + value = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(value); + if (!value) { + return null; + } + if (value[1] === 'text()') { + value[1] = '#text'; + } + return resolvePathItem(result, value[1], parseInt(value[2], 10)); + }, root); + if (!container) { + return null; + } + if (!isText$7(container)) { + if (offset === 'after') { + offset = nodeIndex$2(container) + 1; + } else { + offset = nodeIndex$2(container); + } + return CaretPosition$1(container.parentNode, offset); + } + return findTextPosition(container, parseInt(offset, 10)); + }; + + var isContentEditableFalse$6 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var getNormalizedTextOffset = function (trim, container, offset) { + var node, trimmedOffset; + trimmedOffset = trim(container.data.slice(0, offset)).length; + for (node = container.previousSibling; node && $_9owqcy1qje5o2q0e.isText(node); node = node.previousSibling) { + trimmedOffset += trim(node.data).length; + } + return trimmedOffset; + }; + var getPoint = function (dom, trim, normalized, rng, start) { + var container = rng[start ? 'startContainer' : 'endContainer']; + var offset = rng[start ? 'startOffset' : 'endOffset']; + var point = []; + var childNodes, after = 0; + var root = dom.getRoot(); + if ($_9owqcy1qje5o2q0e.isText(container)) { + point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset); + } else { + childNodes = container.childNodes; + if (offset >= childNodes.length && childNodes.length) { + after = 1; + offset = Math.max(0, childNodes.length - 1); + } + point.push(dom.nodeIndex(childNodes[offset], normalized) + after); + } + for (; container && container !== root; container = container.parentNode) { + point.push(dom.nodeIndex(container, normalized)); + } + return point; + }; + var getLocation = function (trim, selection, normalized, rng) { + var dom = selection.dom, bookmark = {}; + bookmark.start = getPoint(dom, trim, normalized, rng, true); + if (!selection.isCollapsed()) { + bookmark.end = getPoint(dom, trim, normalized, rng, false); + } + return bookmark; + }; + var trimEmptyTextNode = function (node) { + if ($_9owqcy1qje5o2q0e.isText(node) && node.data.length === 0) { + node.parentNode.removeChild(node); + } + }; + var findIndex$3 = function (dom, name, element) { + var count = 0; + $_a5gegtjje5o2pum.each(dom.select(name), function (node) { + if (node.getAttribute('data-mce-bogus') === 'all') { + return; + } + if (node === element) { + return false; + } + count++; + }); + return count; + }; + var moveEndPoint = function (rng, start) { + var container, offset, childNodes; + var prefix = start ? 'start' : 'end'; + container = rng[prefix + 'Container']; + offset = rng[prefix + 'Offset']; + if ($_9owqcy1qje5o2q0e.isElement(container) && container.nodeName === 'TR') { + childNodes = container.childNodes; + container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)]; + if (container) { + offset = start ? 0 : container.childNodes.length; + rng['set' + (start ? 'Start' : 'End')](container, offset); + } + } + }; + var normalizeTableCellSelection = function (rng) { + moveEndPoint(rng, true); + moveEndPoint(rng, false); + return rng; + }; + var findSibling = function (node, offset) { + var sibling; + if ($_9owqcy1qje5o2q0e.isElement(node)) { + node = getNode(node, offset); + if (isContentEditableFalse$6(node)) { + return node; + } + } + if (isCaretContainer(node)) { + if ($_9owqcy1qje5o2q0e.isText(node) && isCaretContainerBlock(node)) { + node = node.parentNode; + } + sibling = node.previousSibling; + if (isContentEditableFalse$6(sibling)) { + return sibling; + } + sibling = node.nextSibling; + if (isContentEditableFalse$6(sibling)) { + return sibling; + } + } + }; + var findAdjacentContentEditableFalseElm = function (rng) { + return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset); + }; + var getOffsetBookmark = function (trim, normalized, selection) { + var element = selection.getNode(); + var name = element ? element.nodeName : null; + var rng = selection.getRng(); + if (isContentEditableFalse$6(element) || name === 'IMG') { + return { + name: name, + index: findIndex$3(selection.dom, name, element) + }; + } + element = findAdjacentContentEditableFalseElm(rng); + if (element) { + name = element.tagName; + return { + name: name, + index: findIndex$3(selection.dom, name, element) + }; + } + return getLocation(trim, selection, normalized, rng); + }; + var getCaretBookmark = function (selection) { + var rng = selection.getRng(); + return { + start: create$1(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)), + end: create$1(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng)) + }; + }; + var getRangeBookmark = function (selection) { + return { rng: selection.getRng() }; + }; + var getPersistentBookmark = function (selection) { + var dom = selection.dom; + var rng = selection.getRng(); + var id = dom.uniqueId(); + var collapsed = selection.isCollapsed(); + var styles = 'overflow:hidden;line-height:0px'; + var element = selection.getNode(); + var name = element.nodeName; + var chr = ''; + if (name === 'IMG') { + return { + name: name, + index: findIndex$3(dom, name, element) + }; + } + var rng2 = normalizeTableCellSelection(rng.cloneRange()); + if (!collapsed) { + rng2.collapse(false); + var endBookmarkNode = dom.create('span', { + 'data-mce-type': 'bookmark', + 'id': id + '_end', + 'style': styles + }, chr); + rng2.insertNode(endBookmarkNode); + trimEmptyTextNode(endBookmarkNode.nextSibling); + } + rng = normalizeTableCellSelection(rng); + rng.collapse(true); + var startBookmarkNode = dom.create('span', { + 'data-mce-type': 'bookmark', + 'id': id + '_start', + 'style': styles + }, chr); + rng.insertNode(startBookmarkNode); + trimEmptyTextNode(startBookmarkNode.previousSibling); + selection.moveToBookmark({ + id: id, + keep: 1 + }); + return { id: id }; + }; + var getBookmark = function (selection, type, normalized) { + if (type === 2) { + return getOffsetBookmark($_4md31c21je5o2q5f.trim, normalized, selection); + } else if (type === 3) { + return getCaretBookmark(selection); + } else if (type) { + return getRangeBookmark(selection); + } else { + return getPersistentBookmark(selection); + } + }; + var $_9eyzd52kje5o2q8r = { + getBookmark: getBookmark, + getUndoBookmark: $_enfhkv6je5o2ply.curry(getOffsetBookmark, $_enfhkv6je5o2ply.identity, true) + }; + + var addBogus = function (dom, node) { + if (dom.isBlock(node) && !node.innerHTML && !$_9bd8pn9je5o2pp2.ie) { + node.innerHTML = '<br data-mce-bogus="1" />'; + } + return node; + }; + var resolveCaretPositionBookmark = function (dom, bookmark) { + var rng, pos; + rng = dom.createRng(); + pos = resolve$2(dom.getRoot(), bookmark.start); + rng.setStart(pos.container(), pos.offset()); + pos = resolve$2(dom.getRoot(), bookmark.end); + rng.setEnd(pos.container(), pos.offset()); + return rng; + }; + var setEndPoint = function (dom, start, bookmark, rng) { + var point = bookmark[start ? 'start' : 'end']; + var i, node, offset, children; + var root = dom.getRoot(); + if (point) { + offset = point[0]; + for (node = root, i = point.length - 1; i >= 1; i--) { + children = node.childNodes; + if (point[i] > children.length - 1) { + return; + } + node = children[point[i]]; + } + if (node.nodeType === 3) { + offset = Math.min(point[0], node.nodeValue.length); + } + if (node.nodeType === 1) { + offset = Math.min(point[0], node.childNodes.length); + } + if (start) { + rng.setStart(node, offset); + } else { + rng.setEnd(node, offset); + } + } + return true; + }; + var restoreEndPoint = function (dom, suffix, bookmark) { + var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev; + var keep = bookmark.keep; + var container, offset; + if (marker) { + node = marker.parentNode; + if (suffix === 'start') { + if (!keep) { + idx = dom.nodeIndex(marker); + } else { + node = marker.firstChild; + idx = 1; + } + container = node; + offset = idx; + } else { + if (!keep) { + idx = dom.nodeIndex(marker); + } else { + node = marker.firstChild; + idx = 1; + } + container = node; + offset = idx; + } + if (!keep) { + prev = marker.previousSibling; + next = marker.nextSibling; + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.grep(marker.childNodes), function (node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + node.nodeValue = node.nodeValue.replace(/\uFEFF/g, ''); + } + }); + while (marker = dom.get(bookmark.id + '_' + suffix)) { + dom.remove(marker, 1); + } + if (prev && next && prev.nodeType === next.nodeType && $_9owqcy1qje5o2q0e.isText(prev) && !$_9bd8pn9je5o2pp2.opera) { + idx = prev.nodeValue.length; + prev.appendData(next.nodeValue); + dom.remove(next); + if (suffix === 'start') { + container = prev; + offset = idx; + } else { + container = prev; + offset = idx; + } + } + } + return Option.some(CaretPosition$1(container, offset)); + } else { + return Option.none(); + } + }; + var alt = function (o1, o2) { + return o1.isSome() ? o1 : o2; + }; + var resolvePaths = function (dom, bookmark) { + var rng = dom.createRng(); + if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) { + return Option.some(rng); + } else { + return Option.none(); + } + }; + var resolveId = function (dom, bookmark) { + var startPos = restoreEndPoint(dom, 'start', bookmark); + var endPos = restoreEndPoint(dom, 'end', bookmark); + return $_c8weyc2eje5o2q85.liftN([ + startPos, + alt(endPos, startPos) + ], function (spos, epos) { + var rng = dom.createRng(); + rng.setStart(addBogus(dom, spos.container()), spos.offset()); + rng.setEnd(addBogus(dom, epos.container()), epos.offset()); + return rng; + }); + }; + var resolveIndex$1 = function (dom, bookmark) { + return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) { + var rng = dom.createRng(); + rng.selectNode(elm); + return rng; + }); + }; + var resolve$3 = function (selection, bookmark) { + var dom = selection.dom; + if (bookmark) { + if ($_a5gegtjje5o2pum.isArray(bookmark.start)) { + return resolvePaths(dom, bookmark); + } else if (typeof bookmark.start === 'string') { + return Option.some(resolveCaretPositionBookmark(dom, bookmark)); + } else if (bookmark.id) { + return resolveId(dom, bookmark); + } else if (bookmark.name) { + return resolveIndex$1(dom, bookmark); + } else if (bookmark.rng) { + return Option.some(bookmark.rng); + } + } + return Option.none(); + }; + var $_eb5pra2mje5o2q9j = { resolve: resolve$3 }; + + var getBookmark$1 = function (selection, type, normalized) { + return $_9eyzd52kje5o2q8r.getBookmark(selection, type, normalized); + }; + var moveToBookmark = function (selection, bookmark) { + $_eb5pra2mje5o2q9j.resolve(selection, bookmark).each(function (rng) { + selection.setRng(rng); + }); + }; + var isBookmarkNode$1 = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark'; + }; + var $_83h91t2jje5o2q8n = { + getBookmark: getBookmark$1, + moveToBookmark: moveToBookmark, + isBookmarkNode: isBookmarkNode$1 + }; + + var each$8 = $_a5gegtjje5o2pum.each; + var ElementUtils = function (dom) { + this.compare = function (node1, node2) { + if (node1.nodeName !== node2.nodeName) { + return false; + } + var getAttribs = function (node) { + var attribs = {}; + each$8(dom.getAttribs(node), function (attr) { + var name = attr.nodeName.toLowerCase(); + if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) { + attribs[name] = dom.getAttrib(node, name); + } + }); + return attribs; + }; + var compareObjects = function (obj1, obj2) { + var value, name; + for (name in obj1) { + if (obj1.hasOwnProperty(name)) { + value = obj2[name]; + if (typeof value === 'undefined') { + return false; + } + if (obj1[name] !== value) { + return false; + } + delete obj2[name]; + } + } + for (name in obj2) { + if (obj2.hasOwnProperty(name)) { + return false; + } + } + return true; + }; + if (!compareObjects(getAttribs(node1), getAttribs(node2))) { + return false; + } + if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) { + return false; + } + return !$_83h91t2jje5o2q8n.isBookmarkNode(node1) && !$_83h91t2jje5o2q8n.isBookmarkNode(node2); + }; + }; + + var before$1 = function (marker, element) { + var parent = $_a6mttx17je5o2pyd.parent(marker); + parent.each(function (v) { + v.dom().insertBefore(element.dom(), marker.dom()); + }); + }; + var after$1 = function (marker, element) { + var sibling = $_a6mttx17je5o2pyd.nextSibling(marker); + sibling.fold(function () { + var parent = $_a6mttx17je5o2pyd.parent(marker); + parent.each(function (v) { + append(v, element); + }); + }, function (v) { + before$1(v, element); + }); + }; + var prepend = function (parent, element) { + var firstChild = $_a6mttx17je5o2pyd.firstChild(parent); + firstChild.fold(function () { + append(parent, element); + }, function (v) { + parent.dom().insertBefore(element.dom(), v.dom()); + }); + }; + var append = function (parent, element) { + parent.dom().appendChild(element.dom()); + }; + var appendAt = function (parent, element, index) { + $_a6mttx17je5o2pyd.child(parent, index).fold(function () { + append(parent, element); + }, function (v) { + before$1(v, element); + }); + }; + var wrap$1 = function (element, wrapper) { + before$1(element, wrapper); + append(wrapper, element); + }; + var $_elbl2s2oje5o2q9z = { + before: before$1, + after: after$1, + prepend: prepend, + append: append, + appendAt: appendAt, + wrap: wrap$1 + }; + + var before$2 = function (marker, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x) { + $_elbl2s2oje5o2q9z.before(marker, x); + }); + }; + var after$2 = function (marker, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x, i) { + var e = i === 0 ? marker : elements[i - 1]; + $_elbl2s2oje5o2q9z.after(e, x); + }); + }; + var prepend$1 = function (parent, elements) { + $_bwcteb4je5o2pl4.each(elements.slice().reverse(), function (x) { + $_elbl2s2oje5o2q9z.prepend(parent, x); + }); + }; + var append$1 = function (parent, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x) { + $_elbl2s2oje5o2q9z.append(parent, x); + }); + }; + var $_93ro7k2qje5o2qa4 = { + before: before$2, + after: after$2, + prepend: prepend$1, + append: append$1 + }; + + var empty = function (element) { + element.dom().textContent = ''; + $_bwcteb4je5o2pl4.each($_a6mttx17je5o2pyd.children(element), function (rogue) { + remove$3(rogue); + }); + }; + var remove$3 = function (element) { + var dom = element.dom(); + if (dom.parentNode !== null) + dom.parentNode.removeChild(dom); + }; + var unwrap = function (wrapper) { + var children = $_a6mttx17je5o2pyd.children(wrapper); + if (children.length > 0) + $_93ro7k2qje5o2qa4.before(wrapper, children); + remove$3(wrapper); + }; + var $_cr1seh2pje5o2qa1 = { + empty: empty, + remove: remove$3, + unwrap: unwrap + }; + + function NodeValue (is, name) { + var get = function (element) { + if (!is(element)) + throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + return getOption(element).getOr(''); + }; + var getOptionIE10 = function (element) { + try { + return getOptionSafe(element); + } catch (e) { + return Option.none(); + } + }; + var getOptionSafe = function (element) { + return is(element) ? Option.from(element.dom().nodeValue) : Option.none(); + }; + var browser = $_2hq237mje5o2pvu.detect().browser; + var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe; + var set = function (element, value) { + if (!is(element)) + throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + element.dom().nodeValue = value; + }; + return { + get: get, + getOption: getOption, + set: set + }; + } + + var api = NodeValue($_95wn8qzje5o2px0.isText, 'text'); + var get$2 = function (element) { + return api.get(element); + }; + var getOption = function (element) { + return api.getOption(element); + }; + var set$2 = function (element, value) { + api.set(element, value); + }; + var $_3600ts2rje5o2qa7 = { + get: get$2, + getOption: getOption, + set: set$2 + }; + + var getLastChildren = function (elm) { + var children = []; + var rawNode = elm.dom(); + while (rawNode) { + children.push($_5tcb2dyje5o2pwu.fromDom(rawNode)); + rawNode = rawNode.lastChild; + } + return children; + }; + var removeTrailingBr = function (elm) { + var allBrs = $_b4jhpu2gje5o2q8e.descendants(elm, 'br'); + var brs = $_bwcteb4je5o2pl4.filter(getLastChildren(elm).slice(-1), isBr); + if (allBrs.length === brs.length) { + $_bwcteb4je5o2pl4.each(brs, $_cr1seh2pje5o2qa1.remove); + } + }; + var fillWithPaddingBr = function (elm) { + $_cr1seh2pje5o2qa1.empty(elm); + $_elbl2s2oje5o2q9z.append(elm, $_5tcb2dyje5o2pwu.fromHtml('<br data-mce-bogus="1">')); + }; + var isPaddingContents = function (elm) { + return $_95wn8qzje5o2px0.isText(elm) ? $_3600ts2rje5o2qa7.get(elm) === '\xA0' : isBr(elm); + }; + var isPaddedElement = function (elm) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.children(elm), isPaddingContents).length === 1; + }; + var trimBlockTrailingBr = function (elm) { + $_a6mttx17je5o2pyd.lastChild(elm).each(function (lastChild) { + $_a6mttx17je5o2pyd.prevSibling(lastChild).each(function (lastChildPrevSibling) { + if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) { + $_cr1seh2pje5o2qa1.remove(lastChild); + } + }); + }); + }; + var $_4kbg8z2nje5o2q9s = { + removeTrailingBr: removeTrailingBr, + fillWithPaddingBr: fillWithPaddingBr, + isPaddedElement: isPaddedElement, + trimBlockTrailingBr: trimBlockTrailingBr + }; + + var makeMap$3 = $_a5gegtjje5o2pum.makeMap; + function Writer (settings) { + var html = []; + var indent, indentBefore, indentAfter, encode, htmlOutput; + settings = settings || {}; + indent = settings.indent; + indentBefore = makeMap$3(settings.indent_before || ''); + indentAfter = makeMap$3(settings.indent_after || ''); + encode = $_fzh4ld1rje5o2q0t.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities); + htmlOutput = settings.element_format === 'html'; + return { + start: function (name, attrs, empty) { + var i, l, attr, value; + if (indent && indentBefore[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + html.push('<', name); + if (attrs) { + for (i = 0, l = attrs.length; i < l; i++) { + attr = attrs[i]; + html.push(' ', attr.name, '="', encode(attr.value, true), '"'); + } + } + if (!empty || htmlOutput) { + html[html.length] = '>'; + } else { + html[html.length] = ' />'; + } + if (empty && indent && indentAfter[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + }, + end: function (name) { + var value; + html.push('</', name, '>'); + if (indent && indentAfter[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + }, + text: function (text, raw) { + if (text.length > 0) { + html[html.length] = raw ? text : encode(text); + } + }, + cdata: function (text) { + html.push('<![CDATA[', text, ']]>'); + }, + comment: function (text) { + html.push('<!--', text, '-->'); + }, + pi: function (name, text) { + if (text) { + html.push('<?', name, ' ', encode(text), '?>'); + } else { + html.push('<?', name, '?>'); + } + if (indent) { + html.push('\n'); + } + }, + doctype: function (text) { + html.push('<!DOCTYPE', text, '>', indent ? '\n' : ''); + }, + reset: function () { + html.length = 0; + }, + getContent: function () { + return html.join('').replace(/\n$/, ''); + } + }; + } + + function HtmlSerializer (settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var writer = Writer(settings); + settings = settings || {}; + settings.validate = 'validate' in settings ? settings.validate : true; + var serialize = function (node) { + var handlers, validate; + validate = settings.validate; + handlers = { + 3: function (node) { + writer.text(node.value, node.raw); + }, + 8: function (node) { + writer.comment(node.value); + }, + 7: function (node) { + writer.pi(node.name, node.value); + }, + 10: function (node) { + writer.doctype(node.value); + }, + 4: function (node) { + writer.cdata(node.value); + }, + 11: function (node) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + } + }; + writer.reset(); + var walk = function (node) { + var handler = handlers[node.type]; + var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule; + if (!handler) { + name = node.name; + isEmpty = node.shortEnded; + attrs = node.attributes; + if (validate && attrs && attrs.length > 1) { + sortedAttrs = []; + sortedAttrs.map = {}; + elementRule = schema.getElementRule(node.name); + if (elementRule) { + for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) { + attrName = elementRule.attributesOrder[i]; + if (attrName in attrs.map) { + attrValue = attrs.map[attrName]; + sortedAttrs.map[attrName] = attrValue; + sortedAttrs.push({ + name: attrName, + value: attrValue + }); + } + } + for (i = 0, l = attrs.length; i < l; i++) { + attrName = attrs[i].name; + if (!(attrName in sortedAttrs.map)) { + attrValue = attrs.map[attrName]; + sortedAttrs.map[attrName] = attrValue; + sortedAttrs.push({ + name: attrName, + value: attrValue + }); + } + } + attrs = sortedAttrs; + } + } + writer.start(node.name, attrs, isEmpty); + if (!isEmpty) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + writer.end(name); + } + } else { + handler(node); + } + }; + if (node.type === 1 && !settings.inner) { + walk(node); + } else { + handlers[11](node); + } + return writer.getContent(); + }; + return { serialize: serialize }; + } + + var createRange$1 = function (sc, so, ec, eo) { + var rng = document.createRange(); + rng.setStart(sc, so); + rng.setEnd(ec, eo); + return rng; + }; + var normalizeBlockSelectionRange = function (rng) { + var startPos = CaretPosition$1.fromRangeStart(rng); + var endPos = CaretPosition$1.fromRangeEnd(rng); + var rootNode = rng.commonAncestorContainer; + return $_g2kzjo2bje5o2q7n.fromPosition(false, rootNode, endPos).map(function (newEndPos) { + if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) { + return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset()); + } else { + return rng; + } + }).getOr(rng); + }; + var normalizeBlockSelection = function (rng) { + return rng.collapsed ? rng : normalizeBlockSelectionRange(rng); + }; + var normalize = function (rng) { + return normalizeBlockSelection(rng); + }; + var $_8xjhg22vje5o2qak = { normalize: normalize }; + + var isTableCell$2 = $_9owqcy1qje5o2q0e.matchNodeNames('td th'); + var validInsertion = function (editor, value, parentNode) { + if (parentNode.getAttribute('data-mce-bogus') === 'all') { + parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode); + } else { + var node = parentNode.firstChild; + var node2 = parentNode.lastChild; + if (!node || node === node2 && node.nodeName === 'BR') { + editor.dom.setHTML(parentNode, value); + } else { + editor.selection.setContent(value); + } + } + }; + var trimBrsFromTableCell = function (dom, elm) { + Option.from(dom.getParent(elm, 'td,th')).map($_5tcb2dyje5o2pwu.fromDom).each($_4kbg8z2nje5o2q9s.trimBlockTrailingBr); + }; + var insertHtmlAtCaret = function (editor, value, details) { + var parser, serializer, parentNode, rootNode, fragment, args; + var marker, rng, node, node2, bookmarkHtml, merge; + var textInlineElements = editor.schema.getTextInlineElements(); + var selection = editor.selection, dom = editor.dom; + var trimOrPaddLeftRight = function (html) { + var rng, container, offset; + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + var hasSiblingText = function (siblingName) { + return container[siblingName] && container[siblingName].nodeType === 3; + }; + if (container.nodeType === 3) { + if (offset > 0) { + html = html.replace(/^ /, ' '); + } else if (!hasSiblingText('previousSibling')) { + html = html.replace(/^ /, ' '); + } + if (offset < container.length) { + html = html.replace(/ (<br>|)$/, ' '); + } else if (!hasSiblingText('nextSibling')) { + html = html.replace(/( | )(<br>|)$/, ' '); + } + } + return html; + }; + var trimNbspAfterDeleteAndPaddValue = function () { + var rng, container, offset; + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + if (container.nodeType === 3 && rng.collapsed) { + if (container.data[offset] === '\xA0') { + container.deleteData(offset, 1); + if (!/[\u00a0| ]$/.test(value)) { + value += ' '; + } + } else if (container.data[offset - 1] === '\xA0') { + container.deleteData(offset - 1, 1); + if (!/[\u00a0| ]$/.test(value)) { + value = ' ' + value; + } + } + } + }; + var reduceInlineTextElements = function () { + if (merge) { + var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom); + $_a5gegtjje5o2pum.each(dom.select('*[data-mce-fragment]'), function (node) { + for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) { + if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) { + dom.remove(node, true); + } + } + }); + } + }; + var markFragmentElements = function (fragment) { + var node = fragment; + while (node = node.walk()) { + if (node.type === 1) { + node.attr('data-mce-fragment', '1'); + } + } + }; + var umarkFragmentElements = function (elm) { + $_a5gegtjje5o2pum.each(elm.getElementsByTagName('*'), function (elm) { + elm.removeAttribute('data-mce-fragment'); + }); + }; + var isPartOfFragment = function (node) { + return !!node.getAttribute('data-mce-fragment'); + }; + var canHaveChildren = function (node) { + return node && !editor.schema.getShortEndedElements()[node.nodeName]; + }; + var moveSelectionToMarker = function (marker) { + var parentEditableFalseElm, parentBlock, nextRng; + var getContentEditableFalseParent = function (node) { + var root = editor.getBody(); + for (; node && node !== root; node = node.parentNode) { + if (editor.dom.getContentEditable(node) === 'false') { + return node; + } + } + return null; + }; + if (!marker) { + return; + } + selection.scrollIntoView(marker); + parentEditableFalseElm = getContentEditableFalseParent(marker); + if (parentEditableFalseElm) { + dom.remove(marker); + selection.select(parentEditableFalseElm); + return; + } + rng = dom.createRng(); + node = marker.previousSibling; + if (node && node.nodeType === 3) { + rng.setStart(node, node.nodeValue.length); + if (!$_9bd8pn9je5o2pp2.ie) { + node2 = marker.nextSibling; + if (node2 && node2.nodeType === 3) { + node.appendData(node2.data); + node2.parentNode.removeChild(node2); + } + } + } else { + rng.setStartBefore(marker); + rng.setEndBefore(marker); + } + var findNextCaretRng = function (rng) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + var caretWalker = CaretWalker(editor.getBody()); + caretPos = caretWalker.next(caretPos); + if (caretPos) { + return caretPos.toRange(); + } + }; + parentBlock = dom.getParent(marker, dom.isBlock); + dom.remove(marker); + if (parentBlock && dom.isEmpty(parentBlock)) { + editor.$(parentBlock).empty(); + rng.setStart(parentBlock, 0); + rng.setEnd(parentBlock, 0); + if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) { + rng = nextRng; + dom.remove(parentBlock); + } else { + dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' })); + } + } + selection.setRng(rng); + }; + if (/^ | $/.test(value)) { + value = trimOrPaddLeftRight(value); + } + parser = editor.parser; + merge = details.merge; + serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema); + bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">​</span>'; + args = { + content: value, + format: 'html', + selection: true, + paste: details.paste + }; + args = editor.fire('BeforeSetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('SetContent', { + content: args.content, + format: 'html', + selection: true, + paste: details.paste + }); + return; + } + value = args.content; + if (value.indexOf('{$caret}') === -1) { + value += '{$caret}'; + } + value = value.replace(/\{\$caret\}/, bookmarkHtml); + rng = selection.getRng(); + var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null); + var body = editor.getBody(); + if (caretElement === body && selection.isCollapsed()) { + if (dom.isBlock(body.firstChild) && canHaveChildren(body.firstChild) && dom.isEmpty(body.firstChild)) { + rng = dom.createRng(); + rng.setStart(body.firstChild, 0); + rng.setEnd(body.firstChild, 0); + selection.setRng(rng); + } + } + if (!selection.isCollapsed()) { + editor.selection.setRng($_8xjhg22vje5o2qak.normalize(editor.selection.getRng())); + editor.getDoc().execCommand('Delete', false, null); + trimNbspAfterDeleteAndPaddValue(); + } + parentNode = selection.getNode(); + var parserArgs = { + context: parentNode.nodeName.toLowerCase(), + data: details.data, + insert: true + }; + fragment = parser.parse(value, parserArgs); + if (details.paste === true && $_3j1y5o1xje5o2q4o.isListFragment(editor.schema, fragment) && $_3j1y5o1xje5o2q4o.isParentBlockLi(dom, parentNode)) { + rng = $_3j1y5o1xje5o2q4o.insertAtCaret(serializer, dom, editor.selection.getRng(true), fragment); + editor.selection.setRng(rng); + editor.fire('SetContent', args); + return; + } + markFragmentElements(fragment); + node = fragment.lastChild; + if (node.attr('id') === 'mce_marker') { + marker = node; + for (node = node.prev; node; node = node.walk(true)) { + if (node.type === 3 || !dom.isBlock(node.name)) { + if (editor.schema.isValidChild(node.parent.name, 'span')) { + node.parent.insert(marker, node, node.name === 'br'); + } + break; + } + } + } + editor._selectionOverrides.showBlockCaretContainer(parentNode); + if (!parserArgs.invalid) { + value = serializer.serialize(fragment); + validInsertion(editor, value, parentNode); + } else { + selection.setContent(bookmarkHtml); + parentNode = selection.getNode(); + rootNode = editor.getBody(); + if (parentNode.nodeType === 9) { + parentNode = node = rootNode; + } else { + node = parentNode; + } + while (node !== rootNode) { + parentNode = node; + node = node.parentNode; + } + value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode); + value = serializer.serialize(parser.parse(value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function () { + return serializer.serialize(fragment); + }))); + if (parentNode === rootNode) { + dom.setHTML(rootNode, value); + } else { + dom.setOuterHTML(parentNode, value); + } + } + reduceInlineTextElements(); + moveSelectionToMarker(dom.get('mce_marker')); + umarkFragmentElements(editor.getBody()); + trimBrsFromTableCell(editor.dom, editor.selection.getStart()); + editor.fire('SetContent', args); + editor.addVisual(); + }; + var processValue = function (value) { + var details; + if (typeof value !== 'string') { + details = $_a5gegtjje5o2pum.extend({ + paste: value.paste, + data: { paste: value.paste } + }, value); + return { + content: value.content, + details: details + }; + } + return { + content: value, + details: {} + }; + }; + var insertAtCaret$1 = function (editor, value) { + var result = processValue(value); + insertHtmlAtCaret(editor, result.content, result.details); + }; + var $_d42uuu1wje5o2q4b = { insertAtCaret: insertAtCaret$1 }; + + function ClosestOrAncestor (is, ancestor, scope, a, isRoot) { + return is(scope, a) ? Option.some(scope) : $_be3q8w12je5o2pxj.isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot); + } + + var first$1 = function (predicate) { + return descendant($_484buq15je5o2py8.body(), predicate); + }; + var ancestor = function (scope, predicate, isRoot) { + var element = scope.dom(); + var stop = $_be3q8w12je5o2pxj.isFunction(isRoot) ? isRoot : $_enfhkv6je5o2ply.constant(false); + while (element.parentNode) { + element = element.parentNode; + var el = $_5tcb2dyje5o2pwu.fromDom(element); + if (predicate(el)) + return Option.some(el); + else if (stop(el)) + break; + } + return Option.none(); + }; + var closest = function (scope, predicate, isRoot) { + var is = function (scope) { + return predicate(scope); + }; + return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot); + }; + var sibling$1 = function (scope, predicate) { + var element = scope.dom(); + if (!element.parentNode) + return Option.none(); + return child$1($_5tcb2dyje5o2pwu.fromDom(element.parentNode), function (x) { + return !$_7oppmo1dje5o2pz1.eq(scope, x) && predicate(x); + }); + }; + var child$1 = function (scope, predicate) { + var result = $_bwcteb4je5o2pl4.find(scope.dom().childNodes, $_enfhkv6je5o2ply.compose(predicate, $_5tcb2dyje5o2pwu.fromDom)); + return result.map($_5tcb2dyje5o2pwu.fromDom); + }; + var descendant = function (scope, predicate) { + var descend = function (element) { + for (var i = 0; i < element.childNodes.length; i++) { + if (predicate($_5tcb2dyje5o2pwu.fromDom(element.childNodes[i]))) + return Option.some($_5tcb2dyje5o2pwu.fromDom(element.childNodes[i])); + var res = descend(element.childNodes[i]); + if (res.isSome()) + return res; + } + return Option.none(); + }; + return descend(scope.dom()); + }; + var $_au2qfe30je5o2qb4 = { + first: first$1, + ancestor: ancestor, + closest: closest, + sibling: sibling$1, + child: child$1, + descendant: descendant + }; + + var sectionResult = $_86drv18je5o2pyn.immutable('sections', 'settings'); + var detection = $_2hq237mje5o2pvu.detect(); + var isTouch = detection.deviceType.isTouch(); + var mobilePlugins = [ + 'lists', + 'autolink', + 'autosave' + ]; + var defaultMobileSettings = { theme: 'mobile' }; + var normalizePlugins = function (plugins) { + var pluginNames = $_be3q8w12je5o2pxj.isArray(plugins) ? plugins.join(' ') : plugins; + var trimmedPlugins = $_bwcteb4je5o2pl4.map($_be3q8w12je5o2pxj.isString(pluginNames) ? pluginNames.split(' ') : [], $_6dh61xvje5o2pwo.trim); + return $_bwcteb4je5o2pl4.filter(trimmedPlugins, function (item) { + return item.length > 0; + }); + }; + var filterMobilePlugins = function (plugins) { + return $_bwcteb4je5o2pl4.filter(plugins, $_enfhkv6je5o2ply.curry($_bwcteb4je5o2pl4.contains, mobilePlugins)); + }; + var extractSections = function (keys, settings) { + var result = $_8v44sy13je5o2pxm.bifilter(settings, function (value, key) { + return $_bwcteb4je5o2pl4.contains(keys, key); + }); + return sectionResult(result.t, result.f); + }; + var getSection = function (sectionResult, name, defaults) { + var sections = sectionResult.sections(); + var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {}; + return $_a5gegtjje5o2pum.extend({}, defaults, sectionSettings); + }; + var hasSection = function (sectionResult, name) { + return sectionResult.sections().hasOwnProperty(name); + }; + var getDefaultSettings = function (id, documentBaseUrl, editor) { + return { + id: id, + theme: 'modern', + delta_width: 0, + delta_height: 0, + popup_css: '', + plugins: '', + document_base_url: documentBaseUrl, + add_form_submit_trigger: true, + submit_patch: true, + add_unload_trigger: true, + convert_urls: true, + relative_urls: true, + remove_script_host: true, + object_resizing: true, + doctype: '<!DOCTYPE html>', + visual: true, + font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large', + font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%', + forced_root_block: 'p', + hidden_input: true, + padd_empty_editor: true, + render_ui: true, + indentation: '30px', + inline_styles: true, + convert_fonts_to_spans: true, + indent: 'simple', + indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', + indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', + entity_encoding: 'named', + url_converter: editor.convertURL, + url_converter_scope: editor, + ie7_compat: true + }; + }; + var getExternalPlugins = function (overrideSettings, settings) { + var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {}; + if (overrideSettings && overrideSettings.external_plugins) { + return $_a5gegtjje5o2pum.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins); + } else { + return userDefinedExternalPlugins; + } + }; + var combinePlugins = function (forcedPlugins, plugins) { + return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins)); + }; + var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) { + var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins); + var plugins = normalizePlugins(settings.plugins); + var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins; + var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins); + return $_a5gegtjje5o2pum.extend(settings, { plugins: combinedPlugins.join(' ') }); + }; + var isOnMobile = function (isTouchDevice, sectionResult) { + var isInline = sectionResult.settings().inline; + return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline; + }; + var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) { + var sectionResult = extractSections(['mobile'], settings); + var extendedSettings = $_a5gegtjje5o2pum.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, { + validate: true, + content_editable: sectionResult.settings().inline, + external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings()) + }); + return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings); + }; + var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) { + var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor); + return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings); + }; + var getFiltered = function (predicate, editor, name) { + return Option.from(editor.settings[name]).filter(predicate); + }; + var getString = $_enfhkv6je5o2ply.curry(getFiltered, $_be3q8w12je5o2pxj.isString); + var getParamObject = function (value) { + var output = {}; + if (typeof value === 'string') { + $_bwcteb4je5o2pl4.each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (value) { + value = value.split('='); + if (value.length > 1) { + output[$_a5gegtjje5o2pum.trim(value[0])] = $_a5gegtjje5o2pum.trim(value[1]); + } else { + output[$_a5gegtjje5o2pum.trim(value[0])] = $_a5gegtjje5o2pum.trim(value); + } + }); + } else { + output = value; + } + return output; + }; + var getParam = function (editor, name, defaultVal, type) { + var value = name in editor.settings ? editor.settings[name] : defaultVal; + if (type === 'hash') { + return getParamObject(value); + } else if (type === 'string') { + return getFiltered($_be3q8w12je5o2pxj.isString, editor, name).getOr(defaultVal); + } else if (type === 'number') { + return getFiltered($_be3q8w12je5o2pxj.isNumber, editor, name).getOr(defaultVal); + } else if (type === 'boolean') { + return getFiltered($_be3q8w12je5o2pxj.isBoolean, editor, name).getOr(defaultVal); + } else if (type === 'object') { + return getFiltered($_be3q8w12je5o2pxj.isObject, editor, name).getOr(defaultVal); + } else if (type === 'array') { + return getFiltered($_be3q8w12je5o2pxj.isArray, editor, name).getOr(defaultVal); + } else if (type === 'function') { + return getFiltered($_be3q8w12je5o2pxj.isFunction, editor, name).getOr(defaultVal); + } else { + return value; + } + }; + + var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/; + var hasStrongRtl = function (text) { + return strongRtl.test(text); + }; + + var isInlineTarget = function (editor, elm) { + var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code'); + return $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(elm), selector); + }; + var isRtl = function (element) { + return DOMUtils.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent); + }; + var findInlineParents = function (isInlineTarget, rootNode, pos) { + return $_bwcteb4je5o2pl4.filter(DOMUtils.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget); + }; + var findRootInline = function (isInlineTarget, rootNode, pos) { + var parents = findInlineParents(isInlineTarget, rootNode, pos); + return Option.from(parents[parents.length - 1]); + }; + var hasSameParentBlock = function (rootNode, node1, node2) { + var block1 = getParentBlock(node1, rootNode); + var block2 = getParentBlock(node2, rootNode); + return block1 && block1 === block2; + }; + var isAtZwsp = function (pos) { + return isBeforeInline(pos) || isAfterInline(pos); + }; + var normalizePosition = function (forward, pos) { + var container = pos.container(), offset = pos.offset(); + if (forward) { + if (isCaretContainerInline(container)) { + if ($_9owqcy1qje5o2q0e.isText(container.nextSibling)) { + return CaretPosition$1(container.nextSibling, 0); + } else { + return CaretPosition$1.after(container); + } + } else { + return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos; + } + } else { + if (isCaretContainerInline(container)) { + if ($_9owqcy1qje5o2q0e.isText(container.previousSibling)) { + return CaretPosition$1(container.previousSibling, container.previousSibling.data.length); + } else { + return CaretPosition$1.before(container); + } + } else { + return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos; + } + } + }; + var normalizeForwards = $_enfhkv6je5o2ply.curry(normalizePosition, true); + var normalizeBackwards = $_enfhkv6je5o2ply.curry(normalizePosition, false); + var $_6skw9732je5o2qbp = { + isInlineTarget: isInlineTarget, + findRootInline: findRootInline, + isRtl: isRtl, + isAtZwsp: isAtZwsp, + normalizePosition: normalizePosition, + normalizeForwards: normalizeForwards, + normalizeBackwards: normalizeBackwards, + hasSameParentBlock: hasSameParentBlock + }; + + var isBeforeRoot = function (rootNode) { + return function (elm) { + return $_7oppmo1dje5o2pz1.eq(rootNode, $_5tcb2dyje5o2pwu.fromDom(elm.dom().parentNode)); + }; + }; + var getParentBlock$1 = function (rootNode, elm) { + return $_7oppmo1dje5o2pz1.contains(rootNode, elm) ? $_au2qfe30je5o2qb4.closest(elm, function (element) { + return isTextBlock(element) || isListItem(element); + }, isBeforeRoot(rootNode)) : Option.none(); + }; + var placeCaretInEmptyBody = function (editor) { + var body = editor.getBody(); + var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body; + editor.selection.setCursorLocation(node, 0); + }; + var paddEmptyBody = function (editor) { + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + placeCaretInEmptyBody(editor); + } + }; + var willDeleteLastPositionInElement = function (forward, fromPos, elm) { + return $_c8weyc2eje5o2q85.liftN([ + $_g2kzjo2bje5o2q7n.firstPositionIn(elm), + $_g2kzjo2bje5o2q7n.lastPositionIn(elm) + ], function (firstPos, lastPos) { + var normalizedFirstPos = $_6skw9732je5o2qbp.normalizePosition(true, firstPos); + var normalizedLastPos = $_6skw9732je5o2qbp.normalizePosition(false, lastPos); + var normalizedFromPos = $_6skw9732je5o2qbp.normalizePosition(false, fromPos); + if (forward) { + return $_g2kzjo2bje5o2q7n.nextPosition(elm, normalizedFromPos).map(function (nextPos) { + return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos); + }).getOr(false); + } else { + return $_g2kzjo2bje5o2q7n.prevPosition(elm, normalizedFromPos).map(function (prevPos) { + return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos); + }).getOr(false); + } + }).getOr(true); + }; + var $_7twey62zje5o2qay = { + getParentBlock: getParentBlock$1, + paddEmptyBody: paddEmptyBody, + willDeleteLastPositionInElement: willDeleteLastPositionInElement + }; + + var first$2 = function (selector) { + return $_87zu5k1fje5o2pz9.one(selector); + }; + var ancestor$1 = function (scope, selector, isRoot) { + return $_au2qfe30je5o2qb4.ancestor(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }, isRoot); + }; + var sibling$2 = function (scope, selector) { + return $_au2qfe30je5o2qb4.sibling(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var child$2 = function (scope, selector) { + return $_au2qfe30je5o2qb4.child(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var descendant$1 = function (scope, selector) { + return $_87zu5k1fje5o2pz9.one(selector, scope); + }; + var closest$1 = function (scope, selector, isRoot) { + return ClosestOrAncestor($_87zu5k1fje5o2pz9.is, ancestor$1, scope, selector, isRoot); + }; + var $_9fzewc37je5o2qck = { + first: first$2, + ancestor: ancestor$1, + sibling: sibling$2, + child: child$2, + descendant: descendant$1, + closest: closest$1 + }; + + var any = function (selector) { + return $_9fzewc37je5o2qck.first(selector).isSome(); + }; + var ancestor$2 = function (scope, selector, isRoot) { + return $_9fzewc37je5o2qck.ancestor(scope, selector, isRoot).isSome(); + }; + var sibling$3 = function (scope, selector) { + return $_9fzewc37je5o2qck.sibling(scope, selector).isSome(); + }; + var child$3 = function (scope, selector) { + return $_9fzewc37je5o2qck.child(scope, selector).isSome(); + }; + var descendant$2 = function (scope, selector) { + return $_9fzewc37je5o2qck.descendant(scope, selector).isSome(); + }; + var closest$2 = function (scope, selector, isRoot) { + return $_9fzewc37je5o2qck.closest(scope, selector, isRoot).isSome(); + }; + var $_9o2t0k36je5o2qci = { + any: any, + ancestor: ancestor$2, + sibling: sibling$3, + child: child$3, + descendant: descendant$2, + closest: closest$2 + }; + + var hasWhitespacePreserveParent = function (rootNode, node) { + var rootElement = $_5tcb2dyje5o2pwu.fromDom(rootNode); + var startNode = $_5tcb2dyje5o2pwu.fromDom(node); + return $_9o2t0k36je5o2qci.ancestor(startNode, 'pre,code', $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, rootElement)); + }; + var isWhitespace = function (rootNode, node) { + return $_9owqcy1qje5o2q0e.isText(node) && /^[ \t\r\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false; + }; + var isNamedAnchor = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name'); + }; + var isContent = function (rootNode, node) { + return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node); + }; + var isBookmark = $_9owqcy1qje5o2q0e.hasAttribute('data-mce-bookmark'); + var isBogus$2 = $_9owqcy1qje5o2q0e.hasAttribute('data-mce-bogus'); + var isBogusAll$1 = $_9owqcy1qje5o2q0e.hasAttributeValue('data-mce-bogus', 'all'); + var isEmptyNode = function (targetNode) { + var walker, node, brCount = 0; + if (isContent(targetNode, targetNode)) { + return false; + } else { + node = targetNode.firstChild; + if (!node) { + return true; + } + walker = new TreeWalker(node, targetNode); + do { + if (isBogusAll$1(node)) { + node = walker.next(true); + continue; + } + if (isBogus$2(node)) { + node = walker.next(); + continue; + } + if ($_9owqcy1qje5o2q0e.isBr(node)) { + brCount++; + node = walker.next(); + continue; + } + if (isContent(targetNode, node)) { + return false; + } + node = walker.next(); + } while (node); + return brCount <= 1; + } + }; + var isEmpty = function (elm) { + return isEmptyNode(elm.dom()); + }; + var $_dizx5c35je5o2qcb = { isEmpty: isEmpty }; + + var BlockPosition = $_86drv18je5o2pyn.immutable('block', 'position'); + var BlockBoundary = $_86drv18je5o2pyn.immutable('from', 'to'); + var getBlockPosition = function (rootNode, pos) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(rootNode); + var containerElm = $_5tcb2dyje5o2pwu.fromDom(pos.container()); + return $_7twey62zje5o2qay.getParentBlock(rootElm, containerElm).map(function (block) { + return BlockPosition(block, pos); + }); + }; + var isDifferentBlocks = function (blockBoundary) { + return $_7oppmo1dje5o2pz1.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false; + }; + var hasSameParent = function (blockBoundary) { + return $_a6mttx17je5o2pyd.parent(blockBoundary.from().block()).bind(function (parent1) { + return $_a6mttx17je5o2pyd.parent(blockBoundary.to().block()).filter(function (parent2) { + return $_7oppmo1dje5o2pz1.eq(parent1, parent2); + }); + }).isSome(); + }; + var isEditable = function (blockBoundary) { + return $_9owqcy1qje5o2q0e.isContentEditableFalse(blockBoundary.from().block()) === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(blockBoundary.to().block()) === false; + }; + var skipLastBr = function (rootNode, forward, blockPosition) { + if ($_9owqcy1qje5o2q0e.isBr(blockPosition.position().getNode()) && $_dizx5c35je5o2qcb.isEmpty(blockPosition.block()) === false) { + return $_g2kzjo2bje5o2q7n.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) { + if (lastPositionInBlock.isEqual(blockPosition.position())) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) { + return getBlockPosition(rootNode, to); + }); + } else { + return Option.some(blockPosition); + } + }).getOr(blockPosition); + } else { + return blockPosition; + } + }; + var readFromRange = function (rootNode, forward, rng) { + var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng)); + var toBlockPos = fromBlockPos.bind(function (blockPos) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) { + return getBlockPosition(rootNode, to).map(function (blockPos) { + return skipLastBr(rootNode, forward, blockPos); + }); + }); + }); + return $_c8weyc2eje5o2q85.liftN([ + fromBlockPos, + toBlockPos + ], BlockBoundary).filter(function (blockBoundary) { + return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary); + }); + }; + var read = function (rootNode, forward, rng) { + return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none(); + }; + var $_8rdvj02yje5o2qar = { read: read }; + + var dropLast = function (xs) { + return xs.slice(0, -1); + }; + var parentsUntil$1 = function (startNode, rootElm, predicate) { + if ($_7oppmo1dje5o2pz1.contains(rootElm, startNode)) { + return dropLast($_a6mttx17je5o2pyd.parents(startNode, function (elm) { + return predicate(elm) || $_7oppmo1dje5o2pz1.eq(elm, rootElm); + })); + } else { + return []; + } + }; + var parents$1 = function (startNode, rootElm) { + return parentsUntil$1(startNode, rootElm, $_enfhkv6je5o2ply.constant(false)); + }; + var parentsAndSelf = function (startNode, rootElm) { + return [startNode].concat(parents$1(startNode, rootElm)); + }; + var $_yqcmh39je5o2qcw = { + parentsUntil: parentsUntil$1, + parents: parents$1, + parentsAndSelf: parentsAndSelf + }; + + var getChildrenUntilBlockBoundary = function (block) { + var children = $_a6mttx17je5o2pyd.children(block); + return $_bwcteb4je5o2pl4.findIndex(children, isBlock).fold(function () { + return children; + }, function (index) { + return children.slice(0, index); + }); + }; + var extractChildren = function (block) { + var children = getChildrenUntilBlockBoundary(block); + $_bwcteb4je5o2pl4.each(children, function (node) { + $_cr1seh2pje5o2qa1.remove(node); + }); + return children; + }; + var trimBr = function (first, block) { + $_g2kzjo2bje5o2q7n.positionIn(first, block.dom()).each(function (position) { + var node = position.getNode(); + if ($_9owqcy1qje5o2q0e.isBr(node)) { + $_cr1seh2pje5o2qa1.remove($_5tcb2dyje5o2pwu.fromDom(node)); + } + }); + }; + var removeEmptyRoot = function (rootNode, block) { + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(block, rootNode); + return $_bwcteb4je5o2pl4.find(parents.reverse(), $_dizx5c35je5o2qcb.isEmpty).each($_cr1seh2pje5o2qa1.remove); + }; + var findParentInsertPoint = function (toBlock, block) { + var parents = $_a6mttx17je5o2pyd.parents(block, function (elm) { + return $_7oppmo1dje5o2pz1.eq(elm, toBlock); + }); + return Option.from(parents[parents.length - 2]); + }; + var getInsertionPoint = function (fromBlock, toBlock) { + if ($_7oppmo1dje5o2pz1.contains(toBlock, fromBlock)) { + return $_a6mttx17je5o2pyd.parent(fromBlock).bind(function (parent) { + return $_7oppmo1dje5o2pz1.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock); + }); + } else { + return Option.none(); + } + }; + var mergeBlockInto = function (rootNode, fromBlock, toBlock) { + if ($_dizx5c35je5o2qcb.isEmpty(toBlock)) { + $_cr1seh2pje5o2qa1.remove(toBlock); + if ($_dizx5c35je5o2qcb.isEmpty(fromBlock)) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr(fromBlock); + } + return $_g2kzjo2bje5o2q7n.firstPositionIn(fromBlock.dom()); + } else { + trimBr(true, fromBlock); + trimBr(false, toBlock); + var children_1 = extractChildren(fromBlock); + return getInsertionPoint(fromBlock, toBlock).fold(function () { + removeEmptyRoot(rootNode, fromBlock); + var position = $_g2kzjo2bje5o2q7n.lastPositionIn(toBlock.dom()); + $_bwcteb4je5o2pl4.each(children_1, function (node) { + $_elbl2s2oje5o2q9z.append(toBlock, node); + }); + return position; + }, function (target) { + var position = $_g2kzjo2bje5o2q7n.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom())); + $_bwcteb4je5o2pl4.each(children_1, function (node) { + $_elbl2s2oje5o2q9z.before(target, node); + }); + removeEmptyRoot(rootNode, fromBlock); + return position; + }); + } + }; + var mergeBlocks = function (rootNode, forward, block1, block2) { + return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2); + }; + var $_46j1ps38je5o2qcn = { mergeBlocks: mergeBlocks }; + + var backspaceDelete = function (editor, forward) { + var position; + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + position = $_8rdvj02yje5o2qar.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) { + return $_46j1ps38je5o2qcn.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block()); + }); + position.each(function (pos) { + editor.selection.setRng(pos.toRange()); + }); + return position.isSome(); + }; + var $_3qfe0j2xje5o2qao = { backspaceDelete: backspaceDelete }; + + var deleteRangeMergeBlocks = function (rootNode, selection) { + var rng = selection.getRng(); + return $_c8weyc2eje5o2q85.liftN([ + $_7twey62zje5o2qay.getParentBlock(rootNode, $_5tcb2dyje5o2pwu.fromDom(rng.startContainer)), + $_7twey62zje5o2qay.getParentBlock(rootNode, $_5tcb2dyje5o2pwu.fromDom(rng.endContainer)) + ], function (block1, block2) { + if ($_7oppmo1dje5o2pz1.eq(block1, block2) === false) { + rng.deleteContents(); + $_46j1ps38je5o2qcn.mergeBlocks(rootNode, true, block1, block2).each(function (pos) { + selection.setRng(pos.toRange()); + }); + return true; + } else { + return false; + } + }).getOr(false); + }; + var isRawNodeInTable = function (root, rawNode) { + var node = $_5tcb2dyje5o2pwu.fromDom(rawNode); + var isRoot = $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, root); + return $_au2qfe30je5o2qb4.ancestor(node, isTableCell, isRoot).isSome(); + }; + var isSelectionInTable = function (root, rng) { + return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer); + }; + var isEverythingSelected = function (root, rng) { + var noPrevious = $_g2kzjo2bje5o2q7n.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone(); + var noNext = $_g2kzjo2bje5o2q7n.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone(); + return !isSelectionInTable(root, rng) && noPrevious && noNext; + }; + var emptyEditor = function (editor) { + editor.setContent(''); + editor.selection.setCursorLocation(); + return true; + }; + var deleteRange = function (editor) { + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var rng = editor.selection.getRng(); + return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection); + }; + var backspaceDelete$1 = function (editor, forward) { + return editor.selection.isCollapsed() ? false : deleteRange(editor); + }; + var $_a476lo3aje5o2qd0 = { backspaceDelete: backspaceDelete$1 }; + + var generate = function (cases) { + if (!$_be3q8w12je5o2pxj.isArray(cases)) { + throw new Error('cases must be an array'); + } + if (cases.length === 0) { + throw new Error('there must be at least one case'); + } + var constructors = []; + var adt = {}; + $_bwcteb4je5o2pl4.each(cases, function (acase, count) { + var keys = $_8v44sy13je5o2pxm.keys(acase); + if (keys.length !== 1) { + throw new Error('one and only one name per case'); + } + var key = keys[0]; + var value = acase[key]; + if (adt[key] !== undefined) { + throw new Error('duplicate key detected:' + key); + } else if (key === 'cata') { + throw new Error('cannot have a case named cata (sorry)'); + } else if (!$_be3q8w12je5o2pxj.isArray(value)) { + throw new Error('case arguments must be an array'); + } + constructors.push(key); + adt[key] = function () { + var argLength = arguments.length; + if (argLength !== value.length) { + throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); + } + var args = new Array(argLength); + for (var i = 0; i < args.length; i++) + args[i] = arguments[i]; + var match = function (branches) { + var branchKeys = $_8v44sy13je5o2pxm.keys(branches); + if (constructors.length !== branchKeys.length) { + throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); + } + var allReqd = $_bwcteb4je5o2pl4.forall(constructors, function (reqKey) { + return $_bwcteb4je5o2pl4.contains(branchKeys, reqKey); + }); + if (!allReqd) + throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); + return branches[key].apply(null, args); + }; + return { + fold: function () { + if (arguments.length !== cases.length) { + throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length); + } + var target = arguments[count]; + return target.apply(null, args); + }, + match: match, + log: function (label) { + console.log(label, { + constructors: constructors, + constructor: key, + params: args + }); + } + }; + }; + }); + return adt; + }; + var $_e73lvt3dje5o2qdq = { generate: generate }; + + var isCompoundElement = function (node) { + return isTableCell($_5tcb2dyje5o2pwu.fromDom(node)) || isListItem($_5tcb2dyje5o2pwu.fromDom(node)); + }; + var DeleteAction = $_e73lvt3dje5o2qdq.generate([ + { remove: ['element'] }, + { moveToElement: ['element'] }, + { moveToPosition: ['position'] } + ]); + var isAtContentEditableBlockCaret = function (forward, from) { + var elm = from.getNode(forward === false); + var caretLocation = forward ? 'after' : 'before'; + return $_9owqcy1qje5o2q0e.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation; + }; + var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) { + var inSameBlock = function (elm) { + return isInline($_5tcb2dyje5o2pwu.fromDom(elm)) && !isInSameBlock(from, to, root); + }; + return getRelativeCefElm(!forward, from).fold(function () { + return getRelativeCefElm(forward, to).fold($_enfhkv6je5o2ply.constant(false), inSameBlock); + }, inSameBlock); + }; + var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) { + var toCefElm = to.getNode(forward === false); + return $_7twey62zje5o2qay.getParentBlock($_5tcb2dyje5o2pwu.fromDom(root), $_5tcb2dyje5o2pwu.fromDom(from.getNode())).map(function (blockElm) { + return $_dizx5c35je5o2qcb.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm); + }).orThunk(function () { + return Option.some(DeleteAction.moveToElement(toCefElm)); + }); + }; + var findCefPosition = function (root, forward, from) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, root, from).bind(function (to) { + if (isCompoundElement(to.getNode())) { + return Option.none(); + } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) { + return Option.none(); + } else if (forward && $_9owqcy1qje5o2q0e.isContentEditableFalse(to.getNode())) { + return deleteEmptyBlockOrMoveToCef(root, forward, from, to); + } else if (forward === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(to.getNode(true))) { + return deleteEmptyBlockOrMoveToCef(root, forward, from, to); + } else if (forward && isAfterContentEditableFalse(from)) { + return Option.some(DeleteAction.moveToPosition(to)); + } else if (forward === false && isBeforeContentEditableFalse(from)) { + return Option.some(DeleteAction.moveToPosition(to)); + } else { + return Option.none(); + } + }); + }; + var getContentEditableBlockAction = function (forward, elm) { + if (forward && $_9owqcy1qje5o2q0e.isContentEditableFalse(elm.nextSibling)) { + return Option.some(DeleteAction.moveToElement(elm.nextSibling)); + } else if (forward === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(elm.previousSibling)) { + return Option.some(DeleteAction.moveToElement(elm.previousSibling)); + } else { + return Option.none(); + } + }; + var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) { + return deleteAction.fold(function (elm) { + return Option.some(DeleteAction.remove(elm)); + }, function (elm) { + return Option.some(DeleteAction.moveToElement(elm)); + }, function (to) { + if (isInSameBlock(from, to, root)) { + return Option.none(); + } else { + return Option.some(DeleteAction.moveToPosition(to)); + } + }); + }; + var getContentEditableAction = function (root, forward, from) { + if (isAtContentEditableBlockCaret(forward, from)) { + return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () { + return findCefPosition(root, forward, from); + }, Option.some); + } else { + return findCefPosition(root, forward, from).bind(function (deleteAction) { + return skipMoveToActionFromInlineCefToContent(root, from, deleteAction); + }); + } + }; + var read$1 = function (root, forward, rng) { + var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng); + var from = CaretPosition$1.fromRangeStart(normalizedRange); + if (forward === false && isAfterContentEditableFalse(from)) { + return Option.some(DeleteAction.remove(from.getNode(true))); + } else if (forward && isBeforeContentEditableFalse(from)) { + return Option.some(DeleteAction.remove(from.getNode())); + } else { + return getContentEditableAction(root, forward, from); + } + }; + + var needsReposition = function (pos, elm) { + var container = pos.container(); + var offset = pos.offset(); + return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset(); + }; + var reposition = function (elm, pos) { + return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos; + }; + var beforeOrStartOf = function (node) { + return $_9owqcy1qje5o2q0e.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node); + }; + var afterOrEndOf = function (node) { + return $_9owqcy1qje5o2q0e.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node); + }; + var getPreviousSiblingCaretPosition = function (elm) { + if (isCaretCandidate(elm.previousSibling)) { + return Option.some(afterOrEndOf(elm.previousSibling)); + } else { + return elm.previousSibling ? $_g2kzjo2bje5o2q7n.lastPositionIn(elm.previousSibling) : Option.none(); + } + }; + var getNextSiblingCaretPosition = function (elm) { + if (isCaretCandidate(elm.nextSibling)) { + return Option.some(beforeOrStartOf(elm.nextSibling)); + } else { + return elm.nextSibling ? $_g2kzjo2bje5o2q7n.firstPositionIn(elm.nextSibling) : Option.none(); + } + }; + var findCaretPositionBackwardsFromElm = function (rootElement, elm) { + var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode); + return $_g2kzjo2bje5o2q7n.prevPosition(rootElement, startPosition).fold(function () { + return $_g2kzjo2bje5o2q7n.nextPosition(rootElement, CaretPosition$1.after(elm)); + }, Option.some); + }; + var findCaretPositionForwardsFromElm = function (rootElement, elm) { + return $_g2kzjo2bje5o2q7n.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () { + return $_g2kzjo2bje5o2q7n.prevPosition(rootElement, CaretPosition$1.before(elm)); + }, Option.some); + }; + var findCaretPositionBackwards = function (rootElement, elm) { + return getPreviousSiblingCaretPosition(elm).orThunk(function () { + return getNextSiblingCaretPosition(elm); + }).orThunk(function () { + return findCaretPositionBackwardsFromElm(rootElement, elm); + }); + }; + var findCaretPositionForward = function (rootElement, elm) { + return getNextSiblingCaretPosition(elm).orThunk(function () { + return getPreviousSiblingCaretPosition(elm); + }).orThunk(function () { + return findCaretPositionForwardsFromElm(rootElement, elm); + }); + }; + var findCaretPosition$1 = function (forward, rootElement, elm) { + return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm); + }; + var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) { + return findCaretPosition$1(forward, rootElement, elm).map($_enfhkv6je5o2ply.curry(reposition, elm)); + }; + var setSelection = function (editor, forward, pos) { + pos.fold(function () { + editor.focus(); + }, function (pos) { + editor.selection.setRng(pos.toRange(), forward); + }); + }; + var eqRawNode = function (rawNode) { + return function (elm) { + return elm.dom() === rawNode; + }; + }; + var isBlock$2 = function (editor, elm) { + return elm && editor.schema.getBlockElements().hasOwnProperty($_95wn8qzje5o2px0.name(elm)); + }; + var paddEmptyBlock = function (elm) { + if ($_dizx5c35je5o2qcb.isEmpty(elm)) { + var br = $_5tcb2dyje5o2pwu.fromHtml('<br data-mce-bogus="1">'); + $_cr1seh2pje5o2qa1.empty(elm); + $_elbl2s2oje5o2q9z.append(elm, br); + return Option.some(CaretPosition$1.before(br.dom())); + } else { + return Option.none(); + } + }; + var deleteNormalized = function (elm, afterDeletePosOpt) { + return $_c8weyc2eje5o2q85.liftN([ + $_a6mttx17je5o2pyd.prevSibling(elm), + $_a6mttx17je5o2pyd.nextSibling(elm), + afterDeletePosOpt + ], function (prev, next, afterDeletePos) { + var offset; + var prevNode = prev.dom(); + var nextNode = next.dom(); + if ($_9owqcy1qje5o2q0e.isText(prevNode) && $_9owqcy1qje5o2q0e.isText(nextNode)) { + offset = prevNode.data.length; + prevNode.appendData(nextNode.data); + $_cr1seh2pje5o2qa1.remove(next); + $_cr1seh2pje5o2qa1.remove(elm); + if (afterDeletePos.container() === nextNode) { + return CaretPosition$1(prevNode, offset); + } else { + return afterDeletePos; + } + } else { + $_cr1seh2pje5o2qa1.remove(elm); + return afterDeletePos; + } + }).orThunk(function () { + $_cr1seh2pje5o2qa1.remove(elm); + return afterDeletePosOpt; + }); + }; + var deleteElement = function (editor, forward, elm) { + var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom()); + var parentBlock = $_au2qfe30je5o2qb4.ancestor(elm, $_enfhkv6je5o2ply.curry(isBlock$2, editor), eqRawNode(editor.getBody())); + var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos); + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + editor.selection.setCursorLocation(); + } else { + parentBlock.bind(paddEmptyBlock).fold(function () { + setSelection(editor, forward, normalizedAfterDeletePos); + }, function (paddPos) { + setSelection(editor, forward, Option.some(paddPos)); + }); + } + }; + var $_8fuvl23eje5o2qdv = { deleteElement: deleteElement }; + + var deleteElement$1 = function (editor, forward) { + return function (element) { + editor._selectionOverrides.hideFakeCaret(); + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(element)); + return true; + }; + }; + var moveToElement = function (editor, forward) { + return function (element) { + var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element); + editor.selection.setRng(pos.toRange()); + return true; + }; + }; + var moveToPosition = function (editor) { + return function (pos) { + editor.selection.setRng(pos.toRange()); + return true; + }; + }; + var backspaceDeleteCaret = function (editor, forward) { + var result = read$1(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) { + return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor)); + }); + return result.getOr(false); + }; + var deleteOffscreenSelection = function (rootElement) { + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(rootElement, '.mce-offscreen-selection'), $_cr1seh2pje5o2qa1.remove); + }; + var backspaceDeleteRange = function (editor, forward) { + var selectedElement = editor.selection.getNode(); + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(selectedElement)) { + deleteOffscreenSelection($_5tcb2dyje5o2pwu.fromDom(editor.getBody())); + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(editor.selection.getNode())); + $_7twey62zje5o2qay.paddEmptyBody(editor); + return true; + } else { + return false; + } + }; + var getContentEditableRoot = function (root, node) { + while (node && node !== root) { + if ($_9owqcy1qje5o2q0e.isContentEditableTrue(node) || $_9owqcy1qje5o2q0e.isContentEditableFalse(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var paddEmptyElement = function (editor) { + var br; + var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode()); + if ($_9owqcy1qje5o2q0e.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) { + br = editor.dom.create('br', { 'data-mce-bogus': '1' }); + editor.dom.setHTML(ceRoot, ''); + ceRoot.appendChild(br); + editor.selection.setRng(CaretPosition$1.before(br).toRange()); + } + return true; + }; + var backspaceDelete$2 = function (editor, forward) { + if (editor.selection.isCollapsed()) { + return backspaceDeleteCaret(editor, forward); + } else { + return backspaceDeleteRange(editor, forward); + } + }; + var $_c7csnv3bje5o2qd6 = { + backspaceDelete: backspaceDelete$2, + paddEmptyElement: paddEmptyElement + }; + + var isText$8 = $_9owqcy1qje5o2q0e.isText; + var startsWithCaretContainer$1 = function (node) { + return isText$8(node) && node.data[0] === $_4md31c21je5o2q5f.ZWSP; + }; + var endsWithCaretContainer$1 = function (node) { + return isText$8(node) && node.data[node.data.length - 1] === $_4md31c21je5o2q5f.ZWSP; + }; + var createZwsp = function (node) { + return node.ownerDocument.createTextNode($_4md31c21je5o2q5f.ZWSP); + }; + var insertBefore$1 = function (node) { + if (isText$8(node.previousSibling)) { + if (endsWithCaretContainer$1(node.previousSibling)) { + return node.previousSibling; + } else { + node.previousSibling.appendData($_4md31c21je5o2q5f.ZWSP); + return node.previousSibling; + } + } else if (isText$8(node)) { + if (startsWithCaretContainer$1(node)) { + return node; + } else { + node.insertData(0, $_4md31c21je5o2q5f.ZWSP); + return node; + } + } else { + var newNode = createZwsp(node); + node.parentNode.insertBefore(newNode, node); + return newNode; + } + }; + var insertAfter$1 = function (node) { + if (isText$8(node.nextSibling)) { + if (startsWithCaretContainer$1(node.nextSibling)) { + return node.nextSibling; + } else { + node.nextSibling.insertData(0, $_4md31c21je5o2q5f.ZWSP); + return node.nextSibling; + } + } else if (isText$8(node)) { + if (endsWithCaretContainer$1(node)) { + return node; + } else { + node.appendData($_4md31c21je5o2q5f.ZWSP); + return node; + } + } else { + var newNode = createZwsp(node); + if (node.nextSibling) { + node.parentNode.insertBefore(newNode, node.nextSibling); + } else { + node.parentNode.appendChild(newNode); + } + return newNode; + } + }; + var insertInline$1 = function (before, node) { + return before ? insertBefore$1(node) : insertAfter$1(node); + }; + var insertInlineBefore = $_enfhkv6je5o2ply.curry(insertInline$1, true); + var insertInlineAfter = $_enfhkv6je5o2ply.curry(insertInline$1, false); + + var insertInlinePos = function (pos, before) { + if ($_9owqcy1qje5o2q0e.isText(pos.container())) { + return insertInline$1(before, pos.container()); + } else { + return insertInline$1(before, pos.getNode()); + } + }; + var isPosCaretContainer = function (pos, caret) { + var caretNode = caret.get(); + return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode); + }; + var renderCaret = function (caret, location) { + return location.fold(function (element) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlineBefore(element); + caret.set(text); + return Option.some(CaretPosition$1(text, text.length - 1)); + }, function (element) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(element).map(function (pos) { + if (!isPosCaretContainer(pos, caret)) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlinePos(pos, true); + caret.set(text); + return CaretPosition$1(text, 1); + } else { + return CaretPosition$1(caret.get(), 1); + } + }); + }, function (element) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(element).map(function (pos) { + if (!isPosCaretContainer(pos, caret)) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlinePos(pos, false); + caret.set(text); + return CaretPosition$1(text, text.length - 1); + } else { + return CaretPosition$1(caret.get(), caret.get().length - 1); + } + }); + }, function (element) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlineAfter(element); + caret.set(text); + return Option.some(CaretPosition$1(text, 1)); + }); + }; + var $_5a4sgg3gje5o2qee = { renderCaret: renderCaret }; + + var isInlineBlock = function (node) { + return node && /^(IMG)$/.test(node.nodeName); + }; + var moveStart = function (dom, selection, rng) { + var container = rng.startContainer, offset = rng.startOffset, walker, node, nodes; + if (rng.startContainer === rng.endContainer) { + if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) { + return; + } + } + if (container.nodeType === 3 && offset >= container.nodeValue.length) { + offset = dom.nodeIndex(container); + container = container.parentNode; + } + if (container.nodeType === 1) { + nodes = container.childNodes; + if (offset < nodes.length) { + container = nodes[offset]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + } else { + container = nodes[nodes.length - 1]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + walker.next(true); + } + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3 && !isWhiteSpaceNode(node)) { + rng.setStart(node, 0); + selection.setRng(rng); + return; + } + } + } + }; + var getNonWhiteSpaceSibling = function (node, next, inc) { + if (node) { + next = next ? 'nextSibling' : 'previousSibling'; + for (node = inc ? node : node[next]; node; node = node[next]) { + if (node.nodeType === 1 || !isWhiteSpaceNode(node)) { + return node; + } + } + } + }; + var isTextBlock$1 = function (editor, name) { + if (name.nodeType) { + name = name.nodeName; + } + return !!editor.schema.getTextBlockElements()[name.toLowerCase()]; + }; + var isValid = function (ed, parent, child) { + return ed.schema.isValidChild(parent, child); + }; + var isWhiteSpaceNode = function (node) { + return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue); + }; + var replaceVars = function (value, vars) { + if (typeof value !== 'string') { + value = value(vars); + } else if (vars) { + value = value.replace(/%(\w+)/g, function (str, name) { + return vars[name] || str; + }); + } + return value; + }; + var isEq = function (str1, str2) { + str1 = str1 || ''; + str2 = str2 || ''; + str1 = '' + (str1.nodeName || str1); + str2 = '' + (str2.nodeName || str2); + return str1.toLowerCase() === str2.toLowerCase(); + }; + var normalizeStyleValue = function (dom, value, name) { + if (name === 'color' || name === 'backgroundColor') { + value = dom.toHex(value); + } + if (name === 'fontWeight' && value === 700) { + value = 'bold'; + } + if (name === 'fontFamily') { + value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ','); + } + return '' + value; + }; + var getStyle = function (dom, node, name) { + return normalizeStyleValue(dom, dom.getStyle(node, name), name); + }; + var getTextDecoration = function (dom, node) { + var decoration; + dom.getParent(node, function (n) { + decoration = dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); + return decoration; + }; + var getParents$1 = function (dom, node, selector) { + return dom.getParents(node, selector, dom.getRoot()); + }; + var $_b2hqtg3lje5o2qft = { + isInlineBlock: isInlineBlock, + moveStart: moveStart, + getNonWhiteSpaceSibling: getNonWhiteSpaceSibling, + isTextBlock: isTextBlock$1, + isValid: isValid, + isWhiteSpaceNode: isWhiteSpaceNode, + replaceVars: replaceVars, + isEq: isEq, + normalizeStyleValue: normalizeStyleValue, + getStyle: getStyle, + getTextDecoration: getTextDecoration, + getParents: getParents$1 + }; + + var isBookmarkNode$2 = $_83h91t2jje5o2q8n.isBookmarkNode; + var getParents$2 = $_b2hqtg3lje5o2qft.getParents; + var isWhiteSpaceNode$1 = $_b2hqtg3lje5o2qft.isWhiteSpaceNode; + var isTextBlock$2 = $_b2hqtg3lje5o2qft.isTextBlock; + var findLeaf = function (node, offset) { + if (typeof offset === 'undefined') { + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + while (node && node.hasChildNodes()) { + node = node.childNodes[offset]; + if (node) { + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + } + return { + node: node, + offset: offset + }; + }; + var excludeTrailingWhitespace = function (endContainer, endOffset) { + var leaf = findLeaf(endContainer, endOffset); + if (leaf.node) { + while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) { + leaf = findLeaf(leaf.node.previousSibling); + } + if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { + if (leaf.offset > 1) { + endContainer = leaf.node; + endContainer.splitText(leaf.offset - 1); + } + } + } + return endContainer; + }; + var isBogusBr = function (node) { + return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling; + }; + var findParentContentEditable = function (dom, node) { + var parent = node; + while (parent) { + if (parent.nodeType === 1 && dom.getContentEditable(parent)) { + return dom.getContentEditable(parent) === 'false' ? parent : node; + } + parent = parent.parentNode; + } + return node; + }; + var findSpace = function (start, remove, node, offset) { + var pos, pos2; + var str = node.nodeValue; + if (typeof offset === 'undefined') { + offset = start ? str.length : 0; + } + if (start) { + pos = str.lastIndexOf(' ', offset); + pos2 = str.lastIndexOf('\xA0', offset); + pos = pos > pos2 ? pos : pos2; + if (pos !== -1 && !remove) { + pos++; + } + } else { + pos = str.indexOf(' ', offset); + pos2 = str.indexOf('\xA0', offset); + pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2; + } + return pos; + }; + var findWordEndPoint = function (dom, body, container, offset, start, remove) { + var walker, node, pos, lastTextNode; + if (container.nodeType === 3) { + pos = findSpace(start, remove, container, offset); + if (pos !== -1) { + return { + container: container, + offset: pos + }; + } + lastTextNode = container; + } + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body); + while (node = walker[start ? 'prev' : 'next']()) { + if (node.nodeType === 3) { + lastTextNode = node; + pos = findSpace(start, remove, node); + if (pos !== -1) { + return { + container: node, + offset: pos + }; + } + } else if (dom.isBlock(node)) { + break; + } + } + if (lastTextNode) { + if (start) { + offset = 0; + } else { + offset = lastTextNode.length; + } + return { + container: lastTextNode, + offset: offset + }; + } + }; + var findSelectorEndPoint = function (dom, format, rng, container, siblingName) { + var parents, i, y, curFormat; + if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) { + container = container[siblingName]; + } + parents = getParents$2(dom, container); + for (i = 0; i < parents.length; i++) { + for (y = 0; y < format.length; y++) { + curFormat = format[y]; + if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) { + continue; + } + if (dom.is(parents[i], curFormat.selector)) { + return parents[i]; + } + } + } + return container; + }; + var findBlockEndPoint = function (editor, format, container, siblingName) { + var node; + var dom = editor.dom; + var root = dom.getRoot(); + if (!format[0].wrapper) { + node = dom.getParent(container, format[0].block, root); + } + if (!node) { + var scopeRoot = dom.getParent(container, 'LI,TD,TH'); + node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) { + return node !== root && isTextBlock$2(editor, node); + }, scopeRoot); + } + if (node && format[0].wrapper) { + node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node; + } + if (!node) { + node = container; + while (node[siblingName] && !dom.isBlock(node[siblingName])) { + node = node[siblingName]; + if ($_b2hqtg3lje5o2qft.isEq(node, 'br')) { + break; + } + } + } + return node || container; + }; + var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) { + var container, parent, sibling, siblingName, root; + container = parent = start ? startContainer : endContainer; + siblingName = start ? 'previousSibling' : 'nextSibling'; + root = dom.getRoot(); + if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) { + if (start ? startOffset > 0 : endOffset < container.nodeValue.length) { + return container; + } + } + while (true) { + if (!format[0].block_expand && dom.isBlock(parent)) { + return parent; + } + for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) { + if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) { + return parent; + } + } + if (parent === root || parent.parentNode === root) { + container = parent; + break; + } + parent = parent.parentNode; + } + return container; + }; + var expandRng = function (editor, rng, format, remove) { + var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; + var dom = editor.dom; + if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) { + startContainer = getNode(startContainer, startOffset); + if (startContainer.nodeType === 3) { + startOffset = 0; + } + } + if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) { + endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1); + if (endContainer.nodeType === 3) { + endOffset = endContainer.nodeValue.length; + } + } + startContainer = findParentContentEditable(dom, startContainer); + endContainer = findParentContentEditable(dom, endContainer); + if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) { + startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode; + startContainer = startContainer.nextSibling || startContainer; + if (startContainer.nodeType === 3) { + startOffset = 0; + } + } + if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) { + endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode; + endContainer = endContainer.previousSibling || endContainer; + if (endContainer.nodeType === 3) { + endOffset = endContainer.length; + } + } + if (format[0].inline) { + if (rng.collapsed) { + endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove); + if (endPoint) { + startContainer = endPoint.container; + startOffset = endPoint.offset; + } + endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove); + if (endPoint) { + endContainer = endPoint.container; + endOffset = endPoint.offset; + } + } + endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset); + } + if (format[0].inline || format[0].block_expand) { + if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) { + startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true); + } + if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) { + endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false); + } + } + if (format[0].selector && format[0].expand !== false && !format[0].inline) { + startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling'); + endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling'); + } + if (format[0].block || format[0].selector) { + startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling'); + endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling'); + if (format[0].block) { + if (!dom.isBlock(startContainer)) { + startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true); + } + if (!dom.isBlock(endContainer)) { + endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false); + } + } + } + if (startContainer.nodeType === 1) { + startOffset = dom.nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + if (endContainer.nodeType === 1) { + endOffset = dom.nodeIndex(endContainer) + 1; + endContainer = endContainer.parentNode; + } + return { + startContainer: startContainer, + startOffset: startOffset, + endContainer: endContainer, + endOffset: endOffset + }; + }; + var $_8wd5fu3kje5o2qfi = { expandRng: expandRng }; + + var isEq$1 = $_b2hqtg3lje5o2qft.isEq; + var matchesUnInheritedFormatSelector = function (ed, node, name) { + var formatList = ed.formatter.get(name); + if (formatList) { + for (var i = 0; i < formatList.length; i++) { + if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) { + return true; + } + } + } + return false; + }; + var matchParents = function (editor, node, name, vars) { + var root = editor.dom.getRoot(); + if (node === root) { + return false; + } + node = editor.dom.getParent(node, function (node) { + if (matchesUnInheritedFormatSelector(editor, node, name)) { + return true; + } + return node.parentNode === root || !!matchNode(editor, node, name, vars, true); + }); + return matchNode(editor, node, name, vars); + }; + var matchName = function (dom, node, format) { + if (isEq$1(node, format.inline)) { + return true; + } + if (isEq$1(node, format.block)) { + return true; + } + if (format.selector) { + return node.nodeType === 1 && dom.is(node, format.selector); + } + }; + var matchItems = function (dom, node, format, itemName, similar, vars) { + var key, value; + var items = format[itemName]; + var i; + if (format.onmatch) { + return format.onmatch(node, format, itemName); + } + if (items) { + if (typeof items.length === 'undefined') { + for (key in items) { + if (items.hasOwnProperty(key)) { + if (itemName === 'attributes') { + value = dom.getAttrib(node, key); + } else { + value = $_b2hqtg3lje5o2qft.getStyle(dom, node, key); + } + if (similar && !value && !format.exact) { + return; + } + if ((!similar || format.exact) && !isEq$1(value, $_b2hqtg3lje5o2qft.normalizeStyleValue(dom, $_b2hqtg3lje5o2qft.replaceVars(items[key], vars), key))) { + return; + } + } + } + } else { + for (i = 0; i < items.length; i++) { + if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : $_b2hqtg3lje5o2qft.getStyle(dom, node, items[i])) { + return format; + } + } + } + } + return format; + }; + var matchNode = function (ed, node, name, vars, similar) { + var formatList = ed.formatter.get(name); + var format, i, x, classes; + var dom = ed.dom; + if (formatList && node) { + for (i = 0; i < formatList.length; i++) { + format = formatList[i]; + if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) { + if (classes = format.classes) { + for (x = 0; x < classes.length; x++) { + if (!ed.dom.hasClass(node, classes[x])) { + return; + } + } + } + return format; + } + } + } + }; + var match = function (editor, name, vars, node) { + var startNode; + if (node) { + return matchParents(editor, node, name, vars); + } + node = editor.selection.getNode(); + if (matchParents(editor, node, name, vars)) { + return true; + } + startNode = editor.selection.getStart(); + if (startNode !== node) { + if (matchParents(editor, startNode, name, vars)) { + return true; + } + } + return false; + }; + var matchAll = function (editor, names, vars) { + var startElement; + var matchedFormatNames = []; + var checkedMap = {}; + startElement = editor.selection.getStart(); + editor.dom.getParent(startElement, function (node) { + var i, name; + for (i = 0; i < names.length; i++) { + name = names[i]; + if (!checkedMap[name] && matchNode(editor, node, name, vars)) { + checkedMap[name] = true; + matchedFormatNames.push(name); + } + } + }, editor.dom.getRoot()); + return matchedFormatNames; + }; + var canApply = function (editor, name) { + var formatList = editor.formatter.get(name); + var startNode, parents, i, x, selector; + var dom = editor.dom; + if (formatList) { + startNode = editor.selection.getStart(); + parents = $_b2hqtg3lje5o2qft.getParents(dom, startNode); + for (x = formatList.length - 1; x >= 0; x--) { + selector = formatList[x].selector; + if (!selector || formatList[x].defaultBlock) { + return true; + } + for (i = parents.length - 1; i >= 0; i--) { + if (dom.is(parents[i], selector)) { + return true; + } + } + } + } + return false; + }; + var $_g32xfv3mje5o2qg1 = { + matchNode: matchNode, + matchName: matchName, + match: match, + matchAll: matchAll, + canApply: canApply, + matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector + }; + + var splitText = function (node, offset) { + return node.splitText(offset); + }; + var split$1 = function (rng) { + var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; + if (startContainer === endContainer && $_9owqcy1qje5o2q0e.isText(startContainer)) { + if (startOffset > 0 && startOffset < startContainer.nodeValue.length) { + endContainer = splitText(startContainer, startOffset); + startContainer = endContainer.previousSibling; + if (endOffset > startOffset) { + endOffset = endOffset - startOffset; + startContainer = endContainer = splitText(endContainer, endOffset).previousSibling; + endOffset = endContainer.nodeValue.length; + startOffset = 0; + } else { + endOffset = 0; + } + } + } else { + if ($_9owqcy1qje5o2q0e.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) { + startContainer = splitText(startContainer, startOffset); + startOffset = 0; + } + if ($_9owqcy1qje5o2q0e.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) { + endContainer = splitText(endContainer, endOffset).previousSibling; + endOffset = endContainer.nodeValue.length; + } + } + return { + startContainer: startContainer, + startOffset: startOffset, + endContainer: endContainer, + endOffset: endOffset + }; + }; + var $_3ksquu3nje5o2qg7 = { split: split$1 }; + + var ZWSP$1 = $_4md31c21je5o2q5f.ZWSP; + var CARET_ID = '_mce_caret'; + var importNode = function (ownerDocument, node) { + return ownerDocument.importNode(node, true); + }; + var isCaretNode = function (node) { + return node.nodeType === 1 && node.id === CARET_ID; + }; + var getEmptyCaretContainers = function (node) { + var nodes = []; + while (node) { + if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) { + return []; + } + if (node.nodeType === 1) { + nodes.push(node); + } + node = node.firstChild; + } + return nodes; + }; + var isCaretContainerEmpty = function (node) { + return getEmptyCaretContainers(node).length > 0; + }; + var findFirstTextNode = function (node) { + var walker; + if (node) { + walker = new TreeWalker(node, node); + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3) { + return node; + } + } + } + return null; + }; + var createCaretContainer = function (fill) { + var caretContainer = $_5tcb2dyje5o2pwu.fromTag('span'); + $_3uo9pl14je5o2pxq.setAll(caretContainer, { + 'id': CARET_ID, + 'data-mce-bogus': '1', + 'data-mce-type': 'format-caret' + }); + if (fill) { + $_elbl2s2oje5o2q9z.append(caretContainer, $_5tcb2dyje5o2pwu.fromText(ZWSP$1)); + } + return caretContainer; + }; + var getParentCaretContainer = function (body, node) { + while (node && node !== body) { + if (node.id === CARET_ID) { + return node; + } + node = node.parentNode; + } + return null; + }; + var trimZwspFromCaretContainer = function (caretContainerNode) { + var textNode = findFirstTextNode(caretContainerNode); + if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) { + textNode.deleteData(0, 1); + } + return textNode; + }; + var removeCaretContainerNode = function (dom, selection, node, moveCaret) { + var rng, block, textNode; + rng = selection.getRng(true); + block = dom.getParent(node, dom.isBlock); + if (isCaretContainerEmpty(node)) { + if (moveCaret !== false) { + rng.setStartBefore(node); + rng.setEndBefore(node); + } + dom.remove(node); + } else { + textNode = trimZwspFromCaretContainer(node); + if (rng.startContainer === textNode && rng.startOffset > 0) { + rng.setStart(textNode, rng.startOffset - 1); + } + if (rng.endContainer === textNode && rng.endOffset > 0) { + rng.setEnd(textNode, rng.endOffset - 1); + } + dom.remove(node, true); + } + if (block && dom.isEmpty(block)) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr($_5tcb2dyje5o2pwu.fromDom(block)); + } + selection.setRng(rng); + }; + var removeCaretContainer = function (body, dom, selection, node, moveCaret) { + if (!node) { + node = getParentCaretContainer(body, selection.getStart()); + if (!node) { + while (node = dom.get(CARET_ID)) { + removeCaretContainerNode(dom, selection, node, false); + } + } + } else { + removeCaretContainerNode(dom, selection, node, moveCaret); + } + }; + var insertCaretContainerNode = function (editor, caretContainer, formatNode) { + var dom = editor.dom, block = dom.getParent(formatNode, $_ghq3nq25je5o2q5q.curry($_b2hqtg3lje5o2qft.isTextBlock, editor)); + if (block && dom.isEmpty(block)) { + formatNode.parentNode.replaceChild(caretContainer, formatNode); + } else { + $_4kbg8z2nje5o2q9s.removeTrailingBr($_5tcb2dyje5o2pwu.fromDom(formatNode)); + if (dom.isEmpty(formatNode)) { + formatNode.parentNode.replaceChild(caretContainer, formatNode); + } else { + dom.insertAfter(caretContainer, formatNode); + } + } + }; + var appendNode = function (parentNode, node) { + parentNode.appendChild(node); + return node; + }; + var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) { + var innerMostFormatNode = $_bwcteb4je5o2pl4.foldr(formatNodes, function (parentNode, formatNode) { + return appendNode(parentNode, formatNode.cloneNode(false)); + }, caretContainer); + return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1)); + }; + var applyCaretFormat = function (editor, name, vars) { + var rng, caretContainer, textNode, offset, bookmark, container, text; + var selection = editor.selection; + rng = selection.getRng(true); + offset = rng.startOffset; + container = rng.startContainer; + text = container.nodeValue; + caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart()); + if (caretContainer) { + textNode = findFirstTextNode(caretContainer); + } + var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/; + if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) { + bookmark = selection.getBookmark(); + rng.collapse(true); + rng = $_8wd5fu3kje5o2qfi.expandRng(editor, rng, editor.formatter.get(name)); + rng = $_3ksquu3nje5o2qg7.split(rng); + editor.formatter.apply(name, vars, rng); + selection.moveToBookmark(bookmark); + } else { + if (!caretContainer || textNode.nodeValue !== ZWSP$1) { + caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom()); + textNode = caretContainer.firstChild; + rng.insertNode(caretContainer); + offset = 1; + editor.formatter.apply(name, vars, caretContainer); + } else { + editor.formatter.apply(name, vars, caretContainer); + } + selection.setCursorLocation(textNode, offset); + } + }; + var removeCaretFormat = function (editor, name, vars, similar) { + var dom = editor.dom, selection = editor.selection; + var container, offset, bookmark; + var hasContentAfter, node, formatNode; + var parents = [], rng = selection.getRng(); + var caretContainer; + container = rng.startContainer; + offset = rng.startOffset; + node = container; + if (container.nodeType === 3) { + if (offset !== container.nodeValue.length) { + hasContentAfter = true; + } + node = node.parentNode; + } + while (node) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, node, name, vars, similar)) { + formatNode = node; + break; + } + if (node.nextSibling) { + hasContentAfter = true; + } + parents.push(node); + node = node.parentNode; + } + if (!formatNode) { + return; + } + if (hasContentAfter) { + bookmark = selection.getBookmark(); + rng.collapse(true); + var expandedRng = $_8wd5fu3kje5o2qfi.expandRng(editor, rng, editor.formatter.get(name), true); + expandedRng = $_3ksquu3nje5o2qg7.split(expandedRng); + editor.formatter.remove(name, vars, expandedRng); + selection.moveToBookmark(bookmark); + } else { + caretContainer = getParentCaretContainer(editor.getBody(), formatNode); + var newCaretContainer = createCaretContainer(false).dom(); + var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer); + if (caretContainer) { + insertCaretContainerNode(editor, newCaretContainer, caretContainer); + } else { + insertCaretContainerNode(editor, newCaretContainer, formatNode); + } + removeCaretContainerNode(dom, selection, caretContainer, false); + selection.setCursorLocation(caretNode, 1); + if (dom.isEmpty(formatNode)) { + dom.remove(formatNode); + } + } + }; + var disableCaretContainer = function (body, dom, selection, keyCode) { + removeCaretContainer(body, dom, selection, null, false); + if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) { + removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart())); + } + if (keyCode === 37 || keyCode === 39) { + removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart())); + } + }; + var setup = function (editor) { + var dom = editor.dom, selection = editor.selection; + var body = editor.getBody(); + editor.on('mouseup keydown', function (e) { + disableCaretContainer(body, dom, selection, e.keyCode); + }); + }; + var replaceWithCaretFormat = function (targetNode, formatNodes) { + var caretContainer = createCaretContainer(false); + var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom()); + $_elbl2s2oje5o2q9z.before($_5tcb2dyje5o2pwu.fromDom(targetNode), caretContainer); + $_cr1seh2pje5o2qa1.remove($_5tcb2dyje5o2pwu.fromDom(targetNode)); + return CaretPosition$1(innerMost, 0); + }; + var isFormatElement = function (editor, element) { + var inlineElements = editor.schema.getTextInlineElements(); + return inlineElements.hasOwnProperty($_95wn8qzje5o2px0.name(element)) && !isCaretNode(element.dom()) && !$_9owqcy1qje5o2q0e.isBogus(element.dom()); + }; + var $_4066yu3jje5o2qev = { + setup: setup, + applyCaretFormat: applyCaretFormat, + removeCaretFormat: removeCaretFormat, + isCaretNode: isCaretNode, + getParentCaretContainer: getParentCaretContainer, + replaceWithCaretFormat: replaceWithCaretFormat, + isFormatElement: isFormatElement + }; + + var evaluateUntil = function (fns, args) { + for (var i = 0; i < fns.length; i++) { + var result = fns[i].apply(null, args); + if (result.isSome()) { + return result; + } + } + return Option.none(); + }; + var $_cq1fkk3oje5o2qg9 = { evaluateUntil: evaluateUntil }; + + var Location = $_e73lvt3dje5o2qdq.generate([ + { before: ['element'] }, + { start: ['element'] }, + { end: ['element'] }, + { after: ['element'] } + ]); + var rescope = function (rootNode, node) { + var parentBlock = getParentBlock(node, rootNode); + return parentBlock ? parentBlock : rootNode; + }; + var before$3 = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeForwards(pos); + var scope = rescope(rootNode, nPos.container()); + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, scope, nPos).fold(function () { + return $_g2kzjo2bje5o2q7n.nextPosition(scope, nPos).bind($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.findRootInline, isInlineTarget, scope)).map(function (inline) { + return Location.before(inline); + }); + }, Option.none); + }; + var isNotInsideFormatCaretContainer = function (rootNode, elm) { + return $_4066yu3jje5o2qev.getParentCaretContainer(rootNode, elm) === null; + }; + var findInsideRootInline = function (isInlineTarget, rootNode, pos) { + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, pos).filter($_enfhkv6je5o2ply.curry(isNotInsideFormatCaretContainer, rootNode)); + }; + var start = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeBackwards(pos); + return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { + var prevPos = $_g2kzjo2bje5o2q7n.prevPosition(inline, nPos); + return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none(); + }); + }; + var end = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeForwards(pos); + return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { + var nextPos = $_g2kzjo2bje5o2q7n.nextPosition(inline, nPos); + return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none(); + }); + }; + var after$3 = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeBackwards(pos); + var scope = rescope(rootNode, nPos.container()); + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, scope, nPos).fold(function () { + return $_g2kzjo2bje5o2q7n.prevPosition(scope, nPos).bind($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.findRootInline, isInlineTarget, scope)).map(function (inline) { + return Location.after(inline); + }); + }, Option.none); + }; + var isValidLocation = function (location) { + return $_6skw9732je5o2qbp.isRtl(getElement(location)) === false; + }; + var readLocation = function (isInlineTarget, rootNode, pos) { + var location = $_cq1fkk3oje5o2qg9.evaluateUntil([ + before$3, + start, + end, + after$3 + ], [ + isInlineTarget, + rootNode, + pos + ]); + return location.filter(isValidLocation); + }; + var getElement = function (location) { + return location.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var getName = function (location) { + return location.fold($_enfhkv6je5o2ply.constant('before'), $_enfhkv6je5o2ply.constant('start'), $_enfhkv6je5o2ply.constant('end'), $_enfhkv6je5o2ply.constant('after')); + }; + var outside = function (location) { + return location.fold(Location.before, Location.before, Location.after, Location.after); + }; + var inside = function (location) { + return location.fold(Location.start, Location.start, Location.end, Location.end); + }; + var isEq$2 = function (location1, location2) { + return getName(location1) === getName(location2) && getElement(location1) === getElement(location2); + }; + var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) { + return $_c8weyc2eje5o2q85.liftN([ + $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, from), + $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, to) + ], function (fromInline, toInline) { + if (fromInline !== toInline && $_6skw9732je5o2qbp.hasSameParentBlock(rootNode, fromInline, toInline)) { + return Location.after(forward ? fromInline : toInline); + } else { + return location; + } + }).getOr(location); + }; + var skipNoMovement = function (fromLocation, toLocation) { + return fromLocation.fold($_enfhkv6je5o2ply.constant(true), function (fromLocation) { + return !isEq$2(fromLocation, toLocation); + }); + }; + var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) { + var from = $_6skw9732je5o2qbp.normalizePosition(forward, pos); + var to = $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, from).map($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.normalizePosition, forward)); + var location = to.fold(function () { + return fromLocation.map(outside); + }, function (to) { + return readLocation(isInlineTarget, rootNode, to).map($_enfhkv6je5o2ply.curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter($_enfhkv6je5o2ply.curry(skipNoMovement, fromLocation)); + }); + return location.filter(isValidLocation); + }; + var findLocationSimple = function (forward, location) { + if (forward) { + return location.fold($_enfhkv6je5o2ply.compose(Option.some, Location.start), Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.after), Option.none); + } else { + return location.fold(Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.before), Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.end)); + } + }; + var findLocation = function (forward, isInlineTarget, rootNode, pos) { + var from = $_6skw9732je5o2qbp.normalizePosition(forward, pos); + var fromLocation = readLocation(isInlineTarget, rootNode, from); + return readLocation(isInlineTarget, rootNode, from).bind($_enfhkv6je5o2ply.curry(findLocationSimple, forward)).orThunk(function () { + return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos); + }); + }; + var $_62vpc23ije5o2qem = { + readLocation: readLocation, + findLocation: findLocation, + prevLocation: $_enfhkv6je5o2ply.curry(findLocation, false), + nextLocation: $_enfhkv6je5o2ply.curry(findLocation, true), + getElement: getElement, + outside: outside, + inside: inside + }; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + var clone = function () { + return Cell(get()); + }; + return { + get: get, + set: set, + clone: clone + }; + }; + + var hasSelectionModifyApi = function (editor) { + return $_be3q8w12je5o2pxj.isFunction(editor.selection.getSel().modify); + }; + var moveRel = function (forward, selection, pos) { + var delta = forward ? 1 : -1; + selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange()); + selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word'); + return true; + }; + var moveByWord = function (forward, editor) { + var rng = editor.selection.getRng(); + var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng); + if (!hasSelectionModifyApi(editor)) { + return false; + } else if (forward && isBeforeInline(pos)) { + return moveRel(true, editor.selection, pos); + } else if (!forward && isAfterInline(pos)) { + return moveRel(false, editor.selection, pos); + } else { + return false; + } + }; + var $_ffszpz3rje5o2qgl = { + hasSelectionModifyApi: hasSelectionModifyApi, + moveByWord: moveByWord + }; + + var setCaretPosition = function (editor, pos) { + var rng = editor.dom.createRng(); + rng.setStart(pos.container(), pos.offset()); + rng.setEnd(pos.container(), pos.offset()); + editor.selection.setRng(rng); + }; + var isFeatureEnabled = function (editor) { + return editor.settings.inline_boundaries !== false; + }; + var setSelected = function (state, elm) { + if (state) { + elm.setAttribute('data-mce-selected', 'inline-boundary'); + } else { + elm.removeAttribute('data-mce-selected'); + } + }; + var renderCaretLocation = function (editor, caret, location) { + return $_5a4sgg3gje5o2qee.renderCaret(caret, location).map(function (pos) { + setCaretPosition(editor, pos); + return location; + }); + }; + var findLocation$1 = function (editor, caret, forward) { + var rootNode = editor.getBody(); + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var location = $_62vpc23ije5o2qem.findLocation(forward, isInlineTarget, rootNode, from); + return location.bind(function (location) { + return renderCaretLocation(editor, caret, location); + }); + }; + var toggleInlines = function (isInlineTarget, dom, elms) { + var selectedInlines = $_bwcteb4je5o2pl4.filter(dom.select('*[data-mce-selected="inline-boundary"]'), isInlineTarget); + var targetInlines = $_bwcteb4je5o2pl4.filter(elms, isInlineTarget); + $_bwcteb4je5o2pl4.each($_bwcteb4je5o2pl4.difference(selectedInlines, targetInlines), $_enfhkv6je5o2ply.curry(setSelected, false)); + $_bwcteb4je5o2pl4.each($_bwcteb4je5o2pl4.difference(targetInlines, selectedInlines), $_enfhkv6je5o2ply.curry(setSelected, true)); + }; + var safeRemoveCaretContainer = function (editor, caret) { + if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) { + var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + if (CaretPosition$1.isTextPosition(pos) && $_6skw9732je5o2qbp.isAtZwsp(pos) === false) { + setCaretPosition(editor, $_3djwbs29je5o2q74.removeAndReposition(caret.get(), pos)); + caret.set(null); + } + } + }; + var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) { + if (editor.selection.isCollapsed()) { + var inlines = $_bwcteb4je5o2pl4.filter(elms, isInlineTarget); + $_bwcteb4je5o2pl4.each(inlines, function (inline) { + var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) { + return renderCaretLocation(editor, caret, location); + }); + }); + } + }; + var move = function (editor, caret, forward) { + return function () { + return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false; + }; + }; + var moveWord = function (forward, editor, caret) { + return function () { + return isFeatureEnabled(editor) ? $_ffszpz3rje5o2qgl.moveByWord(forward, editor) : false; + }; + }; + var setupSelectedState = function (editor) { + var caret = Cell(null); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + editor.on('NodeChange', function (e) { + if (isFeatureEnabled(editor)) { + toggleInlines(isInlineTarget, editor.dom, e.parents); + safeRemoveCaretContainer(editor, caret); + renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents); + } + }); + return caret; + }; + var $_2dnted3pje5o2qgc = { + move: move, + moveNextWord: $_enfhkv6je5o2ply.curry(moveWord, true), + movePrevWord: $_enfhkv6je5o2ply.curry(moveWord, false), + setupSelectedState: setupSelectedState, + setCaretPosition: setCaretPosition + }; + + var isFeatureEnabled$1 = function (editor) { + return editor.settings.inline_boundaries !== false; + }; + var rangeFromPositions = function (from, to) { + var range = document.createRange(); + range.setStart(from.container(), from.offset()); + range.setEnd(to.container(), to.offset()); + return range; + }; + var hasOnlyTwoOrLessPositionsLeft = function (elm) { + return $_c8weyc2eje5o2q85.liftN([ + $_g2kzjo2bje5o2q7n.firstPositionIn(elm), + $_g2kzjo2bje5o2q7n.lastPositionIn(elm) + ], function (firstPos, lastPos) { + var normalizedFirstPos = $_6skw9732je5o2qbp.normalizePosition(true, firstPos); + var normalizedLastPos = $_6skw9732je5o2qbp.normalizePosition(false, lastPos); + return $_g2kzjo2bje5o2q7n.nextPosition(elm, normalizedFirstPos).map(function (pos) { + return pos.isEqual(normalizedLastPos); + }).getOr(true); + }).getOr(true); + }; + var setCaretLocation = function (editor, caret) { + return function (location) { + return $_5a4sgg3gje5o2qee.renderCaret(caret, location).map(function (pos) { + $_2dnted3pje5o2qgc.setCaretPosition(editor, pos); + return true; + }).getOr(false); + }; + }; + var deleteFromTo = function (editor, caret, from, to) { + var rootNode = editor.getBody(); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + editor.undoManager.ignore(function () { + editor.selection.setRng(rangeFromPositions(from, to)); + editor.execCommand('Delete'); + $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_62vpc23ije5o2qem.inside).map(setCaretLocation(editor, caret)); + }); + editor.nodeChanged(); + }; + var rescope$1 = function (rootNode, node) { + var parentBlock = getParentBlock(node, rootNode); + return parentBlock ? parentBlock : rootNode; + }; + var backspaceDeleteCollapsed = function (editor, caret, forward, from) { + var rootNode = rescope$1(editor.getBody(), from.container()); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var fromLocation = $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, from); + return fromLocation.bind(function (location) { + if (forward) { + return location.fold($_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.inside(location))), Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.outside(location))), Option.none); + } else { + return location.fold(Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.outside(location))), Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.inside(location)))); + } + }).map(setCaretLocation(editor, caret)).getOrThunk(function () { + var toPosition = $_g2kzjo2bje5o2q7n.navigate(forward, rootNode, from); + var toLocation = toPosition.bind(function (pos) { + return $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, pos); + }); + if (fromLocation.isSome() && toLocation.isSome()) { + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, from).map(function (elm) { + if (hasOnlyTwoOrLessPositionsLeft(elm)) { + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(elm)); + return true; + } else { + return false; + } + }).getOr(false); + } else { + return toLocation.bind(function (_) { + return toPosition.map(function (to) { + if (forward) { + deleteFromTo(editor, caret, from, to); + } else { + deleteFromTo(editor, caret, to, from); + } + return true; + }); + }).getOr(false); + } + }); + }; + var backspaceDelete$3 = function (editor, caret, forward) { + if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return backspaceDeleteCollapsed(editor, caret, forward, from); + } + return false; + }; + var $_bzwx3b3fje5o2qe7 = { backspaceDelete: backspaceDelete$3 }; + + var tableCellRng = $_86drv18je5o2pyn.immutable('start', 'end'); + var tableSelection = $_86drv18je5o2pyn.immutable('rng', 'table', 'cells'); + var deleteAction = $_e73lvt3dje5o2qdq.generate([ + { removeTable: ['element'] }, + { emptyCells: ['cells'] } + ]); + var isRootFromElement = function (root) { + return $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, root); + }; + var getClosestCell$1 = function (container, isRoot) { + return $_9fzewc37je5o2qck.closest($_5tcb2dyje5o2pwu.fromDom(container), 'td,th', isRoot); + }; + var getClosestTable = function (cell, isRoot) { + return $_9fzewc37je5o2qck.ancestor(cell, 'table', isRoot); + }; + var isExpandedCellRng = function (cellRng) { + return $_7oppmo1dje5o2pz1.eq(cellRng.start(), cellRng.end()) === false; + }; + var getTableFromCellRng = function (cellRng, isRoot) { + return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) { + return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) { + return $_7oppmo1dje5o2pz1.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none(); + }); + }); + }; + var getTableCells = function (table) { + return $_b4jhpu2gje5o2q8e.descendants(table, 'td,th'); + }; + var getCellRangeFromStartTable = function (cellRng, isRoot) { + return getClosestTable(cellRng.start(), isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.last(getTableCells(table)).map(function (endCell) { + return tableCellRng(cellRng.start(), endCell); + }); + }); + }; + var partialSelection = function (isRoot, rng) { + var startCell = getClosestCell$1(rng.startContainer, isRoot); + var endCell = getClosestCell$1(rng.endContainer, isRoot); + return rng.collapsed ? Option.none() : $_c8weyc2eje5o2q85.liftN([ + startCell, + endCell + ], tableCellRng).fold(function () { + return startCell.fold(function () { + return endCell.bind(function (endCell) { + return getClosestTable(endCell, isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.head(getTableCells(table)).map(function (startCell) { + return tableCellRng(startCell, endCell); + }); + }); + }); + }, function (startCell) { + return getClosestTable(startCell, isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.last(getTableCells(table)).map(function (endCell) { + return tableCellRng(startCell, endCell); + }); + }); + }); + }, function (cellRng) { + return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot); + }); + }; + var isWithinSameTable = function (isRoot, cellRng) { + return getTableFromCellRng(cellRng, isRoot).isSome(); + }; + var getCellRng = function (rng, isRoot) { + var startCell = getClosestCell$1(rng.startContainer, isRoot); + var endCell = getClosestCell$1(rng.endContainer, isRoot); + return $_c8weyc2eje5o2q85.liftN([ + startCell, + endCell + ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) { + return isWithinSameTable(isRoot, cellRng); + }).orThunk(function () { + return partialSelection(isRoot, rng); + }); + }; + var getTableSelectionFromCellRng = function (cellRng, isRoot) { + return getTableFromCellRng(cellRng, isRoot).map(function (table) { + return tableSelection(cellRng, table, getTableCells(table)); + }); + }; + var getTableSelectionFromRng = function (root, rng) { + var isRoot = isRootFromElement(root); + return getCellRng(rng, isRoot).bind(function (cellRng) { + return getTableSelectionFromCellRng(cellRng, isRoot); + }); + }; + var getCellIndex = function (cells, cell) { + return $_bwcteb4je5o2pl4.findIndex(cells, function (x) { + return $_7oppmo1dje5o2pz1.eq(x, cell); + }); + }; + var getSelectedCells = function (tableSelection) { + return $_c8weyc2eje5o2q85.liftN([ + getCellIndex(tableSelection.cells(), tableSelection.rng().start()), + getCellIndex(tableSelection.cells(), tableSelection.rng().end()) + ], function (startIndex, endIndex) { + return tableSelection.cells().slice(startIndex, endIndex + 1); + }); + }; + var getAction = function (tableSelection) { + return getSelectedCells(tableSelection).map(function (selected) { + var cells = tableSelection.cells(); + return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected); + }); + }; + var getActionFromCells = function (cells) { + return deleteAction.emptyCells(cells); + }; + var getActionFromRange = function (root, rng) { + return getTableSelectionFromRng(root, rng).bind(getAction); + }; + var $_fdeflh3tje5o2qh0 = { + getActionFromRange: getActionFromRange, + getActionFromCells: getActionFromCells + }; + + var getRanges = function (selection) { + var ranges = []; + if (selection) { + for (var i = 0; i < selection.rangeCount; i++) { + ranges.push(selection.getRangeAt(i)); + } + } + return ranges; + }; + var getSelectedNodes = function (ranges) { + return $_bwcteb4je5o2pl4.bind(ranges, function (range) { + var node = getSelectedNode(range); + return node ? [$_5tcb2dyje5o2pwu.fromDom(node)] : []; + }); + }; + var hasMultipleRanges = function (selection) { + return getRanges(selection).length > 1; + }; + var $_b8hi2e3vje5o2qhh = { + getRanges: getRanges, + getSelectedNodes: getSelectedNodes, + hasMultipleRanges: hasMultipleRanges + }; + + var getCellsFromRanges = function (ranges) { + return $_bwcteb4je5o2pl4.filter($_b8hi2e3vje5o2qhh.getSelectedNodes(ranges), isTableCell); + }; + var getCellsFromElement = function (elm) { + var selectedCells = $_b4jhpu2gje5o2q8e.descendants(elm, 'td[data-mce-selected],th[data-mce-selected]'); + return selectedCells; + }; + var getCellsFromElementOrRanges = function (ranges, element) { + var selectedCells = getCellsFromElement(element); + var rangeCells = getCellsFromRanges(ranges); + return selectedCells.length > 0 ? selectedCells : rangeCells; + }; + var getCellsFromEditor = function (editor) { + return getCellsFromElementOrRanges($_b8hi2e3vje5o2qhh.getRanges(editor.selection.getSel()), $_5tcb2dyje5o2pwu.fromDom(editor.getBody())); + }; + var $_9il6og3uje5o2qhd = { + getCellsFromRanges: getCellsFromRanges, + getCellsFromElement: getCellsFromElement, + getCellsFromElementOrRanges: getCellsFromElementOrRanges, + getCellsFromEditor: getCellsFromEditor + }; + + var emptyCells = function (editor, cells) { + $_bwcteb4je5o2pl4.each(cells, $_4kbg8z2nje5o2q9s.fillWithPaddingBr); + editor.selection.setCursorLocation(cells[0].dom(), 0); + return true; + }; + var deleteTableElement = function (editor, table) { + $_8fuvl23eje5o2qdv.deleteElement(editor, false, table); + return true; + }; + var deleteCellRange = function (editor, rootElm, rng) { + return $_fdeflh3tje5o2qh0.getActionFromRange(rootElm, rng).map(function (action) { + return action.fold($_enfhkv6je5o2ply.curry(deleteTableElement, editor), $_enfhkv6je5o2ply.curry(emptyCells, editor)); + }); + }; + var deleteCaptionRange = function (editor, caption) { + return emptyElement(editor, caption); + }; + var deleteTableRange = function (editor, rootElm, rng, startElm) { + return getParentCaption(rootElm, startElm).fold(function () { + return deleteCellRange(editor, rootElm, rng); + }, function (caption) { + return deleteCaptionRange(editor, caption); + }).getOr(false); + }; + var deleteRange$1 = function (editor, startElm) { + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var rng = editor.selection.getRng(); + var selectedCells = $_9il6og3uje5o2qhd.getCellsFromEditor(editor); + return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm); + }; + var getParentCell = function (rootElm, elm) { + return $_bwcteb4je5o2pl4.find($_yqcmh39je5o2qcw.parentsAndSelf(elm, rootElm), isTableCell); + }; + var getParentCaption = function (rootElm, elm) { + return $_bwcteb4je5o2pl4.find($_yqcmh39je5o2qcw.parentsAndSelf(elm, rootElm), function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'caption'; + }); + }; + var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) { + return $_g2kzjo2bje5o2q7n.navigate(forward, editor.getBody(), from).bind(function (to) { + return getParentCell(rootElm, $_5tcb2dyje5o2pwu.fromDom(to.getNode())).map(function (toCell) { + return $_7oppmo1dje5o2pz1.eq(toCell, fromCell) === false; + }); + }); + }; + var emptyElement = function (editor, elm) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr(elm); + editor.selection.setCursorLocation(elm.dom(), 0); + return Option.some(true); + }; + var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(fromCaption.dom()).bind(function (first) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(fromCaption.dom()).map(function (last) { + return forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first); + }); + }).getOr(true); + }; + var emptyCaretCaption = function (editor, elm) { + return emptyElement(editor, elm); + }; + var validateCaretCaption = function (rootElm, fromCaption, to) { + return getParentCaption(rootElm, $_5tcb2dyje5o2pwu.fromDom(to.getNode())).map(function (toCaption) { + return $_7oppmo1dje5o2pz1.eq(toCaption, fromCaption) === false; + }); + }; + var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) { + return $_g2kzjo2bje5o2q7n.navigate(forward, editor.getBody(), from).bind(function (to) { + return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to); + }).or(Option.some(true)); + }; + var deleteCaretCells = function (editor, forward, rootElm, startElm) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return getParentCell(rootElm, startElm).bind(function (fromCell) { + return $_dizx5c35je5o2qcb.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from); + }); + }; + var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return $_dizx5c35je5o2qcb.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from); + }; + var deleteCaret = function (editor, forward, startElm) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + return getParentCaption(rootElm, startElm).fold(function () { + return deleteCaretCells(editor, forward, rootElm, startElm); + }, function (fromCaption) { + return deleteCaretCaption(editor, forward, rootElm, fromCaption); + }).getOr(false); + }; + var backspaceDelete$4 = function (editor, forward) { + var startElm = $_5tcb2dyje5o2pwu.fromDom(editor.selection.getStart(true)); + var cells = $_9il6og3uje5o2qhd.getCellsFromEditor(editor); + return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm); + }; + var $_8pfx7e3sje5o2qgp = { backspaceDelete: backspaceDelete$4 }; + + var nativeCommand = function (editor, command) { + editor.getDoc().execCommand(command, false, null); + }; + var deleteCommand = function (editor) { + if ($_c7csnv3bje5o2qd6.backspaceDelete(editor, false)) { + return; + } else if ($_bzwx3b3fje5o2qe7.backspaceDelete(editor, false)) { + return; + } else if ($_3qfe0j2xje5o2qao.backspaceDelete(editor, false)) { + return; + } else if ($_8pfx7e3sje5o2qgp.backspaceDelete(editor)) { + return; + } else if ($_a476lo3aje5o2qd0.backspaceDelete(editor, false)) { + return; + } else { + nativeCommand(editor, 'Delete'); + $_7twey62zje5o2qay.paddEmptyBody(editor); + } + }; + var forwardDeleteCommand = function (editor) { + if ($_c7csnv3bje5o2qd6.backspaceDelete(editor, true)) { + return; + } else if ($_bzwx3b3fje5o2qe7.backspaceDelete(editor, true)) { + return; + } else if ($_3qfe0j2xje5o2qao.backspaceDelete(editor, true)) { + return; + } else if ($_8pfx7e3sje5o2qgp.backspaceDelete(editor)) { + return; + } else if ($_a476lo3aje5o2qd0.backspaceDelete(editor, true)) { + return; + } else { + nativeCommand(editor, 'ForwardDelete'); + } + }; + var $_e390q12wje5o2qam = { + deleteCommand: deleteCommand, + forwardDeleteCommand: forwardDeleteCommand + }; + + var isEq$3 = function (rng1, rng2) { + return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset); + }; + var $_aieo7z3yje5o2qlw = { isEq: isEq$3 }; + + var position = $_86drv18je5o2pyn.immutable('container', 'offset'); + var findParent = function (node, rootNode, predicate) { + while (node && node !== rootNode) { + if (predicate(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var hasParent = function (node, rootNode, predicate) { + return findParent(node, rootNode, predicate) !== null; + }; + var hasParentWithName = function (node, rootNode, name) { + return hasParent(node, rootNode, function (node) { + return node.nodeName === name; + }); + }; + var isTable$2 = function (node) { + return node && node.nodeName === 'TABLE'; + }; + var isTableCell$3 = function (node) { + return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); + }; + var isCeFalseCaretContainer = function (node, rootNode) { + return isCaretContainer(node) && hasParent(node, rootNode, $_4066yu3jje5o2qev.isCaretNode) === false; + }; + var hasBrBeforeAfter = function (dom, node, left) { + var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot()); + while (node = walker[left ? 'prev' : 'next']()) { + if ($_9owqcy1qje5o2q0e.isBr(node)) { + return true; + } + } + }; + var isPrevNode = function (node, name) { + return node.previousSibling && node.previousSibling.nodeName === name; + }; + var hasContentEditableFalseParent = function (body, node) { + while (node && node !== body) { + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(node)) { + return true; + } + node = node.parentNode; + } + return false; + }; + var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) { + var walker, lastInlineElement, parentBlockContainer; + var body = dom.getRoot(); + var node; + var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body; + if (left && $_9owqcy1qje5o2q0e.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) { + return Option.some(position(startNode.parentNode, dom.nodeIndex(startNode))); + } + walker = new TreeWalker(startNode, parentBlockContainer); + while (node = walker[left ? 'prev' : 'next']()) { + if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) { + return Option.none(); + } + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + if (hasParentWithName(node, body, 'A') === false) { + return Option.some(position(node, left ? node.nodeValue.length : 0)); + } + return Option.none(); + } + if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) { + return Option.none(); + } + lastInlineElement = node; + } + if (collapsed && lastInlineElement) { + return Option.some(position(lastInlineElement, 0)); + } + return Option.none(); + }; + var normalizeEndPoint = function (dom, collapsed, start, rng) { + var container, offset, walker; + var body = dom.getRoot(); + var node, nonEmptyElementsMap; + var directionLeft, isAfterNode, normalized = false; + container = rng[(start ? 'start' : 'end') + 'Container']; + offset = rng[(start ? 'start' : 'end') + 'Offset']; + isAfterNode = $_9owqcy1qje5o2q0e.isElement(container) && offset === container.childNodes.length; + nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + directionLeft = start; + if (isCaretContainer(container)) { + return Option.none(); + } + if ($_9owqcy1qje5o2q0e.isElement(container) && offset > container.childNodes.length - 1) { + directionLeft = false; + } + if ($_9owqcy1qje5o2q0e.isDocument(container)) { + container = body; + offset = 0; + } + if (container === body) { + if (directionLeft) { + node = container.childNodes[offset > 0 ? offset - 1 : 0]; + if (node) { + if (isCaretContainer(node)) { + return Option.none(); + } + if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) { + return Option.none(); + } + } + } + if (container.hasChildNodes()) { + offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1); + container = container.childNodes[offset]; + offset = $_9owqcy1qje5o2q0e.isText(container) && isAfterNode ? container.data.length : 0; + if (!collapsed && container === body.lastChild && isTable$2(container)) { + return Option.none(); + } + if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) { + return Option.none(); + } + if (container.hasChildNodes() && isTable$2(container) === false) { + node = container; + walker = new TreeWalker(container, body); + do { + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(node) || isCaretContainer(node)) { + normalized = false; + break; + } + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + offset = directionLeft ? 0 : node.nodeValue.length; + container = node; + normalized = true; + break; + } + if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) { + offset = dom.nodeIndex(node); + container = node.parentNode; + if ((node.nodeName === 'IMG' || node.nodeName === 'PRE') && !directionLeft) { + offset++; + } + normalized = true; + break; + } + } while (node = directionLeft ? walker.next() : walker.prev()); + } + } + } + if (collapsed) { + if ($_9owqcy1qje5o2q0e.isText(container) && offset === 0) { + findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + if ($_9owqcy1qje5o2q0e.isElement(container)) { + node = container.childNodes[offset]; + if (!node) { + node = container.childNodes[offset - 1]; + } + if (node && $_9owqcy1qje5o2q0e.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) { + findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + } + } + if (directionLeft && !collapsed && $_9owqcy1qje5o2q0e.isText(container) && offset === container.nodeValue.length) { + findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + return normalized ? Option.some(position(container, offset)) : Option.none(); + }; + var normalize$1 = function (dom, rng) { + var collapsed = rng.collapsed, normRng = rng.cloneRange(); + normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) { + normRng.setStart(pos.container(), pos.offset()); + }); + if (!collapsed) { + normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) { + normRng.setEnd(pos.container(), pos.offset()); + }); + } + if (collapsed) { + normRng.collapse(true); + } + return $_aieo7z3yje5o2qlw.isEq(rng, normRng) ? Option.none() : Option.some(normRng); + }; + var $_1t8l6x3xje5o2qlk = { normalize: normalize$1 }; + + var hasRightSideContent = function (schema, container, parentBlock) { + var walker = new TreeWalker(container, parentBlock); + var node; + var nonEmptyElementsMap = schema.getNonEmptyElements(); + while (node = walker.next()) { + if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) { + return true; + } + } + }; + var scrollToBr = function (dom, selection, brElm) { + var marker = dom.create('span', {}, ' '); + brElm.parentNode.insertBefore(marker, brElm); + selection.scrollIntoView(marker); + dom.remove(marker); + }; + var moveSelectionToBr = function (dom, selection, brElm, extraBr) { + var rng = dom.createRng(); + if (!extraBr) { + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + } else { + rng.setStartBefore(brElm); + rng.setEndBefore(brElm); + } + selection.setRng(rng); + }; + var insertBrAtCaret = function (editor, evt) { + var selection = editor.selection, dom = editor.dom; + var brElm, extraBr; + var rng = selection.getRng(); + $_1t8l6x3xje5o2qlk.normalize(dom, rng).each(function (normRng) { + rng.setStart(normRng.startContainer, normRng.startOffset); + rng.setEnd(normRng.endContainer, normRng.endOffset); + }); + var offset = rng.startOffset; + var container = rng.startContainer; + if (container.nodeType === 1 && container.hasChildNodes()) { + var isAfterLastNodeInContainer = offset > container.childNodes.length - 1; + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + if (isAfterLastNodeInContainer && container.nodeType === 3) { + offset = container.nodeValue.length; + } else { + offset = 0; + } + } + var parentBlock = dom.getParent(container, dom.isBlock); + var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; + var isControlKey = evt && evt.ctrlKey; + if (containerBlockName === 'LI' && !isControlKey) { + parentBlock = containerBlock; + } + if (container && container.nodeType === 3 && offset >= container.nodeValue.length) { + if (!hasRightSideContent(editor.schema, container, parentBlock)) { + brElm = dom.create('br'); + rng.insertNode(brElm); + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + extraBr = true; + } + } + brElm = dom.create('br'); + rng.insertNode(brElm); + scrollToBr(dom, selection, brElm); + moveSelectionToBr(dom, selection, brElm, extraBr); + editor.undoManager.add(); + }; + var insertBrBefore = function (editor, inline) { + var br = $_5tcb2dyje5o2pwu.fromTag('br'); + $_elbl2s2oje5o2q9z.before($_5tcb2dyje5o2pwu.fromDom(inline), br); + editor.undoManager.add(); + }; + var insertBrAfter = function (editor, inline) { + if (!hasBrAfter(editor.getBody(), inline)) { + $_elbl2s2oje5o2q9z.after($_5tcb2dyje5o2pwu.fromDom(inline), $_5tcb2dyje5o2pwu.fromTag('br')); + } + var br = $_5tcb2dyje5o2pwu.fromTag('br'); + $_elbl2s2oje5o2q9z.after($_5tcb2dyje5o2pwu.fromDom(inline), br); + scrollToBr(editor.dom, editor.selection, br.dom()); + moveSelectionToBr(editor.dom, editor.selection, br.dom(), false); + editor.undoManager.add(); + }; + var isBeforeBr = function (pos) { + return $_9owqcy1qje5o2q0e.isBr(pos.getNode()); + }; + var hasBrAfter = function (rootNode, startNode) { + if (isBeforeBr(CaretPosition$1.after(startNode))) { + return true; + } else { + return $_g2kzjo2bje5o2q7n.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) { + return $_9owqcy1qje5o2q0e.isBr(pos.getNode()); + }).getOr(false); + } + }; + var isAnchorLink = function (elm) { + return elm && elm.nodeName === 'A' && 'href' in elm; + }; + var isInsideAnchor = function (location) { + return location.fold($_enfhkv6je5o2ply.constant(false), isAnchorLink, isAnchorLink, $_enfhkv6je5o2ply.constant(false)); + }; + var readInlineAnchorLocation = function (editor) { + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var position = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor); + }; + var insertBrOutsideAnchor = function (editor, location) { + location.fold($_enfhkv6je5o2ply.noop, $_enfhkv6je5o2ply.curry(insertBrBefore, editor), $_enfhkv6je5o2ply.curry(insertBrAfter, editor), $_enfhkv6je5o2ply.noop); + }; + var insert = function (editor, evt) { + var anchorLocation = readInlineAnchorLocation(editor); + if (anchorLocation.isSome()) { + anchorLocation.each($_enfhkv6je5o2ply.curry(insertBrOutsideAnchor, editor)); + } else { + insertBrAtCaret(editor, evt); + } + }; + var $_1esduy3wje5o2qhl = { insert: insert }; + + var adt = $_e73lvt3dje5o2qdq.generate([ + { 'before': ['element'] }, + { + 'on': [ + 'element', + 'offset' + ] + }, + { after: ['element'] } + ]); + var cata = function (subject, onBefore, onOn, onAfter) { + return subject.fold(onBefore, onOn, onAfter); + }; + var getStart = function (situ) { + return situ.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var $_78xwh641je5o2qmd = { + before: adt.before, + on: adt.on, + after: adt.after, + cata: cata, + getStart: getStart + }; + + var type$1 = $_e73lvt3dje5o2qdq.generate([ + { domRange: ['rng'] }, + { + relative: [ + 'startSitu', + 'finishSitu' + ] + }, + { + exact: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var range$1 = $_86drv18je5o2pyn.immutable('start', 'soffset', 'finish', 'foffset'); + var exactFromRange = function (simRange) { + return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset()); + }; + var getStart$1 = function (selection) { + return selection.match({ + domRange: function (rng) { + return $_5tcb2dyje5o2pwu.fromDom(rng.startContainer); + }, + relative: function (startSitu, finishSitu) { + return $_78xwh641je5o2qmd.getStart(startSitu); + }, + exact: function (start, soffset, finish, foffset) { + return start; + } + }); + }; + var getWin = function (selection) { + var start = getStart$1(selection); + return $_a6mttx17je5o2pyd.defaultView(start); + }; + var $_8b9nu40je5o2qm8 = { + domRange: type$1.domRange, + relative: type$1.relative, + exact: type$1.exact, + exactFromRange: exactFromRange, + range: range$1, + getWin: getWin + }; + + var browser$3 = $_2hq237mje5o2pvu.detect().browser; + var clamp = function (offset, element) { + var max = $_95wn8qzje5o2px0.isText(element) ? $_3600ts2rje5o2qa7.get(element).length : $_a6mttx17je5o2pyd.children(element).length + 1; + if (offset > max) { + return max; + } else if (offset < 0) { + return 0; + } + return offset; + }; + var normalizeRng = function (rng) { + return $_8b9nu40je5o2qm8.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish())); + }; + var isOrContains = function (root, elm) { + return $_7oppmo1dje5o2pz1.contains(root, elm) || $_7oppmo1dje5o2pz1.eq(root, elm); + }; + var isRngInRoot = function (root) { + return function (rng) { + return isOrContains(root, rng.start()) && isOrContains(root, rng.finish()); + }; + }; + var shouldStore = function (editor) { + return editor.inline === true || browser$3.isIE(); + }; + var nativeRangeToSelectionRange = function (r) { + return $_8b9nu40je5o2qm8.range($_5tcb2dyje5o2pwu.fromDom(r.startContainer), r.startOffset, $_5tcb2dyje5o2pwu.fromDom(r.endContainer), r.endOffset); + }; + var readRange = function (win) { + var selection = win.getSelection(); + var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0)); + return rng.map(nativeRangeToSelectionRange); + }; + var getBookmark$2 = function (root) { + var win = $_a6mttx17je5o2pyd.defaultView(root); + return readRange(win.dom()).filter(isRngInRoot(root)); + }; + var validate = function (root, bookmark) { + return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng); + }; + var bookmarkToNativeRng = function (bookmark) { + var rng = document.createRange(); + rng.setStart(bookmark.start().dom(), bookmark.soffset()); + rng.setEnd(bookmark.finish().dom(), bookmark.foffset()); + return Option.some(rng); + }; + var store = function (editor) { + var newBookmark = shouldStore(editor) ? getBookmark$2($_5tcb2dyje5o2pwu.fromDom(editor.getBody())) : Option.none(); + editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; + }; + var storeNative = function (editor, rng) { + var root = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var range = shouldStore(editor) ? Option.from(rng) : Option.none(); + var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root)); + editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; + }; + var getRng = function (editor) { + var bookmark = editor.bookmark ? editor.bookmark : Option.none(); + return bookmark.bind($_enfhkv6je5o2ply.curry(validate, $_5tcb2dyje5o2pwu.fromDom(editor.getBody()))).bind(bookmarkToNativeRng); + }; + var restore = function (editor) { + getRng(editor).each(function (rng) { + editor.selection.setRng(rng); + }); + }; + var $_fnd7h33zje5o2qly = { + store: store, + storeNative: storeNative, + readRange: readRange, + restore: restore, + getRng: getRng, + getBookmark: getBookmark$2, + validate: validate + }; + + var indentElement = function (dom, command, useMargin, value, unit, element) { + if (dom.getContentEditable(element) === 'false') { + return; + } + if (element.nodeName !== 'LI') { + var indentStyleName = useMargin ? 'margin' : 'padding'; + indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName; + indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left'; + if (command === 'outdent') { + var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value); + dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : ''); + } else { + var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit; + dom.setStyle(element, indentStyleName, styleValue); + } + } + }; + var handle = function (editor, command) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter; + var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0]; + var indentValue = parseInt(settings.indentation, 10); + var useMargin = editor.getParam('indent_use_margin', false); + if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) { + if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) { + formatter.apply('div'); + } + $_bwcteb4je5o2pl4.each(selection.getSelectedBlocks(), function (element) { + return indentElement(dom, command, useMargin, indentValue, indentUnit, element); + }); + } + }; + + var each$9 = $_a5gegtjje5o2pum.each; + var extend$2 = $_a5gegtjje5o2pum.extend; + var map$2 = $_a5gegtjje5o2pum.map; + var inArray$2 = $_a5gegtjje5o2pum.inArray; + var explode$2 = $_a5gegtjje5o2pum.explode; + var TRUE = true; + var FALSE = false; + function EditorCommands (editor) { + var dom, selection, formatter; + var commands = { + state: {}, + exec: {}, + value: {} + }; + var settings = editor.settings, bookmark; + editor.on('PreInit', function () { + dom = editor.dom; + selection = editor.selection; + settings = editor.settings; + formatter = editor.formatter; + }); + var execCommand = function (command, ui, value, args) { + var func, customCommand, state = false; + if (editor.removed) { + return; + } + if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) { + editor.focus(); + } else { + $_fnd7h33zje5o2qly.restore(editor); + } + args = editor.fire('BeforeExecCommand', { + command: command, + ui: ui, + value: value + }); + if (args.isDefaultPrevented()) { + return false; + } + customCommand = command.toLowerCase(); + if (func = commands.exec[customCommand]) { + func(customCommand, ui, value); + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + each$9(editor.plugins, function (p) { + if (p.execCommand && p.execCommand(command, ui, value)) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + state = true; + return false; + } + }); + if (state) { + return state; + } + if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + try { + state = editor.getDoc().execCommand(command, ui, value); + } catch (ex) { + } + if (state) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + return false; + }; + var queryCommandState = function (command) { + var func; + if (editor.quirks.isHidden() || editor.removed) { + return; + } + command = command.toLowerCase(); + if (func = commands.state[command]) { + return func(command); + } + try { + return editor.getDoc().queryCommandState(command); + } catch (ex) { + } + return false; + }; + var queryCommandValue = function (command) { + var func; + if (editor.quirks.isHidden() || editor.removed) { + return; + } + command = command.toLowerCase(); + if (func = commands.value[command]) { + return func(command); + } + try { + return editor.getDoc().queryCommandValue(command); + } catch (ex) { + } + }; + var addCommands = function (commandList, type) { + type = type || 'exec'; + each$9(commandList, function (callback, command) { + each$9(command.toLowerCase().split(','), function (command) { + commands[type][command] = callback; + }); + }); + }; + var addCommand = function (command, callback, scope) { + command = command.toLowerCase(); + commands.exec[command] = function (command, ui, value, args) { + return callback.call(scope || editor, ui, value, args); + }; + }; + var queryCommandSupported = function (command) { + command = command.toLowerCase(); + if (commands.exec[command]) { + return true; + } + try { + return editor.getDoc().queryCommandSupported(command); + } catch (ex) { + } + return false; + }; + var addQueryStateHandler = function (command, callback, scope) { + command = command.toLowerCase(); + commands.state[command] = function () { + return callback.call(scope || editor); + }; + }; + var addQueryValueHandler = function (command, callback, scope) { + command = command.toLowerCase(); + commands.value[command] = function () { + return callback.call(scope || editor); + }; + }; + var hasCustomCommand = function (command) { + command = command.toLowerCase(); + return !!commands.exec[command]; + }; + extend$2(this, { + execCommand: execCommand, + queryCommandState: queryCommandState, + queryCommandValue: queryCommandValue, + queryCommandSupported: queryCommandSupported, + addCommands: addCommands, + addCommand: addCommand, + addQueryStateHandler: addQueryStateHandler, + addQueryValueHandler: addQueryValueHandler, + hasCustomCommand: hasCustomCommand + }); + var execNativeCommand = function (command, ui, value) { + if (ui === undefined) { + ui = FALSE; + } + if (value === undefined) { + value = null; + } + return editor.getDoc().execCommand(command, ui, value); + }; + var isFormatMatch = function (name) { + return formatter.match(name); + }; + var toggleFormat = function (name, value) { + formatter.toggle(name, value ? { value: value } : undefined); + editor.nodeChanged(); + }; + var storeSelection = function (type) { + bookmark = selection.getBookmark(type); + }; + var restoreSelection = function () { + selection.moveToBookmark(bookmark); + }; + addCommands({ + 'mceResetDesignMode,mceBeginUndoLevel': function () { + }, + 'mceEndUndoLevel,mceAddUndoLevel': function () { + editor.undoManager.add(); + }, + 'Cut,Copy,Paste': function (command) { + var doc = editor.getDoc(); + var failed; + try { + execNativeCommand(command); + } catch (ex) { + failed = TRUE; + } + if (command === 'paste' && !doc.queryCommandEnabled(command)) { + failed = true; + } + if (failed || !doc.queryCommandSupported(command)) { + var msg = editor.translate('Your browser doesn\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.'); + if ($_9bd8pn9je5o2pp2.mac) { + msg = msg.replace(/Ctrl\+/g, '\u2318+'); + } + editor.notificationManager.open({ + text: msg, + type: 'error' + }); + } + }, + 'unlink': function () { + if (selection.isCollapsed()) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a'); + if (elm) { + editor.dom.remove(elm, true); + } + return; + } + formatter.remove('link'); + }, + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) { + var align = command.substring(7); + if (align === 'full') { + align = 'justify'; + } + each$9('left,center,right,justify'.split(','), function (name) { + if (align !== name) { + formatter.remove('align' + name); + } + }); + if (align !== 'none') { + toggleFormat('align' + align); + } + }, + 'InsertUnorderedList,InsertOrderedList': function (command) { + var listElm, listParent; + execNativeCommand(command); + listElm = dom.getParent(selection.getNode(), 'ol,ul'); + if (listElm) { + listParent = listElm.parentNode; + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { + storeSelection(); + dom.split(listParent, listElm); + restoreSelection(); + } + } + }, + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { + toggleFormat(command); + }, + 'ForeColor,HiliteColor,FontName': function (command, ui, value) { + toggleFormat(command, value); + }, + 'FontSize': function (command, ui, value) { + var fontClasses, fontSizes; + if (value >= 1 && value <= 7) { + fontSizes = explode$2(settings.font_size_style_values); + fontClasses = explode$2(settings.font_size_classes); + if (fontClasses) { + value = fontClasses[value - 1] || value; + } else { + value = fontSizes[value - 1] || value; + } + } + toggleFormat(command, value); + }, + 'RemoveFormat': function (command) { + formatter.remove(command); + }, + 'mceBlockQuote': function () { + toggleFormat('blockquote'); + }, + 'FormatBlock': function (command, ui, value) { + return toggleFormat(value || 'p'); + }, + 'mceCleanup': function () { + var bookmark = selection.getBookmark(); + editor.setContent(editor.getContent({ cleanup: TRUE }), { cleanup: TRUE }); + selection.moveToBookmark(bookmark); + }, + 'mceRemoveNode': function (command, ui, value) { + var node = value || selection.getNode(); + if (node !== editor.getBody()) { + storeSelection(); + editor.dom.remove(node, TRUE); + restoreSelection(); + } + }, + 'mceSelectNodeDepth': function (command, ui, value) { + var counter = 0; + dom.getParent(selection.getNode(), function (node) { + if (node.nodeType === 1 && counter++ === value) { + selection.select(node); + return FALSE; + } + }, editor.getBody()); + }, + 'mceSelectNode': function (command, ui, value) { + selection.select(value); + }, + 'mceInsertContent': function (command, ui, value) { + $_d42uuu1wje5o2q4b.insertAtCaret(editor, value); + }, + 'mceInsertRawHTML': function (command, ui, value) { + selection.setContent('tiny_mce_marker'); + editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function () { + return value; + })); + }, + 'mceToggleFormat': function (command, ui, value) { + toggleFormat(value); + }, + 'mceSetContent': function (command, ui, value) { + editor.setContent(value); + }, + 'Indent,Outdent': function (command) { + handle(editor, command); + }, + 'mceRepaint': function () { + }, + 'InsertHorizontalRule': function () { + editor.execCommand('mceInsertContent', false, '<hr />'); + }, + 'mceToggleVisualAid': function () { + editor.hasVisual = !editor.hasVisual; + editor.addVisual(); + }, + 'mceReplaceContent': function (command, ui, value) { + editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({ format: 'text' }))); + }, + 'mceInsertLink': function (command, ui, value) { + var anchor; + if (typeof value === 'string') { + value = { href: value }; + } + anchor = dom.getParent(selection.getNode(), 'a'); + value.href = value.href.replace(' ', '%20'); + if (!anchor || !value.href) { + formatter.remove('link'); + } + if (value.href) { + formatter.apply('link', value, anchor); + } + }, + 'selectAll': function () { + var editingHost = dom.getParent(selection.getStart(), $_9owqcy1qje5o2q0e.isContentEditableTrue); + if (editingHost) { + var rng = dom.createRng(); + rng.selectNodeContents(editingHost); + selection.setRng(rng); + } + }, + 'delete': function () { + $_e390q12wje5o2qam.deleteCommand(editor); + }, + 'forwardDelete': function () { + $_e390q12wje5o2qam.forwardDeleteCommand(editor); + }, + 'mceNewDocument': function () { + editor.setContent(''); + }, + 'InsertLineBreak': function (command, ui, value) { + $_1esduy3wje5o2qhl.insert(editor, value); + return true; + } + }); + addCommands({ + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function (command) { + var name = 'align' + command.substring(7); + var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks(); + var matches = map$2(nodes, function (node) { + return !!formatter.matchNode(node, name); + }); + return inArray$2(matches, TRUE) !== -1; + }, + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { + return isFormatMatch(command); + }, + 'mceBlockQuote': function () { + return isFormatMatch('blockquote'); + }, + 'Outdent': function () { + var node; + if (settings.inline_styles) { + if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { + return TRUE; + } + if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { + return TRUE; + } + } + return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'); + }, + 'InsertUnorderedList,InsertOrderedList': function (command) { + var list = dom.getParent(selection.getNode(), 'ul,ol'); + return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL'); + } + }, 'state'); + addCommands({ + 'FontSize,FontName': function (command) { + var value = 0, parent; + if (parent = dom.getParent(selection.getNode(), 'span')) { + if (command === 'fontsize') { + value = parent.style.fontSize; + } else { + value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); + } + } + return value; + } + }, 'value'); + addCommands({ + Undo: function () { + editor.undoManager.undo(); + }, + Redo: function () { + editor.undoManager.redo(); + } + }); + } + + var nativeEvents = $_a5gegtjje5o2pum.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' '); + var Dispatcher = function (settings) { + var self = this; + var scope, bindings = {}, toggleEvent; + var returnFalse = function () { + return false; + }; + var returnTrue = function () { + return true; + }; + settings = settings || {}; + scope = settings.scope || self; + toggleEvent = settings.toggleEvent || returnFalse; + var fire = function (name, args) { + var handlers, i, l, callback; + name = name.toLowerCase(); + args = args || {}; + args.type = name; + if (!args.target) { + args.target = scope; + } + if (!args.preventDefault) { + args.preventDefault = function () { + args.isDefaultPrevented = returnTrue; + }; + args.stopPropagation = function () { + args.isPropagationStopped = returnTrue; + }; + args.stopImmediatePropagation = function () { + args.isImmediatePropagationStopped = returnTrue; + }; + args.isDefaultPrevented = returnFalse; + args.isPropagationStopped = returnFalse; + args.isImmediatePropagationStopped = returnFalse; + } + if (settings.beforeFire) { + settings.beforeFire(args); + } + handlers = bindings[name]; + if (handlers) { + for (i = 0, l = handlers.length; i < l; i++) { + callback = handlers[i]; + if (callback.once) { + off(name, callback.func); + } + if (args.isImmediatePropagationStopped()) { + args.stopPropagation(); + return args; + } + if (callback.func.call(scope, args) === false) { + args.preventDefault(); + return args; + } + } + } + return args; + }; + var on = function (name, callback, prepend, extra) { + var handlers, names, i; + if (callback === false) { + callback = returnFalse; + } + if (callback) { + callback = { func: callback }; + if (extra) { + $_a5gegtjje5o2pum.extend(callback, extra); + } + names = name.toLowerCase().split(' '); + i = names.length; + while (i--) { + name = names[i]; + handlers = bindings[name]; + if (!handlers) { + handlers = bindings[name] = []; + toggleEvent(name, true); + } + if (prepend) { + handlers.unshift(callback); + } else { + handlers.push(callback); + } + } + } + return self; + }; + var off = function (name, callback) { + var i, handlers, bindingName, names, hi; + if (name) { + names = name.toLowerCase().split(' '); + i = names.length; + while (i--) { + name = names[i]; + handlers = bindings[name]; + if (!name) { + for (bindingName in bindings) { + toggleEvent(bindingName, false); + delete bindings[bindingName]; + } + return self; + } + if (handlers) { + if (!callback) { + handlers.length = 0; + } else { + hi = handlers.length; + while (hi--) { + if (handlers[hi].func === callback) { + handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1)); + bindings[name] = handlers; + } + } + } + if (!handlers.length) { + toggleEvent(name, false); + delete bindings[name]; + } + } + } + } else { + for (name in bindings) { + toggleEvent(name, false); + } + bindings = {}; + } + return self; + }; + var once = function (name, callback, prepend) { + return on(name, callback, prepend, { once: true }); + }; + var has = function (name) { + name = name.toLowerCase(); + return !(!bindings[name] || bindings[name].length === 0); + }; + self.fire = fire; + self.on = on; + self.off = off; + self.once = once; + self.has = has; + }; + Dispatcher.isNative = function (name) { + return !!nativeEvents[name.toLowerCase()]; + }; + + var getEventDispatcher = function (obj) { + if (!obj._eventDispatcher) { + obj._eventDispatcher = new Dispatcher({ + scope: obj, + toggleEvent: function (name, state) { + if (Dispatcher.isNative(name) && obj.toggleNativeEvent) { + obj.toggleNativeEvent(name, state); + } + } + }); + } + return obj._eventDispatcher; + }; + var $_8mfz0u44je5o2qmp = { + fire: function (name, args, bubble) { + var self = this; + if (self.removed && name !== 'remove') { + return args; + } + args = getEventDispatcher(self).fire(name, args, bubble); + if (bubble !== false && self.parent) { + var parent_1 = self.parent(); + while (parent_1 && !args.isPropagationStopped()) { + parent_1.fire(name, args, false); + parent_1 = parent_1.parent(); + } + } + return args; + }, + on: function (name, callback, prepend) { + return getEventDispatcher(this).on(name, callback, prepend); + }, + off: function (name, callback) { + return getEventDispatcher(this).off(name, callback); + }, + once: function (name, callback) { + return getEventDispatcher(this).once(name, callback); + }, + hasEventListeners: function (name) { + return getEventDispatcher(this).has(name); + } + }; + + var DOM$1 = DOMUtils.DOM; + var customEventRootDelegates; + var getEventTarget = function (editor, eventName) { + if (eventName === 'selectionchange') { + return editor.getDoc(); + } + if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) { + return editor.getDoc().documentElement; + } + if (editor.settings.event_root) { + if (!editor.eventRoot) { + editor.eventRoot = DOM$1.select(editor.settings.event_root)[0]; + } + return editor.eventRoot; + } + return editor.getBody(); + }; + var bindEventDelegate = function (editor, eventName) { + var eventRootElm, delegate; + var isListening = function (editor) { + return !editor.hidden && !editor.readonly; + }; + if (!editor.delegates) { + editor.delegates = {}; + } + if (editor.delegates[eventName] || editor.removed) { + return; + } + eventRootElm = getEventTarget(editor, eventName); + if (editor.settings.event_root) { + if (!customEventRootDelegates) { + customEventRootDelegates = {}; + editor.editorManager.on('removeEditor', function () { + var name; + if (!editor.editorManager.activeEditor) { + if (customEventRootDelegates) { + for (name in customEventRootDelegates) { + editor.dom.unbind(getEventTarget(editor, name)); + } + customEventRootDelegates = null; + } + } + }); + } + if (customEventRootDelegates[eventName]) { + return; + } + delegate = function (e) { + var target = e.target; + var editors = editor.editorManager.get(); + var i = editors.length; + while (i--) { + var body = editors[i].getBody(); + if (body === target || DOM$1.isChildOf(target, body)) { + if (isListening(editors[i])) { + editors[i].fire(eventName, e); + } + } + } + }; + customEventRootDelegates[eventName] = delegate; + DOM$1.bind(eventRootElm, eventName, delegate); + } else { + delegate = function (e) { + if (isListening(editor)) { + editor.fire(eventName, e); + } + }; + DOM$1.bind(eventRootElm, eventName, delegate); + editor.delegates[eventName] = delegate; + } + }; + var EditorObservable = { + bindPendingEventDelegates: function () { + var self = this; + $_a5gegtjje5o2pum.each(self._pendingNativeEvents, function (name) { + bindEventDelegate(self, name); + }); + }, + toggleNativeEvent: function (name, state) { + var self = this; + if (name === 'focus' || name === 'blur') { + return; + } + if (state) { + if (self.initialized) { + bindEventDelegate(self, name); + } else { + if (!self._pendingNativeEvents) { + self._pendingNativeEvents = [name]; + } else { + self._pendingNativeEvents.push(name); + } + } + } else if (self.initialized) { + self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); + delete self.delegates[name]; + } + }, + unbindAllNativeEvents: function () { + var self = this; + var body = self.getBody(); + var dom = self.dom; + var name; + if (self.delegates) { + for (name in self.delegates) { + self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); + } + delete self.delegates; + } + if (!self.inline && body && dom) { + body.onload = null; + dom.unbind(self.getWin()); + dom.unbind(self.getDoc()); + } + if (dom) { + dom.unbind(body); + dom.unbind(self.getContainer()); + } + } + }; + EditorObservable = $_a5gegtjje5o2pum.extend({}, $_8mfz0u44je5o2qmp, EditorObservable); + var EditorObservable$1 = EditorObservable; + + var setEditorCommandState = function (editor, cmd, state) { + try { + editor.getDoc().execCommand(cmd, false, state); + } catch (ex) { + } + }; + var clickBlocker = function (editor) { + var target, handler; + target = editor.getBody(); + handler = function (e) { + if (editor.dom.getParents(e.target, 'a').length > 0) { + e.preventDefault(); + } + }; + editor.dom.bind(target, 'click', handler); + return { + unbind: function () { + editor.dom.unbind(target, 'click', handler); + } + }; + }; + var toggleReadOnly = function (editor, state) { + if (editor._clickBlocker) { + editor._clickBlocker.unbind(); + editor._clickBlocker = null; + } + if (state) { + editor._clickBlocker = clickBlocker(editor); + editor.selection.controlSelection.hideResizeRect(); + editor.readonly = true; + editor.getBody().contentEditable = false; + } else { + editor.readonly = false; + editor.getBody().contentEditable = true; + setEditorCommandState(editor, 'StyleWithCSS', false); + setEditorCommandState(editor, 'enableInlineTableEditing', false); + setEditorCommandState(editor, 'enableObjectResizing', false); + editor.focus(); + editor.nodeChanged(); + } + }; + var setMode = function (editor, mode) { + var currentMode = editor.readonly ? 'readonly' : 'design'; + if (mode === currentMode) { + return; + } + if (editor.initialized) { + toggleReadOnly(editor, mode === 'readonly'); + } else { + editor.on('init', function () { + toggleReadOnly(editor, mode === 'readonly'); + }); + } + editor.fire('SwitchMode', { mode: mode }); + }; + var $_7uzwj846je5o2qmw = { setMode: setMode }; + + var each$10 = $_a5gegtjje5o2pum.each; + var explode$3 = $_a5gegtjje5o2pum.explode; + var keyCodeLookup = { + f9: 120, + f10: 121, + f11: 122 + }; + var modifierNames = $_a5gegtjje5o2pum.makeMap('alt,ctrl,shift,meta,access'); + function Shortcuts (editor) { + var self = this; + var shortcuts = {}; + var pendingPatterns = []; + var parseShortcut = function (pattern) { + var id, key; + var shortcut = {}; + each$10(explode$3(pattern, '+'), function (value) { + if (value in modifierNames) { + shortcut[value] = true; + } else { + if (/^[0-9]{2,}$/.test(value)) { + shortcut.keyCode = parseInt(value, 10); + } else { + shortcut.charCode = value.charCodeAt(0); + shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0); + } + } + }); + id = [shortcut.keyCode]; + for (key in modifierNames) { + if (shortcut[key]) { + id.push(key); + } else { + shortcut[key] = false; + } + } + shortcut.id = id.join(','); + if (shortcut.access) { + shortcut.alt = true; + if ($_9bd8pn9je5o2pp2.mac) { + shortcut.ctrl = true; + } else { + shortcut.shift = true; + } + } + if (shortcut.meta) { + if ($_9bd8pn9je5o2pp2.mac) { + shortcut.meta = true; + } else { + shortcut.ctrl = true; + shortcut.meta = false; + } + } + return shortcut; + }; + var createShortcut = function (pattern, desc, cmdFunc, scope) { + var shortcuts; + shortcuts = $_a5gegtjje5o2pum.map(explode$3(pattern, '>'), parseShortcut); + shortcuts[shortcuts.length - 1] = $_a5gegtjje5o2pum.extend(shortcuts[shortcuts.length - 1], { + func: cmdFunc, + scope: scope || editor + }); + return $_a5gegtjje5o2pum.extend(shortcuts[0], { + desc: editor.translate(desc), + subpatterns: shortcuts.slice(1) + }); + }; + var hasModifier = function (e) { + return e.altKey || e.ctrlKey || e.metaKey; + }; + var isFunctionKey = function (e) { + return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123; + }; + var matchShortcut = function (e, shortcut) { + if (!shortcut) { + return false; + } + if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) { + return false; + } + if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) { + return false; + } + if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) { + e.preventDefault(); + return true; + } + return false; + }; + var executeShortcutAction = function (shortcut) { + return shortcut.func ? shortcut.func.call(shortcut.scope) : null; + }; + editor.on('keyup keypress keydown', function (e) { + if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) { + each$10(shortcuts, function (shortcut) { + if (matchShortcut(e, shortcut)) { + pendingPatterns = shortcut.subpatterns.slice(0); + if (e.type === 'keydown') { + executeShortcutAction(shortcut); + } + return true; + } + }); + if (matchShortcut(e, pendingPatterns[0])) { + if (pendingPatterns.length === 1) { + if (e.type === 'keydown') { + executeShortcutAction(pendingPatterns[0]); + } + } + pendingPatterns.shift(); + } + } + }); + self.add = function (pattern, desc, cmdFunc, scope) { + var cmd; + cmd = cmdFunc; + if (typeof cmdFunc === 'string') { + cmdFunc = function () { + editor.execCommand(cmd, false, null); + }; + } else if ($_a5gegtjje5o2pum.isArray(cmd)) { + cmdFunc = function () { + editor.execCommand(cmd[0], cmd[1], cmd[2]); + }; + } + each$10(explode$3($_a5gegtjje5o2pum.trim(pattern.toLowerCase())), function (pattern) { + var shortcut = createShortcut(pattern, desc, cmdFunc, scope); + shortcuts[shortcut.id] = shortcut; + }); + return true; + }; + self.remove = function (pattern) { + var shortcut = createShortcut(pattern); + if (shortcuts[shortcut.id]) { + delete shortcuts[shortcut.id]; + return true; + } + return false; + }; + } + + var any$1 = function (predicate) { + return $_au2qfe30je5o2qb4.first(predicate).isSome(); + }; + var ancestor$3 = function (scope, predicate, isRoot) { + return $_au2qfe30je5o2qb4.ancestor(scope, predicate, isRoot).isSome(); + }; + var closest$3 = function (scope, predicate, isRoot) { + return $_au2qfe30je5o2qb4.closest(scope, predicate, isRoot).isSome(); + }; + var sibling$4 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.sibling(scope, predicate).isSome(); + }; + var child$4 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.child(scope, predicate).isSome(); + }; + var descendant$3 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.descendant(scope, predicate).isSome(); + }; + var $_byozzr4aje5o2qnk = { + any: any$1, + ancestor: ancestor$3, + closest: closest$3, + sibling: sibling$4, + child: child$4, + descendant: descendant$3 + }; + + var focus = function (element) { + element.dom().focus(); + }; + var blur = function (element) { + element.dom().blur(); + }; + var hasFocus = function (element) { + var doc = $_a6mttx17je5o2pyd.owner(element).dom(); + return element.dom() === doc.activeElement; + }; + var active = function (_doc) { + var doc = _doc !== undefined ? _doc.dom() : document; + return Option.from(doc.activeElement).map($_5tcb2dyje5o2pwu.fromDom); + }; + var focusInside = function (element) { + var doc = $_a6mttx17je5o2pyd.owner(element); + var inside = active(doc).filter(function (a) { + return $_byozzr4aje5o2qnk.closest(a, $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, element)); + }); + inside.fold(function () { + focus(element); + }, $_enfhkv6je5o2ply.noop); + }; + var search = function (element) { + return active($_a6mttx17je5o2pyd.owner(element)).filter(function (e) { + return element.dom().contains(e.dom()); + }); + }; + var $_7ndv7y49je5o2qng = { + hasFocus: hasFocus, + focus: focus, + blur: blur, + active: active, + search: search, + focusInside: focusInside + }; + + var getContentEditableHost = function (editor, node) { + return editor.dom.getParent(node, function (node) { + return editor.dom.getContentEditable(node) === 'true'; + }); + }; + var getCollapsedNode = function (rng) { + return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map($_5tcb2dyje5o2pwu.fromDom) : Option.none(); + }; + var getFocusInElement = function (root, rng) { + return getCollapsedNode(rng).bind(function (node) { + if (isTableSection(node)) { + return Option.some(node); + } else if ($_7oppmo1dje5o2pz1.contains(root, node) === false) { + return Option.some(root); + } else { + return Option.none(); + } + }); + }; + var normalizeSelection = function (editor, rng) { + getFocusInElement($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), rng).bind(function (elm) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(elm.dom()); + }).fold(function () { + return editor.selection.normalize(); + }, function (caretPos) { + return editor.selection.setRng(caretPos.toRange()); + }); + }; + var focusBody = function (body) { + if (body.setActive) { + try { + body.setActive(); + } catch (ex) { + body.focus(); + } + } else { + body.focus(); + } + }; + var hasElementFocus = function (elm) { + return $_7ndv7y49je5o2qng.hasFocus(elm) || $_7ndv7y49je5o2qng.search(elm).isSome(); + }; + var hasIframeFocus = function (editor) { + return editor.iframeElement && $_7ndv7y49je5o2qng.hasFocus($_5tcb2dyje5o2pwu.fromDom(editor.iframeElement)); + }; + var hasInlineFocus = function (editor) { + var rawBody = editor.getBody(); + return rawBody && hasElementFocus($_5tcb2dyje5o2pwu.fromDom(rawBody)); + }; + var hasFocus$1 = function (editor) { + return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor); + }; + var focusEditor = function (editor) { + var selection = editor.selection, contentEditable = editor.settings.content_editable; + var body = editor.getBody(); + var contentEditableHost, rng = selection.getRng(); + editor.quirks.refreshContentEditable(); + contentEditableHost = getContentEditableHost(editor, selection.getNode()); + if (editor.$.contains(body, contentEditableHost)) { + focusBody(contentEditableHost); + normalizeSelection(editor, rng); + activateEditor(editor); + return; + } + if (editor.bookmark !== undefined && hasFocus$1(editor) === false) { + $_fnd7h33zje5o2qly.getRng(editor).each(function (bookmarkRng) { + editor.selection.setRng(bookmarkRng); + rng = bookmarkRng; + }); + } + if (!contentEditable) { + if (!$_9bd8pn9je5o2pp2.opera) { + focusBody(body); + } + editor.getWin().focus(); + } + if ($_9bd8pn9je5o2pp2.gecko || contentEditable) { + focusBody(body); + normalizeSelection(editor, rng); + } + activateEditor(editor); + }; + var activateEditor = function (editor) { + editor.editorManager.setActive(editor); + }; + var focus$1 = function (editor, skipFocus) { + if (editor.removed) { + return; + } + skipFocus ? activateEditor(editor) : focusEditor(editor); + }; + var $_llx5i48je5o2qna = { + focus: focus$1, + hasFocus: hasFocus$1 + }; + + var getProp = function (propName, elm) { + var rawElm = elm.dom(); + return rawElm[propName]; + }; + var getComputedSizeProp = function (propName, elm) { + return parseInt($_1ioope11je5o2px4.get(elm, propName), 10); + }; + var getClientWidth = $_enfhkv6je5o2ply.curry(getProp, 'clientWidth'); + var getClientHeight = $_enfhkv6je5o2ply.curry(getProp, 'clientHeight'); + var getMarginTop = $_enfhkv6je5o2ply.curry(getComputedSizeProp, 'margin-top'); + var getMarginLeft = $_enfhkv6je5o2ply.curry(getComputedSizeProp, 'margin-left'); + var getBoundingClientRect$1 = function (elm) { + return elm.dom().getBoundingClientRect(); + }; + var isInsideElementContentArea = function (bodyElm, clientX, clientY) { + var clientWidth = getClientWidth(bodyElm); + var clientHeight = getClientHeight(bodyElm); + return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight; + }; + var transpose = function (inline, elm, clientX, clientY) { + var clientRect = getBoundingClientRect$1(elm); + var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0; + var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0; + var x = clientX - deltaX; + var y = clientY - deltaY; + return { + x: x, + y: y + }; + }; + var isXYInContentArea = function (editor, clientX, clientY) { + var bodyElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var targetElm = editor.inline ? bodyElm : $_a6mttx17je5o2pyd.documentElement(bodyElm); + var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY); + return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y); + }; + var fromDomSafe = function (node) { + return Option.from(node).map($_5tcb2dyje5o2pwu.fromDom); + }; + var isEditorAttachedToDom = function (editor) { + var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer(); + return fromDomSafe(rawContainer).map(function (container) { + return $_7oppmo1dje5o2pz1.contains($_a6mttx17je5o2pyd.owner(container), container); + }).getOr(false); + }; + var $_3f7nxx4dje5o2qoa = { + isXYInContentArea: isXYInContentArea, + isEditorAttachedToDom: isEditorAttachedToDom + }; + + function NotificationManagerImpl () { + var unimplemented = function () { + throw new Error('Theme did not provide a NotificationManager implementation.'); + }; + return { + open: unimplemented, + close: unimplemented, + reposition: unimplemented, + getArgs: unimplemented + }; + } + + function NotificationManager (editor) { + var notifications = []; + var getImplementation = function () { + var theme = editor.theme; + return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl(); + }; + var getTopNotification = function () { + return Option.from(notifications[0]); + }; + var isEqual = function (a, b) { + return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout; + }; + var reposition = function () { + if (notifications.length > 0) { + getImplementation().reposition(notifications); + } + }; + var addNotification = function (notification) { + notifications.push(notification); + }; + var closeNotification = function (notification) { + $_bwcteb4je5o2pl4.findIndex(notifications, function (otherNotification) { + return otherNotification === notification; + }).each(function (index) { + notifications.splice(index, 1); + }); + }; + var open = function (args) { + if (editor.removed || !$_3f7nxx4dje5o2qoa.isEditorAttachedToDom(editor)) { + return; + } + return $_bwcteb4je5o2pl4.find(notifications, function (notification) { + return isEqual(getImplementation().getArgs(notification), args); + }).getOrThunk(function () { + editor.editorManager.setActive(editor); + var notification = getImplementation().open(args, function () { + closeNotification(notification); + reposition(); + }); + addNotification(notification); + reposition(); + return notification; + }); + }; + var close = function () { + getTopNotification().each(function (notification) { + getImplementation().close(notification); + closeNotification(notification); + reposition(); + }); + }; + var getNotifications = function () { + return notifications; + }; + var registerEvents = function (editor) { + editor.on('SkinLoaded', function () { + var serviceMessage = editor.settings.service_message; + if (serviceMessage) { + open({ + text: serviceMessage, + type: 'warning', + timeout: 0, + icon: '' + }); + } + }); + editor.on('ResizeEditor ResizeWindow', function () { + $_db41wogje5o2ps3.requestAnimationFrame(reposition); + }); + editor.on('remove', function () { + $_bwcteb4je5o2pl4.each(notifications, function (notification) { + getImplementation().close(notification); + }); + }); + }; + registerEvents(editor); + return { + open: open, + close: close, + getNotifications: getNotifications + }; + } + + function WindowManagerImpl () { + var unimplemented = function () { + throw new Error('Theme did not provide a WindowManager implementation.'); + }; + return { + open: unimplemented, + alert: unimplemented, + confirm: unimplemented, + close: unimplemented, + getParams: unimplemented, + setParams: unimplemented + }; + } + + function WindowManager (editor) { + var windows = []; + var getImplementation = function () { + var theme = editor.theme; + return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl(); + }; + var funcBind = function (scope, f) { + return function () { + return f ? f.apply(scope, arguments) : undefined; + }; + }; + var fireOpenEvent = function (win) { + editor.fire('OpenWindow', { win: win }); + }; + var fireCloseEvent = function (win) { + editor.fire('CloseWindow', { win: win }); + }; + var addWindow = function (win) { + windows.push(win); + fireOpenEvent(win); + }; + var closeWindow = function (win) { + $_bwcteb4je5o2pl4.findIndex(windows, function (otherWindow) { + return otherWindow === win; + }).each(function (index) { + windows.splice(index, 1); + fireCloseEvent(win); + if (windows.length === 0) { + editor.focus(); + } + }); + }; + var getTopWindow = function () { + return Option.from(windows[windows.length - 1]); + }; + var open = function (args, params) { + editor.editorManager.setActive(editor); + $_fnd7h33zje5o2qly.store(editor); + var win = getImplementation().open(args, params, closeWindow); + addWindow(win); + return win; + }; + var alert = function (message, callback, scope) { + var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow); + addWindow(win); + }; + var confirm = function (message, callback, scope) { + var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow); + addWindow(win); + }; + var close = function () { + getTopWindow().each(function (win) { + getImplementation().close(win); + closeWindow(win); + }); + }; + var getParams = function () { + return getTopWindow().map(getImplementation().getParams).getOr(null); + }; + var setParams = function (params) { + getTopWindow().each(function (win) { + getImplementation().setParams(win, params); + }); + }; + var getWindows = function () { + return windows; + }; + editor.on('remove', function () { + $_bwcteb4je5o2pl4.each(windows.slice(0), function (win) { + getImplementation().close(win); + }); + }); + return { + windows: windows, + open: open, + alert: alert, + confirm: confirm, + close: close, + getParams: getParams, + setParams: setParams, + getWindows: getWindows + }; + } + + var PluginManager = AddOnManager.PluginManager; + var resolvePluginName = function (targetUrl, suffix) { + for (var name_1 in PluginManager.urls) { + var matchUrl = PluginManager.urls[name_1] + '/plugin' + suffix + '.js'; + if (matchUrl === targetUrl) { + return name_1; + } + } + return null; + }; + var pluginUrlToMessage = function (editor, url) { + var plugin = resolvePluginName(url, editor.suffix); + return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url; + }; + var displayNotification = function (editor, message) { + editor.notificationManager.open({ + type: 'error', + text: message + }); + }; + var displayError = function (editor, message) { + if (editor._skinLoaded) { + displayNotification(editor, message); + } else { + editor.on('SkinLoaded', function () { + displayNotification(editor, message); + }); + } + }; + var uploadError = function (editor, message) { + displayError(editor, 'Failed to upload image: ' + message); + }; + var pluginLoadError = function (editor, url) { + displayError(editor, pluginUrlToMessage(editor, url)); + }; + var initError = function (message) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var console = window.console; + if (console) { + if (console.error) { + console.error.apply(console, arguments); + } else { + console.log.apply(console, arguments); + } + } + }; + var $_axrd1j4hje5o2qor = { + pluginLoadError: pluginLoadError, + uploadError: uploadError, + displayError: displayError, + initError: initError + }; + + var PluginManager$1 = AddOnManager.PluginManager; + + var ThemeManager = AddOnManager.ThemeManager; + + function XMLHttpRequest () { + var f = $_lmz5vbje5o2pp9.getOrDie('XMLHttpRequest'); + return new f(); + } + + function Uploader (uploadStatus, settings) { + var pendingPromises = {}; + var pathJoin = function (path1, path2) { + if (path1) { + return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, ''); + } + return path2; + }; + var defaultHandler = function (blobInfo, success, failure, progress) { + var xhr, formData; + xhr = new XMLHttpRequest(); + xhr.open('POST', settings.url); + xhr.withCredentials = settings.credentials; + xhr.upload.onprogress = function (e) { + progress(e.loaded / e.total * 100); + }; + xhr.onerror = function () { + failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); + }; + xhr.onload = function () { + var json; + if (xhr.status < 200 || xhr.status >= 300) { + failure('HTTP Error: ' + xhr.status); + return; + } + json = JSON.parse(xhr.responseText); + if (!json || typeof json.location !== 'string') { + failure('Invalid JSON: ' + xhr.responseText); + return; + } + success(pathJoin(settings.basePath, json.location)); + }; + formData = new FormData(); + formData.append('file', blobInfo.blob(), blobInfo.filename()); + xhr.send(formData); + }; + var noUpload = function () { + return new promiseObj(function (resolve) { + resolve([]); + }); + }; + var handlerSuccess = function (blobInfo, url) { + return { + url: url, + blobInfo: blobInfo, + status: true + }; + }; + var handlerFailure = function (blobInfo, error) { + return { + url: '', + blobInfo: blobInfo, + status: false, + error: error + }; + }; + var resolvePending = function (blobUri, result) { + $_a5gegtjje5o2pum.each(pendingPromises[blobUri], function (resolve) { + resolve(result); + }); + delete pendingPromises[blobUri]; + }; + var uploadBlobInfo = function (blobInfo, handler, openNotification) { + uploadStatus.markPending(blobInfo.blobUri()); + return new promiseObj(function (resolve) { + var notification, progress; + var noop = function () { + }; + try { + var closeNotification_1 = function () { + if (notification) { + notification.close(); + progress = noop; + } + }; + var success = function (url) { + closeNotification_1(); + uploadStatus.markUploaded(blobInfo.blobUri(), url); + resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url)); + resolve(handlerSuccess(blobInfo, url)); + }; + var failure = function (error) { + closeNotification_1(); + uploadStatus.removeFailed(blobInfo.blobUri()); + resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error)); + resolve(handlerFailure(blobInfo, error)); + }; + progress = function (percent) { + if (percent < 0 || percent > 100) { + return; + } + if (!notification) { + notification = openNotification(); + } + notification.progressBar.value(percent); + }; + handler(blobInfo, success, failure, progress); + } catch (ex) { + resolve(handlerFailure(blobInfo, ex.message)); + } + }); + }; + var isDefaultHandler = function (handler) { + return handler === defaultHandler; + }; + var pendingUploadBlobInfo = function (blobInfo) { + var blobUri = blobInfo.blobUri(); + return new promiseObj(function (resolve) { + pendingPromises[blobUri] = pendingPromises[blobUri] || []; + pendingPromises[blobUri].push(resolve); + }); + }; + var uploadBlobs = function (blobInfos, openNotification) { + blobInfos = $_a5gegtjje5o2pum.grep(blobInfos, function (blobInfo) { + return !uploadStatus.isUploaded(blobInfo.blobUri()); + }); + return promiseObj.all($_a5gegtjje5o2pum.map(blobInfos, function (blobInfo) { + return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification); + })); + }; + var upload = function (blobInfos, openNotification) { + return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification); + }; + settings = $_a5gegtjje5o2pum.extend({ + credentials: false, + handler: defaultHandler + }, settings); + return { upload: upload }; + } + + function Blob (parts, properties) { + var f = $_lmz5vbje5o2pp9.getOrDie('Blob'); + return new f(parts, properties); + } + + function FileReader () { + var f = $_lmz5vbje5o2pp9.getOrDie('FileReader'); + return new f(); + } + + function Uint8Array (arr) { + var f = $_lmz5vbje5o2pp9.getOrDie('Uint8Array'); + return new f(arr); + } + + var requestAnimationFrame$1 = function (callback) { + var f = $_lmz5vbje5o2pp9.getOrDie('requestAnimationFrame'); + f(callback); + }; + var atob = function (base64) { + var f = $_lmz5vbje5o2pp9.getOrDie('atob'); + return f(base64); + }; + var $_9okclz4uje5o2qq7 = { + atob: atob, + requestAnimationFrame: requestAnimationFrame$1 + }; + + var blobUriToBlob = function (url) { + return new promiseObj(function (resolve, reject) { + var rejectWithError = function () { + reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.'); + }; + try { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'blob'; + xhr.onload = function () { + if (this.status === 200) { + resolve(this.response); + } else { + rejectWithError(); + } + }; + xhr.onerror = rejectWithError; + xhr.send(); + } catch (ex) { + rejectWithError(); + } + }); + }; + var parseDataUri = function (uri) { + var type, matches; + uri = decodeURIComponent(uri).split(','); + matches = /data:([^;]+)/.exec(uri[0]); + if (matches) { + type = matches[1]; + } + return { + type: type, + data: uri[1] + }; + }; + var dataUriToBlob = function (uri) { + return new promiseObj(function (resolve) { + var str, arr, i; + uri = parseDataUri(uri); + try { + str = $_9okclz4uje5o2qq7.atob(uri.data); + } catch (e) { + resolve(new Blob([])); + return; + } + arr = new Uint8Array(str.length); + for (i = 0; i < arr.length; i++) { + arr[i] = str.charCodeAt(i); + } + resolve(new Blob([arr], { type: uri.type })); + }); + }; + var uriToBlob = function (url) { + if (url.indexOf('blob:') === 0) { + return blobUriToBlob(url); + } + if (url.indexOf('data:') === 0) { + return dataUriToBlob(url); + } + return null; + }; + var blobToDataUri = function (blob) { + return new promiseObj(function (resolve) { + var reader = new FileReader(); + reader.onloadend = function () { + resolve(reader.result); + }; + reader.readAsDataURL(blob); + }); + }; + var $_8a34kg4qje5o2qpz = { + uriToBlob: uriToBlob, + blobToDataUri: blobToDataUri, + parseDataUri: parseDataUri + }; + + var count = 0; + var uniqueId = function (prefix) { + return (prefix || 'blobid') + count++; + }; + var imageToBlobInfo = function (blobCache, img, resolve, reject) { + var base64, blobInfo; + if (img.src.indexOf('blob:') === 0) { + blobInfo = blobCache.getByUri(img.src); + if (blobInfo) { + resolve({ + image: img, + blobInfo: blobInfo + }); + } else { + $_8a34kg4qje5o2qpz.uriToBlob(img.src).then(function (blob) { + $_8a34kg4qje5o2qpz.blobToDataUri(blob).then(function (dataUri) { + base64 = $_8a34kg4qje5o2qpz.parseDataUri(dataUri).data; + blobInfo = blobCache.create(uniqueId(), blob, base64); + blobCache.add(blobInfo); + resolve({ + image: img, + blobInfo: blobInfo + }); + }); + }, function (err) { + reject(err); + }); + } + return; + } + base64 = $_8a34kg4qje5o2qpz.parseDataUri(img.src).data; + blobInfo = blobCache.findFirst(function (cachedBlobInfo) { + return cachedBlobInfo.base64() === base64; + }); + if (blobInfo) { + resolve({ + image: img, + blobInfo: blobInfo + }); + } else { + $_8a34kg4qje5o2qpz.uriToBlob(img.src).then(function (blob) { + blobInfo = blobCache.create(uniqueId(), blob, base64); + blobCache.add(blobInfo); + resolve({ + image: img, + blobInfo: blobInfo + }); + }, function (err) { + reject(err); + }); + } + }; + var getAllImages = function (elm) { + return elm ? elm.getElementsByTagName('img') : []; + }; + function ImageScanner (uploadStatus, blobCache) { + var cachedPromises = {}; + var findAll = function (elm, predicate) { + var images; + if (!predicate) { + predicate = $_ghq3nq25je5o2q5q.constant(true); + } + images = $_c2vc3pkje5o2puw.filter(getAllImages(elm), function (img) { + var src = img.src; + if (!$_9bd8pn9je5o2pp2.fileApi) { + return false; + } + if (img.hasAttribute('data-mce-bogus')) { + return false; + } + if (img.hasAttribute('data-mce-placeholder')) { + return false; + } + if (!src || src === $_9bd8pn9je5o2pp2.transparentSrc) { + return false; + } + if (src.indexOf('blob:') === 0) { + return !uploadStatus.isUploaded(src); + } + if (src.indexOf('data:') === 0) { + return predicate(img); + } + return false; + }); + var promises = $_c2vc3pkje5o2puw.map(images, function (img) { + if (cachedPromises[img.src]) { + return new promiseObj(function (resolve) { + cachedPromises[img.src].then(function (imageInfo) { + if (typeof imageInfo === 'string') { + return imageInfo; + } + resolve({ + image: img, + blobInfo: imageInfo.blobInfo + }); + }); + }); + } + var newPromise = new promiseObj(function (resolve, reject) { + imageToBlobInfo(blobCache, img, resolve, reject); + }).then(function (result) { + delete cachedPromises[result.image.src]; + return result; + }).catch(function (error) { + delete cachedPromises[img.src]; + return error; + }); + cachedPromises[img.src] = newPromise; + return newPromise; + }); + return promiseObj.all(promises); + }; + return { findAll: findAll }; + } + + var count$1 = 0; + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 4294967295).toString(36); + }; + var now = new Date().getTime(); + return 's' + now.toString(36) + rnd() + rnd() + rnd(); + }; + var uuid = function (prefix) { + return prefix + count$1++ + seed(); + }; + var $_2bgddd4wje5o2qqo = { uuid: uuid }; + + function BlobCache () { + var cache = []; + var constant = $_ghq3nq25je5o2q5q.constant; + var mimeToExt = function (mime) { + var mimes = { + 'image/jpeg': 'jpg', + 'image/jpg': 'jpg', + 'image/gif': 'gif', + 'image/png': 'png' + }; + return mimes[mime.toLowerCase()] || 'dat'; + }; + var create = function (o, blob, base64, filename) { + return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({ + id: o, + name: filename, + blob: blob, + base64: base64 + }); + }; + var toBlobInfo = function (o) { + var id, name; + if (!o.blob || !o.base64) { + throw new Error('blob and base64 representations of the image are required for BlobInfo to be created'); + } + id = o.id || $_2bgddd4wje5o2qqo.uuid('blobid'); + name = o.name || id; + return { + id: constant(id), + name: constant(name), + filename: constant(name + '.' + mimeToExt(o.blob.type)), + blob: constant(o.blob), + base64: constant(o.base64), + blobUri: constant(o.blobUri || $_g0v736aje5o2pp8.createObjectURL(o.blob)), + uri: constant(o.uri) + }; + }; + var add = function (blobInfo) { + if (!get(blobInfo.id())) { + cache.push(blobInfo); + } + }; + var get = function (id) { + return findFirst(function (cachedBlobInfo) { + return cachedBlobInfo.id() === id; + }); + }; + var findFirst = function (predicate) { + return $_c2vc3pkje5o2puw.filter(cache, predicate)[0]; + }; + var getByUri = function (blobUri) { + return findFirst(function (blobInfo) { + return blobInfo.blobUri() === blobUri; + }); + }; + var removeByUri = function (blobUri) { + cache = $_c2vc3pkje5o2puw.filter(cache, function (blobInfo) { + if (blobInfo.blobUri() === blobUri) { + $_g0v736aje5o2pp8.revokeObjectURL(blobInfo.blobUri()); + return false; + } + return true; + }); + }; + var destroy = function () { + $_c2vc3pkje5o2puw.each(cache, function (cachedBlobInfo) { + $_g0v736aje5o2pp8.revokeObjectURL(cachedBlobInfo.blobUri()); + }); + cache = []; + }; + return { + create: create, + add: add, + get: get, + getByUri: getByUri, + findFirst: findFirst, + removeByUri: removeByUri, + destroy: destroy + }; + } + + function UploadStatus () { + var PENDING = 1, UPLOADED = 2; + var blobUriStatuses = {}; + var createStatus = function (status, resultUri) { + return { + status: status, + resultUri: resultUri + }; + }; + var hasBlobUri = function (blobUri) { + return blobUri in blobUriStatuses; + }; + var getResultUri = function (blobUri) { + var result = blobUriStatuses[blobUri]; + return result ? result.resultUri : null; + }; + var isPending = function (blobUri) { + return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false; + }; + var isUploaded = function (blobUri) { + return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false; + }; + var markPending = function (blobUri) { + blobUriStatuses[blobUri] = createStatus(PENDING, null); + }; + var markUploaded = function (blobUri, resultUri) { + blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri); + }; + var removeFailed = function (blobUri) { + delete blobUriStatuses[blobUri]; + }; + var destroy = function () { + blobUriStatuses = {}; + }; + return { + hasBlobUri: hasBlobUri, + getResultUri: getResultUri, + isPending: isPending, + isUploaded: isUploaded, + markPending: markPending, + markUploaded: markUploaded, + removeFailed: removeFailed, + destroy: destroy + }; + } + + function EditorUpload (editor) { + var blobCache = BlobCache(); + var uploader, imageScanner; + var settings = editor.settings; + var uploadStatus = UploadStatus(); + var aliveGuard = function (callback) { + return function (result) { + if (editor.selection) { + return callback(result); + } + return []; + }; + }; + var cacheInvalidator = function () { + return '?' + new Date().getTime(); + }; + var replaceString = function (content, search, replace) { + var index = 0; + do { + index = content.indexOf(search, index); + if (index !== -1) { + content = content.substring(0, index) + replace + content.substr(index + search.length); + index += replace.length - search.length + 1; + } + } while (index !== -1); + return content; + }; + var replaceImageUrl = function (content, targetUrl, replacementUrl) { + content = replaceString(content, 'src="' + targetUrl + '"', 'src="' + replacementUrl + '"'); + content = replaceString(content, 'data-mce-src="' + targetUrl + '"', 'data-mce-src="' + replacementUrl + '"'); + return content; + }; + var replaceUrlInUndoStack = function (targetUrl, replacementUrl) { + $_c2vc3pkje5o2puw.each(editor.undoManager.data, function (level) { + if (level.type === 'fragmented') { + level.fragments = $_c2vc3pkje5o2puw.map(level.fragments, function (fragment) { + return replaceImageUrl(fragment, targetUrl, replacementUrl); + }); + } else { + level.content = replaceImageUrl(level.content, targetUrl, replacementUrl); + } + }); + }; + var openNotification = function () { + return editor.notificationManager.open({ + text: editor.translate('Image uploading...'), + type: 'info', + timeout: -1, + progressBar: true + }); + }; + var replaceImageUri = function (image, resultUri) { + blobCache.removeByUri(image.src); + replaceUrlInUndoStack(image.src, resultUri); + editor.$(image).attr({ + 'src': settings.images_reuse_filename ? resultUri + cacheInvalidator() : resultUri, + 'data-mce-src': editor.convertURL(resultUri, 'src') + }); + }; + var uploadImages = function (callback) { + if (!uploader) { + uploader = Uploader(uploadStatus, { + url: settings.images_upload_url, + basePath: settings.images_upload_base_path, + credentials: settings.images_upload_credentials, + handler: settings.images_upload_handler + }); + } + return scanForImages().then(aliveGuard(function (imageInfos) { + var blobInfos; + blobInfos = $_c2vc3pkje5o2puw.map(imageInfos, function (imageInfo) { + return imageInfo.blobInfo; + }); + return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) { + var filteredResult = $_c2vc3pkje5o2puw.map(result, function (uploadInfo, index) { + var image = imageInfos[index].image; + if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) { + replaceImageUri(image, uploadInfo.url); + } else if (uploadInfo.error) { + $_axrd1j4hje5o2qor.uploadError(editor, uploadInfo.error); + } + return { + element: image, + status: uploadInfo.status + }; + }); + if (callback) { + callback(filteredResult); + } + return filteredResult; + })); + })); + }; + var uploadImagesAuto = function (callback) { + if (settings.automatic_uploads !== false) { + return uploadImages(callback); + } + }; + var isValidDataUriImage = function (imgElm) { + return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true; + }; + var scanForImages = function () { + if (!imageScanner) { + imageScanner = ImageScanner(uploadStatus, blobCache); + } + return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) { + result = $_c2vc3pkje5o2puw.filter(result, function (resultItem) { + if (typeof resultItem === 'string') { + $_axrd1j4hje5o2qor.displayError(editor, resultItem); + return false; + } + return true; + }); + $_c2vc3pkje5o2puw.each(result, function (resultItem) { + replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri()); + resultItem.image.src = resultItem.blobInfo.blobUri(); + resultItem.image.removeAttribute('data-mce-src'); + }); + return result; + })); + }; + var destroy = function () { + blobCache.destroy(); + uploadStatus.destroy(); + imageScanner = uploader = null; + }; + var replaceBlobUris = function (content) { + return content.replace(/src="(blob:[^"]+)"/g, function (match, blobUri) { + var resultUri = uploadStatus.getResultUri(blobUri); + if (resultUri) { + return 'src="' + resultUri + '"'; + } + var blobInfo = blobCache.getByUri(blobUri); + if (!blobInfo) { + blobInfo = $_c2vc3pkje5o2puw.reduce(editor.editorManager.get(), function (result, editor) { + return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri); + }, null); + } + if (blobInfo) { + return 'src="data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '"'; + } + return match; + }); + }; + editor.on('setContent', function () { + if (editor.settings.automatic_uploads !== false) { + uploadImagesAuto(); + } else { + scanForImages(); + } + }); + editor.on('RawSaveContent', function (e) { + e.content = replaceBlobUris(e.content); + }); + editor.on('getContent', function (e) { + if (e.source_view || e.format === 'raw') { + return; + } + e.content = replaceBlobUris(e.content); + }); + editor.on('PostRender', function () { + editor.parser.addNodeFilter('img', function (images) { + $_c2vc3pkje5o2puw.each(images, function (img) { + var src = img.attr('src'); + if (blobCache.getByUri(src)) { + return; + } + var resultUri = uploadStatus.getResultUri(src); + if (resultUri) { + img.attr('src', resultUri); + } + }); + }); + }); + return { + blobCache: blobCache, + uploadImages: uploadImages, + uploadImagesAuto: uploadImagesAuto, + scanForImages: scanForImages, + destroy: destroy + }; + } + + var isBlockElement = function (blockElements, node) { + return blockElements.hasOwnProperty(node.nodeName); + }; + var isValidTarget = function (blockElements, node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + return true; + } else if ($_9owqcy1qje5o2q0e.isElement(node)) { + return !isBlockElement(blockElements, node) && !$_83h91t2jje5o2q8n.isBookmarkNode(node); + } else { + return false; + } + }; + var hasBlockParent = function (blockElements, root, node) { + return $_bwcteb4je5o2pl4.exists($_yqcmh39je5o2qcw.parents($_5tcb2dyje5o2pwu.fromDom(node), $_5tcb2dyje5o2pwu.fromDom(root)), function (elm) { + return isBlockElement(blockElements, elm.dom()); + }); + }; + var shouldRemoveTextNode = function (blockElements, node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + if (node.nodeValue.length === 0) { + return true; + } else if (/^\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) { + return true; + } + } + return false; + }; + var addRootBlocks = function (editor) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection; + var schema = editor.schema, blockElements = schema.getBlockElements(); + var node = selection.getStart(); + var rootNode = editor.getBody(); + var rng; + var startContainer, startOffset, endContainer, endOffset, rootBlockNode; + var tempNode, wrapped, restoreSelection; + var rootNodeName, forcedRootBlock; + forcedRootBlock = settings.forced_root_block; + if (!node || !$_9owqcy1qje5o2q0e.isElement(node) || !forcedRootBlock) { + return; + } + rootNodeName = rootNode.nodeName.toLowerCase(); + if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) { + return; + } + rng = selection.getRng(); + startContainer = rng.startContainer; + startOffset = rng.startOffset; + endContainer = rng.endContainer; + endOffset = rng.endOffset; + restoreSelection = $_llx5i48je5o2qna.hasFocus(editor); + node = rootNode.firstChild; + while (node) { + if (isValidTarget(blockElements, node)) { + if (shouldRemoveTextNode(blockElements, node)) { + tempNode = node; + node = node.nextSibling; + dom.remove(tempNode); + continue; + } + if (!rootBlockNode) { + rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs); + node.parentNode.insertBefore(rootBlockNode, node); + wrapped = true; + } + tempNode = node; + node = node.nextSibling; + rootBlockNode.appendChild(tempNode); + } else { + rootBlockNode = null; + node = node.nextSibling; + } + } + if (wrapped && restoreSelection) { + rng.setStart(startContainer, startOffset); + rng.setEnd(endContainer, endOffset); + selection.setRng(rng); + editor.nodeChanged(); + } + }; + var setup$1 = function (editor) { + if (editor.settings.forced_root_block) { + editor.on('NodeChange', $_enfhkv6je5o2ply.curry(addRootBlocks, editor)); + } + }; + var $_fekqo94yje5o2qqs = { setup: setup$1 }; + + function NodeChange (editor) { + var lastRng, lastPath = []; + var isSameElementPath = function (startElm) { + var i, currentPath; + currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm); + if (currentPath.length === lastPath.length) { + for (i = currentPath.length; i >= 0; i--) { + if (currentPath[i] !== lastPath[i]) { + break; + } + } + if (i === -1) { + lastPath = currentPath; + return true; + } + } + lastPath = currentPath; + return false; + }; + if (!('onselectionchange' in editor.getDoc())) { + editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) { + var nativeRng, fakeRng; + nativeRng = editor.selection.getRng(); + fakeRng = { + startContainer: nativeRng.startContainer, + startOffset: nativeRng.startOffset, + endContainer: nativeRng.endContainer, + endOffset: nativeRng.endOffset + }; + if (e.type === 'nodechange' || !$_aieo7z3yje5o2qlw.isEq(fakeRng, lastRng)) { + editor.fire('SelectionChange'); + } + lastRng = fakeRng; + }); + } + editor.on('contextmenu', function () { + editor.fire('SelectionChange'); + }); + editor.on('SelectionChange', function () { + var startElm = editor.selection.getStart(true); + if (!startElm || !$_9bd8pn9je5o2pp2.range && editor.selection.isCollapsed()) { + return; + } + if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) { + editor.nodeChanged({ selectionChange: true }); + } + }); + editor.on('MouseUp', function (e) { + if (!e.isDefaultPrevented()) { + if (editor.selection.getNode().nodeName === 'IMG') { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + editor.nodeChanged(); + }); + } else { + editor.nodeChanged(); + } + } + }); + this.nodeChanged = function (args) { + var selection = editor.selection; + var node, parents, root; + if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) { + root = editor.getBody(); + node = selection.getStart(true) || root; + if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) { + node = root; + } + parents = []; + editor.dom.getParent(node, function (node) { + if (node === root) { + return true; + } + parents.push(node); + }); + args = args || {}; + args.element = node; + args.parents = parents; + editor.fire('NodeChange', args); + } + }; + } + + var getAbsolutePosition = function (elm) { + var doc, docElem, win, clientRect; + clientRect = elm.getBoundingClientRect(); + doc = elm.ownerDocument; + docElem = doc.documentElement; + win = doc.defaultView; + return { + top: clientRect.top + win.pageYOffset - docElem.clientTop, + left: clientRect.left + win.pageXOffset - docElem.clientLeft + }; + }; + var getBodyPosition = function (editor) { + return editor.inline ? getAbsolutePosition(editor.getBody()) : { + left: 0, + top: 0 + }; + }; + var getScrollPosition = function (editor) { + var body = editor.getBody(); + return editor.inline ? { + left: body.scrollLeft, + top: body.scrollTop + } : { + left: 0, + top: 0 + }; + }; + var getBodyScroll = function (editor) { + var body = editor.getBody(), docElm = editor.getDoc().documentElement; + var inlineScroll = { + left: body.scrollLeft, + top: body.scrollTop + }; + var iframeScroll = { + left: body.scrollLeft || docElm.scrollLeft, + top: body.scrollTop || docElm.scrollTop + }; + return editor.inline ? inlineScroll : iframeScroll; + }; + var getMousePosition = function (editor, event) { + if (event.target.ownerDocument !== editor.getDoc()) { + var iframePosition = getAbsolutePosition(editor.getContentAreaContainer()); + var scrollPosition = getBodyScroll(editor); + return { + left: event.pageX - iframePosition.left + scrollPosition.left, + top: event.pageY - iframePosition.top + scrollPosition.top + }; + } + return { + left: event.pageX, + top: event.pageY + }; + }; + var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) { + return { + pageX: mousePosition.left - bodyPosition.left + scrollPosition.left, + pageY: mousePosition.top - bodyPosition.top + scrollPosition.top + }; + }; + var calc = function (editor, event) { + return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event)); + }; + var $_f685v452je5o2qrw = { calc: calc }; + + var isContentEditableFalse$7 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isContentEditableTrue$4 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isDraggable = function (rootElm, elm) { + return isContentEditableFalse$7(elm) && elm !== rootElm; + }; + var isValidDropTarget = function (editor, targetElement, dragElement) { + if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) { + return false; + } + if (isContentEditableFalse$7(targetElement)) { + return false; + } + return true; + }; + var cloneElement = function (elm) { + var cloneElm = elm.cloneNode(true); + cloneElm.removeAttribute('data-mce-selected'); + return cloneElm; + }; + var createGhost = function (editor, elm, width, height) { + var clonedElm = elm.cloneNode(true); + editor.dom.setStyles(clonedElm, { + width: width, + height: height + }); + editor.dom.setAttrib(clonedElm, 'data-mce-selected', null); + var ghostElm = editor.dom.create('div', { + 'class': 'mce-drag-container', + 'data-mce-bogus': 'all', + 'unselectable': 'on', + 'contenteditable': 'false' + }); + editor.dom.setStyles(ghostElm, { + position: 'absolute', + opacity: 0.5, + overflow: 'hidden', + border: 0, + padding: 0, + margin: 0, + width: width, + height: height + }); + editor.dom.setStyles(clonedElm, { + margin: 0, + boxSizing: 'border-box' + }); + ghostElm.appendChild(clonedElm); + return ghostElm; + }; + var appendGhostToBody = function (ghostElm, bodyElm) { + if (ghostElm.parentNode !== bodyElm) { + bodyElm.appendChild(ghostElm); + } + }; + var moveGhost = function (ghostElm, position, width, height, maxX, maxY) { + var overflowX = 0, overflowY = 0; + ghostElm.style.left = position.pageX + 'px'; + ghostElm.style.top = position.pageY + 'px'; + if (position.pageX + width > maxX) { + overflowX = position.pageX + width - maxX; + } + if (position.pageY + height > maxY) { + overflowY = position.pageY + height - maxY; + } + ghostElm.style.width = width - overflowX + 'px'; + ghostElm.style.height = height - overflowY + 'px'; + }; + var removeElement = function (elm) { + if (elm && elm.parentNode) { + elm.parentNode.removeChild(elm); + } + }; + var isLeftMouseButtonPressed = function (e) { + return e.button === 0; + }; + var hasDraggableElement = function (state) { + return state.element; + }; + var applyRelPos = function (state, position) { + return { + pageX: position.pageX - state.relX, + pageY: position.pageY + 5 + }; + }; + var start$1 = function (state, editor) { + return function (e) { + if (isLeftMouseButtonPressed(e)) { + var ceElm = $_c2vc3pkje5o2puw.find(editor.dom.getParents(e.target), $_ghq3nq25je5o2q5q.or(isContentEditableFalse$7, isContentEditableTrue$4)); + if (isDraggable(editor.getBody(), ceElm)) { + var elmPos = editor.dom.getPos(ceElm); + var bodyElm = editor.getBody(); + var docElm = editor.getDoc().documentElement; + state.element = ceElm; + state.screenX = e.screenX; + state.screenY = e.screenY; + state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2; + state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2; + state.relX = e.pageX - elmPos.x; + state.relY = e.pageY - elmPos.y; + state.width = ceElm.offsetWidth; + state.height = ceElm.offsetHeight; + state.ghost = createGhost(editor, ceElm, state.width, state.height); + } + } + }; + }; + var move$1 = function (state, editor) { + var throttledPlaceCaretAt = $_db41wogje5o2ps3.throttle(function (clientX, clientY) { + editor._selectionOverrides.hideFakeCaret(); + editor.selection.placeCaretAt(clientX, clientY); + }, 0); + return function (e) { + var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY)); + if (hasDraggableElement(state) && !state.dragging && movement > 10) { + var args = editor.fire('dragstart', { target: state.element }); + if (args.isDefaultPrevented()) { + return; + } + state.dragging = true; + editor.focus(); + } + if (state.dragging) { + var targetPos = applyRelPos(state, $_f685v452je5o2qrw.calc(editor, e)); + appendGhostToBody(state.ghost, editor.getBody()); + moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY); + throttledPlaceCaretAt(e.clientX, e.clientY); + } + }; + }; + var getRawTarget = function (selection) { + var rng = selection.getSel().getRangeAt(0); + var startContainer = rng.startContainer; + return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer; + }; + var drop = function (state, editor) { + return function (e) { + if (state.dragging) { + if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) { + var targetClone_1 = cloneElement(state.element); + var args = editor.fire('drop', { + targetClone: targetClone_1, + clientX: e.clientX, + clientY: e.clientY + }); + if (!args.isDefaultPrevented()) { + targetClone_1 = args.targetClone; + editor.undoManager.transact(function () { + removeElement(state.element); + editor.insertContent(editor.dom.getOuterHTML(targetClone_1)); + editor._selectionOverrides.hideFakeCaret(); + }); + } + } + } + removeDragState(state); + }; + }; + var stop = function (state, editor) { + return function () { + removeDragState(state); + if (state.dragging) { + editor.fire('dragend'); + } + }; + }; + var removeDragState = function (state) { + state.dragging = false; + state.element = null; + removeElement(state.ghost); + }; + var bindFakeDragEvents = function (editor) { + var state = {}; + var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument; + pageDom = DOMUtils.DOM; + rootDocument = document; + dragStartHandler = start$1(state, editor); + dragHandler = move$1(state, editor); + dropHandler = drop(state, editor); + dragEndHandler = stop(state, editor); + editor.on('mousedown', dragStartHandler); + editor.on('mousemove', dragHandler); + editor.on('mouseup', dropHandler); + pageDom.bind(rootDocument, 'mousemove', dragHandler); + pageDom.bind(rootDocument, 'mouseup', dragEndHandler); + editor.on('remove', function () { + pageDom.unbind(rootDocument, 'mousemove', dragHandler); + pageDom.unbind(rootDocument, 'mouseup', dragEndHandler); + }); + }; + var blockIeDrop = function (editor) { + editor.on('drop', function (e) { + var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null; + if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) { + e.preventDefault(); + } + }); + }; + var init = function (editor) { + bindFakeDragEvents(editor); + blockIeDrop(editor); + }; + var $_dmqizi51je5o2qrp = { init: init }; + + var getNodeClientRects = function (node) { + var toArrayWithNode = function (clientRects) { + return $_c2vc3pkje5o2puw.map(clientRects, function (clientRect) { + clientRect = clone$1(clientRect); + clientRect.node = node; + return clientRect; + }); + }; + if ($_9owqcy1qje5o2q0e.isElement(node)) { + return toArrayWithNode(node.getClientRects()); + } + if ($_9owqcy1qje5o2q0e.isText(node)) { + var rng = node.ownerDocument.createRange(); + rng.setStart(node, 0); + rng.setEnd(node, node.data.length); + return toArrayWithNode(rng.getClientRects()); + } + }; + var getClientRects = function (node) { + return $_c2vc3pkje5o2puw.reduce(node, function (result, node) { + return result.concat(getNodeClientRects(node)); + }, []); + }; + + var VDirection; + (function (VDirection) { + VDirection[VDirection['Up'] = -1] = 'Up'; + VDirection[VDirection['Down'] = 1] = 'Down'; + }(VDirection || (VDirection = {}))); + var findUntil = function (direction, root, predicateFn, node) { + while (node = findNode(node, direction, isEditableCaretCandidate, root)) { + if (predicateFn(node)) { + return; + } + } + }; + var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) { + var line = 0, node; + var result = []; + var targetClientRect; + var add = function (node) { + var i, clientRect, clientRects; + clientRects = getClientRects([node]); + if (direction === -1) { + clientRects = clientRects.reverse(); + } + for (i = 0; i < clientRects.length; i++) { + clientRect = clientRects[i]; + if (isBeflowFn(clientRect, targetClientRect)) { + continue; + } + if (result.length > 0 && isAboveFn(clientRect, $_c2vc3pkje5o2puw.last(result))) { + line++; + } + clientRect.line = line; + if (predicateFn(clientRect)) { + return true; + } + result.push(clientRect); + } + }; + targetClientRect = $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + if (!targetClientRect) { + return result; + } + node = caretPosition.getNode(); + add(node); + findUntil(direction, root, add, node); + return result; + }; + var aboveLineNumber = function (lineNumber, clientRect) { + return clientRect.line > lineNumber; + }; + var isLineNumber = function (lineNumber, clientRect) { + return clientRect.line === lineNumber; + }; + var upUntil = $_enfhkv6je5o2ply.curry(walkUntil, VDirection.Up, isAbove, isBelow); + var downUntil = $_enfhkv6je5o2ply.curry(walkUntil, VDirection.Down, isBelow, isAbove); + var positionsUntil = function (direction, root, predicateFn, node) { + var caretWalker = CaretWalker(root); + var walkFn, isBelowFn, isAboveFn, caretPosition; + var result = []; + var line = 0, clientRect, targetClientRect; + var getClientRect = function (caretPosition) { + if (direction === 1) { + return $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + } + return $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + }; + if (direction === 1) { + walkFn = caretWalker.next; + isBelowFn = isBelow; + isAboveFn = isAbove; + caretPosition = CaretPosition$1.after(node); + } else { + walkFn = caretWalker.prev; + isBelowFn = isAbove; + isAboveFn = isBelow; + caretPosition = CaretPosition$1.before(node); + } + targetClientRect = getClientRect(caretPosition); + do { + if (!caretPosition.isVisible()) { + continue; + } + clientRect = getClientRect(caretPosition); + if (isAboveFn(clientRect, targetClientRect)) { + continue; + } + if (result.length > 0 && isBelowFn(clientRect, $_c2vc3pkje5o2puw.last(result))) { + line++; + } + clientRect = clone$1(clientRect); + clientRect.position = caretPosition; + clientRect.line = line; + if (predicateFn(clientRect)) { + return result; + } + result.push(clientRect); + } while (caretPosition = walkFn(caretPosition)); + return result; + }; + var isAboveLine = function (lineNumber) { + return function (clientRect) { + return aboveLineNumber(lineNumber, clientRect); + }; + }; + var isLine = function (lineNumber) { + return function (clientRect) { + return isLineNumber(lineNumber, clientRect); + }; + }; + + var isContentEditableFalse$8 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var findNode$1 = findNode; + var distanceToRectLeft = function (clientRect, clientX) { + return Math.abs(clientRect.left - clientX); + }; + var distanceToRectRight = function (clientRect, clientX) { + return Math.abs(clientRect.right - clientX); + }; + var isInside = function (clientX, clientRect) { + return clientX >= clientRect.left && clientX <= clientRect.right; + }; + var findClosestClientRect = function (clientRects, clientX) { + return $_c2vc3pkje5o2puw.reduce(clientRects, function (oldClientRect, clientRect) { + var oldDistance, newDistance; + oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX)); + newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX)); + if (isInside(clientX, clientRect)) { + return clientRect; + } + if (isInside(clientX, oldClientRect)) { + return oldClientRect; + } + if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) { + return clientRect; + } + if (newDistance < oldDistance) { + return clientRect; + } + return oldClientRect; + }); + }; + var walkUntil$1 = function (direction, root, predicateFn, node) { + while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) { + if (predicateFn(node)) { + return; + } + } + }; + var findLineNodeRects = function (root, targetNodeRect) { + var clientRects = []; + var collect = function (checkPosFn, node) { + var lineRects; + lineRects = $_c2vc3pkje5o2puw.filter(getClientRects([node]), function (clientRect) { + return !checkPosFn(clientRect, targetNodeRect); + }); + clientRects = clientRects.concat(lineRects); + return lineRects.length === 0; + }; + clientRects.push(targetNodeRect); + walkUntil$1(VDirection.Up, root, $_enfhkv6je5o2ply.curry(collect, isAbove), targetNodeRect.node); + walkUntil$1(VDirection.Down, root, $_enfhkv6je5o2ply.curry(collect, isBelow), targetNodeRect.node); + return clientRects; + }; + var getFakeCaretTargets = function (root) { + return $_c2vc3pkje5o2puw.filter($_c2vc3pkje5o2puw.toArray(root.getElementsByTagName('*')), isFakeCaretTarget); + }; + var caretInfo = function (clientRect, clientX) { + return { + node: clientRect.node, + before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX) + }; + }; + var closestCaret = function (root, clientX, clientY) { + var closestNodeRect; + var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root)); + var targetNodeRects = $_c2vc3pkje5o2puw.filter(contentEditableFalseNodeRects, function (rect) { + return clientY >= rect.top && clientY <= rect.bottom; + }); + closestNodeRect = findClosestClientRect(targetNodeRects, clientX); + if (closestNodeRect) { + closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX); + if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) { + return caretInfo(closestNodeRect, clientX); + } + } + return null; + }; + + var isXYWithinRange = function (clientX, clientY, range) { + if (range.collapsed) { + return false; + } + return $_bwcteb4je5o2pl4.foldl(range.getClientRects(), function (state, rect) { + return state || containsXY(rect, clientX, clientY); + }, false); + }; + var $_40xr2y56je5o2qsc = { isXYWithinRange: isXYWithinRange }; + + var adaptable = function (fn, rate) { + var timer = null; + var args = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + args = null; + } + }; + var throttle = function () { + args = arguments; + if (timer === null) { + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + } + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var first$3 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = arguments; + if (timer === null) { + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + } + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var last$3 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = arguments; + if (timer !== null) + clearTimeout(timer); + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var $_7qjijn58je5o2qsg = { + adaptable: adaptable, + first: first$3, + last: last$3 + }; + + var setup$2 = function (editor) { + var renderFocusCaret = $_7qjijn58je5o2qsg.first(function () { + if (!editor.removed) { + var rng = editor.selection.getRng(); + if (rng.collapsed) { + var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false); + editor.selection.setRng(caretRange); + } + } + }, 0); + editor.on('focus', function () { + renderFocusCaret.throttle(); + }); + editor.on('blur', function () { + renderFocusCaret.cancel(); + }); + }; + var $_ceg6uc57je5o2qse = { setup: setup$2 }; + + var $_99mhlk59je5o2qss = { + BACKSPACE: 8, + DELETE: 46, + DOWN: 40, + ENTER: 13, + LEFT: 37, + RIGHT: 39, + SPACEBAR: 32, + TAB: 9, + UP: 38, + modifierPressed: function (e) { + return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e); + }, + metaKeyPressed: function (e) { + return $_9bd8pn9je5o2pp2.mac ? e.metaKey : e.ctrlKey && !e.altKey; + } + }; + + var isContentEditableTrue$5 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$9 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isAfterContentEditableFalse$1 = isAfterContentEditableFalse; + var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse; + var SelectionOverrides = function (editor) { + var isBlock = function (node) { + return editor.dom.isBlock(node); + }; + var rootNode = editor.getBody(); + var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () { + return $_llx5i48je5o2qna.hasFocus(editor); + }); + var realSelectionId = 'sel-' + editor.dom.uniqueId(); + var selectedContentEditableNode; + var isFakeSelectionElement = function (elm) { + return editor.dom.hasClass(elm, 'mce-offscreen-selection'); + }; + var getRealSelectionElement = function () { + var container = editor.dom.get(realSelectionId); + return container ? container.getElementsByTagName('*')[0] : container; + }; + var setRange = function (range) { + if (range) { + editor.selection.setRng(range); + } + }; + var getRange = function () { + return editor.selection.getRng(); + }; + var showCaret$$1 = function (direction, node, before, scrollIntoView) { + if (scrollIntoView === void 0) { + scrollIntoView = true; + } + var e; + e = editor.fire('ShowCaret', { + target: node, + direction: direction, + before: before + }); + if (e.isDefaultPrevented()) { + return null; + } + if (scrollIntoView) { + editor.selection.scrollIntoView(node, direction === -1); + } + return fakeCaret.show(before, node); + }; + var getNormalizedRangeEndPoint$$1 = function (direction, range) { + range = normalizeRange(direction, rootNode, range); + if (direction === -1) { + return CaretPosition$1.fromRangeStart(range); + } + return CaretPosition$1.fromRangeEnd(range); + }; + var showBlockCaretContainer = function (blockCaretContainer) { + if (blockCaretContainer.hasAttribute('data-mce-caret')) { + showCaretContainerBlock(blockCaretContainer); + setRange(getRange()); + editor.selection.scrollIntoView(blockCaretContainer[0]); + } + }; + var registerEvents = function () { + var getContentEditableRoot = function (node) { + var root = editor.getBody(); + while (node && node !== root) { + if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + editor.on('mouseup', function (e) { + var range = getRange(); + if (range.collapsed && $_3f7nxx4dje5o2qoa.isXYInContentArea(editor, e.clientX, e.clientY)) { + setRange(renderCaretAtRange(editor, range, false)); + } + }); + editor.on('click', function (e) { + var contentEditableRoot; + contentEditableRoot = getContentEditableRoot(e.target); + if (contentEditableRoot) { + if (isContentEditableFalse$9(contentEditableRoot)) { + e.preventDefault(); + editor.focus(); + } + if (isContentEditableTrue$5(contentEditableRoot)) { + if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) { + removeContentEditableSelection(); + } + } + } + }); + editor.on('blur NewBlock', function () { + removeContentEditableSelection(); + }); + var handleTouchSelect = function (editor) { + var moved = false; + editor.on('touchstart', function () { + moved = false; + }); + editor.on('touchmove', function () { + moved = true; + }); + editor.on('touchend', function (e) { + var contentEditableRoot = getContentEditableRoot(e.target); + if (isContentEditableFalse$9(contentEditableRoot)) { + if (!moved) { + e.preventDefault(); + setContentEditableSelection(selectNode(editor, contentEditableRoot)); + } + } + }); + }; + var hasNormalCaretPosition = function (elm) { + var caretWalker = CaretWalker(elm); + if (!elm.firstChild) { + return false; + } + var startPos = CaretPosition$1.before(elm.firstChild); + var newPos = caretWalker.next(startPos); + return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos); + }; + var isInSameBlock$$1 = function (node1, node2) { + var block1 = editor.dom.getParent(node1, editor.dom.isBlock); + var block2 = editor.dom.getParent(node2, editor.dom.isBlock); + return block1 === block2; + }; + var hasBetterMouseTarget = function (targetNode, caretNode) { + var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock); + var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock); + return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock); + }; + handleTouchSelect(editor); + editor.on('mousedown', function (e) { + var contentEditableRoot; + var targetElm = e.target; + if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) { + return; + } + if ($_3f7nxx4dje5o2qoa.isXYInContentArea(editor, e.clientX, e.clientY) === false) { + return; + } + contentEditableRoot = getContentEditableRoot(targetElm); + if (contentEditableRoot) { + if (isContentEditableFalse$9(contentEditableRoot)) { + e.preventDefault(); + setContentEditableSelection(selectNode(editor, contentEditableRoot)); + } else { + removeContentEditableSelection(); + if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !$_40xr2y56je5o2qsc.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) { + editor.selection.placeCaretAt(e.clientX, e.clientY); + } + } + } else if (isFakeCaretTarget(targetElm) === false) { + removeContentEditableSelection(); + hideFakeCaret(); + var caretInfo = closestCaret(rootNode, e.clientX, e.clientY); + if (caretInfo) { + if (!hasBetterMouseTarget(e.target, caretInfo.node)) { + e.preventDefault(); + var range = showCaret$$1(1, caretInfo.node, caretInfo.before, false); + editor.getBody().focus(); + setRange(range); + } + } + } + }); + editor.on('keypress', function (e) { + if ($_99mhlk59je5o2qss.modifierPressed(e)) { + return; + } + switch (e.keyCode) { + default: + if (isContentEditableFalse$9(editor.selection.getNode())) { + e.preventDefault(); + } + break; + } + }); + editor.on('getSelectionRange', function (e) { + var rng = e.range; + if (selectedContentEditableNode) { + if (!selectedContentEditableNode.parentNode) { + selectedContentEditableNode = null; + return; + } + rng = rng.cloneRange(); + rng.selectNode(selectedContentEditableNode); + e.range = rng; + } + }); + editor.on('setSelectionRange', function (e) { + var rng; + rng = setContentEditableSelection(e.range, e.forward); + if (rng) { + e.range = rng; + } + }); + editor.on('AfterSetSelectionRange', function (e) { + var rng = e.range; + if (!isRangeInCaretContainer(rng)) { + hideFakeCaret(); + } + if (!isFakeSelectionElement(rng.startContainer.parentNode)) { + removeContentEditableSelection(); + } + }); + editor.on('copy', function (e) { + var clipboardData = e.clipboardData; + if (!e.isDefaultPrevented() && e.clipboardData && !$_9bd8pn9je5o2pp2.ie) { + var realSelectionElement = getRealSelectionElement(); + if (realSelectionElement) { + e.preventDefault(); + clipboardData.clearData(); + clipboardData.setData('text/html', realSelectionElement.outerHTML); + clipboardData.setData('text/plain', realSelectionElement.outerText); + } + } + }); + $_dmqizi51je5o2qrp.init(editor); + $_ceg6uc57je5o2qse.setup(editor); + }; + var addCss = function () { + var styles = editor.contentStyles, rootClass = '.mce-content-body'; + styles.push(fakeCaret.getCss()); + styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}'); + }; + var isWithinCaretContainer = function (node) { + return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node); + }; + var isRangeInCaretContainer = function (rng) { + return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer); + }; + var setContentEditableSelection = function (range, forward) { + var node; + var $ = editor.$; + var dom = editor.dom; + var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone; + if (!range) { + return null; + } + if (range.collapsed) { + if (!isRangeInCaretContainer(range)) { + if (forward === false) { + caretPosition = getNormalizedRangeEndPoint$$1(-1, range); + if (isFakeCaretTarget(caretPosition.getNode(true))) { + return showCaret$$1(-1, caretPosition.getNode(true), false, false); + } + if (isFakeCaretTarget(caretPosition.getNode())) { + return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + } else { + caretPosition = getNormalizedRangeEndPoint$$1(1, range); + if (isFakeCaretTarget(caretPosition.getNode())) { + return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + if (isFakeCaretTarget(caretPosition.getNode(true))) { + return showCaret$$1(1, caretPosition.getNode(true), false, false); + } + } + } + return null; + } + startContainer = range.startContainer; + startOffset = range.startOffset; + endOffset = range.endOffset; + if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) { + startContainer = startContainer.parentNode; + startOffset = dom.nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + if (startContainer.nodeType !== 1) { + return null; + } + if (endOffset === startOffset + 1) { + node = startContainer.childNodes[startOffset]; + } + if (!isContentEditableFalse$9(node)) { + return null; + } + targetClone = origTargetClone = node.cloneNode(true); + e = editor.fire('ObjectSelected', { + target: node, + targetClone: targetClone + }); + if (e.isDefaultPrevented()) { + return null; + } + $realSelectionContainer = $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () { + return $([]); + }, function (elm) { + return $([elm.dom()]); + }); + targetClone = e.targetClone; + if ($realSelectionContainer.length === 0) { + $realSelectionContainer = $('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr('id', realSelectionId); + $realSelectionContainer.appendTo(editor.getBody()); + } + range = editor.dom.createRng(); + if (targetClone === origTargetClone && $_9bd8pn9je5o2pp2.ie) { + $realSelectionContainer.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xA0</p>').append(targetClone); + range.setStartAfter($realSelectionContainer[0].firstChild.firstChild); + range.setEndAfter(targetClone); + } else { + $realSelectionContainer.empty().append('\xA0').append(targetClone).append('\xA0'); + range.setStart($realSelectionContainer[0].firstChild, 1); + range.setEnd($realSelectionContainer[0].lastChild, 0); + } + $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y }); + $realSelectionContainer[0].focus(); + sel = editor.selection.getSel(); + sel.removeAllRanges(); + sel.addRange(range); + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) { + $_3uo9pl14je5o2pxq.remove(elm, 'data-mce-selected'); + }); + node.setAttribute('data-mce-selected', '1'); + selectedContentEditableNode = node; + hideFakeCaret(); + return range; + }; + var removeContentEditableSelection = function () { + if (selectedContentEditableNode) { + selectedContentEditableNode.removeAttribute('data-mce-selected'); + $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '#' + realSelectionId).each($_cr1seh2pje5o2qa1.remove); + selectedContentEditableNode = null; + } + }; + var destroy = function () { + fakeCaret.destroy(); + selectedContentEditableNode = null; + }; + var hideFakeCaret = function () { + fakeCaret.hide(); + }; + if ($_9bd8pn9je5o2pp2.ceFalse) { + registerEvents(); + addCss(); + } + return { + showCaret: showCaret$$1, + showBlockCaretContainer: showBlockCaretContainer, + hideFakeCaret: hideFakeCaret, + destroy: destroy + }; + }; + + var each$11 = $_a5gegtjje5o2pum.each; + var isValidPrefixAttrName = function (name) { + return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0; + }; + var trimComments = function (text) { + return text.replace(/<!--|-->/g, ''); + }; + var findEndTagIndex = function (schema, html, startIndex) { + var count = 1, index, matches, tokenRegExp, shortEndedElements; + shortEndedElements = schema.getShortEndedElements(); + tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g; + tokenRegExp.lastIndex = index = startIndex; + while (matches = tokenRegExp.exec(html)) { + index = tokenRegExp.lastIndex; + if (matches[1] === '/') { + count--; + } else if (!matches[1]) { + if (matches[2] in shortEndedElements) { + continue; + } + count++; + } + if (count === 0) { + break; + } + } + return index; + }; + function SaxParser(settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var noop = function () { + }; + settings = settings || {}; + if (settings.fix_self_closing !== false) { + settings.fix_self_closing = true; + } + each$11('comment cdata text start end pi doctype'.split(' '), function (name) { + if (name) { + self[name] = settings[name] || noop; + } + }); + var comment = settings.comment ? settings.comment : noop; + var cdata = settings.cdata ? settings.cdata : noop; + var text = settings.text ? settings.text : noop; + var start = settings.start ? settings.start : noop; + var end = settings.end ? settings.end : noop; + var pi = settings.pi ? settings.pi : noop; + var doctype = settings.doctype ? settings.doctype : noop; + var parse = function (html) { + var matches, index = 0, value, endRegExp; + var stack = []; + var attrList, i, textData, name; + var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded; + var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns; + var attributesRequired, attributesDefault, attributesForced, processHtml; + var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0; + var decode = $_fzh4ld1rje5o2q0t.decode; + var fixSelfClosing; + var filteredUrlAttrs = $_a5gegtjje5o2pum.makeMap('src,href,data,background,formaction,poster'); + var scriptUriRegExp = /((java|vb)script|mhtml):/i, dataUriRegExp = /^data:/i; + var processEndTag = function (name) { + var pos, i; + pos = stack.length; + while (pos--) { + if (stack[pos].name === name) { + break; + } + } + if (pos >= 0) { + for (i = stack.length - 1; i >= pos; i--) { + name = stack[i]; + if (name.valid) { + end(name.name); + } + } + stack.length = pos; + } + }; + var parseAttribute = function (match, name, value, val2, val3) { + var attrRule, i; + var trimRegExp = /[\s\u0000-\u001F]+/g; + name = name.toLowerCase(); + value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); + if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) { + attrRule = validAttributesMap[name]; + if (!attrRule && validAttributePatterns) { + i = validAttributePatterns.length; + while (i--) { + attrRule = validAttributePatterns[i]; + if (attrRule.pattern.test(name)) { + break; + } + } + if (i === -1) { + attrRule = null; + } + } + if (!attrRule) { + return; + } + if (attrRule.validValues && !(value in attrRule.validValues)) { + return; + } + } + if (filteredUrlAttrs[name] && !settings.allow_script_urls) { + var uri = value.replace(trimRegExp, ''); + try { + uri = decodeURIComponent(uri); + } catch (ex) { + uri = unescape(uri); + } + if (scriptUriRegExp.test(uri)) { + return; + } + if (!settings.allow_html_data_urls && dataUriRegExp.test(uri) && !/^data:image\//i.test(uri)) { + return; + } + } + if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) { + return; + } + attrList.map[name] = value; + attrList.push({ + name: name, + value: value + }); + }; + tokenRegExp = new RegExp('<(?:' + '(?:!--([\\w\\W]*?)-->)|' + '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + '(?:!DOCTYPE([\\w\\W]*?)>)|' + '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + '(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + ')', 'g'); + attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g; + shortEndedElements = schema.getShortEndedElements(); + selfClosing = settings.self_closing_elements || schema.getSelfClosingElements(); + fillAttrsMap = schema.getBoolAttrs(); + validate = settings.validate; + removeInternalElements = settings.remove_internals; + fixSelfClosing = settings.fix_self_closing; + specialElements = schema.getSpecialElements(); + processHtml = html + '>'; + while (matches = tokenRegExp.exec(processHtml)) { + if (index < matches.index) { + text(decode(html.substr(index, matches.index - index))); + } + if (value = matches[6]) { + value = value.toLowerCase(); + if (value.charAt(0) === ':') { + value = value.substr(1); + } + processEndTag(value); + } else if (value = matches[7]) { + if (matches.index + matches[0].length > html.length) { + text(decode(html.substr(matches.index))); + index = matches.index + matches[0].length; + continue; + } + value = value.toLowerCase(); + if (value.charAt(0) === ':') { + value = value.substr(1); + } + isShortEnded = value in shortEndedElements; + if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) { + processEndTag(value); + } + if (!validate || (elementRule = schema.getElementRule(value))) { + isValidElement = true; + if (validate) { + validAttributesMap = elementRule.attributes; + validAttributePatterns = elementRule.attributePatterns; + } + if (attribsValue = matches[8]) { + isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; + if (isInternalElement && removeInternalElements) { + isValidElement = false; + } + attrList = []; + attrList.map = {}; + attribsValue.replace(attrRegExp, parseAttribute); + } else { + attrList = []; + attrList.map = {}; + } + if (validate && !isInternalElement) { + attributesRequired = elementRule.attributesRequired; + attributesDefault = elementRule.attributesDefault; + attributesForced = elementRule.attributesForced; + anyAttributesRequired = elementRule.removeEmptyAttrs; + if (anyAttributesRequired && !attrList.length) { + isValidElement = false; + } + if (attributesForced) { + i = attributesForced.length; + while (i--) { + attr = attributesForced[i]; + name = attr.name; + attrValue = attr.value; + if (attrValue === '{$uid}') { + attrValue = 'mce_' + idCount++; + } + attrList.map[name] = attrValue; + attrList.push({ + name: name, + value: attrValue + }); + } + } + if (attributesDefault) { + i = attributesDefault.length; + while (i--) { + attr = attributesDefault[i]; + name = attr.name; + if (!(name in attrList.map)) { + attrValue = attr.value; + if (attrValue === '{$uid}') { + attrValue = 'mce_' + idCount++; + } + attrList.map[name] = attrValue; + attrList.push({ + name: name, + value: attrValue + }); + } + } + } + if (attributesRequired) { + i = attributesRequired.length; + while (i--) { + if (attributesRequired[i] in attrList.map) { + break; + } + } + if (i === -1) { + isValidElement = false; + } + } + if (attr = attrList.map['data-mce-bogus']) { + if (attr === 'all') { + index = findEndTagIndex(schema, html, tokenRegExp.lastIndex); + tokenRegExp.lastIndex = index; + continue; + } + isValidElement = false; + } + } + if (isValidElement) { + start(value, attrList, isShortEnded); + } + } else { + isValidElement = false; + } + if (endRegExp = specialElements[value]) { + endRegExp.lastIndex = index = matches.index + matches[0].length; + if (matches = endRegExp.exec(html)) { + if (isValidElement) { + textData = html.substr(index, matches.index - index); + } + index = matches.index + matches[0].length; + } else { + textData = html.substr(index); + index = html.length; + } + if (isValidElement) { + if (textData.length > 0) { + text(textData, true); + } + end(value); + } + tokenRegExp.lastIndex = index; + continue; + } + if (!isShortEnded) { + if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) { + stack.push({ + name: value, + valid: isValidElement + }); + } else if (isValidElement) { + end(value); + } + } + } else if (value = matches[1]) { + if (value.charAt(0) === '>') { + value = ' ' + value; + } + if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') { + value = ' ' + value; + } + comment(value); + } else if (value = matches[2]) { + cdata(trimComments(value)); + } else if (value = matches[3]) { + doctype(value); + } else if (value = matches[4]) { + pi(value, matches[5]); + } + index = matches.index + matches[0].length; + } + if (index < html.length) { + text(decode(html.substr(index))); + } + for (i = stack.length - 1; i >= 0; i--) { + value = stack[i]; + if (value.valid) { + end(value.name); + } + } + }; + return { parse: parse }; + } + (function (SaxParser) { + SaxParser.findEndTag = findEndTagIndex; + }(SaxParser || (SaxParser = {}))); + var SaxParser$1 = SaxParser; + + var trimHtml = function (tempAttrs, html) { + var trimContentRegExp = new RegExp(['\\s?(' + tempAttrs.join('|') + ')="[^"]+"'].join('|'), 'gi'); + return html.replace(trimContentRegExp, ''); + }; + var trimInternal = function (serializer, html) { + var content = html; + var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g; + var endTagIndex, index, matchLength, matches, shortEndedElements; + var schema = serializer.schema; + content = trimHtml(serializer.getTempAttrs(), content); + shortEndedElements = schema.getShortEndedElements(); + while (matches = bogusAllRegExp.exec(content)) { + index = bogusAllRegExp.lastIndex; + matchLength = matches[0].length; + if (shortEndedElements[matches[1]]) { + endTagIndex = index; + } else { + endTagIndex = SaxParser$1.findEndTag(schema, content, index); + } + content = content.substring(0, index - matchLength) + content.substring(endTagIndex); + bogusAllRegExp.lastIndex = index - matchLength; + } + return content; + }; + var trimExternal = function (serializer, html) { + return $_4md31c21je5o2q5f.trim(trimInternal(serializer, html)); + }; + var $_15ih885cje5o2qt6 = { + trimExternal: trimExternal, + trimInternal: trimInternal + }; + + var KEEP = 0; + var INSERT = 1; + var DELETE = 2; + var diff = function (left, right) { + var size = left.length + right.length + 2; + var vDown = new Array(size); + var vUp = new Array(size); + var snake = function (start, end, diag) { + return { + start: start, + end: end, + diag: diag + }; + }; + var buildScript = function (start1, end1, start2, end2, script) { + var middle = getMiddleSnake(start1, end1, start2, end2); + if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) { + var i = start1; + var j = start2; + while (i < end1 || j < end2) { + if (i < end1 && j < end2 && left[i] === right[j]) { + script.push([ + KEEP, + left[i] + ]); + ++i; + ++j; + } else { + if (end1 - start1 > end2 - start2) { + script.push([ + DELETE, + left[i] + ]); + ++i; + } else { + script.push([ + INSERT, + right[j] + ]); + ++j; + } + } + } + } else { + buildScript(start1, middle.start, start2, middle.start - middle.diag, script); + for (var i2 = middle.start; i2 < middle.end; ++i2) { + script.push([ + KEEP, + left[i2] + ]); + } + buildScript(middle.end, end1, middle.end - middle.diag, end2, script); + } + }; + var buildSnake = function (start, diag, end1, end2) { + var end = start; + while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) { + ++end; + } + return snake(start, end, diag); + }; + var getMiddleSnake = function (start1, end1, start2, end2) { + var m = end1 - start1; + var n = end2 - start2; + if (m === 0 || n === 0) { + return null; + } + var delta = m - n; + var sum = n + m; + var offset = (sum % 2 === 0 ? sum : sum + 1) / 2; + vDown[1 + offset] = start1; + vUp[1 + offset] = end1 + 1; + var d, k, i, x, y; + for (d = 0; d <= offset; ++d) { + for (k = -d; k <= d; k += 2) { + i = k + offset; + if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) { + vDown[i] = vDown[i + 1]; + } else { + vDown[i] = vDown[i - 1] + 1; + } + x = vDown[i]; + y = x - start1 + start2 - k; + while (x < end1 && y < end2 && left[x] === right[y]) { + vDown[i] = ++x; + ++y; + } + if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) { + if (vUp[i - delta] <= vDown[i]) { + return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2); + } + } + } + for (k = delta - d; k <= delta + d; k += 2) { + i = k + offset - delta; + if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) { + vUp[i] = vUp[i + 1] - 1; + } else { + vUp[i] = vUp[i - 1]; + } + x = vUp[i] - 1; + y = x - start1 + start2 - k; + while (x >= start1 && y >= start2 && left[x] === right[y]) { + vUp[i] = x--; + y--; + } + if (delta % 2 === 0 && -d <= k && k <= d) { + if (vUp[i] <= vDown[i + delta]) { + return buildSnake(vUp[i], k + start1 - start2, end1, end2); + } + } + } + } + }; + var script = []; + buildScript(0, left.length, 0, right.length, script); + return script; + }; + var $_gf7th55fje5o2qtr = { + KEEP: KEEP, + DELETE: DELETE, + INSERT: INSERT, + diff: diff + }; + + var getOuterHtml = function (elm) { + if (elm.nodeType === 1) { + return elm.outerHTML; + } else if (elm.nodeType === 3) { + return $_fzh4ld1rje5o2q0t.encodeRaw(elm.data, false); + } else if (elm.nodeType === 8) { + return '<!--' + elm.data + '-->'; + } + return ''; + }; + var createFragment$1 = function (html) { + var frag, node, container; + container = document.createElement('div'); + frag = document.createDocumentFragment(); + if (html) { + container.innerHTML = html; + } + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }; + var insertAt = function (elm, html, index) { + var fragment = createFragment$1(html); + if (elm.hasChildNodes() && index < elm.childNodes.length) { + var target = elm.childNodes[index]; + target.parentNode.insertBefore(fragment, target); + } else { + elm.appendChild(fragment); + } + }; + var removeAt = function (elm, index) { + if (elm.hasChildNodes() && index < elm.childNodes.length) { + var target = elm.childNodes[index]; + target.parentNode.removeChild(target); + } + }; + var applyDiff = function (diff, elm) { + var index = 0; + $_c2vc3pkje5o2puw.each(diff, function (action) { + if (action[0] === $_gf7th55fje5o2qtr.KEEP) { + index++; + } else if (action[0] === $_gf7th55fje5o2qtr.INSERT) { + insertAt(elm, action[1], index); + index++; + } else if (action[0] === $_gf7th55fje5o2qtr.DELETE) { + removeAt(elm, index); + } + }); + }; + var read$2 = function (elm) { + return $_c2vc3pkje5o2puw.filter($_c2vc3pkje5o2puw.map(elm.childNodes, getOuterHtml), function (item) { + return item.length > 0; + }); + }; + var write = function (fragments, elm) { + var currentFragments = $_c2vc3pkje5o2puw.map(elm.childNodes, getOuterHtml); + applyDiff($_gf7th55fje5o2qtr.diff(currentFragments, fragments), elm); + return elm; + }; + var $_fjm93l5eje5o2qto = { + read: read$2, + write: write + }; + + var hasIframes = function (html) { + return html.indexOf('</iframe>') !== -1; + }; + var createFragmentedLevel = function (fragments) { + return { + type: 'fragmented', + fragments: fragments, + content: '', + bookmark: null, + beforeBookmark: null + }; + }; + var createCompleteLevel = function (content) { + return { + type: 'complete', + fragments: null, + content: content, + bookmark: null, + beforeBookmark: null + }; + }; + var createFromEditor = function (editor) { + var fragments, content, trimmedFragments; + fragments = $_fjm93l5eje5o2qto.read(editor.getBody()); + trimmedFragments = $_bwcteb4je5o2pl4.bind(fragments, function (html) { + var trimmed = $_15ih885cje5o2qt6.trimInternal(editor.serializer, html); + return trimmed.length > 0 ? [trimmed] : []; + }); + content = trimmedFragments.join(''); + return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content); + }; + var applyToEditor = function (editor, level, before) { + if (level.type === 'fragmented') { + $_fjm93l5eje5o2qto.write(level.fragments, editor.getBody()); + } else { + editor.setContent(level.content, { format: 'raw' }); + } + editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark); + }; + var getLevelContent = function (level) { + return level.type === 'fragmented' ? level.fragments.join('') : level.content; + }; + var isEq$4 = function (level1, level2) { + return !!level1 && !!level2 && getLevelContent(level1) === getLevelContent(level2); + }; + var $_dv64z5bje5o2qt3 = { + createFragmentedLevel: createFragmentedLevel, + createCompleteLevel: createCompleteLevel, + createFromEditor: createFromEditor, + applyToEditor: applyToEditor, + isEq: isEq$4 + }; + + function UndoManager (editor) { + var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0; + var isUnlocked = function () { + return locks === 0; + }; + var setTyping = function (typing) { + if (isUnlocked()) { + self.typing = typing; + } + }; + var setDirty = function (state) { + editor.setDirty(state); + }; + var addNonTypingUndoLevel = function (e) { + setTyping(false); + self.add({}, e); + }; + var endTyping = function () { + if (self.typing) { + setTyping(false); + self.add(); + } + }; + editor.on('init', function () { + self.add(); + }); + editor.on('BeforeExecCommand', function (e) { + var cmd = e.command; + if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { + endTyping(); + self.beforeChange(); + } + }); + editor.on('ExecCommand', function (e) { + var cmd = e.command; + if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { + addNonTypingUndoLevel(e); + } + }); + editor.on('ObjectResizeStart Cut', function () { + self.beforeChange(); + }); + editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel); + editor.on('DragEnd', addNonTypingUndoLevel); + editor.on('KeyUp', function (e) { + var keyCode = e.keyCode; + if (e.isDefaultPrevented()) { + return; + } + if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) { + addNonTypingUndoLevel(); + editor.nodeChanged(); + } + if (keyCode === 46 || keyCode === 8) { + editor.nodeChanged(); + } + if (isFirstTypedCharacter && self.typing && $_dv64z5bje5o2qt3.isEq($_dv64z5bje5o2qt3.createFromEditor(editor), data[0]) === false) { + if (editor.isDirty() === false) { + setDirty(true); + editor.fire('change', { + level: data[0], + lastLevel: null + }); + } + editor.fire('TypingUndo'); + isFirstTypedCharacter = false; + editor.nodeChanged(); + } + }); + editor.on('KeyDown', function (e) { + var keyCode = e.keyCode; + if (e.isDefaultPrevented()) { + return; + } + if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) { + if (self.typing) { + addNonTypingUndoLevel(e); + } + return; + } + var modKey = e.ctrlKey && !e.altKey || e.metaKey; + if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) { + self.beforeChange(); + setTyping(true); + self.add({}, e); + isFirstTypedCharacter = true; + } + }); + editor.on('MouseDown', function (e) { + if (self.typing) { + addNonTypingUndoLevel(e); + } + }); + var isInsertReplacementText = function (event) { + return event.inputType === 'insertReplacementText'; + }; + var isInsertTextDataNull = function (event) { + return event.inputType === 'insertText' && event.data === null; + }; + editor.on('input', function (e) { + if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) { + addNonTypingUndoLevel(e); + } + }); + editor.addShortcut('meta+z', '', 'Undo'); + editor.addShortcut('meta+y,meta+shift+z', '', 'Redo'); + editor.on('AddUndo Undo Redo ClearUndos', function (e) { + if (!e.isDefaultPrevented()) { + editor.nodeChanged(); + } + }); + self = { + data: data, + typing: false, + beforeChange: function () { + if (isUnlocked()) { + beforeBookmark = $_9eyzd52kje5o2q8r.getUndoBookmark(editor.selection); + } + }, + add: function (level, event) { + var i; + var settings = editor.settings; + var lastLevel, currentLevel; + currentLevel = $_dv64z5bje5o2qt3.createFromEditor(editor); + level = level || {}; + level = $_a5gegtjje5o2pum.extend(level, currentLevel); + if (isUnlocked() === false || editor.removed) { + return null; + } + lastLevel = data[index]; + if (editor.fire('BeforeAddUndo', { + level: level, + lastLevel: lastLevel, + originalEvent: event + }).isDefaultPrevented()) { + return null; + } + if (lastLevel && $_dv64z5bje5o2qt3.isEq(lastLevel, level)) { + return null; + } + if (data[index]) { + data[index].beforeBookmark = beforeBookmark; + } + if (settings.custom_undo_redo_levels) { + if (data.length > settings.custom_undo_redo_levels) { + for (i = 0; i < data.length - 1; i++) { + data[i] = data[i + 1]; + } + data.length--; + index = data.length; + } + } + level.bookmark = $_9eyzd52kje5o2q8r.getUndoBookmark(editor.selection); + if (index < data.length - 1) { + data.length = index + 1; + } + data.push(level); + index = data.length - 1; + var args = { + level: level, + lastLevel: lastLevel, + originalEvent: event + }; + editor.fire('AddUndo', args); + if (index > 0) { + setDirty(true); + editor.fire('change', args); + } + return level; + }, + undo: function () { + var level; + if (self.typing) { + self.add(); + self.typing = false; + setTyping(false); + } + if (index > 0) { + level = data[--index]; + $_dv64z5bje5o2qt3.applyToEditor(editor, level, true); + setDirty(true); + editor.fire('undo', { level: level }); + } + return level; + }, + redo: function () { + var level; + if (index < data.length - 1) { + level = data[++index]; + $_dv64z5bje5o2qt3.applyToEditor(editor, level, false); + setDirty(true); + editor.fire('redo', { level: level }); + } + return level; + }, + clear: function () { + data = []; + index = 0; + self.typing = false; + self.data = data; + editor.fire('ClearUndos'); + }, + hasUndo: function () { + return index > 0 || self.typing && data[0] && !$_dv64z5bje5o2qt3.isEq($_dv64z5bje5o2qt3.createFromEditor(editor), data[0]); + }, + hasRedo: function () { + return index < data.length - 1 && !self.typing; + }, + transact: function (callback) { + endTyping(); + self.beforeChange(); + self.ignore(callback); + return self.add(); + }, + ignore: function (callback) { + try { + locks++; + callback(); + } finally { + locks--; + } + }, + extra: function (callback1, callback2) { + var lastLevel, bookmark; + if (self.transact(callback1)) { + bookmark = data[index].bookmark; + lastLevel = data[index - 1]; + $_dv64z5bje5o2qt3.applyToEditor(editor, lastLevel, true); + if (self.transact(callback2)) { + data[index - 1].beforeBookmark = bookmark; + } + } + } + }; + return self; + } + + var postProcessHooks = {}; + var filter$2 = $_c2vc3pkje5o2puw.filter; + var each$12 = $_c2vc3pkje5o2puw.each; + var addPostProcessHook = function (name, hook) { + var hooks = postProcessHooks[name]; + if (!hooks) { + postProcessHooks[name] = hooks = []; + } + postProcessHooks[name].push(hook); + }; + var postProcess = function (name, editor) { + each$12(postProcessHooks[name], function (hook) { + hook(editor); + }); + }; + addPostProcessHook('pre', function (editor) { + var rng = editor.selection.getRng(); + var isPre, blocks; + var hasPreSibling = function (pre) { + return isPre(pre.previousSibling) && $_c2vc3pkje5o2puw.indexOf(blocks, pre.previousSibling) !== -1; + }; + var joinPre = function (pre1, pre2) { + DomQuery(pre2).remove(); + DomQuery(pre1).append('<br><br>').append(pre2.childNodes); + }; + isPre = $_9owqcy1qje5o2q0e.matchNodeNames('pre'); + if (!rng.collapsed) { + blocks = editor.selection.getSelectedBlocks(); + each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) { + joinPre(pre.previousSibling, pre); + }); + } + }); + var $_6kqshy5ije5o2qu7 = { postProcess: postProcess }; + + var each$13 = $_a5gegtjje5o2pum.each; + var getEndChild = function (container, index) { + var childNodes = container.childNodes; + index--; + if (index > childNodes.length - 1) { + index = childNodes.length - 1; + } else if (index < 0) { + index = 0; + } + return childNodes[index] || container; + }; + var walk$2 = function (dom, rng, callback) { + var startContainer = rng.startContainer; + var startOffset = rng.startOffset; + var endContainer = rng.endContainer; + var endOffset = rng.endOffset; + var ancestor; + var startPoint; + var endPoint; + var node; + var parent; + var siblings; + var nodes; + nodes = dom.select('td[data-mce-selected],th[data-mce-selected]'); + if (nodes.length > 0) { + each$13(nodes, function (node) { + callback([node]); + }); + return; + } + var exclude = function (nodes) { + var node; + node = nodes[0]; + if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) { + nodes.splice(0, 1); + } + node = nodes[nodes.length - 1]; + if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) { + nodes.splice(nodes.length - 1, 1); + } + return nodes; + }; + var collectSiblings = function (node, name, endNode) { + var siblings = []; + for (; node && node !== endNode; node = node[name]) { + siblings.push(node); + } + return siblings; + }; + var findEndPoint = function (node, root) { + do { + if (node.parentNode === root) { + return node; + } + node = node.parentNode; + } while (node); + }; + var walkBoundary = function (startNode, endNode, next) { + var siblingName = next ? 'nextSibling' : 'previousSibling'; + for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) { + parent = node.parentNode; + siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName); + if (siblings.length) { + if (!next) { + siblings.reverse(); + } + callback(exclude(siblings)); + } + } + }; + if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) { + startContainer = startContainer.childNodes[startOffset]; + } + if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) { + endContainer = getEndChild(endContainer, endOffset); + } + if (startContainer === endContainer) { + return callback(exclude([startContainer])); + } + ancestor = dom.findCommonAncestor(startContainer, endContainer); + for (node = startContainer; node; node = node.parentNode) { + if (node === endContainer) { + return walkBoundary(startContainer, ancestor, true); + } + if (node === ancestor) { + break; + } + } + for (node = endContainer; node; node = node.parentNode) { + if (node === startContainer) { + return walkBoundary(endContainer, ancestor); + } + if (node === ancestor) { + break; + } + } + startPoint = findEndPoint(startContainer, ancestor) || startContainer; + endPoint = findEndPoint(endContainer, ancestor) || endContainer; + walkBoundary(startContainer, startPoint, true); + siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint); + if (siblings.length) { + callback(exclude(siblings)); + } + walkBoundary(endContainer, endPoint); + }; + var $_1jk9p5lje5o2qv9 = { walk: walk$2 }; + + var MCE_ATTR_RE = /^(src|href|style)$/; + var each$14 = $_a5gegtjje5o2pum.each; + var isEq$5 = $_b2hqtg3lje5o2qft.isEq; + var isTableCell$4 = function (node) { + return /^(TH|TD)$/.test(node.nodeName); + }; + var getContainer = function (ed, rng, start) { + var container, offset, lastIdx; + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + if ($_9owqcy1qje5o2q0e.isElement(container)) { + lastIdx = container.childNodes.length - 1; + if (!start && offset) { + offset--; + } + container = container.childNodes[offset > lastIdx ? lastIdx : offset]; + } + if ($_9owqcy1qje5o2q0e.isText(container) && start && offset >= container.nodeValue.length) { + container = new TreeWalker(container, ed.getBody()).next() || container; + } + if ($_9owqcy1qje5o2q0e.isText(container) && !start && offset === 0) { + container = new TreeWalker(container, ed.getBody()).prev() || container; + } + return container; + }; + var wrap$2 = function (dom, node, name, attrs) { + var wrapper = dom.create(name, attrs); + node.parentNode.insertBefore(wrapper, node); + wrapper.appendChild(node); + return wrapper; + }; + var matchName$1 = function (dom, node, format) { + if (isEq$5(node, format.inline)) { + return true; + } + if (isEq$5(node, format.block)) { + return true; + } + if (format.selector) { + return $_9owqcy1qje5o2q0e.isElement(node) && dom.is(node, format.selector); + } + }; + var isColorFormatAndAnchor = function (node, format) { + return format.links && node.tagName === 'A'; + }; + var find$4 = function (dom, node, next, inc) { + node = $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node, next, inc); + return !node || (node.nodeName === 'BR' || dom.isBlock(node)); + }; + var removeNode$1 = function (ed, node, format) { + var parentNode = node.parentNode; + var rootBlockElm; + var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block; + if (format.block) { + if (!forcedRootBlock) { + if (dom.isBlock(node) && !dom.isBlock(parentNode)) { + if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) { + node.insertBefore(dom.create('br'), node.firstChild); + } + if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) { + node.appendChild(dom.create('br')); + } + } + } else { + if (parentNode === dom.getRoot()) { + if (!format.list_block || !isEq$5(node, format.list_block)) { + each$14($_a5gegtjje5o2pum.grep(node.childNodes), function (node) { + if ($_b2hqtg3lje5o2qft.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) { + if (!rootBlockElm) { + rootBlockElm = wrap$2(dom, node, forcedRootBlock); + dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs); + } else { + rootBlockElm.appendChild(node); + } + } else { + rootBlockElm = 0; + } + }); + } + } + } + } + if (format.selector && format.inline && !isEq$5(format.inline, node)) { + return; + } + dom.remove(node, 1); + }; + var removeFormat = function (ed, format, vars, node, compareNode) { + var i, attrs, stylesModified; + var dom = ed.dom; + if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) { + return false; + } + if (format.remove !== 'all') { + each$14(format.styles, function (value, name) { + value = $_b2hqtg3lje5o2qft.normalizeStyleValue(dom, $_b2hqtg3lje5o2qft.replaceVars(value, vars), name); + if (typeof name === 'number') { + name = value; + compareNode = 0; + } + if (format.remove_similar || (!compareNode || isEq$5($_b2hqtg3lje5o2qft.getStyle(dom, compareNode, name), value))) { + dom.setStyle(node, name, ''); + } + stylesModified = 1; + }); + if (stylesModified && dom.getAttrib(node, 'style') === '') { + node.removeAttribute('style'); + node.removeAttribute('data-mce-style'); + } + each$14(format.attributes, function (value, name) { + var valueOut; + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (typeof name === 'number') { + name = value; + compareNode = 0; + } + if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) { + if (name === 'class') { + value = dom.getAttrib(node, name); + if (value) { + valueOut = ''; + each$14(value.split(/\s+/), function (cls) { + if (/mce\-\w+/.test(cls)) { + valueOut += (valueOut ? ' ' : '') + cls; + } + }); + if (valueOut) { + dom.setAttrib(node, name, valueOut); + return; + } + } + } + if (name === 'class') { + node.removeAttribute('className'); + } + if (MCE_ATTR_RE.test(name)) { + node.removeAttribute('data-mce-' + name); + } + node.removeAttribute(name); + } + }); + each$14(format.classes, function (value) { + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (!compareNode || dom.hasClass(compareNode, value)) { + dom.removeClass(node, value); + } + }); + attrs = dom.getAttribs(node); + for (i = 0; i < attrs.length; i++) { + var attrName = attrs[i].nodeName; + if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) { + return false; + } + } + } + if (format.remove !== 'none') { + removeNode$1(ed, node, format); + return true; + } + }; + var findFormatRoot = function (editor, container, name, vars, similar) { + var formatRoot; + each$14($_b2hqtg3lje5o2qft.getParents(editor.dom, container.parentNode).reverse(), function (parent) { + var format; + if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') { + format = $_g32xfv3mje5o2qg1.matchNode(editor, parent, name, vars, similar); + if (format && format.split !== false) { + formatRoot = parent; + } + } + }); + return formatRoot; + }; + var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) { + var parent, clone, lastClone, firstClone, i, formatRootParent; + var dom = editor.dom; + if (formatRoot) { + formatRootParent = formatRoot.parentNode; + for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) { + clone = dom.clone(parent, false); + for (i = 0; i < formatList.length; i++) { + if (removeFormat(editor, formatList[i], vars, clone, clone)) { + clone = 0; + break; + } + } + if (clone) { + if (lastClone) { + clone.appendChild(lastClone); + } + if (!firstClone) { + firstClone = clone; + } + lastClone = clone; + } + } + if (split && (!format.mixed || !dom.isBlock(formatRoot))) { + container = dom.split(formatRoot, container); + } + if (lastClone) { + target.parentNode.insertBefore(lastClone, target); + firstClone.appendChild(target); + } + } + return container; + }; + var remove$4 = function (ed, name, vars, node, similar) { + var formatList = ed.formatter.get(name), format = formatList[0]; + var bookmark, rng, contentEditable = true; + var dom = ed.dom; + var selection = ed.selection; + var splitToFormatRoot = function (container) { + var formatRoot = findFormatRoot(ed, container, name, vars, similar); + return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars); + }; + var process = function (node) { + var children, i, l, lastContentEditable, hasContentEditableState; + if ($_9owqcy1qje5o2q0e.isElement(node) && dom.getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = dom.getContentEditable(node) === 'true'; + hasContentEditableState = true; + } + children = $_a5gegtjje5o2pum.grep(node.childNodes); + if (contentEditable && !hasContentEditableState) { + for (i = 0, l = formatList.length; i < l; i++) { + if (removeFormat(ed, formatList[i], vars, node, node)) { + break; + } + } + } + if (format.deep) { + if (children.length) { + for (i = 0, l = children.length; i < l; i++) { + process(children[i]); + } + if (hasContentEditableState) { + contentEditable = lastContentEditable; + } + } + } + }; + var unwrap = function (start) { + var node = dom.get(start ? '_start' : '_end'); + var out = node[start ? 'firstChild' : 'lastChild']; + if ($_83h91t2jje5o2q8n.isBookmarkNode(out)) { + out = out[start ? 'firstChild' : 'lastChild']; + } + if ($_9owqcy1qje5o2q0e.isText(out) && out.data.length === 0) { + out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling; + } + dom.remove(node, true); + return out; + }; + var removeRngStyle = function (rng) { + var startContainer, endContainer; + var commonAncestorContainer = rng.commonAncestorContainer; + rng = $_8wd5fu3kje5o2qfi.expandRng(ed, rng, formatList, true); + if (format.split) { + startContainer = getContainer(ed, rng, true); + endContainer = getContainer(ed, rng); + if (startContainer !== endContainer) { + if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) { + if (startContainer.nodeName === 'TR') { + startContainer = startContainer.firstChild.firstChild || startContainer; + } else { + startContainer = startContainer.firstChild || startContainer; + } + } + if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) { + endContainer = endContainer.firstChild || endContainer; + } + if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) { + startContainer = wrap$2(dom, startContainer, 'span', { + 'id': '_start', + 'data-mce-type': 'bookmark' + }); + splitToFormatRoot(startContainer); + startContainer = unwrap(true); + return; + } + startContainer = wrap$2(dom, startContainer, 'span', { + 'id': '_start', + 'data-mce-type': 'bookmark' + }); + endContainer = wrap$2(dom, endContainer, 'span', { + 'id': '_end', + 'data-mce-type': 'bookmark' + }); + splitToFormatRoot(startContainer); + splitToFormatRoot(endContainer); + startContainer = unwrap(true); + endContainer = unwrap(); + } else { + startContainer = endContainer = splitToFormatRoot(startContainer); + } + rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer; + rng.startOffset = dom.nodeIndex(startContainer); + rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer; + rng.endOffset = dom.nodeIndex(endContainer) + 1; + } + $_1jk9p5lje5o2qv9.walk(dom, rng, function (nodes) { + each$14(nodes, function (node) { + process(node); + if ($_9owqcy1qje5o2q0e.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_b2hqtg3lje5o2qft.getTextDecoration(dom, node.parentNode) === 'underline') { + removeFormat(ed, { + deep: false, + exact: true, + inline: 'span', + styles: { textDecoration: 'underline' } + }, null, node); + } + }); + }); + }; + if (node) { + if (node.nodeType) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + removeRngStyle(rng); + } else { + removeRngStyle(node); + } + return; + } + if (dom.getContentEditable(selection.getNode()) === 'false') { + node = selection.getNode(); + for (var i = 0, l = formatList.length; i < l; i++) { + if (formatList[i].ceFalseOverride) { + if (removeFormat(ed, formatList[i], vars, node, node)) { + break; + } + } + } + return; + } + if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { + bookmark = selection.getBookmark(); + removeRngStyle(selection.getRng()); + selection.moveToBookmark(bookmark); + if (format.inline && $_g32xfv3mje5o2qg1.match(ed, name, vars, selection.getStart())) { + $_b2hqtg3lje5o2qft.moveStart(dom, selection, selection.getRng()); + } + ed.nodeChanged(); + } else { + $_4066yu3jje5o2qev.removeCaretFormat(ed, name, vars, similar); + } + }; + var $_2afve25kje5o2qul = { + removeFormat: removeFormat, + remove: remove$4 + }; + + var each$15 = $_a5gegtjje5o2pum.each; + var isElementNode = function (node) { + return node && node.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(node) && !$_4066yu3jje5o2qev.isCaretNode(node) && !$_9owqcy1qje5o2q0e.isBogus(node); + }; + var findElementSibling = function (node, siblingName) { + var sibling; + for (sibling = node; sibling; sibling = sibling[siblingName]) { + if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) { + return node; + } + if (sibling.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(sibling)) { + return sibling; + } + } + return node; + }; + var mergeSiblingsNodes = function (dom, prev, next) { + var sibling, tmpSibling; + var elementUtils = new ElementUtils(dom); + if (prev && next) { + prev = findElementSibling(prev, 'previousSibling'); + next = findElementSibling(next, 'nextSibling'); + if (elementUtils.compare(prev, next)) { + for (sibling = prev.nextSibling; sibling && sibling !== next;) { + tmpSibling = sibling; + sibling = sibling.nextSibling; + prev.appendChild(tmpSibling); + } + dom.remove(next); + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.grep(next.childNodes), function (node) { + prev.appendChild(node); + }); + return prev; + } + } + return next; + }; + var processChildElements = function (node, filter, process) { + each$15(node.childNodes, function (node) { + if (isElementNode(node)) { + if (filter(node)) { + process(node); + } + if (node.hasChildNodes()) { + processChildElements(node, filter, process); + } + } + }); + }; + var hasStyle = function (dom, name) { + return $_enfhkv6je5o2ply.curry(function (name, node) { + return !!(node && $_b2hqtg3lje5o2qft.getStyle(dom, node, name)); + }, name); + }; + var applyStyle = function (dom, name, value) { + return $_enfhkv6je5o2ply.curry(function (name, value, node) { + dom.setStyle(node, name, value); + if (node.getAttribute('style') === '') { + node.removeAttribute('style'); + } + unwrapEmptySpan(dom, node); + }, name, value); + }; + var unwrapEmptySpan = function (dom, node) { + if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) { + dom.remove(node, true); + } + }; + var processUnderlineAndColor = function (dom, node) { + var textDecoration; + if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { + textDecoration = $_b2hqtg3lje5o2qft.getTextDecoration(dom, node.parentNode); + if (dom.getStyle(node, 'color') && textDecoration) { + dom.setStyle(node, 'text-decoration', textDecoration); + } else if (dom.getStyle(node, 'text-decoration') === textDecoration) { + dom.setStyle(node, 'text-decoration', null); + } + } + }; + var mergeUnderlineAndColor = function (dom, format, vars, node) { + if (format.styles.color || format.styles.textDecoration) { + $_a5gegtjje5o2pum.walk(node, $_enfhkv6je5o2ply.curry(processUnderlineAndColor, dom), 'childNodes'); + processUnderlineAndColor(dom, node); + } + }; + var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) { + if (format.styles && format.styles.backgroundColor) { + processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', $_b2hqtg3lje5o2qft.replaceVars(format.styles.backgroundColor, vars))); + } + }; + var mergeSubSup = function (dom, format, vars, node) { + if (format.inline === 'sub' || format.inline === 'sup') { + processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', '')); + dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true); + } + }; + var mergeSiblings = function (dom, format, vars, node) { + if (node && format.merge_siblings !== false) { + node = mergeSiblingsNodes(dom, $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node), node); + node = mergeSiblingsNodes(dom, node, $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node, true)); + } + }; + var clearChildStyles = function (dom, format, node) { + if (format.clear_child_styles) { + var selector = format.links ? '*:not(a)' : '*'; + each$15(dom.select(selector, node), function (node) { + if (isElementNode(node)) { + each$15(format.styles, function (value, name) { + dom.setStyle(node, name, ''); + }); + } + }); + } + }; + var mergeWithChildren = function (editor, formatList, vars, node) { + each$15(formatList, function (format) { + each$15(editor.dom.select(format.inline, node), function (child) { + if (!isElementNode(child)) { + return; + } + $_2afve25kje5o2qul.removeFormat(editor, format, vars, child, format.exact ? child : null); + }); + clearChildStyles(editor.dom, format, node); + }); + }; + var mergeWithParents = function (editor, format, name, vars, node) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, node.parentNode, name, vars)) { + if ($_2afve25kje5o2qul.removeFormat(editor, format, vars, node)) { + return; + } + } + if (format.merge_with_parents) { + editor.dom.getParent(node.parentNode, function (parent) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, parent, name, vars)) { + $_2afve25kje5o2qul.removeFormat(editor, format, vars, node); + return true; + } + }); + } + }; + var $_ddwhlm5jje5o2qua = { + mergeWithChildren: mergeWithChildren, + mergeUnderlineAndColor: mergeUnderlineAndColor, + mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize, + mergeSubSup: mergeSubSup, + mergeSiblings: mergeSiblings, + mergeWithParents: mergeWithParents + }; + + var each$16 = $_a5gegtjje5o2pum.each; + var isElementNode$1 = function (node) { + return node && node.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(node) && !$_4066yu3jje5o2qev.isCaretNode(node) && !$_9owqcy1qje5o2q0e.isBogus(node); + }; + var applyFormat = function (ed, name, vars, node) { + var formatList = ed.formatter.get(name); + var format = formatList[0]; + var bookmark, rng; + var isCollapsed = !node && ed.selection.isCollapsed(); + var dom = ed.dom, selection = ed.selection; + var setElementFormat = function (elm, fmt) { + fmt = fmt || format; + if (elm) { + if (fmt.onformat) { + fmt.onformat(elm, fmt, vars, node); + } + each$16(fmt.styles, function (value, name) { + dom.setStyle(elm, name, $_b2hqtg3lje5o2qft.replaceVars(value, vars)); + }); + if (fmt.styles) { + var styleVal = dom.getAttrib(elm, 'style'); + if (styleVal) { + elm.setAttribute('data-mce-style', styleVal); + } + } + each$16(fmt.attributes, function (value, name) { + dom.setAttrib(elm, name, $_b2hqtg3lje5o2qft.replaceVars(value, vars)); + }); + each$16(fmt.classes, function (value) { + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (!dom.hasClass(elm, value)) { + dom.addClass(elm, value); + } + }); + } + }; + var applyNodeStyle = function (formatList, node) { + var found = false; + if (!format.selector) { + return false; + } + each$16(formatList, function (format) { + if ('collapsed' in format && format.collapsed !== isCollapsed) { + return; + } + if (dom.is(node, format.selector) && !$_4066yu3jje5o2qev.isCaretNode(node)) { + setElementFormat(node, format); + found = true; + return false; + } + }); + return found; + }; + var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) { + var newWrappers = []; + var wrapName, wrapElm, contentEditable = true; + wrapName = format.inline || format.block; + wrapElm = dom.create(wrapName); + setElementFormat(wrapElm); + $_1jk9p5lje5o2qv9.walk(dom, rng, function (nodes) { + var currentWrapElm; + var process = function (node) { + var nodeName, parentName, hasContentEditableState, lastContentEditable; + lastContentEditable = contentEditable; + nodeName = node.nodeName.toLowerCase(); + parentName = node.parentNode.nodeName.toLowerCase(); + if (node.nodeType === 1 && dom.getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = dom.getContentEditable(node) === 'true'; + hasContentEditableState = true; + } + if ($_b2hqtg3lje5o2qft.isEq(nodeName, 'br')) { + currentWrapElm = 0; + if (format.block) { + dom.remove(node); + } + return; + } + if (format.wrapper && $_g32xfv3mje5o2qg1.matchNode(ed, node, name, vars)) { + currentWrapElm = 0; + return; + } + if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_b2hqtg3lje5o2qft.isTextBlock(ed, nodeName) && $_b2hqtg3lje5o2qft.isValid(ed, parentName, wrapName)) { + node = dom.rename(node, wrapName); + setElementFormat(node); + newWrappers.push(node); + currentWrapElm = 0; + return; + } + if (format.selector) { + var found = applyNodeStyle(formatList, node); + if (!format.inline || found) { + currentWrapElm = 0; + return; + } + } + if (contentEditable && !hasContentEditableState && $_b2hqtg3lje5o2qft.isValid(ed, wrapName, nodeName) && $_b2hqtg3lje5o2qft.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !$_4066yu3jje5o2qev.isCaretNode(node) && (!format.inline || !dom.isBlock(node))) { + if (!currentWrapElm) { + currentWrapElm = dom.clone(wrapElm, false); + node.parentNode.insertBefore(currentWrapElm, node); + newWrappers.push(currentWrapElm); + } + currentWrapElm.appendChild(node); + } else { + currentWrapElm = 0; + each$16($_a5gegtjje5o2pum.grep(node.childNodes), process); + if (hasContentEditableState) { + contentEditable = lastContentEditable; + } + currentWrapElm = 0; + } + }; + each$16(nodes, process); + }); + if (format.links === true) { + each$16(newWrappers, function (node) { + var process = function (node) { + if (node.nodeName === 'A') { + setElementFormat(node, format); + } + each$16($_a5gegtjje5o2pum.grep(node.childNodes), process); + }; + process(node); + }); + } + each$16(newWrappers, function (node) { + var childCount; + var getChildCount = function (node) { + var count = 0; + each$16(node.childNodes, function (node) { + if (!$_b2hqtg3lje5o2qft.isWhiteSpaceNode(node) && !$_83h91t2jje5o2q8n.isBookmarkNode(node)) { + count++; + } + }); + return count; + }; + var getChildElementNode = function (root) { + var child = false; + each$16(root.childNodes, function (node) { + if (isElementNode$1(node)) { + child = node; + return false; + } + }); + return child; + }; + var mergeStyles = function (node) { + var child, clone; + child = getChildElementNode(node); + if (child && !$_83h91t2jje5o2q8n.isBookmarkNode(child) && $_g32xfv3mje5o2qg1.matchName(dom, child, format)) { + clone = dom.clone(child, false); + setElementFormat(clone); + dom.replace(clone, node, true); + dom.remove(child, 1); + } + return clone || node; + }; + childCount = getChildCount(node); + if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) { + dom.remove(node, 1); + return; + } + if (format.inline || format.wrapper) { + if (!format.exact && childCount === 1) { + node = mergeStyles(node); + } + $_ddwhlm5jje5o2qua.mergeWithChildren(ed, formatList, vars, node); + $_ddwhlm5jje5o2qua.mergeWithParents(ed, format, name, vars, node); + $_ddwhlm5jje5o2qua.mergeBackgroundColorAndFontSize(dom, format, vars, node); + $_ddwhlm5jje5o2qua.mergeSubSup(dom, format, vars, node); + $_ddwhlm5jje5o2qua.mergeSiblings(dom, format, vars, node); + } + }); + }; + if (dom.getContentEditable(selection.getNode()) === 'false') { + node = selection.getNode(); + for (var i = 0, l = formatList.length; i < l; i++) { + if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) { + setElementFormat(node, formatList[i]); + return; + } + } + return; + } + if (format) { + if (node) { + if (node.nodeType) { + if (!applyNodeStyle(formatList, node)) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + applyRngStyle(dom, $_8wd5fu3kje5o2qfi.expandRng(ed, rng, formatList), null, true); + } + } else { + applyRngStyle(dom, node, null, true); + } + } else { + if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { + var curSelNode = ed.selection.getNode(); + if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) { + applyFormat(ed, formatList[0].defaultBlock); + } + ed.selection.setRng($_8xjhg22vje5o2qak.normalize(ed.selection.getRng())); + bookmark = selection.getBookmark(); + applyRngStyle(dom, $_8wd5fu3kje5o2qfi.expandRng(ed, selection.getRng(), formatList), bookmark); + if (format.styles) { + $_ddwhlm5jje5o2qua.mergeUnderlineAndColor(dom, format, vars, curSelNode); + } + selection.moveToBookmark(bookmark); + $_b2hqtg3lje5o2qft.moveStart(dom, selection, selection.getRng()); + ed.nodeChanged(); + } else { + $_4066yu3jje5o2qev.applyCaretFormat(ed, name, vars); + } + } + $_6kqshy5ije5o2qu7.postProcess(name, ed); + } + }; + var $_a1bxau5hje5o2qu0 = { applyFormat: applyFormat }; + + var each$17 = $_a5gegtjje5o2pum.each; + var setup$3 = function (formatChangeData, editor) { + var currentFormats = {}; + formatChangeData.set({}); + editor.on('NodeChange', function (e) { + var parents = $_b2hqtg3lje5o2qft.getParents(editor.dom, e.element); + var matchedFormats = {}; + parents = $_a5gegtjje5o2pum.grep(parents, function (node) { + return node.nodeType === 1 && !node.getAttribute('data-mce-bogus'); + }); + each$17(formatChangeData.get(), function (callbacks, format) { + each$17(parents, function (node) { + if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) { + if (!currentFormats[format]) { + each$17(callbacks, function (callback) { + callback(true, { + node: node, + format: format, + parents: parents + }); + }); + currentFormats[format] = callbacks; + } + matchedFormats[format] = callbacks; + return false; + } + if ($_g32xfv3mje5o2qg1.matchesUnInheritedFormatSelector(editor, node, format)) { + return false; + } + }); + }); + each$17(currentFormats, function (callbacks, format) { + if (!matchedFormats[format]) { + delete currentFormats[format]; + each$17(callbacks, function (callback) { + callback(false, { + node: e.element, + format: format, + parents: parents + }); + }); + } + }); + }); + }; + var addListeners = function (formatChangeData, formats, callback, similar) { + var formatChangeItems = formatChangeData.get(); + each$17(formats.split(','), function (format) { + if (!formatChangeItems[format]) { + formatChangeItems[format] = []; + formatChangeItems[format].similar = similar; + } + formatChangeItems[format].push(callback); + }); + formatChangeData.set(formatChangeItems); + }; + var formatChanged = function (editor, formatChangeState, formats, callback, similar) { + if (formatChangeState.get() === null) { + setup$3(formatChangeState, editor); + } + addListeners(formatChangeState, formats, callback, similar); + }; + var $_eb5vf85mje5o2qvd = { formatChanged: formatChanged }; + + var get$4 = function (dom) { + var formats = { + valigntop: [{ + selector: 'td,th', + styles: { verticalAlign: 'top' } + }], + valignmiddle: [{ + selector: 'td,th', + styles: { verticalAlign: 'middle' } + }], + valignbottom: [{ + selector: 'td,th', + styles: { verticalAlign: 'bottom' } + }], + alignleft: [ + { + selector: 'figure.image', + collapsed: false, + classes: 'align-left', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'left' }, + inherit: false, + preview: false, + defaultBlock: 'div' + }, + { + selector: 'img,table', + collapsed: false, + styles: { float: 'left' }, + preview: 'font-family font-size' + } + ], + aligncenter: [ + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'center' }, + inherit: false, + preview: 'font-family font-size', + defaultBlock: 'div' + }, + { + selector: 'figure.image', + collapsed: false, + classes: 'align-center', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'img', + collapsed: false, + styles: { + display: 'block', + marginLeft: 'auto', + marginRight: 'auto' + }, + preview: false + }, + { + selector: 'table', + collapsed: false, + styles: { + marginLeft: 'auto', + marginRight: 'auto' + }, + preview: 'font-family font-size' + } + ], + alignright: [ + { + selector: 'figure.image', + collapsed: false, + classes: 'align-right', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'right' }, + inherit: false, + preview: 'font-family font-size', + defaultBlock: 'div' + }, + { + selector: 'img,table', + collapsed: false, + styles: { float: 'right' }, + preview: 'font-family font-size' + } + ], + alignjustify: [{ + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'justify' }, + inherit: false, + defaultBlock: 'div', + preview: 'font-family font-size' + }], + bold: [ + { + inline: 'strong', + remove: 'all' + }, + { + inline: 'span', + styles: { fontWeight: 'bold' } + }, + { + inline: 'b', + remove: 'all' + } + ], + italic: [ + { + inline: 'em', + remove: 'all' + }, + { + inline: 'span', + styles: { fontStyle: 'italic' } + }, + { + inline: 'i', + remove: 'all' + } + ], + underline: [ + { + inline: 'span', + styles: { textDecoration: 'underline' }, + exact: true + }, + { + inline: 'u', + remove: 'all' + } + ], + strikethrough: [ + { + inline: 'span', + styles: { textDecoration: 'line-through' }, + exact: true + }, + { + inline: 'strike', + remove: 'all' + } + ], + forecolor: { + inline: 'span', + styles: { color: '%value' }, + links: true, + remove_similar: true, + clear_child_styles: true + }, + hilitecolor: { + inline: 'span', + styles: { backgroundColor: '%value' }, + links: true, + remove_similar: true, + clear_child_styles: true + }, + fontname: { + inline: 'span', + toggle: false, + styles: { fontFamily: '%value' }, + clear_child_styles: true + }, + fontsize: { + inline: 'span', + toggle: false, + styles: { fontSize: '%value' }, + clear_child_styles: true + }, + fontsize_class: { + inline: 'span', + attributes: { class: '%value' } + }, + blockquote: { + block: 'blockquote', + wrapper: 1, + remove: 'all' + }, + subscript: { inline: 'sub' }, + superscript: { inline: 'sup' }, + code: { inline: 'code' }, + link: { + inline: 'a', + selector: 'a', + remove: 'all', + split: true, + deep: true, + onmatch: function () { + return true; + }, + onformat: function (elm, fmt, vars) { + $_a5gegtjje5o2pum.each(vars, function (value, key) { + dom.setAttrib(elm, key, value); + }); + } + }, + removeformat: [ + { + selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins', + remove: 'all', + split: true, + expand: false, + block_expand: true, + deep: true + }, + { + selector: 'span', + attributes: [ + 'style', + 'class' + ], + remove: 'empty', + split: true, + expand: false, + deep: true + }, + { + selector: '*', + attributes: [ + 'style', + 'class' + ], + split: false, + expand: false, + deep: true + } + ] + }; + $_a5gegtjje5o2pum.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function (name) { + formats[name] = { + block: name, + remove: 'all' + }; + }); + return formats; + }; + var $_1t175j5oje5o2qvi = { get: get$4 }; + + function FormatRegistry (editor) { + var formats = {}; + var get = function (name) { + return name ? formats[name] : formats; + }; + var register = function (name, format) { + if (name) { + if (typeof name !== 'string') { + $_a5gegtjje5o2pum.each(name, function (format, name) { + register(name, format); + }); + } else { + format = format.length ? format : [format]; + $_a5gegtjje5o2pum.each(format, function (format) { + if (typeof format.deep === 'undefined') { + format.deep = !format.selector; + } + if (typeof format.split === 'undefined') { + format.split = !format.selector || format.inline; + } + if (typeof format.remove === 'undefined' && format.selector && !format.inline) { + format.remove = 'none'; + } + if (format.selector && format.inline) { + format.mixed = true; + format.block_expand = true; + } + if (typeof format.classes === 'string') { + format.classes = format.classes.split(/\s+/); + } + }); + formats[name] = format; + } + } + }; + var unregister = function (name) { + if (name && formats[name]) { + delete formats[name]; + } + return formats; + }; + register($_1t175j5oje5o2qvi.get(editor.dom)); + register(editor.settings.formats); + return { + get: get, + register: register, + unregister: unregister + }; + } + + var each$18 = $_a5gegtjje5o2pum.each; + var dom = DOMUtils.DOM; + var parsedSelectorToHtml = function (ancestry, editor) { + var elm, item, fragment; + var schema = editor && editor.schema || Schema({}); + var decorate = function (elm, item) { + if (item.classes.length) { + dom.addClass(elm, item.classes.join(' ')); + } + dom.setAttribs(elm, item.attrs); + }; + var createElement = function (sItem) { + var elm; + item = typeof sItem === 'string' ? { + name: sItem, + classes: [], + attrs: {} + } : sItem; + elm = dom.create(item.name); + decorate(elm, item); + return elm; + }; + var getRequiredParent = function (elm, candidate) { + var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm; + var elmRule = schema.getElementRule(name); + var parentsRequired = elmRule && elmRule.parentsRequired; + if (parentsRequired && parentsRequired.length) { + return candidate && $_a5gegtjje5o2pum.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0]; + } else { + return false; + } + }; + var wrapInHtml = function (elm, ancestry, siblings) { + var parent, parentCandidate, parentRequired; + var ancestor = ancestry.length > 0 && ancestry[0]; + var ancestorName = ancestor && ancestor.name; + parentRequired = getRequiredParent(elm, ancestorName); + if (parentRequired) { + if (ancestorName === parentRequired) { + parentCandidate = ancestry[0]; + ancestry = ancestry.slice(1); + } else { + parentCandidate = parentRequired; + } + } else if (ancestor) { + parentCandidate = ancestry[0]; + ancestry = ancestry.slice(1); + } else if (!siblings) { + return elm; + } + if (parentCandidate) { + parent = createElement(parentCandidate); + parent.appendChild(elm); + } + if (siblings) { + if (!parent) { + parent = dom.create('div'); + parent.appendChild(elm); + } + $_a5gegtjje5o2pum.each(siblings, function (sibling) { + var siblingElm = createElement(sibling); + parent.insertBefore(siblingElm, elm); + }); + } + return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings); + }; + if (ancestry && ancestry.length) { + item = ancestry[0]; + elm = createElement(item); + fragment = dom.create('div'); + fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings)); + return fragment; + } else { + return ''; + } + }; + var selectorToHtml = function (selector, editor) { + return parsedSelectorToHtml(parseSelector(selector), editor); + }; + var parseSelectorItem = function (item) { + var tagName; + var obj = { + classes: [], + attrs: {} + }; + item = obj.selector = $_a5gegtjje5o2pum.trim(item); + if (item !== '*') { + tagName = item.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function ($0, $1, $2, $3, $4) { + switch ($1) { + case '#': + obj.attrs.id = $2; + break; + case '.': + obj.classes.push($2); + break; + case ':': + if ($_a5gegtjje5o2pum.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) { + obj.attrs[$2] = $2; + } + break; + } + if ($3 === '[') { + var m = $4.match(/([\w\-]+)(?:\=\"([^\"]+))?/); + if (m) { + obj.attrs[m[1]] = m[2]; + } + } + return ''; + }); + } + obj.name = tagName || 'div'; + return obj; + }; + var parseSelector = function (selector) { + if (!selector || typeof selector !== 'string') { + return []; + } + selector = selector.split(/\s*,\s*/)[0]; + selector = selector.replace(/\s*(~\+|~|\+|>)\s*/g, '$1'); + return $_a5gegtjje5o2pum.map(selector.split(/(?:>|\s+(?![^\[\]]+\]))/), function (item) { + var siblings = $_a5gegtjje5o2pum.map(item.split(/(?:~\+|~|\+)/), parseSelectorItem); + var obj = siblings.pop(); + if (siblings.length) { + obj.siblings = siblings; + } + return obj; + }).reverse(); + }; + var getCssText = function (editor, format) { + var name, previewFrag, previewElm, items; + var previewCss = '', parentFontSize, previewStyles; + previewStyles = editor.settings.preview_styles; + if (previewStyles === false) { + return ''; + } + if (typeof previewStyles !== 'string') { + previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow'; + } + var removeVars = function (val) { + return val.replace(/%(\w+)/g, ''); + }; + if (typeof format === 'string') { + format = editor.formatter.get(format); + if (!format) { + return; + } + format = format[0]; + } + if ('preview' in format) { + previewStyles = format.preview; + if (previewStyles === false) { + return ''; + } + } + name = format.block || format.inline || 'span'; + items = parseSelector(format.selector); + if (items.length) { + if (!items[0].name) { + items[0].name = name; + } + name = format.selector; + previewFrag = parsedSelectorToHtml(items, editor); + } else { + previewFrag = parsedSelectorToHtml([name], editor); + } + previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild; + each$18(format.styles, function (value, name) { + value = removeVars(value); + if (value) { + dom.setStyle(previewElm, name, value); + } + }); + each$18(format.attributes, function (value, name) { + value = removeVars(value); + if (value) { + dom.setAttrib(previewElm, name, value); + } + }); + each$18(format.classes, function (value) { + value = removeVars(value); + if (!dom.hasClass(previewElm, value)) { + dom.addClass(previewElm, value); + } + }); + editor.fire('PreviewFormats'); + dom.setStyles(previewFrag, { + position: 'absolute', + left: -65535 + }); + editor.getBody().appendChild(previewFrag); + parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true); + parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0; + each$18(previewStyles.split(' '), function (name) { + var value = dom.getStyle(previewElm, name, true); + if (name === 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) { + value = dom.getStyle(editor.getBody(), name, true); + if (dom.toHex(value).toLowerCase() === '#ffffff') { + return; + } + } + if (name === 'color') { + if (dom.toHex(value).toLowerCase() === '#000000') { + return; + } + } + if (name === 'font-size') { + if (/em|%$/.test(value)) { + if (parentFontSize === 0) { + return; + } + value = parseFloat(value) / (/%$/.test(value) ? 100 : 1); + value = value * parentFontSize + 'px'; + } + } + if (name === 'border' && value) { + previewCss += 'padding:0 2px;'; + } + previewCss += name + ':' + value + ';'; + }); + editor.fire('AfterPreviewFormats'); + dom.remove(previewFrag); + return previewCss; + }; + var $_f93fum5pje5o2qvn = { + getCssText: getCssText, + parseSelector: parseSelector, + selectorToHtml: selectorToHtml + }; + + var toggle = function (editor, formats, name, vars, node) { + var fmt = formats.get(name); + if ($_g32xfv3mje5o2qg1.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) { + $_2afve25kje5o2qul.remove(editor, name, vars, node); + } else { + $_a1bxau5hje5o2qu0.applyFormat(editor, name, vars, node); + } + }; + var $_bzwbov5qje5o2qvu = { toggle: toggle }; + + var setup$4 = function (editor) { + editor.addShortcut('meta+b', '', 'Bold'); + editor.addShortcut('meta+i', '', 'Italic'); + editor.addShortcut('meta+u', '', 'Underline'); + for (var i = 1; i <= 6; i++) { + editor.addShortcut('access+' + i, '', [ + 'FormatBlock', + false, + 'h' + i + ]); + } + editor.addShortcut('access+7', '', [ + 'FormatBlock', + false, + 'p' + ]); + editor.addShortcut('access+8', '', [ + 'FormatBlock', + false, + 'div' + ]); + editor.addShortcut('access+9', '', [ + 'FormatBlock', + false, + 'address' + ]); + }; + var $_2qm5rd5rje5o2qvv = { setup: setup$4 }; + + function Formatter (editor) { + var formats = FormatRegistry(editor); + var formatChangeState = Cell(null); + $_2qm5rd5rje5o2qvv.setup(editor); + $_4066yu3jje5o2qev.setup(editor); + return { + get: formats.get, + register: formats.register, + unregister: formats.unregister, + apply: $_enfhkv6je5o2ply.curry($_a1bxau5hje5o2qu0.applyFormat, editor), + remove: $_enfhkv6je5o2ply.curry($_2afve25kje5o2qul.remove, editor), + toggle: $_enfhkv6je5o2ply.curry($_bzwbov5qje5o2qvu.toggle, editor, formats), + match: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.match, editor), + matchAll: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.matchAll, editor), + matchNode: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.matchNode, editor), + canApply: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.canApply, editor), + formatChanged: $_enfhkv6je5o2ply.curry($_eb5vf85mje5o2qvd.formatChanged, editor, formatChangeState), + getCssText: $_enfhkv6je5o2ply.curry($_f93fum5pje5o2qvn.getCssText, editor) + }; + } + + var shallow = function (old, nu) { + return nu; + }; + var deep = function (old, nu) { + var bothObjects = $_be3q8w12je5o2pxj.isObject(old) && $_be3q8w12je5o2pxj.isObject(nu); + return bothObjects ? deepMerge(old, nu) : nu; + }; + var baseMerge = function (merger) { + return function () { + var objects = new Array(arguments.length); + for (var i = 0; i < objects.length; i++) + objects[i] = arguments[i]; + if (objects.length === 0) + throw new Error('Can\'t merge zero objects'); + var ret = {}; + for (var j = 0; j < objects.length; j++) { + var curObject = objects[j]; + for (var key in curObject) + if (curObject.hasOwnProperty(key)) { + ret[key] = merger(ret[key], curObject[key]); + } + } + return ret; + }; + }; + var deepMerge = baseMerge(deep); + var merge = baseMerge(shallow); + var $_atjucy5uje5o2qw2 = { + deepMerge: deepMerge, + merge: merge + }; + + var firePreProcess = function (editor, args) { + return editor.fire('PreProcess', args); + }; + var firePostProcess = function (editor, args) { + return editor.fire('PostProcess', args); + }; + var fireRemove = function (editor) { + return editor.fire('remove'); + }; + var $_d6jl355vje5o2qw5 = { + firePreProcess: firePreProcess, + firePostProcess: firePostProcess, + fireRemove: fireRemove + }; + + var register = function (htmlParser, settings, dom) { + htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.attr('tabindex', node.attributes.map['data-mce-tabindex']); + node.attr(name, null); + } + }); + htmlParser.addAttributeFilter('src,href,style', function (nodes, name) { + var i = nodes.length, node, value; + var internalName = 'data-mce-' + name; + var urlConverter = settings.url_converter; + var urlConverterScope = settings.url_converter_scope; + while (i--) { + node = nodes[i]; + value = node.attributes.map[internalName]; + if (value !== undefined) { + node.attr(name, value.length > 0 ? value : null); + node.attr(internalName, null); + } else { + value = node.attributes.map[name]; + if (name === 'style') { + value = dom.serializeStyle(dom.parseStyle(value), node.name); + } else if (urlConverter) { + value = urlConverter.call(urlConverterScope, value, name, node.name); + } + node.attr(name, value.length > 0 ? value : null); + } + } + }); + htmlParser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, value; + while (i--) { + node = nodes[i]; + value = node.attr('class'); + if (value) { + value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ''); + node.attr('class', value.length > 0 ? value : null); + } + } + }); + htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) { + node.remove(); + } + } + }); + htmlParser.addNodeFilter('noscript', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i].firstChild; + if (node) { + node.value = $_fzh4ld1rje5o2q0t.decode(node.value); + } + } + }); + htmlParser.addNodeFilter('script,style', function (nodes, name) { + var i = nodes.length, node, value, type; + var trim = function (value) { + return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n').replace(/^[\r\n]*|[\r\n]*$/g, '').replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '').replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, ''); + }; + while (i--) { + node = nodes[i]; + value = node.firstChild ? node.firstChild.value : ''; + if (name === 'script') { + type = node.attr('type'); + if (type) { + node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\-/, '')); + } + if (settings.element_format === 'xhtml' && value.length > 0) { + node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>'; + } + } else { + if (settings.element_format === 'xhtml' && value.length > 0) { + node.firstChild.value = '<!--\n' + trim(value) + '\n-->'; + } + } + } + }); + htmlParser.addNodeFilter('#comment', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.value.indexOf('[CDATA[') === 0) { + node.name = '#cdata'; + node.type = 4; + node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, ''); + } else if (node.value.indexOf('mce:protected ') === 0) { + node.name = '#text'; + node.type = 3; + node.raw = true; + node.value = unescape(node.value).substr(14); + } + } + }); + htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.type === 7) { + node.remove(); + } else if (node.type === 1) { + if (name === 'input' && !('type' in node.attributes.map)) { + node.attr('type', 'text'); + } + } + } + }); + htmlParser.addAttributeFilter('data-mce-type', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + if (node.attr('data-mce-type') === 'format-caret') { + if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) { + node.remove(); + } else { + node.unwrap(); + } + } + }); + }); + htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) { + var i = nodes.length; + while (i--) { + nodes[i].attr(name, null); + } + }); + }; + var trimTrailingBr = function (rootNode) { + var brNode1, brNode2; + var isBr = function (node) { + return node && node.name === 'br'; + }; + brNode1 = rootNode.lastChild; + if (isBr(brNode1)) { + brNode2 = brNode1.prev; + if (isBr(brNode2)) { + brNode1.remove(); + brNode2.remove(); + } + } + }; + var $_97epr95wje5o2qw7 = { + register: register, + trimTrailingBr: trimTrailingBr + }; + + var preProcess = function (editor, node, args) { + var impl, doc, oldDoc; + var dom = editor.dom; + node = node.cloneNode(true); + impl = document.implementation; + if (impl.createHTMLDocument) { + doc = impl.createHTMLDocument(''); + $_a5gegtjje5o2pum.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) { + doc.body.appendChild(doc.importNode(node, true)); + }); + if (node.nodeName !== 'BODY') { + node = doc.body.firstChild; + } else { + node = doc.body; + } + oldDoc = dom.doc; + dom.doc = doc; + } + $_d6jl355vje5o2qw5.firePreProcess(editor, $_atjucy5uje5o2qw2.merge(args, { node: node })); + if (oldDoc) { + dom.doc = oldDoc; + } + return node; + }; + var shouldFireEvent = function (editor, args) { + return editor && editor.hasEventListeners('PreProcess') && !args.no_events; + }; + var process = function (editor, node, args) { + return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node; + }; + var $_70hszr5xje5o2qwd = { process: process }; + + var removeAttrs = function (node, names) { + $_bwcteb4je5o2pl4.each(names, function (name) { + node.attr(name, null); + }); + }; + var addFontToSpansFilter = function (domParser, styles, fontSizes) { + domParser.addNodeFilter('font', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + var props = styles.parse(node.attr('style')); + var color = node.attr('color'); + var face = node.attr('face'); + var size = node.attr('size'); + if (color) { + props.color = color; + } + if (face) { + props['font-family'] = face; + } + if (size) { + props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1]; + } + node.name = 'span'; + node.attr('style', styles.serialize(props)); + removeAttrs(node, [ + 'color', + 'face', + 'size' + ]); + }); + }); + }; + var addStrikeToSpanFilter = function (domParser, styles) { + domParser.addNodeFilter('strike', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + var props = styles.parse(node.attr('style')); + props['text-decoration'] = 'line-through'; + node.name = 'span'; + node.attr('style', styles.serialize(props)); + }); + }); + }; + var addFilters = function (domParser, settings) { + var styles = Styles(); + if (settings.convert_fonts_to_spans) { + addFontToSpansFilter(domParser, styles, $_a5gegtjje5o2pum.explode(settings.font_size_legacy_values)); + } + addStrikeToSpanFilter(domParser, styles); + }; + var register$1 = function (domParser, settings) { + if (settings.inline_styles) { + addFilters(domParser, settings); + } + }; + var $_6tznke5zje5o2qx6 = { register: register$1 }; + + var whiteSpaceRegExp$3 = /^[ \t\r\n]*$/; + var typeLookup = { + '#text': 3, + '#comment': 8, + '#cdata': 4, + '#pi': 7, + '#doctype': 10, + '#document-fragment': 11 + }; + var walk$3 = function (node, root, prev) { + var sibling; + var parent; + var startName = prev ? 'lastChild' : 'firstChild'; + var siblingName = prev ? 'prev' : 'next'; + if (node[startName]) { + return node[startName]; + } + if (node !== root) { + sibling = node[siblingName]; + if (sibling) { + return sibling; + } + for (parent = node.parent; parent && parent !== root; parent = parent.parent) { + sibling = parent[siblingName]; + if (sibling) { + return sibling; + } + } + } + }; + var Node$2 = function () { + function Node(name, type) { + this.name = name; + this.type = type; + if (type === 1) { + this.attributes = []; + this.attributes.map = {}; + } + } + Node.create = function (name, attrs) { + var node, attrName; + node = new Node(name, typeLookup[name] || 1); + if (attrs) { + for (attrName in attrs) { + node.attr(attrName, attrs[attrName]); + } + } + return node; + }; + Node.prototype.replace = function (node) { + var self = this; + if (node.parent) { + node.remove(); + } + self.insert(node, self); + self.remove(); + return self; + }; + Node.prototype.attr = function (name, value) { + var self = this; + var attrs, i; + if (typeof name !== 'string') { + for (i in name) { + self.attr(i, name[i]); + } + return self; + } + if (attrs = self.attributes) { + if (value !== undefined) { + if (value === null) { + if (name in attrs.map) { + delete attrs.map[name]; + i = attrs.length; + while (i--) { + if (attrs[i].name === name) { + attrs = attrs.splice(i, 1); + return self; + } + } + } + return self; + } + if (name in attrs.map) { + i = attrs.length; + while (i--) { + if (attrs[i].name === name) { + attrs[i].value = value; + break; + } + } + } else { + attrs.push({ + name: name, + value: value + }); + } + attrs.map[name] = value; + return self; + } + return attrs.map[name]; + } + }; + Node.prototype.clone = function () { + var self = this; + var clone = new Node(self.name, self.type); + var i, l, selfAttrs, selfAttr, cloneAttrs; + if (selfAttrs = self.attributes) { + cloneAttrs = []; + cloneAttrs.map = {}; + for (i = 0, l = selfAttrs.length; i < l; i++) { + selfAttr = selfAttrs[i]; + if (selfAttr.name !== 'id') { + cloneAttrs[cloneAttrs.length] = { + name: selfAttr.name, + value: selfAttr.value + }; + cloneAttrs.map[selfAttr.name] = selfAttr.value; + } + } + clone.attributes = cloneAttrs; + } + clone.value = self.value; + clone.shortEnded = self.shortEnded; + return clone; + }; + Node.prototype.wrap = function (wrapper) { + var self = this; + self.parent.insert(wrapper, self); + wrapper.append(self); + return self; + }; + Node.prototype.unwrap = function () { + var self = this; + var node, next; + for (node = self.firstChild; node;) { + next = node.next; + self.insert(node, self, true); + node = next; + } + self.remove(); + }; + Node.prototype.remove = function () { + var self = this, parent = self.parent, next = self.next, prev = self.prev; + if (parent) { + if (parent.firstChild === self) { + parent.firstChild = next; + if (next) { + next.prev = null; + } + } else { + prev.next = next; + } + if (parent.lastChild === self) { + parent.lastChild = prev; + if (prev) { + prev.next = null; + } + } else { + next.prev = prev; + } + self.parent = self.next = self.prev = null; + } + return self; + }; + Node.prototype.append = function (node) { + var self = this; + var last; + if (node.parent) { + node.remove(); + } + last = self.lastChild; + if (last) { + last.next = node; + node.prev = last; + self.lastChild = node; + } else { + self.lastChild = self.firstChild = node; + } + node.parent = self; + return node; + }; + Node.prototype.insert = function (node, refNode, before) { + var parent; + if (node.parent) { + node.remove(); + } + parent = refNode.parent || this; + if (before) { + if (refNode === parent.firstChild) { + parent.firstChild = node; + } else { + refNode.prev.next = node; + } + node.prev = refNode.prev; + node.next = refNode; + refNode.prev = node; + } else { + if (refNode === parent.lastChild) { + parent.lastChild = node; + } else { + refNode.next.prev = node; + } + node.next = refNode.next; + node.prev = refNode; + refNode.next = node; + } + node.parent = parent; + return node; + }; + Node.prototype.getAll = function (name) { + var self = this; + var node; + var collection = []; + for (node = self.firstChild; node; node = walk$3(node, self)) { + if (node.name === name) { + collection.push(node); + } + } + return collection; + }; + Node.prototype.empty = function () { + var self = this; + var nodes, i, node; + if (self.firstChild) { + nodes = []; + for (node = self.firstChild; node; node = walk$3(node, self)) { + nodes.push(node); + } + i = nodes.length; + while (i--) { + node = nodes[i]; + node.parent = node.firstChild = node.lastChild = node.next = node.prev = null; + } + } + self.firstChild = self.lastChild = null; + return self; + }; + Node.prototype.isEmpty = function (elements, whitespace, predicate) { + var self = this; + var node = self.firstChild, i, name; + whitespace = whitespace || {}; + if (node) { + do { + if (node.type === 1) { + if (node.attributes.map['data-mce-bogus']) { + continue; + } + if (elements[node.name]) { + return false; + } + i = node.attributes.length; + while (i--) { + name = node.attributes[i].name; + if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) { + return false; + } + } + } + if (node.type === 8) { + return false; + } + if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) { + return false; + } + if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) { + return false; + } + if (predicate && predicate(node)) { + return false; + } + } while (node = walk$3(node, self)); + } + return true; + }; + Node.prototype.walk = function (prev) { + return walk$3(this, null, prev); + }; + return Node; + }(); + + var paddEmptyNode = function (settings, args, blockElements, node) { + var brPreferred = settings.padd_empty_with_br || args.insert; + if (brPreferred && blockElements[node.name]) { + node.empty().append(new Node$2('br', 1)).shortEnded = true; + } else { + node.empty().append(new Node$2('#text', 3)).value = '\xA0'; + } + }; + var isPaddedWithNbsp = function (node) { + return hasOnlyChild(node, '#text') && node.firstChild.value === '\xA0'; + }; + var hasOnlyChild = function (node, name) { + return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name; + }; + var isPadded = function (schema, node) { + var rule = schema.getElementRule(node.name); + return rule && rule.paddEmpty; + }; + var isEmpty$1 = function (schema, nonEmptyElements, whitespaceElements, node) { + return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) { + return isPadded(schema, node); + }); + }; + var isLineBreakNode = function (node, blockElements) { + return node && (blockElements[node.name] || node.name === 'br'); + }; + + var register$2 = function (parser, settings) { + var schema = parser.schema; + if (settings.remove_trailing_brs) { + parser.addNodeFilter('br', function (nodes, _, args) { + var i; + var l = nodes.length; + var node; + var blockElements = $_a5gegtjje5o2pum.extend({}, schema.getBlockElements()); + var nonEmptyElements = schema.getNonEmptyElements(); + var parent, lastParent, prev, prevName; + var whiteSpaceElements = schema.getNonEmptyElements(); + var elementRule, textNode; + blockElements.body = 1; + for (i = 0; i < l; i++) { + node = nodes[i]; + parent = node.parent; + if (blockElements[node.parent.name] && node === parent.lastChild) { + prev = node.prev; + while (prev) { + prevName = prev.name; + if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') { + if (prevName !== 'br') { + break; + } + if (prevName === 'br') { + node = null; + break; + } + } + prev = prev.prev; + } + if (node) { + node.remove(); + if (isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, parent)) { + elementRule = schema.getElementRule(parent.name); + if (elementRule) { + if (elementRule.removeEmpty) { + parent.remove(); + } else if (elementRule.paddEmpty) { + paddEmptyNode(settings, args, blockElements, parent); + } + } + } + } + } else { + lastParent = node; + while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) { + lastParent = parent; + if (blockElements[parent.name]) { + break; + } + parent = parent.parent; + } + if (lastParent === parent && settings.padd_empty_with_br !== true) { + textNode = new Node$2('#text', 3); + textNode.value = '\xA0'; + node.replace(textNode); + } + } + } + }); + } + parser.addAttributeFilter('href', function (nodes) { + var i = nodes.length, node; + var appendRel = function (rel) { + var parts = rel.split(' ').filter(function (p) { + return p.length > 0; + }); + return parts.concat(['noopener']).sort().join(' '); + }; + var addNoOpener = function (rel) { + var newRel = rel ? $_a5gegtjje5o2pum.trim(rel) : ''; + if (!/\b(noopener)\b/g.test(newRel)) { + return appendRel(newRel); + } else { + return newRel; + } + }; + if (!settings.allow_unsafe_link_target) { + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.attr('target') === '_blank') { + node.attr('rel', addNoOpener(node.attr('rel'))); + } + } + } + }); + if (!settings.allow_html_in_named_anchor) { + parser.addAttributeFilter('id,name', function (nodes) { + var i = nodes.length, sibling, prevSibling, parent, node; + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.firstChild && !node.attr('href')) { + parent = node.parent; + sibling = node.lastChild; + do { + prevSibling = sibling.prev; + parent.insert(sibling, node); + sibling = prevSibling; + } while (sibling); + } + } + }); + } + if (settings.fix_list_elements) { + parser.addNodeFilter('ul,ol', function (nodes) { + var i = nodes.length, node, parentNode; + while (i--) { + node = nodes[i]; + parentNode = node.parent; + if (parentNode.name === 'ul' || parentNode.name === 'ol') { + if (node.prev && node.prev.name === 'li') { + node.prev.append(node); + } else { + var li = new Node$2('li', 1); + li.attr('style', 'list-style-type: none'); + node.wrap(li); + } + } + } + }); + } + if (settings.validate && schema.getValidClasses()) { + parser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, classList, ci, className, classValue; + var validClasses = schema.getValidClasses(); + var validClassesMap, valid; + while (i--) { + node = nodes[i]; + classList = node.attr('class').split(' '); + classValue = ''; + for (ci = 0; ci < classList.length; ci++) { + className = classList[ci]; + valid = false; + validClassesMap = validClasses['*']; + if (validClassesMap && validClassesMap[className]) { + valid = true; + } + validClassesMap = validClasses[node.name]; + if (!valid && validClassesMap && validClassesMap[className]) { + valid = true; + } + if (valid) { + if (classValue) { + classValue += ' '; + } + classValue += className; + } + } + if (!classValue.length) { + classValue = null; + } + node.attr('class', classValue); + } + }); + } + }; + + var makeMap$4 = $_a5gegtjje5o2pum.makeMap; + var each$19 = $_a5gegtjje5o2pum.each; + var explode$4 = $_a5gegtjje5o2pum.explode; + var extend$3 = $_a5gegtjje5o2pum.extend; + function DomParser (settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var nodeFilters = {}; + var attributeFilters = []; + var matchedNodes = {}; + var matchedAttributes = {}; + settings = settings || {}; + settings.validate = 'validate' in settings ? settings.validate : true; + settings.root_name = settings.root_name || 'body'; + var fixInvalidChildren = function (nodes) { + var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i; + var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode; + nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table'); + nonEmptyElements = schema.getNonEmptyElements(); + whitespaceElements = schema.getWhiteSpaceElements(); + textBlockElements = schema.getTextBlockElements(); + specialElements = schema.getSpecialElements(); + for (ni = 0; ni < nodes.length; ni++) { + node = nodes[ni]; + if (!node.parent || node.fixed) { + continue; + } + if (textBlockElements[node.name] && node.parent.name === 'li') { + sibling = node.next; + while (sibling) { + if (textBlockElements[sibling.name]) { + sibling.name = 'li'; + sibling.fixed = true; + node.parent.insert(sibling, node.parent); + } else { + break; + } + sibling = sibling.next; + } + node.unwrap(node); + continue; + } + parents = [node]; + for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) { + parents.push(parent); + } + if (parent && parents.length > 1) { + parents.reverse(); + newParent = currentNode = filterNode(parents[0].clone()); + for (i = 0; i < parents.length - 1; i++) { + if (schema.isValidChild(currentNode.name, parents[i].name)) { + tempNode = filterNode(parents[i].clone()); + currentNode.append(tempNode); + } else { + tempNode = currentNode; + } + for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) { + nextNode = childNode.next; + tempNode.append(childNode); + childNode = nextNode; + } + currentNode = tempNode; + } + if (!isEmpty$1(schema, nonEmptyElements, whitespaceElements, newParent)) { + parent.insert(newParent, parents[0], true); + parent.insert(node, newParent); + } else { + parent.insert(node, parents[0], true); + } + parent = parents[0]; + if (isEmpty$1(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) { + parent.empty().remove(); + } + } else if (node.parent) { + if (node.name === 'li') { + sibling = node.prev; + if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { + sibling.append(node); + continue; + } + sibling = node.next; + if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { + sibling.insert(node, sibling.firstChild, true); + continue; + } + node.wrap(filterNode(new Node$2('ul', 1))); + continue; + } + if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) { + node.wrap(filterNode(new Node$2('div', 1))); + } else { + if (specialElements[node.name]) { + node.empty().remove(); + } else { + node.unwrap(); + } + } + } + } + }; + var filterNode = function (node) { + var i, name, list; + if (name in nodeFilters) { + list = matchedNodes[name]; + if (list) { + list.push(node); + } else { + matchedNodes[name] = [node]; + } + } + i = attributeFilters.length; + while (i--) { + name = attributeFilters[i].name; + if (name in node.attributes.map) { + list = matchedAttributes[name]; + if (list) { + list.push(node); + } else { + matchedAttributes[name] = [node]; + } + } + } + return node; + }; + var addNodeFilter = function (name, callback) { + each$19(explode$4(name), function (name) { + var list = nodeFilters[name]; + if (!list) { + nodeFilters[name] = list = []; + } + list.push(callback); + }); + }; + var getNodeFilters = function () { + var out = []; + for (var name_1 in nodeFilters) { + if (nodeFilters.hasOwnProperty(name_1)) { + out.push({ + name: name_1, + callbacks: nodeFilters[name_1] + }); + } + } + return out; + }; + var addAttributeFilter = function (name, callback) { + each$19(explode$4(name), function (name) { + var i; + for (i = 0; i < attributeFilters.length; i++) { + if (attributeFilters[i].name === name) { + attributeFilters[i].callbacks.push(callback); + return; + } + } + attributeFilters.push({ + name: name, + callbacks: [callback] + }); + }); + }; + var getAttributeFilters = function () { + return [].concat(attributeFilters); + }; + var parse = function (html, args) { + var parser, nodes, i, l, fi, fl, list, name; + var blockElements; + var invalidChildren = []; + var isInWhiteSpacePreservedElement; + var node; + args = args || {}; + matchedNodes = {}; + matchedAttributes = {}; + blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements()); + var nonEmptyElements = schema.getNonEmptyElements(); + var children = schema.children; + var validate = settings.validate; + var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block; + var whiteSpaceElements = schema.getWhiteSpaceElements(); + var startWhiteSpaceRegExp = /^[ \t\r\n]+/; + var endWhiteSpaceRegExp = /[ \t\r\n]+$/; + var allWhiteSpaceRegExp = /[ \t\r\n]+/g; + var isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/; + var addRootBlocks = function () { + var node = rootNode.firstChild, next, rootBlockNode; + var trim = function (rootBlockNode) { + if (rootBlockNode) { + node = rootBlockNode.firstChild; + if (node && node.type === 3) { + node.value = node.value.replace(startWhiteSpaceRegExp, ''); + } + node = rootBlockNode.lastChild; + if (node && node.type === 3) { + node.value = node.value.replace(endWhiteSpaceRegExp, ''); + } + } + }; + if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) { + return; + } + while (node) { + next = node.next; + if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) { + if (!rootBlockNode) { + rootBlockNode = createNode(rootBlockName, 1); + rootBlockNode.attr(settings.forced_root_block_attrs); + rootNode.insert(rootBlockNode, node); + rootBlockNode.append(node); + } else { + rootBlockNode.append(node); + } + } else { + trim(rootBlockNode); + rootBlockNode = null; + } + node = next; + } + trim(rootBlockNode); + }; + var createNode = function (name, type) { + var node = new Node$2(name, type); + var list; + if (name in nodeFilters) { + list = matchedNodes[name]; + if (list) { + list.push(node); + } else { + matchedNodes[name] = [node]; + } + } + return node; + }; + var removeWhitespaceBefore = function (node) { + var textNode, textNodeNext, textVal, sibling; + var blockElements = schema.getBlockElements(); + for (textNode = node.prev; textNode && textNode.type === 3;) { + textVal = textNode.value.replace(endWhiteSpaceRegExp, ''); + if (textVal.length > 0) { + textNode.value = textVal; + return; + } + textNodeNext = textNode.next; + if (textNodeNext) { + if (textNodeNext.type === 3 && textNodeNext.value.length) { + textNode = textNode.prev; + continue; + } + if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') { + textNode = textNode.prev; + continue; + } + } + sibling = textNode.prev; + textNode.remove(); + textNode = sibling; + } + }; + var cloneAndExcludeBlocks = function (input) { + var name; + var output = {}; + for (name in input) { + if (name !== 'li' && name !== 'p') { + output[name] = input[name]; + } + } + return output; + }; + parser = SaxParser$1({ + validate: validate, + allow_script_urls: settings.allow_script_urls, + allow_conditional_comments: settings.allow_conditional_comments, + self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()), + cdata: function (text) { + node.append(createNode('#cdata', 4)).value = text; + }, + text: function (text, raw) { + var textNode; + if (!isInWhiteSpacePreservedElement) { + text = text.replace(allWhiteSpaceRegExp, ' '); + if (isLineBreakNode(node.lastChild, blockElements)) { + text = text.replace(startWhiteSpaceRegExp, ''); + } + } + if (text.length !== 0) { + textNode = createNode('#text', 3); + textNode.raw = !!raw; + node.append(textNode).value = text; + } + }, + comment: function (text) { + node.append(createNode('#comment', 8)).value = text; + }, + pi: function (name, text) { + node.append(createNode(name, 7)).value = text; + removeWhitespaceBefore(node); + }, + doctype: function (text) { + var newNode; + newNode = node.append(createNode('#doctype', 10)); + newNode.value = text; + removeWhitespaceBefore(node); + }, + start: function (name, attrs, empty) { + var newNode, attrFiltersLen, elementRule, attrName, parent; + elementRule = validate ? schema.getElementRule(name) : {}; + if (elementRule) { + newNode = createNode(elementRule.outputName || name, 1); + newNode.attributes = attrs; + newNode.shortEnded = empty; + node.append(newNode); + parent = children[node.name]; + if (parent && children[newNode.name] && !parent[newNode.name]) { + invalidChildren.push(newNode); + } + attrFiltersLen = attributeFilters.length; + while (attrFiltersLen--) { + attrName = attributeFilters[attrFiltersLen].name; + if (attrName in attrs.map) { + list = matchedAttributes[attrName]; + if (list) { + list.push(newNode); + } else { + matchedAttributes[attrName] = [newNode]; + } + } + } + if (blockElements[name]) { + removeWhitespaceBefore(newNode); + } + if (!empty) { + node = newNode; + } + if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { + isInWhiteSpacePreservedElement = true; + } + } + }, + end: function (name) { + var textNode, elementRule, text, sibling, tempNode; + elementRule = validate ? schema.getElementRule(name) : {}; + if (elementRule) { + if (blockElements[name]) { + if (!isInWhiteSpacePreservedElement) { + textNode = node.firstChild; + if (textNode && textNode.type === 3) { + text = textNode.value.replace(startWhiteSpaceRegExp, ''); + if (text.length > 0) { + textNode.value = text; + textNode = textNode.next; + } else { + sibling = textNode.next; + textNode.remove(); + textNode = sibling; + while (textNode && textNode.type === 3) { + text = textNode.value; + sibling = textNode.next; + if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { + textNode.remove(); + textNode = sibling; + } + textNode = sibling; + } + } + } + textNode = node.lastChild; + if (textNode && textNode.type === 3) { + text = textNode.value.replace(endWhiteSpaceRegExp, ''); + if (text.length > 0) { + textNode.value = text; + textNode = textNode.prev; + } else { + sibling = textNode.prev; + textNode.remove(); + textNode = sibling; + while (textNode && textNode.type === 3) { + text = textNode.value; + sibling = textNode.prev; + if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { + textNode.remove(); + textNode = sibling; + } + textNode = sibling; + } + } + } + } + } + if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { + isInWhiteSpacePreservedElement = false; + } + if (elementRule.removeEmpty && isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, node)) { + if (!node.attributes.map.name && !node.attr('id')) { + tempNode = node.parent; + if (blockElements[node.name]) { + node.empty().remove(); + } else { + node.unwrap(); + } + node = tempNode; + return; + } + } + if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, node))) { + paddEmptyNode(settings, args, blockElements, node); + } + node = node.parent; + } + } + }, schema); + var rootNode = node = new Node$2(args.context || settings.root_name, 11); + parser.parse(html); + if (validate && invalidChildren.length) { + if (!args.context) { + fixInvalidChildren(invalidChildren); + } else { + args.invalid = true; + } + } + if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) { + addRootBlocks(); + } + if (!args.invalid) { + for (name in matchedNodes) { + list = nodeFilters[name]; + nodes = matchedNodes[name]; + fi = nodes.length; + while (fi--) { + if (!nodes[fi].parent) { + nodes.splice(fi, 1); + } + } + for (i = 0, l = list.length; i < l; i++) { + list[i](nodes, name, args); + } + } + for (i = 0, l = attributeFilters.length; i < l; i++) { + list = attributeFilters[i]; + if (list.name in matchedAttributes) { + nodes = matchedAttributes[list.name]; + fi = nodes.length; + while (fi--) { + if (!nodes[fi].parent) { + nodes.splice(fi, 1); + } + } + for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) { + list.callbacks[fi](nodes, list.name, args); + } + } + } + } + return rootNode; + }; + var exports = { + schema: schema, + addAttributeFilter: addAttributeFilter, + getAttributeFilters: getAttributeFilters, + addNodeFilter: addNodeFilter, + getNodeFilters: getNodeFilters, + filterNode: filterNode, + parse: parse + }; + register$2(exports, settings); + $_6tznke5zje5o2qx6.register(exports, settings); + return exports; + } + + var addTempAttr = function (htmlParser, tempAttrs, name) { + if ($_a5gegtjje5o2pum.inArray(tempAttrs, name) === -1) { + htmlParser.addAttributeFilter(name, function (nodes, name) { + var i = nodes.length; + while (i--) { + nodes[i].attr(name, null); + } + }); + tempAttrs.push(name); + } + }; + var postProcess$1 = function (editor, args, content) { + if (!args.no_events && editor) { + var outArgs = $_d6jl355vje5o2qw5.firePostProcess(editor, $_atjucy5uje5o2qw2.merge(args, { content: content })); + return outArgs.content; + } else { + return content; + } + }; + var getHtmlFromNode = function (dom, node, args) { + var html = $_4md31c21je5o2q5f.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)); + return args.selection ? html : $_a5gegtjje5o2pum.trim(html); + }; + var parseHtml = function (htmlParser, dom, html, args) { + var parserArgs = args.selection ? $_atjucy5uje5o2qw2.merge({ forced_root_block: false }, args) : args; + var rootNode = htmlParser.parse(html, parserArgs); + $_97epr95wje5o2qw7.trimTrailingBr(rootNode); + return rootNode; + }; + var serializeNode = function (settings, schema, node) { + var htmlSerializer = HtmlSerializer(settings, schema); + return htmlSerializer.serialize(node); + }; + var toHtml = function (editor, settings, schema, rootNode, args) { + var content = serializeNode(settings, schema, rootNode); + return postProcess$1(editor, args, content); + }; + function DomSerializer (settings, editor) { + var dom, schema, htmlParser; + var tempAttrs = ['data-mce-selected']; + dom = editor && editor.dom ? editor.dom : DOMUtils.DOM; + schema = editor && editor.schema ? editor.schema : Schema(settings); + settings.entity_encoding = settings.entity_encoding || 'named'; + settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true; + htmlParser = DomParser(settings, schema); + $_97epr95wje5o2qw7.register(htmlParser, settings, dom); + var serialize = function (node, parserArgs) { + var args = $_atjucy5uje5o2qw2.merge({ format: 'html' }, parserArgs ? parserArgs : {}); + var targetNode = $_70hszr5xje5o2qwd.process(editor, node, args); + var html = getHtmlFromNode(dom, targetNode, args); + var rootNode = parseHtml(htmlParser, dom, html, args); + return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args); + }; + return { + schema: schema, + addNodeFilter: htmlParser.addNodeFilter, + addAttributeFilter: htmlParser.addAttributeFilter, + serialize: serialize, + addRules: function (rules) { + schema.addValidElements(rules); + }, + setRules: function (rules) { + schema.setValidElements(rules); + }, + addTempAttr: $_enfhkv6je5o2ply.curry(addTempAttr, htmlParser, tempAttrs), + getTempAttrs: function () { + return tempAttrs; + } + }; + } + + function DomSerializer$1 (settings, editor) { + var domSerializer = DomSerializer(settings, editor); + return { + schema: domSerializer.schema, + addNodeFilter: domSerializer.addNodeFilter, + addAttributeFilter: domSerializer.addAttributeFilter, + serialize: domSerializer.serialize, + addRules: domSerializer.addRules, + setRules: domSerializer.setRules, + addTempAttr: domSerializer.addTempAttr, + getTempAttrs: domSerializer.getTempAttrs + }; + } + + var findBlockCaretContainer = function (editor) { + return $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '*[data-mce-caret]').fold($_enfhkv6je5o2ply.constant(null), function (elm) { + return elm.dom(); + }); + }; + var removeIeControlRect = function (editor) { + editor.selection.setRng(editor.selection.getRng()); + }; + var showBlockCaretContainer = function (editor, blockCaretContainer) { + if (blockCaretContainer.hasAttribute('data-mce-caret')) { + showCaretContainerBlock(blockCaretContainer); + removeIeControlRect(editor); + editor.selection.scrollIntoView(blockCaretContainer); + } + }; + var handleBlockContainer = function (editor, e) { + var blockCaretContainer = findBlockCaretContainer(editor); + if (!blockCaretContainer) { + return; + } + if (e.type === 'compositionstart') { + e.preventDefault(); + e.stopPropagation(); + showBlockCaretContainer(editor, blockCaretContainer); + return; + } + if (hasContent(blockCaretContainer)) { + showBlockCaretContainer(editor, blockCaretContainer); + } + }; + var setup$5 = function (editor) { + editor.on('keyup compositionstart', $_enfhkv6je5o2ply.curry(handleBlockContainer, editor)); + }; + var $_acfnaa63je5o2qxq = { setup: setup$5 }; + + function BookmarkManager(selection) { + return { + getBookmark: $_enfhkv6je5o2ply.curry($_83h91t2jje5o2q8n.getBookmark, selection), + moveToBookmark: $_enfhkv6je5o2ply.curry($_83h91t2jje5o2q8n.moveToBookmark, selection) + }; + } + (function (BookmarkManager) { + BookmarkManager.isBookmarkNode = $_83h91t2jje5o2q8n.isBookmarkNode; + }(BookmarkManager || (BookmarkManager = {}))); + var BookmarkManager$1 = BookmarkManager; + + var isContentEditableFalse$10 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isContentEditableTrue$6 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var getContentEditableRoot$1 = function (root, node) { + while (node && node !== root) { + if (isContentEditableTrue$6(node) || isContentEditableFalse$10(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var ControlSelection = function (selection, editor) { + var dom = editor.dom, each = $_a5gegtjje5o2pum.each; + var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle; + var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted; + var width, height; + var editableDoc = editor.getDoc(), rootDocument = document; + var abs = Math.abs, round = Math.round, rootElement = editor.getBody(); + var startScrollWidth, startScrollHeight; + resizeHandles = { + nw: [ + 0, + 0, + -1, + -1 + ], + ne: [ + 1, + 0, + 1, + -1 + ], + se: [ + 1, + 1, + 1, + 1 + ], + sw: [ + 0, + 1, + -1, + 1 + ] + }; + var rootClass = '.mce-content-body'; + editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + ($_9bd8pn9je5o2pp2.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}'); + var isImage = function (elm) { + return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image')); + }; + var isEventOnImageOutsideRange = function (evt, range) { + return isImage(evt.target) && !$_40xr2y56je5o2qsc.isXYWithinRange(evt.clientX, evt.clientY, range); + }; + var contextMenuSelectImage = function (evt) { + var target = evt.target; + if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) { + evt.preventDefault(); + editor.selection.select(target); + } + }; + var getResizeTarget = function (elm) { + return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm; + }; + var isResizable = function (elm) { + var selector = editor.settings.object_resizing; + if (selector === false || $_9bd8pn9je5o2pp2.iOS) { + return false; + } + if (typeof selector !== 'string') { + selector = 'table,img,figure.image,div'; + } + if (elm.getAttribute('data-mce-resize') === 'false') { + return false; + } + if (elm === editor.getBody()) { + return false; + } + return $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(elm), selector); + }; + var resizeGhostElement = function (e) { + var deltaX, deltaY, proportional; + var resizeHelperX, resizeHelperY; + deltaX = e.screenX - startX; + deltaY = e.screenY - startY; + width = deltaX * selectedHandle[2] + startW; + height = deltaY * selectedHandle[3] + startH; + width = width < 5 ? 5 : width; + height = height < 5 ? 5 : height; + if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) { + proportional = !$_99mhlk59je5o2qss.modifierPressed(e); + } else { + proportional = $_99mhlk59je5o2qss.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0; + } + if (proportional) { + if (abs(deltaX) > abs(deltaY)) { + height = round(width * ratio); + width = round(height / ratio); + } else { + width = round(height / ratio); + height = round(width * ratio); + } + } + dom.setStyles(getResizeTarget(selectedElmGhost), { + width: width, + height: height + }); + resizeHelperX = selectedHandle.startPos.x + deltaX; + resizeHelperY = selectedHandle.startPos.y + deltaY; + resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0; + resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0; + dom.setStyles(resizeHelper, { + left: resizeHelperX, + top: resizeHelperY, + display: 'block' + }); + resizeHelper.innerHTML = width + ' × ' + height; + if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) { + dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width)); + } + if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) { + dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height)); + } + deltaX = rootElement.scrollWidth - startScrollWidth; + deltaY = rootElement.scrollHeight - startScrollHeight; + if (deltaX + deltaY !== 0) { + dom.setStyles(resizeHelper, { + left: resizeHelperX - deltaX, + top: resizeHelperY - deltaY + }); + } + if (!resizeStarted) { + editor.fire('ObjectResizeStart', { + target: selectedElm, + width: startW, + height: startH + }); + resizeStarted = true; + } + }; + var endGhostResize = function () { + resizeStarted = false; + var setSizeProp = function (name, value) { + if (value) { + if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) { + dom.setStyle(getResizeTarget(selectedElm), name, value); + } else { + dom.setAttrib(getResizeTarget(selectedElm), name, value); + } + } + }; + setSizeProp('width', width); + setSizeProp('height', height); + dom.unbind(editableDoc, 'mousemove', resizeGhostElement); + dom.unbind(editableDoc, 'mouseup', endGhostResize); + if (rootDocument !== editableDoc) { + dom.unbind(rootDocument, 'mousemove', resizeGhostElement); + dom.unbind(rootDocument, 'mouseup', endGhostResize); + } + dom.remove(selectedElmGhost); + dom.remove(resizeHelper); + showResizeRect(selectedElm); + editor.fire('ObjectResized', { + target: selectedElm, + width: width, + height: height + }); + dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style')); + editor.nodeChanged(); + }; + var showResizeRect = function (targetElm) { + var position, targetWidth, targetHeight, e, rect; + hideResizeRect(); + unbindResizeHandleEvents(); + position = dom.getPos(targetElm, rootElement); + selectedElmX = position.x; + selectedElmY = position.y; + rect = targetElm.getBoundingClientRect(); + targetWidth = rect.width || rect.right - rect.left; + targetHeight = rect.height || rect.bottom - rect.top; + if (selectedElm !== targetElm) { + selectedElm = targetElm; + width = height = 0; + } + e = editor.fire('ObjectSelected', { target: targetElm }); + if (isResizable(targetElm) && !e.isDefaultPrevented()) { + each(resizeHandles, function (handle, name) { + var handleElm; + var startDrag = function (e) { + startX = e.screenX; + startY = e.screenY; + startW = getResizeTarget(selectedElm).clientWidth; + startH = getResizeTarget(selectedElm).clientHeight; + ratio = startH / startW; + selectedHandle = handle; + handle.startPos = { + x: targetWidth * handle[0] + selectedElmX, + y: targetHeight * handle[1] + selectedElmY + }; + startScrollWidth = rootElement.scrollWidth; + startScrollHeight = rootElement.scrollHeight; + selectedElmGhost = selectedElm.cloneNode(true); + dom.addClass(selectedElmGhost, 'mce-clonedresizable'); + dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all'); + selectedElmGhost.contentEditable = false; + selectedElmGhost.unSelectabe = true; + dom.setStyles(selectedElmGhost, { + left: selectedElmX, + top: selectedElmY, + margin: 0 + }); + selectedElmGhost.removeAttribute('data-mce-selected'); + rootElement.appendChild(selectedElmGhost); + dom.bind(editableDoc, 'mousemove', resizeGhostElement); + dom.bind(editableDoc, 'mouseup', endGhostResize); + if (rootDocument !== editableDoc) { + dom.bind(rootDocument, 'mousemove', resizeGhostElement); + dom.bind(rootDocument, 'mouseup', endGhostResize); + } + resizeHelper = dom.add(rootElement, 'div', { + 'class': 'mce-resize-helper', + 'data-mce-bogus': 'all' + }, startW + ' × ' + startH); + }; + handleElm = dom.get('mceResizeHandle' + name); + if (handleElm) { + dom.remove(handleElm); + } + handleElm = dom.add(rootElement, 'div', { + 'id': 'mceResizeHandle' + name, + 'data-mce-bogus': 'all', + 'class': 'mce-resizehandle', + 'unselectable': true, + 'style': 'cursor:' + name + '-resize; margin:0; padding:0' + }); + if ($_9bd8pn9je5o2pp2.ie) { + handleElm.contentEditable = false; + } + dom.bind(handleElm, 'mousedown', function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + startDrag(e); + }); + handle.elm = handleElm; + dom.setStyles(handleElm, { + left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2, + top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2 + }); + }); + } else { + hideResizeRect(); + } + selectedElm.setAttribute('data-mce-selected', '1'); + }; + var hideResizeRect = function () { + var name, handleElm; + unbindResizeHandleEvents(); + if (selectedElm) { + selectedElm.removeAttribute('data-mce-selected'); + } + for (name in resizeHandles) { + handleElm = dom.get('mceResizeHandle' + name); + if (handleElm) { + dom.unbind(handleElm); + dom.remove(handleElm); + } + } + }; + var updateResizeRect = function (e) { + var startElm, controlElm; + var isChildOrEqual = function (node, parent) { + if (node) { + do { + if (node === parent) { + return true; + } + } while (node = node.parentNode); + } + }; + if (resizeStarted || editor.removed) { + return; + } + each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) { + img.removeAttribute('data-mce-selected'); + }); + controlElm = e.type === 'mousedown' ? e.target : selection.getNode(); + controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0]; + if (isChildOrEqual(controlElm, rootElement)) { + disableGeckoResize(); + startElm = selection.getStart(true); + if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) { + showResizeRect(controlElm); + return; + } + } + hideResizeRect(); + }; + var isWithinContentEditableFalse = function (elm) { + return isContentEditableFalse$10(getContentEditableRoot$1(editor.getBody(), elm)); + }; + var unbindResizeHandleEvents = function () { + for (var name_1 in resizeHandles) { + var handle = resizeHandles[name_1]; + if (handle.elm) { + dom.unbind(handle.elm); + delete handle.elm; + } + } + }; + var disableGeckoResize = function () { + try { + editor.getDoc().execCommand('enableObjectResizing', false, false); + } catch (ex) { + } + }; + editor.on('init', function () { + disableGeckoResize(); + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie >= 11) { + editor.on('mousedown click', function (e) { + var target = e.target, nodeName = target.nodeName; + if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) { + if (e.button !== 2) { + editor.selection.select(target, nodeName === 'TABLE'); + } + if (e.type === 'mousedown') { + editor.nodeChanged(); + } + } + }); + editor.dom.bind(rootElement, 'mscontrolselect', function (e) { + var delayedSelect = function (node) { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + editor.selection.select(node); + }); + }; + if (isWithinContentEditableFalse(e.target)) { + e.preventDefault(); + delayedSelect(e.target); + return; + } + if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) { + e.preventDefault(); + if (e.target.tagName === 'IMG') { + delayedSelect(e.target); + } + } + }); + } + var throttledUpdateResizeRect = $_db41wogje5o2ps3.throttle(function (e) { + if (!editor.composing) { + updateResizeRect(e); + } + }); + editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect); + editor.on('keyup compositionend', function (e) { + if (selectedElm && selectedElm.nodeName === 'TABLE') { + throttledUpdateResizeRect(e); + } + }); + editor.on('hide blur', hideResizeRect); + editor.on('contextmenu', contextMenuSelectImage); + }); + editor.on('remove', unbindResizeHandleEvents); + var destroy = function () { + selectedElm = selectedElmGhost = null; + }; + return { + isResizable: isResizable, + showResizeRect: showResizeRect, + hideResizeRect: hideResizeRect, + updateResizeRect: updateResizeRect, + destroy: destroy + }; + }; + + var getPos$1 = function (elm) { + var x = 0, y = 0; + var offsetParent = elm; + while (offsetParent && offsetParent.nodeType) { + x += offsetParent.offsetLeft || 0; + y += offsetParent.offsetTop || 0; + offsetParent = offsetParent.offsetParent; + } + return { + x: x, + y: y + }; + }; + var fireScrollIntoViewEvent = function (editor, elm, alignToTop) { + var scrollEvent = { + elm: elm, + alignToTop: alignToTop + }; + editor.fire('scrollIntoView', scrollEvent); + return scrollEvent.isDefaultPrevented(); + }; + var scrollIntoView = function (editor, elm, alignToTop) { + var y, viewPort; + var dom = editor.dom; + var root = dom.getRoot(); + var viewPortY, viewPortH, offsetY = 0; + if (fireScrollIntoViewEvent(editor, elm, alignToTop)) { + return; + } + if (!$_9owqcy1qje5o2q0e.isElement(elm)) { + return; + } + if (alignToTop === false) { + offsetY = elm.offsetHeight; + } + if (root.nodeName !== 'BODY') { + var scrollContainer = editor.selection.getScrollContainer(); + if (scrollContainer) { + y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY; + viewPortH = scrollContainer.clientHeight; + viewPortY = scrollContainer.scrollTop; + if (y < viewPortY || y + 25 > viewPortY + viewPortH) { + scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25; + } + return; + } + } + viewPort = dom.getViewPort(editor.getWin()); + y = dom.getPos(elm).y + offsetY; + viewPortY = viewPort.y; + viewPortH = viewPort.h; + if (y < viewPort.y || y + 25 > viewPortY + viewPortH) { + editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25); + } + }; + var $_82tr6v67je5o2qyr = { scrollIntoView: scrollIntoView }; + + var hasCeProperty = function (node) { + return $_9owqcy1qje5o2q0e.isContentEditableTrue(node) || $_9owqcy1qje5o2q0e.isContentEditableFalse(node); + }; + var findParent$1 = function (node, rootNode, predicate) { + while (node && node !== rootNode) { + if (predicate(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var findClosestIeRange = function (clientX, clientY, doc) { + var element, rng, rects; + element = doc.elementFromPoint(clientX, clientY); + rng = doc.body.createTextRange(); + if (!element || element.tagName === 'HTML') { + element = doc.body; + } + rng.moveToElementText(element); + rects = $_a5gegtjje5o2pum.toArray(rng.getClientRects()); + rects = rects.sort(function (a, b) { + a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY)); + b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY)); + return a - b; + }); + if (rects.length > 0) { + clientY = (rects[0].bottom + rects[0].top) / 2; + try { + rng.moveToPoint(clientX, clientY); + rng.collapse(true); + return rng; + } catch (ex) { + } + } + return null; + }; + var moveOutOfContentEditableFalse = function (rng, rootNode) { + var parentElement = rng && rng.parentElement ? rng.parentElement() : null; + return $_9owqcy1qje5o2q0e.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng; + }; + var fromPoint$1 = function (clientX, clientY, doc) { + var rng, point; + var pointDoc = doc; + if (pointDoc.caretPositionFromPoint) { + point = pointDoc.caretPositionFromPoint(clientX, clientY); + if (point) { + rng = doc.createRange(); + rng.setStart(point.offsetNode, point.offset); + rng.collapse(true); + } + } else if (doc.caretRangeFromPoint) { + rng = doc.caretRangeFromPoint(clientX, clientY); + } else if (pointDoc.body.createTextRange) { + rng = pointDoc.body.createTextRange(); + try { + rng.moveToPoint(clientX, clientY); + rng.collapse(true); + } catch (ex) { + rng = findClosestIeRange(clientX, clientY, doc); + } + return moveOutOfContentEditableFalse(rng, doc.body); + } + return rng; + }; + var $_drs2u868je5o2qyu = { fromPoint: fromPoint$1 }; + + var processRanges = function (editor, ranges) { + return $_bwcteb4je5o2pl4.map(ranges, function (range) { + var evt = editor.fire('GetSelectionRange', { range: range }); + return evt.range !== range ? evt.range : range; + }); + }; + var $_fe3rbo69je5o2qzb = { processRanges: processRanges }; + + var clone$2 = function (original, deep) { + return $_5tcb2dyje5o2pwu.fromDom(original.dom().cloneNode(deep)); + }; + var shallow$1 = function (original) { + return clone$2(original, false); + }; + var deep$1 = function (original) { + return clone$2(original, true); + }; + var shallowAs = function (original, tag) { + var nu = $_5tcb2dyje5o2pwu.fromTag(tag); + var attributes = $_3uo9pl14je5o2pxq.clone(original); + $_3uo9pl14je5o2pxq.setAll(nu, attributes); + return nu; + }; + var copy$1 = function (original, tag) { + var nu = shallowAs(original, tag); + var cloneChildren = $_a6mttx17je5o2pyd.children(deep$1(original)); + $_93ro7k2qje5o2qa4.append(nu, cloneChildren); + return nu; + }; + var mutate = function (original, tag) { + var nu = shallowAs(original, tag); + $_elbl2s2oje5o2q9z.before(original, nu); + var children = $_a6mttx17je5o2pyd.children(original); + $_93ro7k2qje5o2qa4.append(nu, children); + $_cr1seh2pje5o2qa1.remove(original); + return nu; + }; + var $_cpi15k6cje5o2qzr = { + shallow: shallow$1, + shallowAs: shallowAs, + deep: deep$1, + copy: copy$1, + mutate: mutate + }; + + var fromElements = function (elements, scope) { + var doc = scope || document; + var fragment = doc.createDocumentFragment(); + $_bwcteb4je5o2pl4.each(elements, function (element) { + fragment.appendChild(element.dom()); + }); + return $_5tcb2dyje5o2pwu.fromDom(fragment); + }; + var $_g8hjki6dje5o2qzt = { fromElements: fromElements }; + + var getStartNode = function (rng) { + var sc = rng.startContainer, so = rng.startOffset; + if ($_9owqcy1qje5o2q0e.isText(sc)) { + return so === 0 ? Option.some($_5tcb2dyje5o2pwu.fromDom(sc)) : Option.none(); + } else { + return Option.from(sc.childNodes[so]).map($_5tcb2dyje5o2pwu.fromDom); + } + }; + var getEndNode = function (rng) { + var ec = rng.endContainer, eo = rng.endOffset; + if ($_9owqcy1qje5o2q0e.isText(ec)) { + return eo === ec.data.length ? Option.some($_5tcb2dyje5o2pwu.fromDom(ec)) : Option.none(); + } else { + return Option.from(ec.childNodes[eo - 1]).map($_5tcb2dyje5o2pwu.fromDom); + } + }; + var getFirstChildren = function (node) { + return $_a6mttx17je5o2pyd.firstChild(node).fold($_enfhkv6je5o2ply.constant([node]), function (child) { + return [node].concat(getFirstChildren(child)); + }); + }; + var getLastChildren$1 = function (node) { + return $_a6mttx17je5o2pyd.lastChild(node).fold($_enfhkv6je5o2ply.constant([node]), function (child) { + if ($_95wn8qzje5o2px0.name(child) === 'br') { + return $_a6mttx17je5o2pyd.prevSibling(child).map(function (sibling) { + return [node].concat(getLastChildren$1(sibling)); + }).getOr([]); + } else { + return [node].concat(getLastChildren$1(child)); + } + }); + }; + var hasAllContentsSelected = function (elm, rng) { + return $_c8weyc2eje5o2q85.liftN([ + getStartNode(rng), + getEndNode(rng) + ], function (startNode, endNode) { + var start = $_bwcteb4je5o2pl4.find(getFirstChildren(elm), $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, startNode)); + var end = $_bwcteb4je5o2pl4.find(getLastChildren$1(elm), $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, endNode)); + return start.isSome() && end.isSome(); + }).getOr(false); + }; + var moveEndPoint$1 = function (dom, rng, node, start) { + var root = node, walker = new TreeWalker(node, root); + var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + do { + if (node.nodeType === 3 && $_a5gegtjje5o2pum.trim(node.nodeValue).length !== 0) { + if (start) { + rng.setStart(node, 0); + } else { + rng.setEnd(node, node.nodeValue.length); + } + return; + } + if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) { + if (start) { + rng.setStartBefore(node); + } else { + if (node.nodeName === 'BR') { + rng.setEndBefore(node); + } else { + rng.setEndAfter(node); + } + } + return; + } + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) { + if (start) { + rng.setStart(node, 0); + } else { + rng.setEnd(node, 0); + } + return; + } + } while (node = start ? walker.next() : walker.prev()); + if (root.nodeName === 'BODY') { + if (start) { + rng.setStart(root, 0); + } else { + rng.setEnd(root, root.childNodes.length); + } + } + }; + + var tableModel = $_86drv18je5o2pyn.immutable('element', 'width', 'rows'); + var tableRow = $_86drv18je5o2pyn.immutable('element', 'cells'); + var cellPosition = $_86drv18je5o2pyn.immutable('x', 'y'); + var getSpan = function (td, key) { + var value = parseInt($_3uo9pl14je5o2pxq.get(td, key), 10); + return isNaN(value) ? 1 : value; + }; + var fillout = function (table, x, y, tr, td) { + var rowspan = getSpan(td, 'rowspan'); + var colspan = getSpan(td, 'colspan'); + var rows = table.rows(); + for (var y2 = y; y2 < y + rowspan; y2++) { + if (!rows[y2]) { + rows[y2] = tableRow($_cpi15k6cje5o2qzr.deep(tr), []); + } + for (var x2 = x; x2 < x + colspan; x2++) { + var cells = rows[y2].cells(); + cells[x2] = y2 === y && x2 === x ? td : $_cpi15k6cje5o2qzr.shallow(td); + } + } + }; + var cellExists = function (table, x, y) { + var rows = table.rows(); + var cells = rows[y] ? rows[y].cells() : []; + return !!cells[x]; + }; + var skipCellsX = function (table, x, y) { + while (cellExists(table, x, y)) { + x++; + } + return x; + }; + var getWidth = function (rows) { + return $_bwcteb4je5o2pl4.foldl(rows, function (acc, row) { + return row.cells().length > acc ? row.cells().length : acc; + }, 0); + }; + var findElementPos = function (table, element) { + var rows = table.rows(); + for (var y = 0; y < rows.length; y++) { + var cells = rows[y].cells(); + for (var x = 0; x < cells.length; x++) { + if ($_7oppmo1dje5o2pz1.eq(cells[x], element)) { + return Option.some(cellPosition(x, y)); + } + } + } + return Option.none(); + }; + var extractRows = function (table, sx, sy, ex, ey) { + var newRows = []; + var rows = table.rows(); + for (var y = sy; y <= ey; y++) { + var cells = rows[y].cells(); + var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1); + newRows.push(tableRow(rows[y].element(), slice)); + } + return newRows; + }; + var subTable = function (table, startPos, endPos) { + var sx = startPos.x(), sy = startPos.y(); + var ex = endPos.x(), ey = endPos.y(); + var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy); + return tableModel(table.element(), getWidth(newRows), newRows); + }; + var createDomTable = function (table, rows) { + var tableElement = $_cpi15k6cje5o2qzr.shallow(table.element()); + var tableBody = $_5tcb2dyje5o2pwu.fromTag('tbody'); + $_93ro7k2qje5o2qa4.append(tableBody, rows); + $_elbl2s2oje5o2q9z.append(tableElement, tableBody); + return tableElement; + }; + var modelRowsToDomRows = function (table) { + return $_bwcteb4je5o2pl4.map(table.rows(), function (row) { + var cells = $_bwcteb4je5o2pl4.map(row.cells(), function (cell) { + var td = $_cpi15k6cje5o2qzr.deep(cell); + $_3uo9pl14je5o2pxq.remove(td, 'colspan'); + $_3uo9pl14je5o2pxq.remove(td, 'rowspan'); + return td; + }); + var tr = $_cpi15k6cje5o2qzr.shallow(row.element()); + $_93ro7k2qje5o2qa4.append(tr, cells); + return tr; + }); + }; + var fromDom$1 = function (tableElm) { + var table = tableModel($_cpi15k6cje5o2qzr.shallow(tableElm), 0, []); + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(tableElm, 'tr'), function (tr, y) { + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(tr, 'td,th'), function (td, x) { + fillout(table, skipCellsX(table, x, y), y, tr, td); + }); + }); + return tableModel(table.element(), getWidth(table.rows()), table.rows()); + }; + var toDom = function (table) { + return createDomTable(table, modelRowsToDomRows(table)); + }; + var subsection = function (table, startElement, endElement) { + return findElementPos(table, startElement).bind(function (startPos) { + return findElementPos(table, endElement).map(function (endPos) { + return subTable(table, startPos, endPos); + }); + }); + }; + var $_drw27r6fje5o2r07 = { + fromDom: fromDom$1, + toDom: toDom, + subsection: subsection + }; + + var findParentListContainer = function (parents) { + return $_bwcteb4je5o2pl4.find(parents, function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'ul' || $_95wn8qzje5o2px0.name(elm) === 'ol'; + }); + }; + var getFullySelectedListWrappers = function (parents, rng) { + return $_bwcteb4je5o2pl4.find(parents, function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'li' && hasAllContentsSelected(elm, rng); + }).fold($_enfhkv6je5o2ply.constant([]), function (li) { + return findParentListContainer(parents).map(function (listCont) { + return [ + $_5tcb2dyje5o2pwu.fromTag('li'), + $_5tcb2dyje5o2pwu.fromTag($_95wn8qzje5o2px0.name(listCont)) + ]; + }).getOr([]); + }); + }; + var wrap$3 = function (innerElm, elms) { + var wrapped = $_bwcteb4je5o2pl4.foldl(elms, function (acc, elm) { + $_elbl2s2oje5o2q9z.append(elm, acc); + return elm; + }, innerElm); + return elms.length > 0 ? $_g8hjki6dje5o2qzt.fromElements([wrapped]) : wrapped; + }; + var directListWrappers = function (commonAnchorContainer) { + if (isListItem(commonAnchorContainer)) { + return $_a6mttx17je5o2pyd.parent(commonAnchorContainer).filter(isList).fold($_enfhkv6je5o2ply.constant([]), function (listElm) { + return [ + commonAnchorContainer, + listElm + ]; + }); + } else { + return isList(commonAnchorContainer) ? [commonAnchorContainer] : []; + } + }; + var getWrapElements = function (rootNode, rng) { + var commonAnchorContainer = $_5tcb2dyje5o2pwu.fromDom(rng.commonAncestorContainer); + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(commonAnchorContainer, rootNode); + var wrapElements = $_bwcteb4je5o2pl4.filter(parents, function (elm) { + return isInline(elm) || isHeading(elm); + }); + var listWrappers = getFullySelectedListWrappers(parents, rng); + var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer)); + return $_bwcteb4je5o2pl4.map(allWrappers, $_cpi15k6cje5o2qzr.shallow); + }; + var emptyFragment = function () { + return $_g8hjki6dje5o2qzt.fromElements([]); + }; + var getFragmentFromRange = function (rootNode, rng) { + return wrap$3($_5tcb2dyje5o2pwu.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng)); + }; + var getParentTable = function (rootElm, cell) { + return $_9fzewc37je5o2qck.ancestor(cell, 'table', $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, rootElm)); + }; + var getTableFragment = function (rootNode, selectedTableCells) { + return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) { + var firstCell = selectedTableCells[0]; + var lastCell = selectedTableCells[selectedTableCells.length - 1]; + var fullTableModel = $_drw27r6fje5o2r07.fromDom(tableElm); + return $_drw27r6fje5o2r07.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) { + return $_g8hjki6dje5o2qzt.fromElements([$_drw27r6fje5o2r07.toDom(sectionedTableModel)]); + }); + }).getOrThunk(emptyFragment); + }; + var getSelectionFragment = function (rootNode, ranges) { + return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]); + }; + var read$3 = function (rootNode, ranges) { + var selectedCells = $_9il6og3uje5o2qhd.getCellsFromElementOrRanges(ranges, rootNode); + return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges); + }; + var $_51h1rc6bje5o2qzh = { read: read$3 }; + + var getContent = function (editor, args) { + var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body'); + var sel = editor.selection.getSel(); + var fragment; + var ranges = $_fe3rbo69je5o2qzb.processRanges(editor, $_b8hi2e3vje5o2qhh.getRanges(sel)); + args = args || {}; + args.get = true; + args.format = args.format || 'html'; + args.selection = true; + args = editor.fire('BeforeGetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('GetContent', args); + return args.content; + } + if (args.format === 'text') { + return editor.selection.isCollapsed() ? '' : $_4md31c21je5o2q5f.trim(rng.text || (sel.toString ? sel.toString() : '')); + } + if (rng.cloneContents) { + fragment = args.contextual ? $_51h1rc6bje5o2qzh.read($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents(); + if (fragment) { + tmpElm.appendChild(fragment); + } + } else if (rng.item !== undefined || rng.htmlText !== undefined) { + tmpElm.innerHTML = '<br>' + (rng.item ? rng.item(0).outerHTML : rng.htmlText); + tmpElm.removeChild(tmpElm.firstChild); + } else { + tmpElm.innerHTML = rng.toString(); + } + args.getInner = true; + var content = editor.selection.serializer.serialize(tmpElm, args); + if (args.format === 'tree') { + return content; + } + args.content = editor.selection.isCollapsed() ? '' : content; + editor.fire('GetContent', args); + return args.content; + }; + var $_b349jo6aje5o2qzd = { getContent: getContent }; + + var setContent = function (editor, content, args) { + var rng = editor.selection.getRng(), caretNode; + var doc = editor.getDoc(); + var frag, temp; + args = args || { format: 'html' }; + args.set = true; + args.selection = true; + args.content = content; + if (!args.no_events) { + args = editor.fire('BeforeSetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('SetContent', args); + return; + } + } + content = args.content; + if (rng.insertNode) { + content += '<span id="__caret">_</span>'; + if (rng.startContainer === doc && rng.endContainer === doc) { + doc.body.innerHTML = content; + } else { + rng.deleteContents(); + if (doc.body.childNodes.length === 0) { + doc.body.innerHTML = content; + } else { + if (rng.createContextualFragment) { + rng.insertNode(rng.createContextualFragment(content)); + } else { + frag = doc.createDocumentFragment(); + temp = doc.createElement('div'); + frag.appendChild(temp); + temp.outerHTML = content; + rng.insertNode(frag); + } + } + } + caretNode = editor.dom.get('__caret'); + rng = doc.createRange(); + rng.setStartBefore(caretNode); + rng.setEndBefore(caretNode); + editor.selection.setRng(rng); + editor.dom.remove('__caret'); + try { + editor.selection.setRng(rng); + } catch (ex) { + } + } else { + if (rng.item) { + doc.execCommand('Delete', false, null); + rng = editor.getRng(); + } + if (/^\s+/.test(content)) { + rng.pasteHTML('<span id="__mce_tmp">_</span>' + content); + editor.dom.remove('__mce_tmp'); + } else { + rng.pasteHTML(content); + } + } + if (!args.no_events) { + editor.fire('SetContent', args); + } + }; + var $_e4xow86gje5o2r0i = { setContent: setContent }; + + var getEndpointElement = function (root, rng, start, real, resolve) { + var container = start ? rng.startContainer : rng.endContainer; + var offset = start ? rng.startOffset : rng.endOffset; + return Option.from(container).map($_5tcb2dyje5o2pwu.fromDom).map(function (elm) { + return !real || !rng.collapsed ? $_a6mttx17je5o2pyd.child(elm, resolve(elm, offset)).getOr(elm) : elm; + }).bind(function (elm) { + return $_95wn8qzje5o2px0.isElement(elm) ? Option.some(elm) : $_a6mttx17je5o2pyd.parent(elm); + }).map(function (elm) { + return elm.dom(); + }).getOr(root); + }; + var getStart$2 = function (root, rng, real) { + return getEndpointElement(root, rng, true, real, function (elm, offset) { + return Math.min($_a6mttx17je5o2pyd.childNodesCount(elm), offset); + }); + }; + var getEnd = function (root, rng, real) { + return getEndpointElement(root, rng, false, real, function (elm, offset) { + return offset > 0 ? offset - 1 : offset; + }); + }; + var skipEmptyTextNodes = function (node, forwards) { + var orig = node; + while (node && $_9owqcy1qje5o2q0e.isText(node) && node.length === 0) { + node = forwards ? node.nextSibling : node.previousSibling; + } + return node || orig; + }; + var getNode$1 = function (root, rng) { + var elm, startContainer, endContainer, startOffset, endOffset; + if (!rng) { + return root; + } + startContainer = rng.startContainer; + endContainer = rng.endContainer; + startOffset = rng.startOffset; + endOffset = rng.endOffset; + elm = rng.commonAncestorContainer; + if (!rng.collapsed) { + if (startContainer === endContainer) { + if (endOffset - startOffset < 2) { + if (startContainer.hasChildNodes()) { + elm = startContainer.childNodes[startOffset]; + } + } + } + if (startContainer.nodeType === 3 && endContainer.nodeType === 3) { + if (startContainer.length === startOffset) { + startContainer = skipEmptyTextNodes(startContainer.nextSibling, true); + } else { + startContainer = startContainer.parentNode; + } + if (endOffset === 0) { + endContainer = skipEmptyTextNodes(endContainer.previousSibling, false); + } else { + endContainer = endContainer.parentNode; + } + if (startContainer && startContainer === endContainer) { + return startContainer; + } + } + } + if (elm && elm.nodeType === 3) { + return elm.parentNode; + } + return elm; + }; + var getSelectedBlocks = function (dom, rng, startElm, endElm) { + var node, root; + var selectedBlocks = []; + root = dom.getRoot(); + startElm = dom.getParent(startElm || getStart$2(root, rng, false), dom.isBlock); + endElm = dom.getParent(endElm || getEnd(root, rng, false), dom.isBlock); + if (startElm && startElm !== root) { + selectedBlocks.push(startElm); + } + if (startElm && endElm && startElm !== endElm) { + node = startElm; + var walker = new TreeWalker(startElm, root); + while ((node = walker.next()) && node !== endElm) { + if (dom.isBlock(node)) { + selectedBlocks.push(node); + } + } + } + if (endElm && startElm !== endElm && endElm !== root) { + selectedBlocks.push(endElm); + } + return selectedBlocks; + }; + var select$1 = function (dom, node, content) { + return Option.from(node).map(function (node) { + var idx = dom.nodeIndex(node); + var rng = dom.createRng(); + rng.setStart(node.parentNode, idx); + rng.setEnd(node.parentNode, idx + 1); + if (content) { + moveEndPoint$1(dom, rng, node, true); + moveEndPoint$1(dom, rng, node, false); + } + return rng; + }); + }; + + var each$20 = $_a5gegtjje5o2pum.each; + var isNativeIeSelection = function (rng) { + return !!rng.select; + }; + var isAttachedToDom = function (node) { + return !!(node && node.ownerDocument) && $_7oppmo1dje5o2pz1.contains($_5tcb2dyje5o2pwu.fromDom(node.ownerDocument), $_5tcb2dyje5o2pwu.fromDom(node)); + }; + var isValidRange = function (rng) { + if (!rng) { + return false; + } else if (isNativeIeSelection(rng)) { + return true; + } else { + return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer); + } + }; + var Selection$1 = function (dom, win, serializer, editor) { + var bookmarkManager, controlSelection; + var selectedRange, explicitRange, selectorChangedData; + var setCursorLocation = function (node, offset) { + var rng = dom.createRng(); + if (!node) { + moveEndPoint$1(dom, rng, editor.getBody(), true); + setRng(rng); + } else { + rng.setStart(node, offset); + rng.setEnd(node, offset); + setRng(rng); + collapse(false); + } + }; + var getContent = function (args) { + return $_b349jo6aje5o2qzd.getContent(editor, args); + }; + var setContent = function (content, args) { + return $_e4xow86gje5o2r0i.setContent(editor, content, args); + }; + var getStart = function (real) { + return getStart$2(editor.getBody(), getRng(), real); + }; + var getEnd$$1 = function (real) { + return getEnd(editor.getBody(), getRng(), real); + }; + var getBookmark = function (type, normalized) { + return bookmarkManager.getBookmark(type, normalized); + }; + var moveToBookmark = function (bookmark) { + return bookmarkManager.moveToBookmark(bookmark); + }; + var select = function (node, content) { + select$1(dom, node, content).each(setRng); + return node; + }; + var isCollapsed = function () { + var rng = getRng(), sel = getSel(); + if (!rng || rng.item) { + return false; + } + if (rng.compareEndPoints) { + return rng.compareEndPoints('StartToEnd', rng) === 0; + } + return !sel || rng.collapsed; + }; + var collapse = function (toStart) { + var rng = getRng(); + rng.collapse(!!toStart); + setRng(rng); + }; + var getSel = function () { + return win.getSelection ? win.getSelection() : win.document.selection; + }; + var getRng = function () { + var selection, rng, elm, doc; + var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) { + try { + return sourceRange.compareBoundaryPoints(how, destinationRange); + } catch (ex) { + return -1; + } + }; + if (!win) { + return null; + } + doc = win.document; + if (typeof doc === 'undefined' || doc === null) { + return null; + } + if (editor.bookmark !== undefined && $_llx5i48je5o2qna.hasFocus(editor) === false) { + var bookmark = $_fnd7h33zje5o2qly.getRng(editor); + if (bookmark.isSome()) { + return bookmark.map(function (r) { + return $_fe3rbo69je5o2qzb.processRanges(editor, [r])[0]; + }).getOr(doc.createRange()); + } + } + try { + if (selection = getSel()) { + if (selection.rangeCount > 0) { + rng = selection.getRangeAt(0); + } else { + rng = selection.createRange ? selection.createRange() : doc.createRange(); + } + } + } catch (ex) { + } + rng = $_fe3rbo69je5o2qzb.processRanges(editor, [rng])[0]; + if (!rng) { + rng = doc.createRange ? doc.createRange() : doc.body.createTextRange(); + } + if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) { + elm = dom.getRoot(); + rng.setStart(elm, 0); + rng.setEnd(elm, 0); + } + if (selectedRange && explicitRange) { + if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) { + rng = explicitRange; + } else { + selectedRange = null; + explicitRange = null; + } + } + return rng; + }; + var setRng = function (rng, forward) { + var sel, node, evt; + if (!isValidRange(rng)) { + return; + } + var ieRange = isNativeIeSelection(rng) ? rng : null; + if (ieRange) { + explicitRange = null; + try { + ieRange.select(); + } catch (ex) { + } + return; + } + sel = getSel(); + evt = editor.fire('SetSelectionRange', { + range: rng, + forward: forward + }); + rng = evt.range; + if (sel) { + explicitRange = rng; + try { + sel.removeAllRanges(); + sel.addRange(rng); + } catch (ex) { + } + if (forward === false && sel.extend) { + sel.collapse(rng.endContainer, rng.endOffset); + sel.extend(rng.startContainer, rng.startOffset); + } + selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null; + } + if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !$_9bd8pn9je5o2pp2.ie) { + if (rng.endOffset - rng.startOffset < 2) { + if (rng.startContainer.hasChildNodes()) { + node = rng.startContainer.childNodes[rng.startOffset]; + if (node && node.tagName === 'IMG') { + sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset); + if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) { + sel.setBaseAndExtent(node, 0, node, 1); + } + } + } + } + } + editor.fire('AfterSetSelectionRange', { + range: rng, + forward: forward + }); + }; + var setNode = function (elm) { + setContent(dom.getOuterHTML(elm)); + return elm; + }; + var getNode = function () { + return getNode$1(editor.getBody(), getRng()); + }; + var getSelectedBlocks$$1 = function (startElm, endElm) { + return getSelectedBlocks(dom, getRng(), startElm, endElm); + }; + var isForward = function () { + var sel = getSel(); + var anchorRange, focusRange; + if (!sel || !sel.anchorNode || !sel.focusNode) { + return true; + } + anchorRange = dom.createRng(); + anchorRange.setStart(sel.anchorNode, sel.anchorOffset); + anchorRange.collapse(true); + focusRange = dom.createRng(); + focusRange.setStart(sel.focusNode, sel.focusOffset); + focusRange.collapse(true); + return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0; + }; + var normalize = function () { + var rng = getRng(); + if (!$_b8hi2e3vje5o2qhh.hasMultipleRanges(getSel())) { + var normRng = $_1t8l6x3xje5o2qlk.normalize(dom, rng); + normRng.each(function (normRng) { + setRng(normRng, isForward()); + }); + return normRng.getOr(rng); + } + return rng; + }; + var selectorChanged = function (selector, callback) { + var currentSelectors; + if (!selectorChangedData) { + selectorChangedData = {}; + currentSelectors = {}; + editor.on('NodeChange', function (e) { + var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {}; + each$20(selectorChangedData, function (callbacks, selector) { + each$20(parents, function (node) { + if (dom.is(node, selector)) { + if (!currentSelectors[selector]) { + each$20(callbacks, function (callback) { + callback(true, { + node: node, + selector: selector, + parents: parents + }); + }); + currentSelectors[selector] = callbacks; + } + matchedSelectors[selector] = callbacks; + return false; + } + }); + }); + each$20(currentSelectors, function (callbacks, selector) { + if (!matchedSelectors[selector]) { + delete currentSelectors[selector]; + each$20(callbacks, function (callback) { + callback(false, { + node: node, + selector: selector, + parents: parents + }); + }); + } + }); + }); + } + if (!selectorChangedData[selector]) { + selectorChangedData[selector] = []; + } + selectorChangedData[selector].push(callback); + return exports; + }; + var getScrollContainer = function () { + var scrollContainer, node = dom.getRoot(); + while (node && node.nodeName !== 'BODY') { + if (node.scrollHeight > node.clientHeight) { + scrollContainer = node; + break; + } + node = node.parentNode; + } + return scrollContainer; + }; + var scrollIntoView = function (elm, alignToTop) { + return $_82tr6v67je5o2qyr.scrollIntoView(editor, elm, alignToTop); + }; + var placeCaretAt = function (clientX, clientY) { + return setRng($_drs2u868je5o2qyu.fromPoint(clientX, clientY, editor.getDoc())); + }; + var getBoundingClientRect = function () { + var rng = getRng(); + return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect(); + }; + var destroy = function () { + win = selectedRange = explicitRange = null; + controlSelection.destroy(); + }; + var exports = { + bookmarkManager: null, + controlSelection: null, + dom: dom, + win: win, + serializer: serializer, + editor: editor, + collapse: collapse, + setCursorLocation: setCursorLocation, + getContent: getContent, + setContent: setContent, + getBookmark: getBookmark, + moveToBookmark: moveToBookmark, + select: select, + isCollapsed: isCollapsed, + isForward: isForward, + setNode: setNode, + getNode: getNode, + getSel: getSel, + setRng: setRng, + getRng: getRng, + getStart: getStart, + getEnd: getEnd$$1, + getSelectedBlocks: getSelectedBlocks$$1, + normalize: normalize, + selectorChanged: selectorChanged, + getScrollContainer: getScrollContainer, + scrollIntoView: scrollIntoView, + placeCaretAt: placeCaretAt, + getBoundingClientRect: getBoundingClientRect, + destroy: destroy + }; + bookmarkManager = BookmarkManager$1(exports); + controlSelection = ControlSelection(exports, editor); + exports.bookmarkManager = bookmarkManager; + exports.controlSelection = controlSelection; + return exports; + }; + + var isContentEditableFalse$11 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var getSelectedNode$1 = getSelectedNode; + var isAfterContentEditableFalse$2 = isAfterContentEditableFalse; + var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse; + var getVisualCaretPosition = function (walkFn, caretPosition) { + while (caretPosition = walkFn(caretPosition)) { + if (caretPosition.isVisible()) { + return caretPosition; + } + } + return caretPosition; + }; + var isMoveInsideSameBlock = function (from, to) { + var inSameBlock = isInSameBlock(from, to); + if (!inSameBlock && $_9owqcy1qje5o2q0e.isBr(from.getNode())) { + return true; + } + return inSameBlock; + }; + var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) { + var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock; + var forwards = direction === HDirection.Forwards; + var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2; + if (!range.collapsed) { + node = getSelectedNode$1(range); + if (isContentEditableFalse$11(node)) { + return showCaret(direction, editor, node, direction === HDirection.Backwards, true); + } + } + rangeIsInContainerBlock = isRangeInCaretContainerBlock(range); + caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); + if (isBeforeContentEditableFalseFn(caretPosition)) { + return selectNode(editor, caretPosition.getNode(!forwards)); + } + caretPosition = getNextPosFn(caretPosition); + if (!caretPosition) { + if (rangeIsInContainerBlock) { + return range; + } + return null; + } + if (isBeforeContentEditableFalseFn(caretPosition)) { + return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true); + } + peekCaretPosition = getNextPosFn(caretPosition); + if (isBeforeContentEditableFalseFn(peekCaretPosition)) { + if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) { + return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true); + } + } + if (rangeIsInContainerBlock) { + return renderRangeCaret(editor, caretPosition.toRange(), true); + } + return null; + }; + var moveToCeFalseVertically = function (direction, editor, walkerFn, range) { + var caretPosition, linePositions, nextLinePositions; + var closestNextLineRect, caretClientRect, clientX; + var dist1, dist2, contentEditableFalseNode; + contentEditableFalseNode = getSelectedNode$1(range); + caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); + linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition); + nextLinePositions = $_c2vc3pkje5o2puw.filter(linePositions, isLine(1)); + caretClientRect = $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) { + contentEditableFalseNode = caretPosition.getNode(); + } + if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) { + contentEditableFalseNode = caretPosition.getNode(true); + } + if (!caretClientRect) { + return null; + } + clientX = caretClientRect.left; + closestNextLineRect = findClosestClientRect(nextLinePositions, clientX); + if (closestNextLineRect) { + if (isContentEditableFalse$11(closestNextLineRect.node)) { + dist1 = Math.abs(clientX - closestNextLineRect.left); + dist2 = Math.abs(clientX - closestNextLineRect.right); + return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true); + } + } + if (contentEditableFalseNode) { + var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode); + closestNextLineRect = findClosestClientRect($_c2vc3pkje5o2puw.filter(caretPositions, isLine(1)), clientX); + if (closestNextLineRect) { + return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); + } + closestNextLineRect = $_c2vc3pkje5o2puw.last($_c2vc3pkje5o2puw.filter(caretPositions, isLine(0))); + if (closestNextLineRect) { + return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); + } + } + }; + var createTextBlock = function (editor) { + var textBlock = editor.dom.create(editor.settings.forced_root_block); + if (!$_9bd8pn9je5o2pp2.ie || $_9bd8pn9je5o2pp2.ie >= 11) { + textBlock.innerHTML = '<br data-mce-bogus="1">'; + } + return textBlock; + }; + var exitPreBlock = function (editor, direction, range) { + var pre, caretPos, newBlock; + var caretWalker = CaretWalker(editor.getBody()); + var getNextVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.next); + var getPrevVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.prev); + if (range.collapsed && editor.settings.forced_root_block) { + pre = editor.dom.getParent(range.startContainer, 'PRE'); + if (!pre) { + return; + } + if (direction === 1) { + caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); + } else { + caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); + } + if (!caretPos) { + newBlock = createTextBlock(editor); + if (direction === 1) { + editor.$(pre).after(newBlock); + } else { + editor.$(pre).before(newBlock); + } + editor.selection.select(newBlock, true); + editor.selection.collapse(); + } + } + }; + var getHorizontalRange = function (editor, forward) { + var caretWalker = CaretWalker(editor.getBody()); + var getNextVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.next); + var getPrevVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.prev); + var newRange; + var direction = forward ? HDirection.Forwards : HDirection.Backwards; + var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition; + var range = editor.selection.getRng(); + newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range); + if (newRange) { + return newRange; + } + newRange = exitPreBlock(editor, direction, range); + if (newRange) { + return newRange; + } + return null; + }; + var getVerticalRange = function (editor, down) { + var newRange; + var direction = down ? 1 : -1; + var walkerFn = down ? downUntil : upUntil; + var range = editor.selection.getRng(); + newRange = moveToCeFalseVertically(direction, editor, walkerFn, range); + if (newRange) { + return newRange; + } + newRange = exitPreBlock(editor, direction, range); + if (newRange) { + return newRange; + } + return null; + }; + var moveH$1 = function (editor, forward) { + return function () { + var newRng = getHorizontalRange(editor, forward); + if (newRng) { + editor.selection.setRng(newRng); + return true; + } else { + return false; + } + }; + }; + var moveV$1 = function (editor, down) { + return function () { + var newRng = getVerticalRange(editor, down); + if (newRng) { + editor.selection.setRng(newRng); + return true; + } else { + return false; + } + }; + }; + + var defaultPatterns = function (patterns) { + return $_bwcteb4je5o2pl4.map(patterns, function (pattern) { + return $_atjucy5uje5o2qw2.merge({ + shiftKey: false, + altKey: false, + ctrlKey: false, + metaKey: false, + keyCode: 0, + action: $_enfhkv6je5o2ply.noop + }, pattern); + }); + }; + var matchesEvent = function (pattern, evt) { + return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey; + }; + var match$1 = function (patterns, evt) { + return $_bwcteb4je5o2pl4.bind(defaultPatterns(patterns), function (pattern) { + return matchesEvent(pattern, evt) ? [pattern] : []; + }); + }; + var action = function (f) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return f.apply(null, args); + }; + }; + var execute = function (patterns, evt) { + return $_bwcteb4je5o2pl4.find(match$1(patterns, evt), function (pattern) { + return pattern.action(); + }); + }; + var $_fc81iw6lje5o2r1d = { + match: match$1, + action: action, + execute: execute + }; + + var executeKeydownOverride = function (editor, caret, evt) { + var os = $_2hq237mje5o2pvu.detect().os; + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: moveH$1(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: moveH$1(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.UP, + action: moveV$1(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DOWN, + action: moveV$1(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: moveH(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: moveH(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.UP, + action: moveV(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DOWN, + action: moveV(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: $_2dnted3pje5o2qgc.move(editor, caret, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: $_2dnted3pje5o2qgc.move(editor, caret, false) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + ctrlKey: !os.isOSX(), + altKey: os.isOSX(), + action: $_2dnted3pje5o2qgc.moveNextWord(editor, caret) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + ctrlKey: !os.isOSX(), + altKey: os.isOSX(), + action: $_2dnted3pje5o2qgc.movePrevWord(editor, caret) + } + ], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var setup$6 = function (editor, caret) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride(editor, caret, evt); + } + }); + }; + var $_a5oax76jje5o2r0t = { setup: setup$6 }; + + var getParentInlines = function (rootElm, startElm) { + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(startElm, rootElm); + return $_bwcteb4je5o2pl4.findIndex(parents, isBlock).fold($_enfhkv6je5o2ply.constant(parents), function (index) { + return parents.slice(0, index); + }); + }; + var hasOnlyOneChild$1 = function (elm) { + return $_a6mttx17je5o2pyd.children(elm).length === 1; + }; + var deleteLastPosition = function (forward, editor, target, parentInlines) { + var isFormatElement = $_enfhkv6je5o2ply.curry($_4066yu3jje5o2qev.isFormatElement, editor); + var formatNodes = $_bwcteb4je5o2pl4.map($_bwcteb4je5o2pl4.filter(parentInlines, isFormatElement), function (elm) { + return elm.dom(); + }); + if (formatNodes.length === 0) { + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, target); + } else { + var pos = $_4066yu3jje5o2qev.replaceWithCaretFormat(target.dom(), formatNodes); + editor.selection.setRng(pos.toRange()); + } + }; + var deleteCaret$1 = function (editor, forward) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var startElm = $_5tcb2dyje5o2pwu.fromDom(editor.selection.getStart()); + var parentInlines = $_bwcteb4je5o2pl4.filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1); + return $_bwcteb4je5o2pl4.last(parentInlines).map(function (target) { + var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + if ($_7twey62zje5o2qay.willDeleteLastPositionInElement(forward, fromPos, target.dom())) { + deleteLastPosition(forward, editor, target, parentInlines); + return true; + } else { + return false; + } + }).getOr(false); + }; + var backspaceDelete$5 = function (editor, forward) { + return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false; + }; + var $_f5ktyq6nje5o2r1k = { backspaceDelete: backspaceDelete$5 }; + + var executeKeydownOverride$1 = function (editor, caret, evt) { + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_bzwx3b3fje5o2qe7.backspaceDelete, editor, caret, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_bzwx3b3fje5o2qe7.backspaceDelete, editor, caret, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_a476lo3aje5o2qd0.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_a476lo3aje5o2qd0.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_3qfe0j2xje5o2qao.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_3qfe0j2xje5o2qao.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_8pfx7e3sje5o2qgp.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_8pfx7e3sje5o2qgp.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_f5ktyq6nje5o2r1k.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_f5ktyq6nje5o2r1k.backspaceDelete, editor, true) + } + ], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var executeKeyupOverride = function (editor, evt) { + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.paddEmptyElement, editor) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.paddEmptyElement, editor) + } + ], evt); + }; + var setup$7 = function (editor, caret) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride$1(editor, caret, evt); + } + }); + editor.on('keyup', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeyupOverride(editor, evt); + } + }); + }; + var $_6wiawx6mje5o2r1h = { setup: setup$7 }; + + var getBodySetting = function (editor, name, defaultValue) { + var value = editor.getParam(name, defaultValue); + if (value.indexOf('=') !== -1) { + var bodyObj = editor.getParam(name, '', 'hash'); + return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue; + } else { + return value; + } + }; + var getIframeAttrs = function (editor) { + return editor.getParam('iframe_attrs', {}); + }; + var getDocType = function (editor) { + return editor.getParam('doctype', '<!DOCTYPE html>'); + }; + var getDocumentBaseUrl = function (editor) { + return editor.getParam('document_base_url', ''); + }; + var getBodyId = function (editor) { + return getBodySetting(editor, 'body_id', 'tinymce'); + }; + var getBodyClass = function (editor) { + return getBodySetting(editor, 'body_class', ''); + }; + var getContentSecurityPolicy = function (editor) { + return editor.getParam('content_security_policy', ''); + }; + var shouldPutBrInPre = function (editor) { + return editor.getParam('br_in_pre', true); + }; + var getForcedRootBlock = function (editor) { + if (editor.getParam('force_p_newlines', false)) { + return 'p'; + } + var block = editor.getParam('forced_root_block', 'p'); + return block === false ? '' : block; + }; + var getForcedRootBlockAttrs = function (editor) { + return editor.getParam('forced_root_block_attrs', {}); + }; + var getBrNewLineSelector = function (editor) { + return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption'); + }; + var getNoNewLineSelector = function (editor) { + return editor.getParam('no_newline_selector', ''); + }; + var shouldKeepStyles = function (editor) { + return editor.getParam('keep_styles', true); + }; + var shouldEndContainerOnEmtpyBlock = function (editor) { + return editor.getParam('end_container_on_empty_block', false); + }; + var $_ahj8826rje5o2r2f = { + getIframeAttrs: getIframeAttrs, + getDocType: getDocType, + getDocumentBaseUrl: getDocumentBaseUrl, + getBodyId: getBodyId, + getBodyClass: getBodyClass, + getContentSecurityPolicy: getContentSecurityPolicy, + shouldPutBrInPre: shouldPutBrInPre, + getForcedRootBlock: getForcedRootBlock, + getForcedRootBlockAttrs: getForcedRootBlockAttrs, + getBrNewLineSelector: getBrNewLineSelector, + getNoNewLineSelector: getNoNewLineSelector, + shouldKeepStyles: shouldKeepStyles, + shouldEndContainerOnEmtpyBlock: shouldEndContainerOnEmtpyBlock + }; + + var firstNonWhiteSpaceNodeSibling = function (node) { + while (node) { + if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\r\n\s]/.test(node.data)) { + return node; + } + node = node.nextSibling; + } + }; + var moveToCaretPosition = function (editor, root) { + var walker, node, rng, lastNode = root, tempElm; + var dom = editor.dom; + var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements(); + if (!root) { + return; + } + if (/^(LI|DT|DD)$/.test(root.nodeName)) { + var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild); + if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) { + root.insertBefore(dom.doc.createTextNode('\xA0'), root.firstChild); + } + } + rng = dom.createRng(); + root.normalize(); + if (root.hasChildNodes()) { + walker = new TreeWalker(root, root); + while (node = walker.current()) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + rng.setStart(node, 0); + rng.setEnd(node, 0); + break; + } + if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) { + rng.setStartBefore(node); + rng.setEndBefore(node); + break; + } + lastNode = node; + node = walker.next(); + } + if (!node) { + rng.setStart(lastNode, 0); + rng.setEnd(lastNode, 0); + } + } else { + if ($_9owqcy1qje5o2q0e.isBr(root)) { + if (root.nextSibling && dom.isBlock(root.nextSibling)) { + rng.setStartBefore(root); + rng.setEndBefore(root); + } else { + rng.setStartAfter(root); + rng.setEndAfter(root); + } + } else { + rng.setStart(root, 0); + rng.setEnd(root, 0); + } + } + editor.selection.setRng(rng); + dom.remove(tempElm); + editor.selection.scrollIntoView(root); + }; + var getEditableRoot = function (dom, node) { + var root = dom.getRoot(); + var parent, editableRoot; + parent = node; + while (parent !== root && dom.getContentEditable(parent) !== 'false') { + if (dom.getContentEditable(parent) === 'true') { + editableRoot = parent; + } + parent = parent.parentNode; + } + return parent !== root ? editableRoot : root; + }; + var getParentBlock$2 = function (editor) { + return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock)); + }; + var getParentBlockName = function (editor) { + return getParentBlock$2(editor).fold($_enfhkv6je5o2ply.constant(''), function (parentBlock) { + return parentBlock.nodeName.toUpperCase(); + }); + }; + var isListItemParentBlock = function (editor) { + return getParentBlock$2(editor).filter(function (elm) { + return isListItem($_5tcb2dyje5o2pwu.fromDom(elm)); + }).isSome(); + }; + var $_f0yz616tje5o2r2l = { + moveToCaretPosition: moveToCaretPosition, + getEditableRoot: getEditableRoot, + getParentBlock: getParentBlock$2, + getParentBlockName: getParentBlockName, + isListItemParentBlock: isListItemParentBlock + }; + + var hasFirstChild = function (elm, name) { + return elm.firstChild && elm.firstChild.nodeName === name; + }; + var hasParent$1 = function (elm, parentName) { + return elm && elm.parentNode && elm.parentNode.nodeName === parentName; + }; + var isListBlock = function (elm) { + return elm && /^(OL|UL|LI)$/.test(elm.nodeName); + }; + var isNestedList = function (elm) { + return isListBlock(elm) && isListBlock(elm.parentNode); + }; + var getContainerBlock = function (containerBlock) { + var containerBlockParent = containerBlock.parentNode; + if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) { + return containerBlockParent; + } + return containerBlock; + }; + var isFirstOrLastLi = function (containerBlock, parentBlock, first) { + var node = containerBlock[first ? 'firstChild' : 'lastChild']; + while (node) { + if ($_9owqcy1qje5o2q0e.isElement(node)) { + break; + } + node = node[first ? 'nextSibling' : 'previousSibling']; + } + return node === parentBlock; + }; + var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) { + var dom = editor.dom; + var rng = editor.selection.getRng(); + if (containerBlock === editor.getBody()) { + return; + } + if (isNestedList(containerBlock)) { + newBlockName = 'LI'; + } + var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR'); + if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) { + if (hasParent$1(containerBlock, 'LI')) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + } else { + dom.replace(newBlock, containerBlock); + } + } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) { + if (hasParent$1(containerBlock, 'LI')) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + newBlock.appendChild(dom.doc.createTextNode(' ')); + newBlock.appendChild(containerBlock); + } else { + containerBlock.parentNode.insertBefore(newBlock, containerBlock); + } + } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + } else { + containerBlock = getContainerBlock(containerBlock); + var tmpRng = rng.cloneRange(); + tmpRng.setStartAfter(parentBlock); + tmpRng.setEndAfter(containerBlock); + var fragment = tmpRng.extractContents(); + if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) { + newBlock = fragment.firstChild; + dom.insertAfter(fragment, containerBlock); + } else { + dom.insertAfter(fragment, containerBlock); + dom.insertAfter(newBlock, containerBlock); + } + } + dom.remove(parentBlock); + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + }; + var $_52slpd6sje5o2r2i = { insert: insert$1 }; + + var isEmptyAnchor = function (elm) { + return elm && elm.nodeName === 'A' && $_a5gegtjje5o2pum.trim($_4md31c21je5o2q5f.trim(elm.innerText || elm.textContent)).length === 0; + }; + var isTableCell$5 = function (node) { + return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); + }; + var emptyBlock = function (elm) { + elm.innerHTML = '<br data-mce-bogus="1">'; + }; + var containerAndSiblingName = function (container, nodeName) { + return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName; + }; + var canSplitBlock = function (dom, node) { + return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true'; + }; + var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) { + var node = block; + var firstChilds = []; + var i; + if (!node) { + return; + } + while (node = node.firstChild) { + if (dom.isBlock(node)) { + return; + } + if ($_9owqcy1qje5o2q0e.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) { + firstChilds.push(node); + } + } + i = firstChilds.length; + while (i--) { + node = firstChilds[i]; + if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') { + dom.remove(node); + } else { + if (isEmptyAnchor(node)) { + dom.remove(node); + } + } + } + }; + var normalizeZwspOffset = function (start, container, offset) { + if ($_9owqcy1qje5o2q0e.isText(container) === false) { + return offset; + } else if (start) { + return offset === 1 && container.data.charAt(offset - 1) === $_4md31c21je5o2q5f.ZWSP ? 0 : offset; + } else { + return offset === container.data.length - 1 && container.data.charAt(offset) === $_4md31c21je5o2q5f.ZWSP ? container.data.length : offset; + } + }; + var includeZwspInRange = function (rng) { + var newRng = rng.cloneRange(); + newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset)); + newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset)); + return newRng; + }; + var trimLeadingLineBreaks = function (node) { + do { + if ($_9owqcy1qje5o2q0e.isText(node)) { + node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, ''); + } + node = node.firstChild; + } while (node); + }; + var getEditableRoot$1 = function (dom, node) { + var root = dom.getRoot(); + var parent, editableRoot; + parent = node; + while (parent !== root && dom.getContentEditable(parent) !== 'false') { + if (dom.getContentEditable(parent) === 'true') { + editableRoot = parent; + } + parent = parent.parentNode; + } + return parent !== root ? editableRoot : root; + }; + var setForcedBlockAttrs = function (editor, node) { + var forcedRootBlockName = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) { + editor.dom.setAttribs(node, $_ahj8826rje5o2r2f.getForcedRootBlockAttrs(editor)); + } + }; + var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) { + var newBlock, parentBlock, startNode, node, next, rootBlockName; + var blockName = newBlockName || 'P'; + var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container); + parentBlock = dom.getParent(container, dom.isBlock); + if (!parentBlock || !canSplitBlock(dom, parentBlock)) { + parentBlock = parentBlock || editableRoot; + if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) { + rootBlockName = parentBlock.nodeName.toLowerCase(); + } else { + rootBlockName = parentBlock.parentNode.nodeName.toLowerCase(); + } + if (!parentBlock.hasChildNodes()) { + newBlock = dom.create(blockName); + setForcedBlockAttrs(editor, newBlock); + parentBlock.appendChild(newBlock); + rng.setStart(newBlock, 0); + rng.setEnd(newBlock, 0); + return newBlock; + } + node = container; + while (node.parentNode !== parentBlock) { + node = node.parentNode; + } + while (node && !dom.isBlock(node)) { + startNode = node; + node = node.previousSibling; + } + if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) { + newBlock = dom.create(blockName); + setForcedBlockAttrs(editor, newBlock); + startNode.parentNode.insertBefore(newBlock, startNode); + node = startNode; + while (node && !dom.isBlock(node)) { + next = node.nextSibling; + newBlock.appendChild(node); + node = next; + } + rng.setStart(container, offset); + rng.setEnd(container, offset); + } + } + return container; + }; + var addBrToBlockIfNeeded = function (dom, block) { + var lastChild; + block.normalize(); + lastChild = block.lastChild; + if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) { + dom.add(block, 'br'); + } + }; + var insert$2 = function (editor, evt) { + var tmpRng, editableRoot, container, offset, parentBlock, shiftKey; + var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer; + var dom = editor.dom; + var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(); + var rng = editor.selection.getRng(); + var createNewBlock = function (name) { + var node = container, block, clonedNode, caretNode; + var textInlineElements = schema.getTextInlineElements(); + if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') { + block = dom.create(name || newBlockName); + setForcedBlockAttrs(editor, block); + } else { + block = parentBlock.cloneNode(false); + } + caretNode = block; + if ($_ahj8826rje5o2r2f.shouldKeepStyles(editor) === false) { + dom.setAttrib(block, 'style', null); + dom.setAttrib(block, 'class', null); + } else { + do { + if (textInlineElements[node.nodeName]) { + if ($_4066yu3jje5o2qev.isCaretNode(node)) { + continue; + } + clonedNode = node.cloneNode(false); + dom.setAttrib(clonedNode, 'id', ''); + if (block.hasChildNodes()) { + clonedNode.appendChild(block.firstChild); + block.appendChild(clonedNode); + } else { + caretNode = clonedNode; + block.appendChild(clonedNode); + } + } + } while ((node = node.parentNode) && node !== editableRoot); + } + emptyBlock(caretNode); + return block; + }; + var isCaretAtStartOrEndOfBlock = function (start) { + var walker, node, name, normalizedOffset; + normalizedOffset = normalizeZwspOffset(start, container, offset); + if ($_9owqcy1qje5o2q0e.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) { + return false; + } + if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) { + return true; + } + if (start && $_9owqcy1qje5o2q0e.isElement(container) && container === parentBlock.firstChild) { + return true; + } + if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) { + return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start; + } + walker = new TreeWalker(container, parentBlock); + if ($_9owqcy1qje5o2q0e.isText(container)) { + if (start && normalizedOffset === 0) { + walker.prev(); + } else if (!start && normalizedOffset === container.nodeValue.length) { + walker.next(); + } + } + while (node = walker.current()) { + if ($_9owqcy1qje5o2q0e.isElement(node)) { + if (!node.getAttribute('data-mce-bogus')) { + name = node.nodeName.toLowerCase(); + if (nonEmptyElementsMap[name] && name !== 'br') { + return false; + } + } + } else if ($_9owqcy1qje5o2q0e.isText(node) && !/^[ \t\r\n]*$/.test(node.nodeValue)) { + return false; + } + if (start) { + walker.prev(); + } else { + walker.next(); + } + } + return true; + }; + var insertNewBlockAfter = function () { + if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') { + newBlock = createNewBlock(newBlockName); + } else { + newBlock = createNewBlock(); + } + if ($_ahj8826rje5o2r2f.shouldEndContainerOnEmtpyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) { + newBlock = dom.split(containerBlock, parentBlock); + } else { + dom.insertAfter(newBlock, parentBlock); + } + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + }; + $_1t8l6x3xje5o2qlk.normalize(dom, rng).each(function (normRng) { + rng.setStart(normRng.startContainer, normRng.startOffset); + rng.setEnd(normRng.endContainer, normRng.endOffset); + }); + container = rng.startContainer; + offset = rng.startOffset; + newBlockName = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + shiftKey = evt.shiftKey; + if ($_9owqcy1qje5o2q0e.isElement(container) && container.hasChildNodes()) { + isAfterLastNodeInContainer = offset > container.childNodes.length - 1; + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + if (isAfterLastNodeInContainer && $_9owqcy1qje5o2q0e.isText(container)) { + offset = container.nodeValue.length; + } else { + offset = 0; + } + } + editableRoot = getEditableRoot$1(dom, container); + if (!editableRoot) { + return; + } + if (newBlockName && !shiftKey || !newBlockName && shiftKey) { + container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset); + } + parentBlock = dom.getParent(container, dom.isBlock); + containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; + containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; + if (containerBlockName === 'LI' && !evt.ctrlKey) { + parentBlock = containerBlock; + containerBlock = containerBlock.parentNode; + parentBlockName = containerBlockName; + } + if (/^(LI|DT|DD)$/.test(parentBlockName)) { + if (dom.isEmpty(parentBlock)) { + $_52slpd6sje5o2r2i.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName); + return; + } + } + if (newBlockName && parentBlock === editor.getBody()) { + return; + } + newBlockName = newBlockName || 'P'; + if (isCaretContainerBlock(parentBlock)) { + newBlock = showCaretContainerBlock(parentBlock); + if (dom.isEmpty(parentBlock)) { + emptyBlock(parentBlock); + } + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + } else if (isCaretAtStartOrEndOfBlock()) { + insertNewBlockAfter(); + } else if (isCaretAtStartOrEndOfBlock(true)) { + newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock); + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock); + } else { + tmpRng = includeZwspInRange(rng).cloneRange(); + tmpRng.setEndAfter(parentBlock); + fragment = tmpRng.extractContents(); + trimLeadingLineBreaks(fragment); + newBlock = fragment.firstChild; + dom.insertAfter(fragment, parentBlock); + trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock); + addBrToBlockIfNeeded(dom, parentBlock); + if (dom.isEmpty(parentBlock)) { + emptyBlock(parentBlock); + } + newBlock.normalize(); + if (dom.isEmpty(newBlock)) { + dom.remove(newBlock); + insertNewBlockAfter(); + } else { + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + } + } + dom.setAttrib(newBlock, 'id', ''); + editor.fire('NewBlock', { newBlock: newBlock }); + }; + var $_54gcs16qje5o2r1x = { insert: insert$2 }; + + var matchesSelector = function (editor, selector) { + return $_f0yz616tje5o2r2l.getParentBlock(editor).filter(function (parentBlock) { + return selector.length > 0 && $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(parentBlock), selector); + }).isSome(); + }; + var shouldInsertBr = function (editor) { + return matchesSelector(editor, $_ahj8826rje5o2r2f.getBrNewLineSelector(editor)); + }; + var shouldBlockNewLine = function (editor) { + return matchesSelector(editor, $_ahj8826rje5o2r2f.getNoNewLineSelector(editor)); + }; + var $_23pm1k6vje5o2r2w = { + shouldInsertBr: shouldInsertBr, + shouldBlockNewLine: shouldBlockNewLine + }; + + var newLineAction = $_e73lvt3dje5o2qdq.generate([ + { br: [] }, + { block: [] }, + { none: [] } + ]); + var shouldBlockNewLine$1 = function (editor, shiftKey) { + return $_23pm1k6vje5o2r2w.shouldBlockNewLine(editor); + }; + var isBrMode = function (requiredState) { + return function (editor, shiftKey) { + var brMode = $_ahj8826rje5o2r2f.getForcedRootBlock(editor) === ''; + return brMode === requiredState; + }; + }; + var inListBlock = function (requiredState) { + return function (editor, shiftKey) { + return $_f0yz616tje5o2r2l.isListItemParentBlock(editor) === requiredState; + }; + }; + var inPreBlock = function (requiredState) { + return function (editor, shiftKey) { + var inPre = $_f0yz616tje5o2r2l.getParentBlockName(editor) === 'PRE'; + return inPre === requiredState; + }; + }; + var shouldPutBrInPre$1 = function (requiredState) { + return function (editor, shiftKey) { + return $_ahj8826rje5o2r2f.shouldPutBrInPre(editor) === requiredState; + }; + }; + var inBrContext = function (editor, shiftKey) { + return $_23pm1k6vje5o2r2w.shouldInsertBr(editor); + }; + var hasShiftKey = function (editor, shiftKey) { + return shiftKey; + }; + var canInsertIntoEditableRoot = function (editor) { + var forcedRootBlock = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + var rootEditable = $_f0yz616tje5o2r2l.getEditableRoot(editor.dom, editor.selection.getStart()); + return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P'); + }; + var match$2 = function (predicates, action) { + return function (editor, shiftKey) { + var isMatch = $_bwcteb4je5o2pl4.foldl(predicates, function (res, p) { + return res && p(editor, shiftKey); + }, true); + return isMatch ? Option.some(action) : Option.none(); + }; + }; + var getAction$1 = function (editor, evt) { + return $_cq1fkk3oje5o2qg9.evaluateUntil([ + match$2([shouldBlockNewLine$1], newLineAction.none()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(false), + hasShiftKey + ], newLineAction.br()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(false) + ], newLineAction.block()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(true), + hasShiftKey + ], newLineAction.block()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(true) + ], newLineAction.br()), + match$2([ + inListBlock(true), + hasShiftKey + ], newLineAction.br()), + match$2([inListBlock(true)], newLineAction.block()), + match$2([ + isBrMode(true), + hasShiftKey, + canInsertIntoEditableRoot + ], newLineAction.block()), + match$2([isBrMode(true)], newLineAction.br()), + match$2([inBrContext], newLineAction.br()), + match$2([ + isBrMode(false), + hasShiftKey + ], newLineAction.br()), + match$2([canInsertIntoEditableRoot], newLineAction.block()) + ], [ + editor, + evt.shiftKey + ]).getOr(newLineAction.none()); + }; + var $_3fpic86uje5o2r2r = { getAction: getAction$1 }; + + var insert$3 = function (editor, evt) { + $_3fpic86uje5o2r2r.getAction(editor, evt).fold(function () { + $_1esduy3wje5o2qhl.insert(editor, evt); + }, function () { + $_54gcs16qje5o2r1x.insert(editor, evt); + }, $_enfhkv6je5o2ply.noop); + }; + var $_ccur376pje5o2r1r = { insert: insert$3 }; + + var endTypingLevel = function (undoManager) { + if (undoManager.typing) { + undoManager.typing = false; + undoManager.add(); + } + }; + var handleEnterKeyEvent = function (editor, event) { + if (event.isDefaultPrevented()) { + return; + } + event.preventDefault(); + endTypingLevel(editor.undoManager); + editor.undoManager.transact(function () { + if (editor.selection.isCollapsed() === false) { + editor.execCommand('Delete'); + } + $_ccur376pje5o2r1r.insert(editor, event); + }); + }; + var setup$8 = function (editor) { + editor.on('keydown', function (event) { + if (event.keyCode === $_99mhlk59je5o2qss.ENTER) { + handleEnterKeyEvent(editor, event); + } + }); + }; + var $_8j6q9k6oje5o2r1q = { setup: setup$8 }; + + var isValidInsertPoint = function (location, caretPosition) { + return isAtStartOrEnd(location) && $_9owqcy1qje5o2q0e.isText(caretPosition.container()); + }; + var insertNbspAtPosition = function (editor, caretPosition) { + var container = caretPosition.container(); + var offset = caretPosition.offset(); + container.insertData(offset, '\xA0'); + editor.selection.setCursorLocation(container, offset + 1); + }; + var insertAtLocation = function (editor, caretPosition, location) { + if (isValidInsertPoint(location, caretPosition)) { + insertNbspAtPosition(editor, caretPosition); + return true; + } else { + return false; + } + }; + var insertAtCaret$2 = function (editor) { + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + var boundaryLocation = $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), caretPosition); + return boundaryLocation.map($_enfhkv6je5o2ply.curry(insertAtLocation, editor, caretPosition)).getOr(false); + }; + var isAtStartOrEnd = function (location) { + return location.fold($_enfhkv6je5o2ply.constant(false), $_enfhkv6je5o2ply.constant(true), $_enfhkv6je5o2ply.constant(true), $_enfhkv6je5o2ply.constant(false)); + }; + var insertAtSelection = function (editor) { + return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false; + }; + var $_aorlpm6xje5o2r30 = { insertAtSelection: insertAtSelection }; + + var executeKeydownOverride$2 = function (editor, evt) { + $_fc81iw6lje5o2r1d.execute([{ + keyCode: $_99mhlk59je5o2qss.SPACEBAR, + action: $_fc81iw6lje5o2r1d.action($_aorlpm6xje5o2r30.insertAtSelection, editor) + }], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var setup$9 = function (editor) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride$2(editor, evt); + } + }); + }; + var $_6pyahj6wje5o2r2z = { setup: setup$9 }; + + var setup$10 = function (editor) { + var caret = $_2dnted3pje5o2qgc.setupSelectedState(editor); + $_a5oax76jje5o2r0t.setup(editor, caret); + $_6wiawx6mje5o2r1h.setup(editor, caret); + $_8j6q9k6oje5o2r1q.setup(editor); + $_6pyahj6wje5o2r2z.setup(editor); + }; + var $_b7lkfw6ije5o2r0s = { setup: setup$10 }; + + function Quirks (editor) { + var each = $_a5gegtjje5o2pum.each; + var BACKSPACE = $_99mhlk59je5o2qss.BACKSPACE, DELETE = $_99mhlk59je5o2qss.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser; + var isGecko = $_9bd8pn9je5o2pp2.gecko, isIE = $_9bd8pn9je5o2pp2.ie, isWebKit = $_9bd8pn9je5o2pp2.webkit; + var mceInternalUrlPrefix = 'data:text/mce-internal,'; + var mceInternalDataType = isIE ? 'Text' : 'URL'; + var setEditorCommandState = function (cmd, state) { + try { + editor.getDoc().execCommand(cmd, false, state); + } catch (ex) { + } + }; + var isDefaultPrevented = function (e) { + return e.isDefaultPrevented(); + }; + var setMceInternalContent = function (e) { + var selectionHtml, internalContent; + if (e.dataTransfer) { + if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') { + selection.select(e.target); + } + selectionHtml = editor.selection.getContent(); + if (selectionHtml.length > 0) { + internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml); + e.dataTransfer.setData(mceInternalDataType, internalContent); + } + } + }; + var getMceInternalContent = function (e) { + var internalContent; + if (e.dataTransfer) { + internalContent = e.dataTransfer.getData(mceInternalDataType); + if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) { + internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(','); + return { + id: unescape(internalContent[0]), + html: unescape(internalContent[1]) + }; + } + } + return null; + }; + var insertClipboardContents = function (content, internal) { + if (editor.queryCommandSupported('mceInsertClipboardContent')) { + editor.execCommand('mceInsertClipboardContent', false, { + content: content, + internal: internal + }); + } else { + editor.execCommand('mceInsertContent', false, content); + } + }; + var emptyEditorWhenDeleting = function () { + var serializeRng = function (rng) { + var body = dom.create('body'); + var contents = rng.cloneContents(); + body.appendChild(contents); + return selection.serializer.serialize(body, { format: 'html' }); + }; + var allContentsSelected = function (rng) { + var selection = serializeRng(rng); + var allRng = dom.createRng(); + allRng.selectNode(editor.getBody()); + var allSelection = serializeRng(allRng); + return selection === allSelection; + }; + editor.on('keydown', function (e) { + var keyCode = e.keyCode; + var isCollapsed, body; + if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) { + isCollapsed = editor.selection.isCollapsed(); + body = editor.getBody(); + if (isCollapsed && !dom.isEmpty(body)) { + return; + } + if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) { + return; + } + e.preventDefault(); + editor.setContent(''); + if (body.firstChild && dom.isBlock(body.firstChild)) { + editor.selection.setCursorLocation(body.firstChild, 0); + } else { + editor.selection.setCursorLocation(body, 0); + } + editor.nodeChanged(); + } + }); + }; + var selectAll = function () { + editor.shortcuts.add('meta+a', null, 'SelectAll'); + }; + var inputMethodFocus = function () { + if (!editor.settings.content_editable) { + dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) { + var rng; + if (e.target === editor.getDoc().documentElement) { + rng = selection.getRng(); + editor.getBody().focus(); + if (e.type === 'mousedown') { + if (isCaretContainer(rng.startContainer)) { + return; + } + selection.placeCaretAt(e.clientX, e.clientY); + } else { + selection.setRng(rng); + } + } + }); + } + }; + var removeHrOnBackspace = function () { + editor.on('keydown', function (e) { + if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { + if (!editor.getBody().getElementsByTagName('hr').length) { + return; + } + if (selection.isCollapsed() && selection.getRng().startOffset === 0) { + var node = selection.getNode(); + var previousSibling = node.previousSibling; + if (node.nodeName === 'HR') { + dom.remove(node); + e.preventDefault(); + return; + } + if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') { + dom.remove(previousSibling); + e.preventDefault(); + } + } + } + }); + }; + var focusBody = function () { + if (!Range.prototype.getClientRects) { + editor.on('mousedown', function (e) { + if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') { + var body_1 = editor.getBody(); + body_1.blur(); + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + body_1.focus(); + }); + } + }); + } + }; + var selectControlElements = function () { + editor.on('click', function (e) { + var target = e.target; + if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') { + e.preventDefault(); + editor.selection.select(target); + editor.nodeChanged(); + } + if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) { + e.preventDefault(); + selection.select(target); + } + }); + }; + var removeStylesWhenDeletingAcrossBlockElements = function () { + var getAttributeApplyFunction = function () { + var template = dom.getAttribs(selection.getStart().cloneNode(false)); + return function () { + var target = selection.getStart(); + if (target !== editor.getBody()) { + dom.setAttrib(target, 'style', null); + each(template, function (attr) { + target.setAttributeNode(attr.cloneNode(true)); + }); + } + }; + }; + var isSelectionAcrossElements = function () { + return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock); + }; + editor.on('keypress', function (e) { + var applyAttributes; + if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) { + applyAttributes = getAttributeApplyFunction(); + editor.getDoc().execCommand('delete', false, null); + applyAttributes(); + e.preventDefault(); + return false; + } + }); + dom.bind(editor.getDoc(), 'cut', function (e) { + var applyAttributes; + if (!isDefaultPrevented(e) && isSelectionAcrossElements()) { + applyAttributes = getAttributeApplyFunction(); + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + applyAttributes(); + }); + } + }); + }; + var disableBackspaceIntoATable = function () { + editor.on('keydown', function (e) { + if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { + if (selection.isCollapsed() && selection.getRng().startOffset === 0) { + var previousSibling = selection.getNode().previousSibling; + if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') { + e.preventDefault(); + return false; + } + } + } + }); + }; + var removeBlockQuoteOnBackSpace = function () { + editor.on('keydown', function (e) { + var rng, container, offset, root, parent; + if (isDefaultPrevented(e) || e.keyCode !== $_99mhlk59je5o2qss.BACKSPACE) { + return; + } + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + root = dom.getRoot(); + parent = container; + if (!rng.collapsed || offset !== 0) { + return; + } + while (parent && parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) { + parent = parent.parentNode; + } + if (parent.tagName === 'BLOCKQUOTE') { + editor.formatter.toggle('blockquote', null, parent); + rng = dom.createRng(); + rng.setStart(container, 0); + rng.setEnd(container, 0); + selection.setRng(rng); + } + }); + }; + var setGeckoEditingOptions = function () { + var setOpts = function () { + setEditorCommandState('StyleWithCSS', false); + setEditorCommandState('enableInlineTableEditing', false); + if (!settings.object_resizing) { + setEditorCommandState('enableObjectResizing', false); + } + }; + if (!settings.readonly) { + editor.on('BeforeExecCommand MouseDown', setOpts); + } + }; + var addBrAfterLastLinks = function () { + var fixLinks = function () { + each(dom.select('a'), function (node) { + var parentNode = node.parentNode; + var root = dom.getRoot(); + if (parentNode.lastChild === node) { + while (parentNode && !dom.isBlock(parentNode)) { + if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) { + return; + } + parentNode = parentNode.parentNode; + } + dom.add(parentNode, 'br', { 'data-mce-bogus': 1 }); + } + }); + }; + editor.on('SetContent ExecCommand', function (e) { + if (e.type === 'setcontent' || e.command === 'mceInsertLink') { + fixLinks(); + } + }); + }; + var setDefaultBlockType = function () { + if (settings.forced_root_block) { + editor.on('init', function () { + setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block); + }); + } + }; + var normalizeSelection = function () { + editor.on('keyup focusin mouseup', function (e) { + if (!$_99mhlk59je5o2qss.modifierPressed(e)) { + selection.normalize(); + } + }, true); + }; + var showBrokenImageIcon = function () { + editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}'); + }; + var restoreFocusOnKeyDown = function () { + if (!editor.inline) { + editor.on('keydown', function () { + if (document.activeElement === document.body) { + editor.getWin().focus(); + } + }); + } + }; + var bodyHeight = function () { + if (!editor.inline) { + editor.contentStyles.push('body {min-height: 150px}'); + editor.on('click', function (e) { + var rng; + if (e.target.nodeName === 'HTML') { + if ($_9bd8pn9je5o2pp2.ie > 11) { + editor.getBody().focus(); + return; + } + rng = editor.selection.getRng(); + editor.getBody().focus(); + editor.selection.setRng(rng); + editor.selection.normalize(); + editor.nodeChanged(); + } + }); + } + }; + var blockCmdArrowNavigation = function () { + if ($_9bd8pn9je5o2pp2.mac) { + editor.on('keydown', function (e) { + if ($_99mhlk59je5o2qss.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) { + e.preventDefault(); + editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary'); + } + }); + } + }; + var disableAutoUrlDetect = function () { + setEditorCommandState('AutoUrlDetect', false); + }; + var tapLinksAndImages = function () { + editor.on('click', function (e) { + var elm = e.target; + do { + if (elm.tagName === 'A') { + e.preventDefault(); + return; + } + } while (elm = elm.parentNode); + }); + editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}'); + }; + var blockFormSubmitInsideEditor = function () { + editor.on('init', function () { + editor.dom.bind(editor.getBody(), 'submit', function (e) { + e.preventDefault(); + }); + }); + }; + var removeAppleInterchangeBrs = function () { + parser.addNodeFilter('br', function (nodes) { + var i = nodes.length; + while (i--) { + if (nodes[i].attr('class') === 'Apple-interchange-newline') { + nodes[i].remove(); + } + } + }); + }; + var ieInternalDragAndDrop = function () { + editor.on('dragstart', function (e) { + setMceInternalContent(e); + }); + editor.on('drop', function (e) { + if (!isDefaultPrevented(e)) { + var internalContent = getMceInternalContent(e); + if (internalContent && internalContent.id !== editor.id) { + e.preventDefault(); + var rng = $_drs2u868je5o2qyu.fromPoint(e.x, e.y, editor.getDoc()); + selection.setRng(rng); + insertClipboardContents(internalContent.html, true); + } + } + }); + }; + var refreshContentEditable = function () { + }; + var isHidden = function () { + var sel; + if (!isGecko || editor.removed) { + return 0; + } + sel = editor.selection.getSel(); + return !sel || !sel.rangeCount || sel.rangeCount === 0; + }; + removeBlockQuoteOnBackSpace(); + emptyEditorWhenDeleting(); + if (!$_9bd8pn9je5o2pp2.windowsPhone) { + normalizeSelection(); + } + if (isWebKit) { + inputMethodFocus(); + selectControlElements(); + setDefaultBlockType(); + blockFormSubmitInsideEditor(); + disableBackspaceIntoATable(); + removeAppleInterchangeBrs(); + if ($_9bd8pn9je5o2pp2.iOS) { + restoreFocusOnKeyDown(); + bodyHeight(); + tapLinksAndImages(); + } else { + selectAll(); + } + } + if ($_9bd8pn9je5o2pp2.ie >= 11) { + bodyHeight(); + disableBackspaceIntoATable(); + } + if ($_9bd8pn9je5o2pp2.ie) { + selectAll(); + disableAutoUrlDetect(); + ieInternalDragAndDrop(); + } + if (isGecko) { + removeHrOnBackspace(); + focusBody(); + removeStylesWhenDeletingAcrossBlockElements(); + setGeckoEditingOptions(); + addBrAfterLastLinks(); + showBrokenImageIcon(); + blockCmdArrowNavigation(); + disableBackspaceIntoATable(); + } + return { + refreshContentEditable: refreshContentEditable, + isHidden: isHidden + }; + } + + var DOM$2 = DOMUtils.DOM; + var appendStyle = function (editor, text) { + var head = $_5tcb2dyje5o2pwu.fromDom(editor.getDoc().head); + var tag = $_5tcb2dyje5o2pwu.fromTag('style'); + $_3uo9pl14je5o2pxq.set(tag, 'type', 'text/css'); + $_elbl2s2oje5o2q9z.append(tag, $_5tcb2dyje5o2pwu.fromText(text)); + $_elbl2s2oje5o2q9z.append(head, tag); + }; + var createParser = function (editor) { + var parser = DomParser(editor.settings, editor.schema); + parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name) { + var i = nodes.length, node; + var dom = editor.dom; + var value, internalName; + while (i--) { + node = nodes[i]; + value = node.attr(name); + internalName = 'data-mce-' + name; + if (!node.attributes.map[internalName]) { + if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) { + continue; + } + if (name === 'style') { + value = dom.serializeStyle(dom.parseStyle(value), node.name); + if (!value.length) { + value = null; + } + node.attr(internalName, value); + node.attr(name, value); + } else if (name === 'tabindex') { + node.attr(internalName, value); + node.attr(name, null); + } else { + node.attr(internalName, editor.convertURL(value, name, node.name)); + } + } + } + }); + parser.addNodeFilter('script', function (nodes) { + var i = nodes.length, node, type; + while (i--) { + node = nodes[i]; + type = node.attr('type') || 'no/type'; + if (type.indexOf('mce-') !== 0) { + node.attr('type', 'mce-' + type); + } + } + }); + parser.addNodeFilter('#cdata', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.type = 8; + node.name = '#comment'; + node.value = '[CDATA[' + node.value + ']]'; + } + }); + parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) { + var i = nodes.length, node; + var nonEmptyElements = editor.schema.getNonEmptyElements(); + while (i--) { + node = nodes[i]; + if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) { + node.append(new Node$2('br', 1)).shortEnded = true; + } + } + }); + return parser; + }; + var autoFocus = function (editor) { + if (editor.settings.auto_focus) { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + var focusEditor; + if (editor.settings.auto_focus === true) { + focusEditor = editor; + } else { + focusEditor = editor.editorManager.get(editor.settings.auto_focus); + } + if (!focusEditor.destroyed) { + focusEditor.focus(); + } + }, 100); + } + }; + var initEditor = function (editor) { + editor.bindPendingEventDelegates(); + editor.initialized = true; + editor.fire('init'); + editor.focus(true); + editor.nodeChanged({ initial: true }); + editor.execCallback('init_instance_callback', editor); + autoFocus(editor); + }; + var getStyleSheetLoader = function (editor) { + return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader; + }; + var initContentBody = function (editor, skipWrite) { + var settings = editor.settings; + var targetElm = editor.getElement(); + var doc = editor.getDoc(), body, contentCssText; + if (!settings.inline) { + editor.getElement().style.visibility = editor.orgVisibility; + } + if (!skipWrite && !settings.content_editable) { + doc.open(); + doc.write(editor.iframeHTML); + doc.close(); + } + if (settings.content_editable) { + editor.on('remove', function () { + var bodyEl = this.getBody(); + DOM$2.removeClass(bodyEl, 'mce-content-body'); + DOM$2.removeClass(bodyEl, 'mce-edit-focus'); + DOM$2.setAttrib(bodyEl, 'contentEditable', null); + }); + DOM$2.addClass(targetElm, 'mce-content-body'); + editor.contentDocument = doc = settings.content_document || document; + editor.contentWindow = settings.content_window || window; + editor.bodyElement = targetElm; + settings.content_document = settings.content_window = null; + settings.root_name = targetElm.nodeName.toLowerCase(); + } + body = editor.getBody(); + body.disabled = true; + editor.readonly = settings.readonly; + if (!editor.readonly) { + if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') { + body.style.position = 'relative'; + } + body.contentEditable = editor.getParam('content_editable_state', true); + } + body.disabled = false; + editor.editorUpload = EditorUpload(editor); + editor.schema = Schema(settings); + editor.dom = new DOMUtils(doc, { + keep_values: true, + url_converter: editor.convertURL, + url_converter_scope: editor, + hex_colors: settings.force_hex_style_colors, + class_filter: settings.class_filter, + update_styles: true, + root_element: editor.inline ? editor.getBody() : null, + collect: settings.content_editable, + schema: editor.schema, + onSetAttrib: function (e) { + editor.fire('SetAttrib', e); + } + }); + editor.parser = createParser(editor); + editor.serializer = DomSerializer$1(settings, editor); + editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor); + editor.formatter = Formatter(editor); + editor.undoManager = UndoManager(editor); + editor._nodeChangeDispatcher = new NodeChange(editor); + editor._selectionOverrides = SelectionOverrides(editor); + $_acfnaa63je5o2qxq.setup(editor); + $_b7lkfw6ije5o2r0s.setup(editor); + $_fekqo94yje5o2qqs.setup(editor); + editor.fire('PreInit'); + if (!settings.browser_spellcheck && !settings.gecko_spellcheck) { + doc.body.spellcheck = false; + DOM$2.setAttrib(body, 'spellcheck', 'false'); + } + editor.quirks = Quirks(editor); + editor.fire('PostRender'); + if (settings.directionality) { + body.dir = settings.directionality; + } + if (settings.nowrap) { + body.style.whiteSpace = 'nowrap'; + } + if (settings.protect) { + editor.on('BeforeSetContent', function (e) { + $_a5gegtjje5o2pum.each(settings.protect, function (pattern) { + e.content = e.content.replace(pattern, function (str) { + return '<!--mce:protected ' + escape(str) + '-->'; + }); + }); + }); + } + editor.on('SetContent', function () { + editor.addVisual(editor.getBody()); + }); + if (settings.padd_empty_editor) { + editor.on('PostProcess', function (e) { + e.content = e.content.replace(/^(<p[^>]*>( | |\s|\u00a0|<br \/>|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, ''); + }); + } + editor.load({ + initial: true, + format: 'html' + }); + editor.startContent = editor.getContent({ format: 'raw' }); + editor.on('compositionstart compositionend', function (e) { + editor.composing = e.type === 'compositionstart'; + }); + if (editor.contentStyles.length > 0) { + contentCssText = ''; + $_a5gegtjje5o2pum.each(editor.contentStyles, function (style) { + contentCssText += style + '\r\n'; + }); + editor.dom.addStyle(contentCssText); + } + getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) { + initEditor(editor); + }, function (urls) { + initEditor(editor); + }); + if (settings.content_style) { + appendStyle(editor, settings.content_style); + } + }; + var $_aixfus4lje5o2qp4 = { initContentBody: initContentBody }; + + var DOM$3 = DOMUtils.DOM; + var relaxDomain = function (editor, ifr) { + if (document.domain !== window.location.hostname && $_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 12) { + var bodyUuid = $_2bgddd4wje5o2qqo.uuid('mce'); + editor[bodyUuid] = function () { + $_aixfus4lje5o2qp4.initContentBody(editor); + }; + var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()'; + DOM$3.setAttrib(ifr, 'src', domainRelaxUrl); + return true; + } + return false; + }; + var normalizeHeight = function (height) { + var normalizedHeight = typeof height === 'number' ? height + 'px' : height; + return normalizedHeight ? normalizedHeight : ''; + }; + var createIframeElement = function (id, title, height, customAttrs) { + var iframe = $_5tcb2dyje5o2pwu.fromTag('iframe'); + $_3uo9pl14je5o2pxq.setAll(iframe, customAttrs); + $_3uo9pl14je5o2pxq.setAll(iframe, { + id: id + '_ifr', + frameBorder: '0', + allowTransparency: 'true', + title: title + }); + $_1ioope11je5o2px4.setAll(iframe, { + width: '100%', + height: normalizeHeight(height), + display: 'block' + }); + return iframe; + }; + var getIframeHtml = function (editor) { + var bodyId, bodyClass, iframeHTML; + iframeHTML = $_ahj8826rje5o2r2f.getDocType(editor) + '<html><head>'; + if ($_ahj8826rje5o2r2f.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) { + iframeHTML += '<base href="' + editor.documentBaseURI.getURI() + '" />'; + } + iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'; + bodyId = $_ahj8826rje5o2r2f.getBodyId(editor); + bodyClass = $_ahj8826rje5o2r2f.getBodyClass(editor); + if ($_ahj8826rje5o2r2f.getContentSecurityPolicy(editor)) { + iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + $_ahj8826rje5o2r2f.getContentSecurityPolicy(editor) + '" />'; + } + iframeHTML += '</head><body id="' + bodyId + '" class="mce-content-body ' + bodyClass + '" data-id="' + editor.id + '"><br></body></html>'; + return iframeHTML; + }; + var createIframe = function (editor, o) { + var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help'); + var ifr = createIframeElement(editor.id, title, o.height, $_ahj8826rje5o2r2f.getIframeAttrs(editor)).dom(); + ifr.onload = function () { + ifr.onload = null; + editor.fire('load'); + }; + var isDomainRelaxed = relaxDomain(editor, ifr); + editor.contentAreaContainer = o.iframeContainer; + editor.iframeElement = ifr; + editor.iframeHTML = getIframeHtml(editor); + DOM$3.add(o.iframeContainer, ifr); + return isDomainRelaxed; + }; + var init$1 = function (editor, boxInfo) { + var isDomainRelaxed = createIframe(editor, boxInfo); + if (boxInfo.editorContainer) { + DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay; + editor.hidden = DOM$3.isHidden(boxInfo.editorContainer); + } + editor.getElement().style.display = 'none'; + DOM$3.setAttrib(editor.id, 'aria-hidden', true); + if (!isDomainRelaxed) { + $_aixfus4lje5o2qp4.initContentBody(editor); + } + }; + var $_3w1bbh6zje5o2r3o = { init: init$1 }; + + var DOM$4 = DOMUtils.DOM; + var initPlugin = function (editor, initializedPlugins, plugin) { + var Plugin = PluginManager$1.get(plugin); + var pluginUrl, pluginInstance; + pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, ''); + plugin = $_a5gegtjje5o2pum.trim(plugin); + if (Plugin && $_a5gegtjje5o2pum.inArray(initializedPlugins, plugin) === -1) { + $_a5gegtjje5o2pum.each(PluginManager$1.dependencies(plugin), function (dep) { + initPlugin(editor, initializedPlugins, dep); + }); + if (editor.plugins[plugin]) { + return; + } + pluginInstance = new Plugin(editor, pluginUrl, editor.$); + editor.plugins[plugin] = pluginInstance; + if (pluginInstance.init) { + pluginInstance.init(editor, pluginUrl); + initializedPlugins.push(plugin); + } + } + }; + var trimLegacyPrefix = function (name) { + return name.replace(/^\-/, ''); + }; + var initPlugins = function (editor) { + var initializedPlugins = []; + $_a5gegtjje5o2pum.each(editor.settings.plugins.split(/[ ,]/), function (name) { + initPlugin(editor, initializedPlugins, trimLegacyPrefix(name)); + }); + }; + var initTheme = function (editor) { + var Theme; + var theme = editor.settings.theme; + if ($_be3q8w12je5o2pxj.isString(theme)) { + editor.settings.theme = trimLegacyPrefix(theme); + Theme = ThemeManager.get(theme); + editor.theme = new Theme(editor, ThemeManager.urls[theme]); + if (editor.theme.init) { + editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\/$/, ''), editor.$); + } + } else { + editor.theme = {}; + } + }; + var renderFromLoadedTheme = function (editor) { + var w, h, minHeight, re, info; + var settings = editor.settings; + var elm = editor.getElement(); + w = settings.width || DOM$4.getStyle(elm, 'width') || '100%'; + h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight; + minHeight = settings.min_height || 100; + re = /^[0-9\.]+(|px)$/i; + if (re.test('' + w)) { + w = Math.max(parseInt(w, 10), 100); + } + if (re.test('' + h)) { + h = Math.max(parseInt(h, 10), minHeight); + } + info = editor.theme.renderUI({ + targetNode: elm, + width: w, + height: h, + deltaWidth: settings.delta_width, + deltaHeight: settings.delta_height + }); + if (!settings.content_editable) { + h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : ''); + if (h < minHeight) { + h = minHeight; + } + } + info.height = h; + return info; + }; + var renderFromThemeFunc = function (editor) { + var info; + var elm = editor.getElement(); + info = editor.settings.theme(editor, elm); + if (info.editorContainer.nodeType) { + info.editorContainer.id = info.editorContainer.id || editor.id + '_parent'; + } + if (info.iframeContainer && info.iframeContainer.nodeType) { + info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer'; + } + info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight; + return info; + }; + var createThemeFalseResult = function (element) { + return { + editorContainer: element, + iframeContainer: element + }; + }; + var renderThemeFalseIframe = function (targetElement) { + var iframeContainer = DOM$4.create('div'); + DOM$4.insertAfter(iframeContainer, targetElement); + return createThemeFalseResult(iframeContainer); + }; + var renderThemeFalse = function (editor) { + var targetElement = editor.getElement(); + return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement); + }; + var renderThemeUi = function (editor) { + var settings = editor.settings, elm = editor.getElement(); + editor.orgDisplay = elm.style.display; + if ($_be3q8w12je5o2pxj.isString(settings.theme)) { + return renderFromLoadedTheme(editor); + } else if ($_be3q8w12je5o2pxj.isFunction(settings.theme)) { + return renderFromThemeFunc(editor); + } else { + return renderThemeFalse(editor); + } + }; + var init$2 = function (editor) { + var settings = editor.settings; + var elm = editor.getElement(); + var boxInfo; + editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl; + editor.editorManager.i18n.setCode(settings.language); + settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area')); + editor.fire('ScriptsLoaded'); + initTheme(editor); + initPlugins(editor); + boxInfo = renderThemeUi(editor); + editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null; + if (settings.content_css) { + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.explode(settings.content_css), function (u) { + editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u)); + }); + } + if (settings.content_editable) { + return $_aixfus4lje5o2qp4.initContentBody(editor); + } else { + return $_3w1bbh6zje5o2r3o.init(editor, boxInfo); + } + }; + var $_v6l1f4ije5o2qou = { init: init$2 }; + + var DOM$5 = DOMUtils.DOM; + var hasSkipLoadPrefix = function (name) { + return name.charAt(0) === '-'; + }; + var loadLanguage = function (scriptLoader, editor) { + var settings = editor.settings; + if (settings.language && settings.language !== 'en' && !settings.language_url) { + settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js'; + } + if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) { + scriptLoader.add(settings.language_url); + } + }; + var loadTheme = function (scriptLoader, editor, suffix, callback) { + var settings = editor.settings, theme = settings.theme; + if ($_be3q8w12je5o2pxj.isString(theme)) { + if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) { + var themeUrl = settings.theme_url; + if (themeUrl) { + ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl)); + } else { + ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js'); + } + } + scriptLoader.loadQueue(function () { + ThemeManager.waitFor(theme, callback); + }); + } else { + callback(); + } + }; + var loadPlugins = function (settings, suffix) { + if ($_a5gegtjje5o2pum.isArray(settings.plugins)) { + settings.plugins = settings.plugins.join(' '); + } + $_a5gegtjje5o2pum.each(settings.external_plugins, function (url, name) { + PluginManager$1.load(name, url); + settings.plugins += ' ' + name; + }); + $_a5gegtjje5o2pum.each(settings.plugins.split(/[ ,]/), function (plugin) { + plugin = $_a5gegtjje5o2pum.trim(plugin); + if (plugin && !PluginManager$1.urls[plugin]) { + if (hasSkipLoadPrefix(plugin)) { + plugin = plugin.substr(1, plugin.length); + var dependencies = PluginManager$1.dependencies(plugin); + $_a5gegtjje5o2pum.each(dependencies, function (dep) { + var defaultSettings = { + prefix: 'plugins/', + resource: dep, + suffix: '/plugin' + suffix + '.js' + }; + dep = PluginManager$1.createUrl(defaultSettings, dep); + PluginManager$1.load(dep.resource, dep); + }); + } else { + PluginManager$1.load(plugin, { + prefix: 'plugins/', + resource: plugin, + suffix: '/plugin' + suffix + '.js' + }); + } + } + }); + }; + var loadScripts = function (editor, suffix) { + var scriptLoader = ScriptLoader.ScriptLoader; + loadTheme(scriptLoader, editor, suffix, function () { + loadLanguage(scriptLoader, editor); + loadPlugins(editor.settings, suffix); + scriptLoader.loadQueue(function () { + if (!editor.removed) { + $_v6l1f4ije5o2qou.init(editor); + } + }, editor, function (urls) { + $_axrd1j4hje5o2qor.pluginLoadError(editor, urls[0]); + if (!editor.removed) { + $_v6l1f4ije5o2qou.init(editor); + } + }); + }); + }; + var render = function (editor) { + var settings = editor.settings, id = editor.id; + var readyHandler = function () { + DOM$5.unbind(window, 'ready', readyHandler); + editor.render(); + }; + if (!EventUtils.Event.domLoaded) { + DOM$5.bind(window, 'ready', readyHandler); + return; + } + if (!editor.getElement()) { + return; + } + if (!$_9bd8pn9je5o2pp2.contentEditable) { + return; + } + if (!settings.inline) { + editor.orgVisibility = editor.getElement().style.visibility; + editor.getElement().style.visibility = 'hidden'; + } else { + editor.inline = true; + } + var form = editor.getElement().form || DOM$5.getParent(id, 'form'); + if (form) { + editor.formElement = form; + if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) { + DOM$5.insertAfter(DOM$5.create('input', { + type: 'hidden', + name: id + }), id); + editor.hasHiddenInput = true; + } + editor.formEventDelegate = function (e) { + editor.fire(e.type, e); + }; + DOM$5.bind(form, 'submit reset', editor.formEventDelegate); + editor.on('reset', function () { + editor.setContent(editor.startContent, { format: 'raw' }); + }); + if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) { + form._mceOldSubmit = form.submit; + form.submit = function () { + editor.editorManager.triggerSave(); + editor.setDirty(false); + return form._mceOldSubmit(form); + }; + } + } + editor.windowManager = WindowManager(editor); + editor.notificationManager = NotificationManager(editor); + if (settings.encoding === 'xml') { + editor.on('GetContent', function (e) { + if (e.save) { + e.content = DOM$5.encode(e.content); + } + }); + } + if (settings.add_form_submit_trigger) { + editor.on('submit', function () { + if (editor.initialized) { + editor.save(); + } + }); + } + if (settings.add_unload_trigger) { + editor._beforeUnload = function () { + if (editor.initialized && !editor.destroyed && !editor.isHidden()) { + editor.save({ + format: 'raw', + no_events: true, + set_dirty: false + }); + } + }; + editor.editorManager.on('BeforeUnload', editor._beforeUnload); + } + editor.editorManager.add(editor); + loadScripts(editor, editor.suffix); + }; + var $_4352oh4bje5o2qnn = { render: render }; + + var add = function (editor, name, settings) { + var sidebars = editor.sidebars ? editor.sidebars : []; + sidebars.push({ + name: name, + settings: settings + }); + editor.sidebars = sidebars; + }; + var $_8qp82n70je5o2r3u = { add: add }; + + var each$21 = $_a5gegtjje5o2pum.each; + var trim$4 = $_a5gegtjje5o2pum.trim; + var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' '); + var DEFAULT_PORTS = { + ftp: 21, + http: 80, + https: 443, + mailto: 25 + }; + var URI = function (url, settings) { + var self = this; + var baseUri, baseUrl; + url = trim$4(url); + settings = self.settings = settings || {}; + baseUri = settings.base_uri; + if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) { + self.source = url; + return; + } + var isProtocolRelative = url.indexOf('//') === 0; + if (url.indexOf('/') === 0 && !isProtocolRelative) { + url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url; + } + if (!/^[\w\-]*:?\/\//.test(url)) { + baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory; + if (settings.base_uri.protocol == '') { + url = '//mce_host' + self.toAbsPath(baseUrl, url); + } else { + url = /([^#?]*)([#?]?.*)/.exec(url); + url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, url[1]) + url[2]; + } + } + url = url.replace(/@@/g, '(mce_at)'); + url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url); + each$21(queryParts, function (v, i) { + var part = url[i]; + if (part) { + part = part.replace(/\(mce_at\)/g, '@@'); + } + self[v] = part; + }); + if (baseUri) { + if (!self.protocol) { + self.protocol = baseUri.protocol; + } + if (!self.userInfo) { + self.userInfo = baseUri.userInfo; + } + if (!self.port && self.host === 'mce_host') { + self.port = baseUri.port; + } + if (!self.host || self.host === 'mce_host') { + self.host = baseUri.host; + } + self.source = ''; + } + if (isProtocolRelative) { + self.protocol = ''; + } + }; + URI.prototype = { + setPath: function (path) { + var self = this; + path = /^(.*?)\/?(\w+)?$/.exec(path); + self.path = path[0]; + self.directory = path[1]; + self.file = path[2]; + self.source = ''; + self.getURI(); + }, + toRelative: function (uri) { + var self = this; + var output; + if (uri === './') { + return uri; + } + uri = new URI(uri, { base_uri: self }); + if (uri.host !== 'mce_host' && self.host !== uri.host && uri.host || self.port !== uri.port || self.protocol !== uri.protocol && uri.protocol !== '') { + return uri.getURI(); + } + var tu = self.getURI(), uu = uri.getURI(); + if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) { + return tu; + } + output = self.toRelPath(self.path, uri.path); + if (uri.query) { + output += '?' + uri.query; + } + if (uri.anchor) { + output += '#' + uri.anchor; + } + return output; + }, + toAbsolute: function (uri, noHost) { + uri = new URI(uri, { base_uri: this }); + return uri.getURI(noHost && this.isSameOrigin(uri)); + }, + isSameOrigin: function (uri) { + if (this.host == uri.host && this.protocol == uri.protocol) { + if (this.port == uri.port) { + return true; + } + var defaultPort = DEFAULT_PORTS[this.protocol]; + if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) { + return true; + } + } + return false; + }, + toRelPath: function (base, path) { + var items, breakPoint = 0, out = '', i, l; + base = base.substring(0, base.lastIndexOf('/')); + base = base.split('/'); + items = path.split('/'); + if (base.length >= items.length) { + for (i = 0, l = base.length; i < l; i++) { + if (i >= items.length || base[i] !== items[i]) { + breakPoint = i + 1; + break; + } + } + } + if (base.length < items.length) { + for (i = 0, l = items.length; i < l; i++) { + if (i >= base.length || base[i] !== items[i]) { + breakPoint = i + 1; + break; + } + } + } + if (breakPoint === 1) { + return path; + } + for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) { + out += '../'; + } + for (i = breakPoint - 1, l = items.length; i < l; i++) { + if (i !== breakPoint - 1) { + out += '/' + items[i]; + } else { + out += items[i]; + } + } + return out; + }, + toAbsPath: function (base, path) { + var i, nb = 0, o = [], tr, outPath; + tr = /\/$/.test(path) ? '/' : ''; + base = base.split('/'); + path = path.split('/'); + each$21(base, function (k) { + if (k) { + o.push(k); + } + }); + base = o; + for (i = path.length - 1, o = []; i >= 0; i--) { + if (path[i].length === 0 || path[i] === '.') { + continue; + } + if (path[i] === '..') { + nb++; + continue; + } + if (nb > 0) { + nb--; + continue; + } + o.push(path[i]); + } + i = base.length - nb; + if (i <= 0) { + outPath = o.reverse().join('/'); + } else { + outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/'); + } + if (outPath.indexOf('/') !== 0) { + outPath = '/' + outPath; + } + if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) { + outPath += tr; + } + return outPath; + }, + getURI: function (noProtoHost) { + var s; + var self = this; + if (!self.source || noProtoHost) { + s = ''; + if (!noProtoHost) { + if (self.protocol) { + s += self.protocol + '://'; + } else { + s += '//'; + } + if (self.userInfo) { + s += self.userInfo + '@'; + } + if (self.host) { + s += self.host; + } + if (self.port) { + s += ':' + self.port; + } + } + if (self.path) { + s += self.path; + } + if (self.query) { + s += '?' + self.query; + } + if (self.anchor) { + s += '#' + self.anchor; + } + self.source = s; + } + return self.source; + } + }; + URI.parseDataUri = function (uri) { + var type, matches; + uri = decodeURIComponent(uri).split(','); + matches = /data:([^;]+)/.exec(uri[0]); + if (matches) { + type = matches[1]; + } + return { + type: type, + data: uri[1] + }; + }; + URI.getDocumentBaseUrl = function (loc) { + var baseUrl; + if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') { + baseUrl = loc.href; + } else { + baseUrl = loc.protocol + '//' + loc.host + loc.pathname; + } + if (/^[^:]+:\/\/\/?[^\/]+\//.test(baseUrl)) { + baseUrl = baseUrl.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(baseUrl)) { + baseUrl += '/'; + } + } + return baseUrl; + }; + + var traverse = function (node, fn) { + fn(node); + if (node.firstChild) { + traverse(node.firstChild, fn); + } + if (node.next) { + traverse(node.next, fn); + } + }; + var findMatchingNodes = function (nodeFilters, attributeFilters, node) { + var nodeMatches = {}; + var attrMatches = {}; + var matches = []; + if (node.firstChild) { + traverse(node.firstChild, function (node) { + $_bwcteb4je5o2pl4.each(nodeFilters, function (filter) { + if (filter.name === node.name) { + if (nodeMatches[filter.name]) { + nodeMatches[filter.name].nodes.push(node); + } else { + nodeMatches[filter.name] = { + filter: filter, + nodes: [node] + }; + } + } + }); + $_bwcteb4je5o2pl4.each(attributeFilters, function (filter) { + if (typeof node.attr(filter.name) === 'string') { + if (attrMatches[filter.name]) { + attrMatches[filter.name].nodes.push(node); + } else { + attrMatches[filter.name] = { + filter: filter, + nodes: [node] + }; + } + } + }); + }); + } + for (var name_1 in nodeMatches) { + if (nodeMatches.hasOwnProperty(name_1)) { + matches.push(nodeMatches[name_1]); + } + } + for (var name_2 in attrMatches) { + if (attrMatches.hasOwnProperty(name_2)) { + matches.push(attrMatches[name_2]); + } + } + return matches; + }; + var filter$3 = function (nodeFilters, attributeFilters, node) { + var matches = findMatchingNodes(nodeFilters, attributeFilters, node); + $_bwcteb4je5o2pl4.each(matches, function (match) { + $_bwcteb4je5o2pl4.each(match.filter.callbacks, function (callback) { + callback(match.nodes, match.filter.name, {}); + }); + }); + }; + + var defaultFormat = 'html'; + var isTreeNode = function (content) { + return content instanceof Node$2; + }; + var setContentString = function (editor, content, args) { + var body = editor.getBody(); + var forcedRootBlockName, padd; + if (content.length === 0 || /^\s+$/.test(content)) { + padd = '<br data-mce-bogus="1">'; + if (body.nodeName === 'TABLE') { + content = '<tr><td>' + padd + '</td></tr>'; + } else if (/^(UL|OL)$/.test(body.nodeName)) { + content = '<li>' + padd + '</li>'; + } + forcedRootBlockName = editor.settings.forced_root_block; + if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) { + content = padd; + content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content); + } else if (!content) { + content = '<br data-mce-bogus="1">'; + } + editor.dom.setHTML(body, content); + editor.fire('SetContent', args); + } else { + if (args.format !== 'raw') { + content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, { + isRootContent: true, + insert: true + })); + } + args.content = $_a5gegtjje5o2pum.trim(content); + editor.dom.setHTML(body, args.content); + if (!args.no_events) { + editor.fire('SetContent', args); + } + } + return args.content; + }; + var setContentTree = function (editor, content, args) { + filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content); + var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content); + args.content = $_a5gegtjje5o2pum.trim(html); + editor.dom.setHTML(editor.getBody(), args.content); + if (!args.no_events) { + editor.fire('SetContent', args); + } + return content; + }; + var setContent$1 = function (editor, content, args) { + if (args === void 0) { + args = {}; + } + args.format = args.format ? args.format : defaultFormat; + args.set = true; + args.content = isTreeNode(content) ? '' : content; + if (!isTreeNode(content) && !args.no_events) { + editor.fire('BeforeSetContent', args); + content = args.content; + } + return isTreeNode(content) ? setContentTree(editor, content, args) : setContentString(editor, content, args); + }; + var getContent$1 = function (editor, args) { + if (args === void 0) { + args = {}; + } + var content; + var body = editor.getBody(); + if (editor.removed) { + return ''; + } + args.format = args.format ? args.format : defaultFormat; + args.get = true; + args.getInner = true; + if (!args.no_events) { + editor.fire('BeforeGetContent', args); + } + if (args.format === 'raw') { + content = $_a5gegtjje5o2pum.trim($_15ih885cje5o2qt6.trimExternal(editor.serializer, body.innerHTML)); + } else if (args.format === 'text') { + content = body.innerText || body.textContent; + } else if (args.format === 'tree') { + return editor.serializer.serialize(body, args); + } else { + content = editor.serializer.serialize(body, args); + } + if (args.format !== 'text') { + args.content = $_a5gegtjje5o2pum.trim(content); + } else { + args.content = content; + } + if (!args.no_events) { + editor.fire('GetContent', args); + } + return args.content; + }; + + var DOM$6 = DOMUtils.DOM; + var restoreOriginalStyles = function (editor) { + DOM$6.setStyle(editor.id, 'display', editor.orgDisplay); + }; + var safeDestroy = function (x) { + return Option.from(x).each(function (x) { + return x.destroy(); + }); + }; + var clearDomReferences = function (editor) { + editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null; + editor.bodyElement = editor.contentDocument = editor.contentWindow = null; + editor.iframeElement = editor.targetElm = null; + if (editor.selection) { + editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null; + } + }; + var restoreForm = function (editor) { + var form = editor.formElement; + if (form) { + if (form._mceOldSubmit) { + form.submit = form._mceOldSubmit; + form._mceOldSubmit = null; + } + DOM$6.unbind(form, 'submit reset', editor.formEventDelegate); + } + }; + var remove$5 = function (editor) { + if (!editor.removed) { + var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload; + var body = editor.getBody(); + var element = editor.getElement(); + if (body) { + editor.save(); + } + editor.removed = 1; + editor.unbindAllNativeEvents(); + if (editor.hasHiddenInput && element) { + DOM$6.remove(element.nextSibling); + } + if (!editor.inline && body) { + restoreOriginalStyles(editor); + } + $_d6jl355vje5o2qw5.fireRemove(editor); + editor.editorManager.remove(editor); + DOM$6.remove(editor.getContainer()); + safeDestroy(_selectionOverrides); + safeDestroy(editorUpload); + editor.destroy(); + } + }; + var destroy = function (editor, automatic) { + var selection = editor.selection, dom = editor.dom; + if (editor.destroyed) { + return; + } + if (!automatic && !editor.removed) { + editor.remove(); + return; + } + if (!automatic) { + editor.editorManager.off('beforeunload', editor._beforeUnload); + if (editor.theme && editor.theme.destroy) { + editor.theme.destroy(); + } + safeDestroy(selection); + safeDestroy(dom); + } + restoreForm(editor); + clearDomReferences(editor); + editor.destroyed = 1; + }; + + var DOM$7 = DOMUtils.DOM; + var extend$4 = $_a5gegtjje5o2pum.extend; + var each$22 = $_a5gegtjje5o2pum.each; + var resolve$4 = $_a5gegtjje5o2pum.resolve; + var ie$2 = $_9bd8pn9je5o2pp2.ie; + var Editor = function (id, settings, editorManager) { + var self = this; + var documentBaseUrl, baseUri; + documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL; + baseUri = editorManager.baseURI; + settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings); + self.settings = settings; + AddOnManager.language = settings.language || 'en'; + AddOnManager.languageLoad = settings.language_load; + AddOnManager.baseURL = editorManager.baseURL; + self.id = id; + self.setDirty(false); + self.plugins = {}; + self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri }); + self.baseURI = baseUri; + self.contentCSS = []; + self.contentStyles = []; + self.shortcuts = new Shortcuts(self); + self.loadedCSS = {}; + self.editorCommands = new EditorCommands(self); + self.suffix = editorManager.suffix; + self.editorManager = editorManager; + self.inline = settings.inline; + self.buttons = {}; + self.menuItems = {}; + if (settings.cache_suffix) { + $_9bd8pn9je5o2pp2.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, ''); + } + if (settings.override_viewport === false) { + $_9bd8pn9je5o2pp2.overrideViewPort = false; + } + editorManager.fire('SetupEditor', { editor: self }); + self.execCallback('setup', self); + self.$ = DomQuery.overrideDefaults(function () { + return { + context: self.inline ? self.getBody() : self.getDoc(), + element: self.getBody() + }; + }); + }; + Editor.prototype = { + render: function () { + $_4352oh4bje5o2qnn.render(this); + }, + focus: function (skipFocus) { + $_llx5i48je5o2qna.focus(this, skipFocus); + }, + execCallback: function (name) { + var self = this; + var callback = self.settings[name], scope; + if (!callback) { + return; + } + if (self.callbackLookup && (scope = self.callbackLookup[name])) { + callback = scope.func; + scope = scope.scope; + } + if (typeof callback === 'string') { + scope = callback.replace(/\.\w+$/, ''); + scope = scope ? resolve$4(scope) : 0; + callback = resolve$4(callback); + self.callbackLookup = self.callbackLookup || {}; + self.callbackLookup[name] = { + func: callback, + scope: scope + }; + } + return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1)); + }, + translate: function (text) { + if (text && $_a5gegtjje5o2pum.is(text, 'string')) { + var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n; + text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function (a, b) { + return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}'; + }); + } + return this.editorManager.translate(text); + }, + getLang: function (name, defaultVal) { + return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}'); + }, + getParam: function (name, defaultVal, type) { + return getParam(this, name, defaultVal, type); + }, + nodeChanged: function (args) { + this._nodeChangeDispatcher.nodeChanged(args); + }, + addButton: function (name, settings) { + var self = this; + if (settings.cmd) { + settings.onclick = function () { + self.execCommand(settings.cmd); + }; + } + if (settings.stateSelector && typeof settings.active === 'undefined') { + settings.active = false; + } + if (!settings.text && !settings.icon) { + settings.icon = name; + } + self.buttons = self.buttons; + settings.tooltip = settings.tooltip || settings.title; + self.buttons[name] = settings; + }, + addSidebar: function (name, settings) { + return $_8qp82n70je5o2r3u.add(this, name, settings); + }, + addMenuItem: function (name, settings) { + var self = this; + if (settings.cmd) { + settings.onclick = function () { + self.execCommand(settings.cmd); + }; + } + self.menuItems = self.menuItems; + self.menuItems[name] = settings; + }, + addContextToolbar: function (predicate, items) { + var self = this; + var selector; + self.contextToolbars = self.contextToolbars || []; + if (typeof predicate === 'string') { + selector = predicate; + predicate = function (elm) { + return self.dom.is(elm, selector); + }; + } + self.contextToolbars.push({ + id: $_2bgddd4wje5o2qqo.uuid('mcet'), + predicate: predicate, + items: items + }); + }, + addCommand: function (name, callback, scope) { + this.editorCommands.addCommand(name, callback, scope); + }, + addQueryStateHandler: function (name, callback, scope) { + this.editorCommands.addQueryStateHandler(name, callback, scope); + }, + addQueryValueHandler: function (name, callback, scope) { + this.editorCommands.addQueryValueHandler(name, callback, scope); + }, + addShortcut: function (pattern, desc, cmdFunc, scope) { + this.shortcuts.add(pattern, desc, cmdFunc, scope); + }, + execCommand: function (cmd, ui, value, args) { + return this.editorCommands.execCommand(cmd, ui, value, args); + }, + queryCommandState: function (cmd) { + return this.editorCommands.queryCommandState(cmd); + }, + queryCommandValue: function (cmd) { + return this.editorCommands.queryCommandValue(cmd); + }, + queryCommandSupported: function (cmd) { + return this.editorCommands.queryCommandSupported(cmd); + }, + show: function () { + var self = this; + if (self.hidden) { + self.hidden = false; + if (self.inline) { + self.getBody().contentEditable = true; + } else { + DOM$7.show(self.getContainer()); + DOM$7.hide(self.id); + } + self.load(); + self.fire('show'); + } + }, + hide: function () { + var self = this, doc = self.getDoc(); + if (!self.hidden) { + if (ie$2 && doc && !self.inline) { + doc.execCommand('SelectAll'); + } + self.save(); + if (self.inline) { + self.getBody().contentEditable = false; + if (self === self.editorManager.focusedEditor) { + self.editorManager.focusedEditor = null; + } + } else { + DOM$7.hide(self.getContainer()); + DOM$7.setStyle(self.id, 'display', self.orgDisplay); + } + self.hidden = true; + self.fire('hide'); + } + }, + isHidden: function () { + return !!this.hidden; + }, + setProgressState: function (state, time) { + this.fire('ProgressState', { + state: state, + time: time + }); + }, + load: function (args) { + var self = this; + var elm = self.getElement(), html; + if (self.removed) { + return ''; + } + if (elm) { + args = args || {}; + args.load = true; + html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args); + args.element = elm; + if (!args.no_events) { + self.fire('LoadContent', args); + } + args.element = elm = null; + return html; + } + }, + save: function (args) { + var self = this; + var elm = self.getElement(), html, form; + if (!elm || !self.initialized || self.removed) { + return; + } + args = args || {}; + args.save = true; + args.element = elm; + html = args.content = self.getContent(args); + if (!args.no_events) { + self.fire('SaveContent', args); + } + if (args.format === 'raw') { + self.fire('RawSaveContent', args); + } + html = args.content; + if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) { + if (!self.inline) { + elm.innerHTML = html; + } + if (form = DOM$7.getParent(self.id, 'form')) { + each$22(form.elements, function (elm) { + if (elm.name === self.id) { + elm.value = html; + return false; + } + }); + } + } else { + elm.value = html; + } + args.element = elm = null; + if (args.set_dirty !== false) { + self.setDirty(false); + } + return html; + }, + setContent: function (content, args) { + return setContent$1(this, content, args); + }, + getContent: function (args) { + return getContent$1(this, args); + }, + insertContent: function (content, args) { + if (args) { + content = extend$4({ content: content }, args); + } + this.execCommand('mceInsertContent', false, content); + }, + isDirty: function () { + return !this.isNotDirty; + }, + setDirty: function (state) { + var oldState = !this.isNotDirty; + this.isNotDirty = !state; + if (state && state !== oldState) { + this.fire('dirty'); + } + }, + setMode: function (mode) { + $_7uzwj846je5o2qmw.setMode(this, mode); + }, + getContainer: function () { + var self = this; + if (!self.container) { + self.container = DOM$7.get(self.editorContainer || self.id + '_parent'); + } + return self.container; + }, + getContentAreaContainer: function () { + return this.contentAreaContainer; + }, + getElement: function () { + if (!this.targetElm) { + this.targetElm = DOM$7.get(this.id); + } + return this.targetElm; + }, + getWin: function () { + var self = this; + var elm; + if (!self.contentWindow) { + elm = self.iframeElement; + if (elm) { + self.contentWindow = elm.contentWindow; + } + } + return self.contentWindow; + }, + getDoc: function () { + var self = this; + var win; + if (!self.contentDocument) { + win = self.getWin(); + if (win) { + self.contentDocument = win.document; + } + } + return self.contentDocument; + }, + getBody: function () { + var doc = this.getDoc(); + return this.bodyElement || (doc ? doc.body : null); + }, + convertURL: function (url, name, elm) { + var self = this, settings = self.settings; + if (settings.urlconverter_callback) { + return self.execCallback('urlconverter_callback', url, elm, true, name); + } + if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) { + return url; + } + if (settings.relative_urls) { + return self.documentBaseURI.toRelative(url); + } + url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host); + return url; + }, + addVisual: function (elm) { + var self = this; + var settings = self.settings; + var dom = self.dom; + var cls; + elm = elm || self.getBody(); + if (self.hasVisual === undefined) { + self.hasVisual = settings.visual; + } + each$22(dom.select('table,a', elm), function (elm) { + var value; + switch (elm.nodeName) { + case 'TABLE': + cls = settings.visual_table_class || 'mce-item-table'; + value = dom.getAttrib(elm, 'border'); + if ((!value || value === '0') && self.hasVisual) { + dom.addClass(elm, cls); + } else { + dom.removeClass(elm, cls); + } + return; + case 'A': + if (!dom.getAttrib(elm, 'href', false)) { + value = dom.getAttrib(elm, 'name') || elm.id; + cls = settings.visual_anchor_class || 'mce-item-anchor'; + if (value && self.hasVisual) { + dom.addClass(elm, cls); + } else { + dom.removeClass(elm, cls); + } + } + return; + } + }); + self.fire('VisualAid', { + element: elm, + hasVisual: self.hasVisual + }); + }, + remove: function () { + remove$5(this); + }, + destroy: function (automatic) { + destroy(this, automatic); + }, + uploadImages: function (callback) { + return this.editorUpload.uploadImages(callback); + }, + _scanForImages: function () { + return this.editorUpload.scanForImages(); + } + }; + extend$4(Editor.prototype, EditorObservable$1); + + var isEditorUIElement = function (elm) { + return elm.className.toString().indexOf('mce-') !== -1; + }; + var $_97d4iv77je5o2r4x = { isEditorUIElement: isEditorUIElement }; + + var isManualNodeChange = function (e) { + return e.type === 'nodechange' && e.selectionChange; + }; + var registerPageMouseUp = function (editor, throttledStore) { + var mouseUpPage = function () { + throttledStore.throttle(); + }; + DOMUtils.DOM.bind(document, 'mouseup', mouseUpPage); + editor.on('remove', function () { + DOMUtils.DOM.unbind(document, 'mouseup', mouseUpPage); + }); + }; + var registerFocusOut = function (editor) { + editor.on('focusout', function () { + $_fnd7h33zje5o2qly.store(editor); + }); + }; + var registerMouseUp = function (editor, throttledStore) { + editor.on('mouseup touchend', function (e) { + throttledStore.throttle(); + }); + }; + var registerEditorEvents = function (editor, throttledStore) { + var browser = $_2hq237mje5o2pvu.detect().browser; + if (browser.isIE() || browser.isEdge()) { + registerFocusOut(editor); + } else { + registerMouseUp(editor, throttledStore); + } + editor.on('keyup nodechange', function (e) { + if (!isManualNodeChange(e)) { + $_fnd7h33zje5o2qly.store(editor); + } + }); + }; + var register$3 = function (editor) { + var throttledStore = $_7qjijn58je5o2qsg.first(function () { + $_fnd7h33zje5o2qly.store(editor); + }, 0); + if (editor.inline) { + registerPageMouseUp(editor, throttledStore); + } + editor.on('init', function () { + registerEditorEvents(editor, throttledStore); + }); + editor.on('remove', function () { + throttledStore.cancel(); + }); + }; + var $_eam19v78je5o2r4y = { register: register$3 }; + + var documentFocusInHandler; + var DOM$8 = DOMUtils.DOM; + var isEditorUIElement$1 = function (elm) { + return $_97d4iv77je5o2r4x.isEditorUIElement(elm); + }; + var isUIElement = function (editor, elm) { + var customSelector = editor ? editor.settings.custom_ui_selector : ''; + var parent = DOM$8.getParent(elm, function (elm) { + return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false); + }); + return parent !== null; + }; + var getActiveElement = function () { + try { + return document.activeElement; + } catch (ex) { + return document.body; + } + }; + var registerEvents = function (editorManager, e) { + var editor = e.editor; + $_eam19v78je5o2r4y.register(editor); + editor.on('focusin', function () { + var self = this; + var focusedEditor = editorManager.focusedEditor; + if (focusedEditor !== self) { + if (focusedEditor) { + focusedEditor.fire('blur', { focusedEditor: self }); + } + editorManager.setActive(self); + editorManager.focusedEditor = self; + self.fire('focus', { blurredEditor: focusedEditor }); + self.focus(true); + } + }); + editor.on('focusout', function () { + var self = this; + $_db41wogje5o2ps3.setEditorTimeout(self, function () { + var focusedEditor = editorManager.focusedEditor; + if (!isUIElement(self, getActiveElement()) && focusedEditor === self) { + self.fire('blur', { focusedEditor: null }); + editorManager.focusedEditor = null; + } + }); + }); + if (!documentFocusInHandler) { + documentFocusInHandler = function (e) { + var activeEditor = editorManager.activeEditor; + var target; + target = e.target; + if (activeEditor && target.ownerDocument === document) { + if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) { + activeEditor.fire('blur', { focusedEditor: null }); + editorManager.focusedEditor = null; + } + } + }; + DOM$8.bind(document, 'focusin', documentFocusInHandler); + } + }; + var unregisterDocumentEvents = function (editorManager, e) { + if (editorManager.focusedEditor === e.editor) { + editorManager.focusedEditor = null; + } + if (!editorManager.activeEditor) { + DOM$8.unbind(document, 'focusin', documentFocusInHandler); + documentFocusInHandler = null; + } + }; + var setup$11 = function (editorManager) { + editorManager.on('AddEditor', $_enfhkv6je5o2ply.curry(registerEvents, editorManager)); + editorManager.on('RemoveEditor', $_enfhkv6je5o2ply.curry(unregisterDocumentEvents, editorManager)); + }; + var $_cuv7pv76je5o2r4u = { + setup: setup$11, + isEditorUIElement: isEditorUIElement$1, + isUIElement: isUIElement + }; + + var data = {}; + var code = 'en'; + var $_34fkt779je5o2r5d = { + setCode: function (newCode) { + if (newCode) { + code = newCode; + this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false; + } + }, + getCode: function () { + return code; + }, + rtl: false, + add: function (code, items) { + var langData = data[code]; + if (!langData) { + data[code] = langData = {}; + } + for (var name_1 in items) { + langData[name_1] = items[name_1]; + } + this.setCode(code); + }, + translate: function (text) { + var langData = data[code] || {}; + var toString = function (obj) { + if ($_a5gegtjje5o2pum.is(obj, 'function')) { + return Object.prototype.toString.call(obj); + } + return !isEmpty(obj) ? '' + obj : ''; + }; + var isEmpty = function (text) { + return text === '' || text === null || $_a5gegtjje5o2pum.is(text, 'undefined'); + }; + var getLangData = function (text) { + text = toString(text); + return $_a5gegtjje5o2pum.hasOwn(langData, text) ? toString(langData[text]) : text; + }; + if (isEmpty(text)) { + return ''; + } + if ($_a5gegtjje5o2pum.is(text, 'object') && $_a5gegtjje5o2pum.hasOwn(text, 'raw')) { + return toString(text.raw); + } + if ($_a5gegtjje5o2pum.is(text, 'array')) { + var values_1 = text.slice(1); + text = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) { + return $_a5gegtjje5o2pum.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1; + }); + } + return getLangData(text).replace(/{context:\w+}$/, ''); + }, + data: data + }; + + var DOM$9 = DOMUtils.DOM; + var explode$5 = $_a5gegtjje5o2pum.explode; + var each$23 = $_a5gegtjje5o2pum.each; + var extend$5 = $_a5gegtjje5o2pum.extend; + var instanceCounter = 0; + var beforeUnloadDelegate; + var EditorManager; + var boundGlobalEvents = false; + var legacyEditors = []; + var editors = []; + var isValidLegacyKey = function (id) { + return id !== 'length'; + }; + var globalEventDelegate = function (e) { + each$23(EditorManager.get(), function (editor) { + if (e.type === 'scroll') { + editor.fire('ScrollWindow', e); + } else { + editor.fire('ResizeWindow', e); + } + }); + }; + var toggleGlobalEvents = function (state) { + if (state !== boundGlobalEvents) { + if (state) { + DomQuery(window).on('resize scroll', globalEventDelegate); + } else { + DomQuery(window).off('resize scroll', globalEventDelegate); + } + boundGlobalEvents = state; + } + }; + var removeEditorFromList = function (targetEditor) { + var oldEditors = editors; + delete legacyEditors[targetEditor.id]; + for (var i = 0; i < legacyEditors.length; i++) { + if (legacyEditors[i] === targetEditor) { + legacyEditors.splice(i, 1); + break; + } + } + editors = $_bwcteb4je5o2pl4.filter(editors, function (editor) { + return targetEditor !== editor; + }); + if (EditorManager.activeEditor === targetEditor) { + EditorManager.activeEditor = editors.length > 0 ? editors[0] : null; + } + if (EditorManager.focusedEditor === targetEditor) { + EditorManager.focusedEditor = null; + } + return oldEditors.length !== editors.length; + }; + var purgeDestroyedEditor = function (editor) { + if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) { + removeEditorFromList(editor); + editor.unbindAllNativeEvents(); + editor.destroy(true); + editor.removed = true; + editor = null; + } + return editor; + }; + EditorManager = { + defaultSettings: {}, + $: DomQuery, + majorVersion: '4', + minorVersion: '7.9', + releaseDate: '2018-02-27', + editors: legacyEditors, + i18n: $_34fkt779je5o2r5d, + activeEditor: null, + settings: {}, + setup: function () { + var self = this; + var baseURL, documentBaseURL, suffix = '', preInit, src; + documentBaseURL = URI.getDocumentBaseUrl(document.location); + if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) { + documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(documentBaseURL)) { + documentBaseURL += '/'; + } + } + preInit = window.tinymce || window.tinyMCEPreInit; + if (preInit) { + baseURL = preInit.base || preInit.baseURL; + suffix = preInit.suffix; + } else { + var scripts = document.getElementsByTagName('script'); + for (var i = 0; i < scripts.length; i++) { + src = scripts[i].src; + var srcScript = src.substring(src.lastIndexOf('/')); + if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) { + if (srcScript.indexOf('.min') !== -1) { + suffix = '.min'; + } + baseURL = src.substring(0, src.lastIndexOf('/')); + break; + } + } + if (!baseURL && document.currentScript) { + src = document.currentScript.src; + if (src.indexOf('.min') !== -1) { + suffix = '.min'; + } + baseURL = src.substring(0, src.lastIndexOf('/')); + } + } + self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL); + self.documentBaseURL = documentBaseURL; + self.baseURI = new URI(self.baseURL); + self.suffix = suffix; + $_cuv7pv76je5o2r4u.setup(self); + }, + overrideDefaults: function (defaultSettings) { + var baseUrl, suffix; + baseUrl = defaultSettings.base_url; + if (baseUrl) { + this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, '')); + this.baseURI = new URI(this.baseURL); + } + suffix = defaultSettings.suffix; + if (defaultSettings.suffix) { + this.suffix = suffix; + } + this.defaultSettings = defaultSettings; + var pluginBaseUrls = defaultSettings.plugin_base_urls; + for (var name_1 in pluginBaseUrls) { + AddOnManager.PluginManager.urls[name_1] = pluginBaseUrls[name_1]; + } + }, + init: function (settings) { + var self = this; + var result, invalidInlineTargets; + invalidInlineTargets = $_a5gegtjje5o2pum.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' '); + var isInvalidInlineTarget = function (settings, elm) { + return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets; + }; + var createId = function (elm) { + var id = elm.id; + if (!id) { + id = elm.name; + if (id && !DOM$9.get(id)) { + id = elm.name; + } else { + id = DOM$9.uniqueId(); + } + elm.setAttribute('id', id); + } + return id; + }; + var execCallback = function (name) { + var callback = settings[name]; + if (!callback) { + return; + } + return callback.apply(self, Array.prototype.slice.call(arguments, 2)); + }; + var hasClass = function (elm, className) { + return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className); + }; + var findTargets = function (settings) { + var l, targets = []; + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11) { + $_axrd1j4hje5o2qor.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/'); + return []; + } + if (settings.types) { + each$23(settings.types, function (type) { + targets = targets.concat(DOM$9.select(type.selector)); + }); + return targets; + } else if (settings.selector) { + return DOM$9.select(settings.selector); + } else if (settings.target) { + return [settings.target]; + } + switch (settings.mode) { + case 'exact': + l = settings.elements || ''; + if (l.length > 0) { + each$23(explode$5(l), function (id) { + var elm; + if (elm = DOM$9.get(id)) { + targets.push(elm); + } else { + each$23(document.forms, function (f) { + each$23(f.elements, function (e) { + if (e.name === id) { + id = 'mce_editor_' + instanceCounter++; + DOM$9.setAttrib(e, 'id', id); + targets.push(e); + } + }); + }); + } + }); + } + break; + case 'textareas': + case 'specific_textareas': + each$23(DOM$9.select('textarea'), function (elm) { + if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) { + return; + } + if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) { + targets.push(elm); + } + }); + break; + } + return targets; + }; + var provideResults = function (editors) { + result = editors; + }; + var initEditors = function () { + var initCount = 0; + var editors = []; + var targets; + var createEditor = function (id, settings, targetElm) { + var editor = new Editor(id, settings, self); + editors.push(editor); + editor.on('init', function () { + if (++initCount === targets.length) { + provideResults(editors); + } + }); + editor.targetElm = editor.targetElm || targetElm; + editor.render(); + }; + DOM$9.unbind(window, 'ready', initEditors); + execCallback('onpageload'); + targets = DomQuery.unique(findTargets(settings)); + if (settings.types) { + each$23(settings.types, function (type) { + $_a5gegtjje5o2pum.each(targets, function (elm) { + if (DOM$9.is(elm, type.selector)) { + createEditor(createId(elm), extend$5({}, settings, type), elm); + return false; + } + return true; + }); + }); + return; + } + $_a5gegtjje5o2pum.each(targets, function (elm) { + purgeDestroyedEditor(self.get(elm.id)); + }); + targets = $_a5gegtjje5o2pum.grep(targets, function (elm) { + return !self.get(elm.id); + }); + if (targets.length === 0) { + provideResults([]); + } else { + each$23(targets, function (elm) { + if (isInvalidInlineTarget(settings, elm)) { + $_axrd1j4hje5o2qor.initError('Could not initialize inline editor on invalid inline target element', elm); + } else { + createEditor(createId(elm), settings, elm); + } + }); + } + }; + self.settings = settings; + DOM$9.bind(window, 'ready', initEditors); + return new promiseObj(function (resolve) { + if (result) { + resolve(result); + } else { + provideResults = function (editors) { + resolve(editors); + }; + } + }); + }, + get: function (id) { + if (arguments.length === 0) { + return editors.slice(0); + } else if ($_be3q8w12je5o2pxj.isString(id)) { + return $_bwcteb4je5o2pl4.find(editors, function (editor) { + return editor.id === id; + }).getOr(null); + } else if ($_be3q8w12je5o2pxj.isNumber(id)) { + return editors[id] ? editors[id] : null; + } else { + return null; + } + }, + add: function (editor) { + var self = this; + var existingEditor; + existingEditor = legacyEditors[editor.id]; + if (existingEditor === editor) { + return editor; + } + if (self.get(editor.id) === null) { + if (isValidLegacyKey(editor.id)) { + legacyEditors[editor.id] = editor; + } + legacyEditors.push(editor); + editors.push(editor); + } + toggleGlobalEvents(true); + self.activeEditor = editor; + self.fire('AddEditor', { editor: editor }); + if (!beforeUnloadDelegate) { + beforeUnloadDelegate = function () { + self.fire('BeforeUnload'); + }; + DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate); + } + return editor; + }, + createEditor: function (id, settings) { + return this.add(new Editor(id, settings, this)); + }, + remove: function (selector) { + var self = this; + var i, editor; + if (!selector) { + for (i = editors.length - 1; i >= 0; i--) { + self.remove(editors[i]); + } + return; + } + if ($_be3q8w12je5o2pxj.isString(selector)) { + selector = selector.selector || selector; + each$23(DOM$9.select(selector), function (elm) { + editor = self.get(elm.id); + if (editor) { + self.remove(editor); + } + }); + return; + } + editor = selector; + if ($_be3q8w12je5o2pxj.isNull(self.get(editor.id))) { + return null; + } + if (removeEditorFromList(editor)) { + self.fire('RemoveEditor', { editor: editor }); + } + if (editors.length === 0) { + DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate); + } + editor.remove(); + toggleGlobalEvents(editors.length > 0); + return editor; + }, + execCommand: function (cmd, ui, value) { + var self = this, editor = self.get(value); + switch (cmd) { + case 'mceAddEditor': + if (!self.get(value)) { + new Editor(value, self.settings, self).render(); + } + return true; + case 'mceRemoveEditor': + if (editor) { + editor.remove(); + } + return true; + case 'mceToggleEditor': + if (!editor) { + self.execCommand('mceAddEditor', 0, value); + return true; + } + if (editor.isHidden()) { + editor.show(); + } else { + editor.hide(); + } + return true; + } + if (self.activeEditor) { + return self.activeEditor.execCommand(cmd, ui, value); + } + return false; + }, + triggerSave: function () { + each$23(editors, function (editor) { + editor.save(); + }); + }, + addI18n: function (code, items) { + $_34fkt779je5o2r5d.add(code, items); + }, + translate: function (text) { + return $_34fkt779je5o2r5d.translate(text); + }, + setActive: function (editor) { + var activeEditor = this.activeEditor; + if (this.activeEditor !== editor) { + if (activeEditor) { + activeEditor.fire('deactivate', { relatedTarget: editor }); + } + editor.fire('activate', { relatedTarget: activeEditor }); + } + this.activeEditor = editor; + } + }; + extend$5(EditorManager, $_8mfz0u44je5o2qmp); + EditorManager.setup(); + var EditorManager$1 = EditorManager; + + function RangeUtils(dom) { + var walk = function (rng, callback) { + return $_1jk9p5lje5o2qv9.walk(dom, rng, callback); + }; + var split = $_3ksquu3nje5o2qg7.split; + var normalize = function (rng) { + return $_1t8l6x3xje5o2qlk.normalize(dom, rng).fold($_enfhkv6je5o2ply.constant(false), function (normalizedRng) { + rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset); + rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset); + return true; + }); + }; + return { + walk: walk, + split: split, + normalize: normalize + }; + } + (function (RangeUtils) { + RangeUtils.compareRanges = $_aieo7z3yje5o2qlw.isEq; + RangeUtils.getCaretRangeFromPoint = $_drs2u868je5o2qyu.fromPoint; + RangeUtils.getSelectedNode = getSelectedNode; + RangeUtils.getNode = getNode; + }(RangeUtils || (RangeUtils = {}))); + var RangeUtils$1 = RangeUtils; + + var min = Math.min; + var max = Math.max; + var round$1 = Math.round; + var relativePosition = function (rect, targetRect, rel) { + var x, y, w, h, targetW, targetH; + x = targetRect.x; + y = targetRect.y; + w = rect.w; + h = rect.h; + targetW = targetRect.w; + targetH = targetRect.h; + rel = (rel || '').split(''); + if (rel[0] === 'b') { + y += targetH; + } + if (rel[1] === 'r') { + x += targetW; + } + if (rel[0] === 'c') { + y += round$1(targetH / 2); + } + if (rel[1] === 'c') { + x += round$1(targetW / 2); + } + if (rel[3] === 'b') { + y -= h; + } + if (rel[4] === 'r') { + x -= w; + } + if (rel[3] === 'c') { + y -= round$1(h / 2); + } + if (rel[4] === 'c') { + x -= round$1(w / 2); + } + return create$2(x, y, w, h); + }; + var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) { + var pos, i; + for (i = 0; i < rels.length; i++) { + pos = relativePosition(rect, targetRect, rels[i]); + if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) { + return rels[i]; + } + } + return null; + }; + var inflate = function (rect, w, h) { + return create$2(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2); + }; + var intersect = function (rect, cropRect) { + var x1, y1, x2, y2; + x1 = max(rect.x, cropRect.x); + y1 = max(rect.y, cropRect.y); + x2 = min(rect.x + rect.w, cropRect.x + cropRect.w); + y2 = min(rect.y + rect.h, cropRect.y + cropRect.h); + if (x2 - x1 < 0 || y2 - y1 < 0) { + return null; + } + return create$2(x1, y1, x2 - x1, y2 - y1); + }; + var clamp$1 = function (rect, clampRect, fixedSize) { + var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2; + x1 = rect.x; + y1 = rect.y; + x2 = rect.x + rect.w; + y2 = rect.y + rect.h; + cx2 = clampRect.x + clampRect.w; + cy2 = clampRect.y + clampRect.h; + underflowX1 = max(0, clampRect.x - x1); + underflowY1 = max(0, clampRect.y - y1); + overflowX2 = max(0, x2 - cx2); + overflowY2 = max(0, y2 - cy2); + x1 += underflowX1; + y1 += underflowY1; + if (fixedSize) { + x2 += underflowX1; + y2 += underflowY1; + x1 -= overflowX2; + y1 -= overflowY2; + } + x2 -= overflowX2; + y2 -= overflowY2; + return create$2(x1, y1, x2 - x1, y2 - y1); + }; + var create$2 = function (x, y, w, h) { + return { + x: x, + y: y, + w: w, + h: h + }; + }; + var fromClientRect = function (clientRect) { + return create$2(clientRect.left, clientRect.top, clientRect.width, clientRect.height); + }; + var $_2r1euc7bje5o2r5k = { + inflate: inflate, + relativePosition: relativePosition, + findBestRelativePosition: findBestRelativePosition, + intersect: intersect, + clamp: clamp$1, + create: create$2, + fromClientRect: fromClientRect + }; + + var types = {}; + var $_cxa5dr7cje5o2r5q = { + add: function (type, typeClass) { + types[type.toLowerCase()] = typeClass; + }, + has: function (type) { + return !!types[type.toLowerCase()]; + }, + get: function (type) { + var lctype = type.toLowerCase(); + var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null; + if (controlType === null) { + throw new Error('Could not find module for type: ' + type); + } + return controlType; + }, + create: function (type, settings) { + var ControlType; + if (typeof type === 'string') { + settings = settings || {}; + settings.type = type; + } else { + settings = type; + type = settings.type; + } + type = type.toLowerCase(); + ControlType = types[type]; + if (!ControlType) { + throw new Error('Could not find control by type: ' + type); + } + ControlType = new ControlType(settings); + ControlType.type = type; + return ControlType; + } + }; + + var each$24 = $_a5gegtjje5o2pum.each; + var extend$6 = $_a5gegtjje5o2pum.extend; + var extendClass; + var initializing; + var Class = function () { + }; + Class.extend = extendClass = function (prop) { + var self = this; + var _super = self.prototype; + var prototype, name, member; + var Class = function () { + var i, mixins, mixin; + var self = this; + if (!initializing) { + if (self.init) { + self.init.apply(self, arguments); + } + mixins = self.Mixins; + if (mixins) { + i = mixins.length; + while (i--) { + mixin = mixins[i]; + if (mixin.init) { + mixin.init.apply(self, arguments); + } + } + } + } + }; + var dummy = function () { + return this; + }; + var createMethod = function (name, fn) { + return function () { + var self = this; + var tmp = self._super; + var ret; + self._super = _super[name]; + ret = fn.apply(self, arguments); + self._super = tmp; + return ret; + }; + }; + initializing = true; + prototype = new self(); + initializing = false; + if (prop.Mixins) { + each$24(prop.Mixins, function (mixin) { + for (var name_1 in mixin) { + if (name_1 !== 'init') { + prop[name_1] = mixin[name_1]; + } + } + }); + if (_super.Mixins) { + prop.Mixins = _super.Mixins.concat(prop.Mixins); + } + } + if (prop.Methods) { + each$24(prop.Methods.split(','), function (name) { + prop[name] = dummy; + }); + } + if (prop.Properties) { + each$24(prop.Properties.split(','), function (name) { + var fieldName = '_' + name; + prop[name] = function (value) { + var self = this; + if (value !== undefined) { + self[fieldName] = value; + return self; + } + return self[fieldName]; + }; + }); + } + if (prop.Statics) { + each$24(prop.Statics, function (func, name) { + Class[name] = func; + }); + } + if (prop.Defaults && _super.Defaults) { + prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults); + } + for (name in prop) { + member = prop[name]; + if (typeof member === 'function' && _super[name]) { + prototype[name] = createMethod(name, member); + } else { + prototype[name] = member; + } + } + Class.prototype = prototype; + Class.constructor = Class; + Class.extend = extendClass; + return Class; + }; + + var min$1 = Math.min; + var max$1 = Math.max; + var round$2 = Math.round; + var Color = function (value) { + var self = {}; + var r = 0, g = 0, b = 0; + var rgb2hsv = function (r, g, b) { + var h, s, v, d, minRGB, maxRGB; + h = 0; + s = 0; + v = 0; + r = r / 255; + g = g / 255; + b = b / 255; + minRGB = min$1(r, min$1(g, b)); + maxRGB = max$1(r, max$1(g, b)); + if (minRGB === maxRGB) { + v = minRGB; + return { + h: 0, + s: 0, + v: v * 100 + }; + } + d = r === minRGB ? g - b : b === minRGB ? r - g : b - r; + h = r === minRGB ? 3 : b === minRGB ? 1 : 5; + h = 60 * (h - d / (maxRGB - minRGB)); + s = (maxRGB - minRGB) / maxRGB; + v = maxRGB; + return { + h: round$2(h), + s: round$2(s * 100), + v: round$2(v * 100) + }; + }; + var hsvToRgb = function (hue, saturation, brightness) { + var side, chroma, x, match; + hue = (parseInt(hue, 10) || 0) % 360; + saturation = parseInt(saturation, 10) / 100; + brightness = parseInt(brightness, 10) / 100; + saturation = max$1(0, min$1(saturation, 1)); + brightness = max$1(0, min$1(brightness, 1)); + if (saturation === 0) { + r = g = b = round$2(255 * brightness); + return; + } + side = hue / 60; + chroma = brightness * saturation; + x = chroma * (1 - Math.abs(side % 2 - 1)); + match = brightness - chroma; + switch (Math.floor(side)) { + case 0: + r = chroma; + g = x; + b = 0; + break; + case 1: + r = x; + g = chroma; + b = 0; + break; + case 2: + r = 0; + g = chroma; + b = x; + break; + case 3: + r = 0; + g = x; + b = chroma; + break; + case 4: + r = x; + g = 0; + b = chroma; + break; + case 5: + r = chroma; + g = 0; + b = x; + break; + default: + r = g = b = 0; + } + r = round$2(255 * (r + match)); + g = round$2(255 * (g + match)); + b = round$2(255 * (b + match)); + }; + var toHex = function () { + var hex = function (val) { + val = parseInt(val, 10).toString(16); + return val.length > 1 ? val : '0' + val; + }; + return '#' + hex(r) + hex(g) + hex(b); + }; + var toRgb = function () { + return { + r: r, + g: g, + b: b + }; + }; + var toHsv = function () { + return rgb2hsv(r, g, b); + }; + var parse = function (value) { + var matches; + if (typeof value === 'object') { + if ('r' in value) { + r = value.r; + g = value.g; + b = value.b; + } else if ('v' in value) { + hsvToRgb(value.h, value.s, value.v); + } + } else { + if (matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value)) { + r = parseInt(matches[1], 10); + g = parseInt(matches[2], 10); + b = parseInt(matches[3], 10); + } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) { + r = parseInt(matches[1], 16); + g = parseInt(matches[2], 16); + b = parseInt(matches[3], 16); + } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) { + r = parseInt(matches[1] + matches[1], 16); + g = parseInt(matches[2] + matches[2], 16); + b = parseInt(matches[3] + matches[3], 16); + } + } + r = r < 0 ? 0 : r > 255 ? 255 : r; + g = g < 0 ? 0 : g > 255 ? 255 : g; + b = b < 0 ? 0 : b > 255 ? 255 : b; + return self; + }; + if (value) { + parse(value); + } + self.toRgb = toRgb; + self.toHsv = toHsv; + self.toHex = toHex; + self.parse = parse; + return self; + }; + + var serialize = function (o, quote) { + var i, v, t, name; + quote = quote || '"'; + if (o === null) { + return 'null'; + } + t = typeof o; + if (t === 'string') { + v = '\bb\tt\nn\ff\rr""\'\'\\\\'; + return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function (a, b) { + if (quote === '"' && a === '\'') { + return a; + } + i = v.indexOf(b); + if (i + 1) { + return '\\' + v.charAt(i + 1); + } + a = b.charCodeAt().toString(16); + return '\\u' + '0000'.substring(a.length) + a; + }) + quote; + } + if (t === 'object') { + if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') { + for (i = 0, v = '['; i < o.length; i++) { + v += (i > 0 ? ',' : '') + serialize(o[i], quote); + } + return v + ']'; + } + v = '{'; + for (name in o) { + if (o.hasOwnProperty(name)) { + v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : ''; + } + } + return v + '}'; + } + return '' + o; + }; + var $_6tjbfu7fje5o2r61 = { + serialize: serialize, + parse: function (text) { + try { + return JSON.parse(text); + } catch (ex) { + } + } + }; + + var $_3nz9gz7gje5o2r63 = { + callbacks: {}, + count: 0, + send: function (settings) { + var self = this, dom = DOMUtils.DOM, count = settings.count !== undefined ? settings.count : self.count; + var id = 'tinymce_jsonp_' + count; + self.callbacks[count] = function (json) { + dom.remove(id); + delete self.callbacks[count]; + settings.callback(json); + }; + dom.add(dom.doc.body, 'script', { + id: id, + src: settings.url, + type: 'text/javascript' + }); + self.count++; + } + }; + + var XHR = { + send: function (settings) { + var xhr, count = 0; + var ready = function () { + if (!settings.async || xhr.readyState === 4 || count++ > 10000) { + if (settings.success && count < 10000 && xhr.status === 200) { + settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings); + } else if (settings.error) { + settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings); + } + xhr = null; + } else { + setTimeout(ready, 10); + } + }; + settings.scope = settings.scope || this; + settings.success_scope = settings.success_scope || settings.scope; + settings.error_scope = settings.error_scope || settings.scope; + settings.async = settings.async === false ? false : true; + settings.data = settings.data || ''; + XHR.fire('beforeInitialize', { settings: settings }); + xhr = new XMLHttpRequest(); + if (xhr) { + if (xhr.overrideMimeType) { + xhr.overrideMimeType(settings.content_type); + } + xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async); + if (settings.crossDomain) { + xhr.withCredentials = true; + } + if (settings.content_type) { + xhr.setRequestHeader('Content-Type', settings.content_type); + } + if (settings.requestheaders) { + $_a5gegtjje5o2pum.each(settings.requestheaders, function (header) { + xhr.setRequestHeader(header.key, header.value); + }); + } + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr = XHR.fire('beforeSend', { + xhr: xhr, + settings: settings + }).xhr; + xhr.send(settings.data); + if (!settings.async) { + return ready(); + } + setTimeout(ready, 10); + } + } + }; + $_a5gegtjje5o2pum.extend(XHR, $_8mfz0u44je5o2qmp); + + var extend$7 = $_a5gegtjje5o2pum.extend; + var JSONRequest = function (settings) { + this.settings = extend$7({}, settings); + this.count = 0; + }; + JSONRequest.sendRPC = function (o) { + return new JSONRequest().send(o); + }; + JSONRequest.prototype = { + send: function (args) { + var ecb = args.error, scb = args.success; + args = extend$7(this.settings, args); + args.success = function (c, x) { + c = $_6tjbfu7fje5o2r61.parse(c); + if (typeof c === 'undefined') { + c = { error: 'JSON Parse error.' }; + } + if (c.error) { + ecb.call(args.error_scope || args.scope, c.error, x); + } else { + scb.call(args.success_scope || args.scope, c.result); + } + }; + args.error = function (ty, x) { + if (ecb) { + ecb.call(args.error_scope || args.scope, ty, x); + } + }; + args.data = $_6tjbfu7fje5o2r61.serialize({ + id: args.id || 'c' + this.count++, + method: args.method, + params: args.params + }); + args.content_type = 'application/json'; + XHR.send(args); + } + }; + + var localStorage = window.localStorage; + + var tinymce = EditorManager$1; + var publicApi = { + geom: { Rect: $_2r1euc7bje5o2r5k }, + util: { + Promise: promiseObj, + Delay: $_db41wogje5o2ps3, + Tools: $_a5gegtjje5o2pum, + VK: $_99mhlk59je5o2qss, + URI: URI, + Class: Class, + EventDispatcher: Dispatcher, + Observable: $_8mfz0u44je5o2qmp, + I18n: $_34fkt779je5o2r5d, + XHR: XHR, + JSON: $_6tjbfu7fje5o2r61, + JSONRequest: JSONRequest, + JSONP: $_3nz9gz7gje5o2r63, + LocalStorage: localStorage, + Color: Color + }, + dom: { + EventUtils: EventUtils, + Sizzle: Sizzle, + DomQuery: DomQuery, + TreeWalker: TreeWalker, + DOMUtils: DOMUtils, + ScriptLoader: ScriptLoader, + RangeUtils: RangeUtils$1, + Serializer: DomSerializer$1, + ControlSelection: ControlSelection, + BookmarkManager: BookmarkManager$1, + Selection: Selection$1, + Event: EventUtils.Event + }, + html: { + Styles: Styles, + Entities: $_fzh4ld1rje5o2q0t, + Node: Node$2, + Schema: Schema, + SaxParser: SaxParser$1, + DomParser: DomParser, + Writer: Writer, + Serializer: HtmlSerializer + }, + ui: { Factory: $_cxa5dr7cje5o2r5q }, + Env: $_9bd8pn9je5o2pp2, + AddOnManager: AddOnManager, + Formatter: Formatter, + UndoManager: UndoManager, + EditorCommands: EditorCommands, + WindowManager: WindowManager, + NotificationManager: NotificationManager, + EditorObservable: EditorObservable$1, + Shortcuts: Shortcuts, + Editor: Editor, + FocusManager: $_97d4iv77je5o2r4x, + EditorManager: EditorManager$1, + DOM: DOMUtils.DOM, + ScriptLoader: ScriptLoader.ScriptLoader, + PluginManager: AddOnManager.PluginManager, + ThemeManager: AddOnManager.ThemeManager, + trim: $_a5gegtjje5o2pum.trim, + isArray: $_a5gegtjje5o2pum.isArray, + is: $_a5gegtjje5o2pum.is, + toArray: $_a5gegtjje5o2pum.toArray, + makeMap: $_a5gegtjje5o2pum.makeMap, + each: $_a5gegtjje5o2pum.each, + map: $_a5gegtjje5o2pum.map, + grep: $_a5gegtjje5o2pum.grep, + inArray: $_a5gegtjje5o2pum.inArray, + extend: $_a5gegtjje5o2pum.extend, + create: $_a5gegtjje5o2pum.create, + walk: $_a5gegtjje5o2pum.walk, + createNS: $_a5gegtjje5o2pum.createNS, + resolve: $_a5gegtjje5o2pum.resolve, + explode: $_a5gegtjje5o2pum.explode, + _addCacheSuffix: $_a5gegtjje5o2pum._addCacheSuffix, + isOpera: $_9bd8pn9je5o2pp2.opera, + isWebKit: $_9bd8pn9je5o2pp2.webkit, + isIE: $_9bd8pn9je5o2pp2.ie, + isGecko: $_9bd8pn9je5o2pp2.gecko, + isMac: $_9bd8pn9je5o2pp2.mac + }; + tinymce = $_a5gegtjje5o2pum.extend(tinymce, publicApi); + var Tinymce = tinymce; + + var exportToModuleLoaders = function (tinymce) { + if (typeof module === 'object') { + try { + module.exports = tinymce; + } catch (_) { + } + } + }; + var exportToWindowGlobal = function (tinymce) { + window.tinymce = tinymce; + window.tinyMCE = tinymce; + }; + exportToWindowGlobal(Tinymce); + exportToModuleLoaders(Tinymce); + +}()); +})(); + + + diff --git a/public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js.gz b/public/assets/tinymce-1044caa1178bd6d7aa1cd3d7da31070cd443b4c3e78d6055867520c0e56114b5.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..6473b90107a3836861e0efc4a2f651ba3812b1c1 GIT binary patch literal 187781 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 WgQnM}0f!js-~Rzlne%4?pbY>?js*Dt literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js b/public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js new file mode 100644 index 000000000..188a80ed0 --- /dev/null +++ b/public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js @@ -0,0 +1 @@ +!function(){var e,t,n,i,r,a=[];r="undefined"!=typeof global?global:window,i=r.jQuery;var c=function(){return r.tinymce};i.fn.tinymce=function(e){var l,u,s,f=this,p="";if(!f.length)return f;if(!e)return c()?c().get(f[0].id):null;f.css("visibility","hidden");var d=function(){var t=[],r=0;n||(o(),n=!0),f.each(function(n,i){var a,o=i.id,l=e.oninit;o||(i.id=o=c().DOM.uniqueId()),c().get(o)||(a=c().createEditor(o,e),t.push(a),a.on("init",function(){var e,n=l;f.css("visibility",""),l&&++r==t.length&&("string"==typeof n&&(e=-1===n.indexOf(".")?null:c().resolve(n.replace(/\.\w+$/,"")),n=c().resolve(n)),n.apply(e||c(),t))}))}),i.each(t,function(e,t){t.render()})};if(r.tinymce||t||!(l=e.script_url))1===t?a.push(d):d();else{t=1,u=l.substring(0,l.lastIndexOf("/")),-1!=l.indexOf(".min")&&(p=".min"),r.tinymce=r.tinyMCEPreInit||{base:u,suffix:p},-1!=l.indexOf("gzip")&&(s=e.language||"en",l=l+(/\?/.test(l)?"&":"?")+"js=true&core=true&suffix="+escape(p)+"&themes="+escape(e.theme||"modern")+"&plugins="+escape(e.plugins||"")+"&languages="+(s||""),r.tinyMCE_GZ||(r.tinyMCE_GZ={start:function(){var t=function(e){c().ScriptLoader.markDone(c().baseURI.toAbsolute(e))};t("langs/"+s+".js"),t("themes/"+e.theme+"/theme"+p+".js"),t("themes/"+e.theme+"/langs/"+s+".js"),i.each(e.plugins.split(","),function(e,n){n&&(t("plugins/"+n+"/plugin"+p+".js"),t("plugins/"+n+"/langs/"+s+".js"))})},end:function(){}}));var v=document.createElement("script");v.type="text/javascript",v.onload=v.onreadystatechange=function(n){n=n||window.event,2===t||"load"!=n.type&&!/complete|loaded/.test(v.readyState)||(c().dom.Event.domLoaded=1,t=2,e.script_loaded&&e.script_loaded(),d(),i.each(a,function(e,t){t()}))},v.src=l,document.body.appendChild(v)}return f},i.extend(i.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in r&&(t=c().get(e.id))&&t.editorManager===c())}});var o=function(){var t=function(e){"remove"===e&&this.each(function(e,t){var n=a(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=c().get(t.id.replace(/_parent$/,""));n&&n.remove()})},n=function(e){var n,i=this;if(null!=e)t.call(i),i.each(function(t,n){var i;(i=c().get(n.id))&&i.setContent(e)});else if(i.length>0&&(n=c().get(i[0].id)))return n.getContent()},a=function(e){var t=null;return e&&e.id&&r.tinymce&&(t=c().get(e.id)),t},o=function(e){return!!(e&&e.length&&r.tinymce&&e.is(":tinymce"))},l={};i.each(["text","html","val"],function(t,r){var c=l[r]=i.fn[r],u="text"===r;i.fn[r]=function(t){var r=this;if(!o(r))return c.apply(r,arguments);if(t!==e)return n.call(r.filter(":tinymce"),t),c.apply(r.not(":tinymce"),arguments),r;var l="",s=arguments;return(u?r:r.eq(0)).each(function(e,t){var n=a(t);l+=n?u?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):c.apply(i(t),s)}),l}}),i.each(["append","prepend"],function(t,n){var r=l[n]=i.fn[n],c="prepend"===n;i.fn[n]=function(t){var n=this;return o(n)?t!==e?("string"==typeof t&&n.filter(":tinymce").each(function(e,n){var i=a(n);i&&i.setContent(c?t+i.getContent():i.getContent()+t)}),r.apply(n.not(":tinymce"),arguments),n):void 0:r.apply(n,arguments)}}),i.each(["remove","replaceWith","replaceAll","empty"],function(e,n){var r=l[n]=i.fn[n];i.fn[n]=function(){return t.call(this,n),r.apply(this,arguments)}}),l.attr=i.fn.attr,i.fn.attr=function(t,r){var c=this,u=arguments;if(!t||"value"!==t||!o(c))return l.attr.apply(c,u);if(r!==e)return n.call(c.filter(":tinymce"),r),l.attr.apply(c.not(":tinymce"),u),c;var s=c[0],f=a(s);return f?f.getContent({save:!0}):l.attr.apply(i(s),u)}}}(); diff --git a/public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js.gz b/public/assets/tinymce/jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..e39a216ee9e7c3ae284c0003949bdad3fa752467 GIT binary patch literal 1574 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 YwFZuWrsMGlZ{r{S1H;P1De4UX0Qs2zaR2}S literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/jquery.tinymce.js b/public/assets/tinymce/jquery.tinymce.js index 82c6d3bc7..827e99bed 120000 --- a/public/assets/tinymce/jquery.tinymce.js +++ b/public/assets/tinymce/jquery.tinymce.js @@ -1 +1 @@ -jquery.tinymce-694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53.js \ No newline at end of file +jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js \ No newline at end of file diff --git a/public/assets/tinymce/jquery.tinymce.js.gz b/public/assets/tinymce/jquery.tinymce.js.gz index 0cf2cc75f..8862dd3fd 120000 --- a/public/assets/tinymce/jquery.tinymce.js.gz +++ b/public/assets/tinymce/jquery.tinymce.js.gz @@ -1 +1 @@ -jquery.tinymce-694263cae681b5835f54f2daf769a3687fed58fafc839b0b46e1bca1e253cc53.js.gz \ No newline at end of file +jquery.tinymce-3422ce8301d4200dda31be9fec47f6caf03450313cfff2129dc5db90a9a8f120.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js b/public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js new file mode 100644 index 000000000..07f06359b --- /dev/null +++ b/public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},n=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.id||e.name:""},o=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},r=function(t){var r=n(t);t.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:r},onsubmit:function(n){var r,a,i=n.data.id;r=t,(e(a=i)?(o(r,a),0):(r.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))&&n.preventDefault()}})},a=function(t){t.addCommand("mceAnchor",function(){r(t)})},i=function(t){return function(e){for(var n=0;n<e.length;n++)(o=e[n]).attr("href")||!o.attr("id")&&!o.attr("name")||o.firstChild||e[n].attr("contenteditable",t);var o}},c=function(t){t.on("PreInit",function(){t.parser.addNodeFilter("a",i("false")),t.serializer.addNodeFilter("a",i(null))})},d=function(t){t.addButton("anchor",{icon:"anchor",tooltip:"Anchor",cmd:"mceAnchor",stateSelector:"a:not([href])"}),t.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",cmd:"mceAnchor"})};t.add("anchor",function(t){c(t),a(t),d(t)})}(); diff --git a/public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js.gz b/public/assets/tinymce/plugins/anchor/plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..028cf7b994cf41479aff9ddaa9b0531c765b05d5 GIT binary patch literal 757 zcmV<R0t)>fiwFS6YM5FA1BH}tPa`)F#^2wkSgZ=!#h4)VO*dUtl&UJyfllhZDy5aP zo+OsM<H(*3ge2en#@P_Uai_kq*W*9W_~&Q#WZGj(KB81>(PyYKCEt=5FKw!*A&;xB z1=Euc=5vf8n*=$AB}nly_bK!<kGB@>43bb9n!}l-)(NOjc=7N3)%oA{{P|(ukIsMo z=e#!mJ^c8?g(1kqYquKTY%M83LncFjUC_*c?xF*!#>27VN;FLahV1Olc5r$s%9xCc zU0HiYe3^*^E#?WPLj4NHyUhj+^5R;Et&T^68U{)Hj^rSQ|09M6F^SBoi%S@0dSYfp zm=Pi8(SWKYnQ3hMER{aiY-0#^kwKn}$^<+?dmX#ZqLYG&-(ZGB*AWSjgg&{{LlSKQ zOYrCC+mBLMq1WEkuvLn=rgvOZQ$ELJ9zDAFxPLtp7l3k2o&xi^!gd~$(39v^^_o@- zjuAZ3Bt8i}AoNb??4P0jX{3XlK&ZtHhn6<<P$%Y#xu0~N>VrP+^|jTWVLD5eVT@Bl zT7tBVXK+#Sw9+F6l)g&P2EMvvkt)w)AGjl%sCx7?uWS{72$HU*3@|=|t0IO~HCgQ^ zvaYc2Cc6)3^BhVaiCZSlsa7#nJvyFmBir2YOI<2;dWvR|V9Bt5hpFuYNwwWFRr`i2 z8SC8fGrizDs<2dC&O7}#N~Ai3*oV`Y<lx287=Hm10B1BG<Jp;#v4MMhP{y*Y<lbzX z%}Lw`_(?eB!*FoiW)scSr%cy#A4&=E3Ht@@;3IIJ>?DBDY>Oftw_DwQbwlpOr^E*I z^yXe<7B=PbJkFJB`NIdsy>p?LVroO?90rdkZvz|V+e@(zLG1{+_iTUbiAn-?&vorN z_4+U*{yULhyxO+yTz&iw>=c5(c10Ew@2fGAyf6G7l-QQ+SmYM4zai+pFT(|Jq*36N nfZx^RJ5j#Mcz5pWdB^u^xzV;XZg2+wW<GoYy68DclLY_(Ta<(5 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/anchor/plugin.js b/public/assets/tinymce/plugins/anchor/plugin.js index da0f6e06c..2742202eb 120000 --- a/public/assets/tinymce/plugins/anchor/plugin.js +++ b/public/assets/tinymce/plugins/anchor/plugin.js @@ -1 +1 @@ -plugin-152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec.js \ No newline at end of file +plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/anchor/plugin.js.gz b/public/assets/tinymce/plugins/anchor/plugin.js.gz index 907d92383..1a3008ce6 120000 --- a/public/assets/tinymce/plugins/anchor/plugin.js.gz +++ b/public/assets/tinymce/plugins/anchor/plugin.js.gz @@ -1 +1 @@ -plugin-152aec9d000e212c3ad6feeee2255d686a1db08ce84dcbe60608196bf22983ec.js.gz \ No newline at end of file +plugin-ea734359aa667328bee50558fe498020361da372386e2cee1447d739930902c3.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js b/public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js new file mode 100644 index 000000000..86a9d73fd --- /dev/null +++ b/public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),n=function(e){return e.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},i=function(e){return e.getParam("default_link_target","")},o=function(e,t){if(t<0&&(t=0),3===e.nodeType){var n=e.data.length;t>n&&(t=n)}return t},r=function(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setStart(t,o(t,n)):e.setStartBefore(t)},a=function(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setEnd(t,o(t,n)):e.setEndAfter(t)},f=function(e,t,o){var f,s,d,l,c,u,g,h,C,m,y=n(e),k=i(e);if("A"!==e.selection.getNode().tagName){if((f=e.selection.getRng(!0).cloneRange()).startOffset<5){if(!(h=f.endContainer.previousSibling)){if(!f.endContainer.firstChild||!f.endContainer.firstChild.nextSibling)return;h=f.endContainer.firstChild.nextSibling}if(C=h.length,r(f,h,C),a(f,h,C),f.endOffset<5)return;s=f.endOffset,l=h}else{if(3!==(l=f.endContainer).nodeType&&l.firstChild){for(;3!==l.nodeType&&l.firstChild;)l=l.firstChild;3===l.nodeType&&(r(f,l,0),a(f,l,l.nodeValue.length))}s=1===f.endOffset?2:f.endOffset-1-t}for(d=s;r(f,l,s>=2?s-2:0),a(f,l,s>=1?s-1:0),s-=1," "!==(m=f.toString())&&""!==m&&160!==m.charCodeAt(0)&&s-2>=0&&m!==o;);var p;(p=f.toString())===o||" "===p||160===p.charCodeAt(0)?(r(f,l,s),a(f,l,d),s+=1):0===f.startOffset?(r(f,l,0),a(f,l,d)):(r(f,l,s),a(f,l,d)),"."===(u=f.toString()).charAt(u.length-1)&&a(f,l,d-1),(g=(u=f.toString().trim()).match(y))&&("www."===g[1]?g[1]="http://www.":/@$/.test(g[1])&&!/^mailto:/.test(g[1])&&(g[1]="mailto:"+g[1]),c=e.selection.getBookmark(),e.selection.setRng(f),e.execCommand("createlink",!1,g[1]+g[2]),k&&e.dom.setAttrib(e.selection.getNode(),"target",k),e.selection.moveToBookmark(c),e.nodeChanged())}},s=function(e){var n;e.on("keydown",function(t){13!==t.keyCode||f(e,-1,"")}),t.ie?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){41!==t.keyCode||f(e,-1,"(")}),e.on("keyup",function(t){32!==t.keyCode||f(e,0,"")}))};e.add("autolink",function(e){s(e)})}(); diff --git a/public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js.gz b/public/assets/tinymce/plugins/autolink/plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..9f06bebf8cee51a9d3ce6742b9068c6df53a033f GIT binary patch literal 1009 zcmV<N0}lKjiwFS6YM5FA1D#b}Z`(E$ec!K$h0Y)mnzoX5z^pQ^>-BM6(PVpA(*~?W zeZUlHh*wDsOaFbBlH*!ViVb_Qse5_OJ@<+_9Hq61p|FO~T~Ir9=AbHK2%>vgohbo@ z*_N^5H58iPSgRecl(YI?k>D}+LDyMfewRjOstPEB|AcyH?s2aXhx&@{Dg||A&J@oS ze2|qaNg!*mx-jdzjRa7Y3E1=t$pJQQF~6POP8;X)ev!gvzbLfARrB!haLXIAn3uB9 zVCQu4X*v0OHu;s`{d|5q`F#F{5`Io!Obgnw;@^ZMDwVZ{yG{(q3Nrx<0)*NlC<D4H zQUb4M<1qm-qwG=$p}4V$y4h}!+RxQsB#|JwRwjcyf-BQ)H?-YXhL%+WT4v}j90>sj zs-^*+OSj4koxI1GBXps-Q*e#yfB>_^qv-s5@U2R1r3j#C`G48pndFokL(3FjPDh*$ ziEZC;${b6WW-+T-#&Wh|CEE%=Yqk~z{zW*oU>S`3u$<DWWANkm#R=sgv-h%8-E>KM zy6L0I$Y@4+tgTTWrO6ONx$`~$k)|l|^{Wm!BDqMpGRevskcCkd-&E?pu(i7`zT&IR zXut1dQ(9CGx>+>Mk8|9pZ}7;|zsTrGz2~>LSac=w{efT=N&S#0laGsz<<QHX+=-(w z(;{z`cFH$!iGw8iq&7Xg-SJo-386bY79{c*{evwL)nf4MkM;3p;w5V~>m_T}=l+tq zR{N$XZJh`acBFZ6F+X~mgcE4Jltj3w=W|!$V&Nti^8+zPLX3ny;wB<w!I?ibq(ok@ z*XUk&7APH$10OEO<M5Z6U+_4W)e1E&fy^+Cq*nsJ(h`$4qMhGuBC;9Mpj_KDSOOQD zra>;h7;-K4y}L(=2`W1mA)U{<ZjX-P;&e<2enU^;lm*;ZB=t~DR~Kv6`;ksUY-A6@ zH6z(6gyVndk)?z<CtE)l5}-47{Mo1Q^TPj#z+38kI_)y^>6;f*4$1-XNra51U-l+C zjFTR`&jsgQn8l}`=UZ#nrL5M3vg3^FKit$u)i)KdY*|XQmmsc`1m&GJV55+ER;0c_ z>h*Yx)@e(RT>>`ul|1VgEO@l&^{{4X@70Yx2#S5ypVU?ET_eF!wJmdl%b;`YNO61$ z)@qyB2fT$28_@8>%g#D6=g&mbr09H;u)7@aHspm`^x)LSwL60LR)f}S#Ap^lwcVY} zVTqUDpOyYi0jlptfhO0+-K)g9ZQJ7MIS4~1b8e{YW%#@@(n&iY>&*~$dGQoB>-(WC fPC_Qh_nY|$io<gF)6$mE=%;@G6(Ta{TL=IE^yUP* literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/autolink/plugin.js b/public/assets/tinymce/plugins/autolink/plugin.js index c0d766d4f..cf2746722 120000 --- a/public/assets/tinymce/plugins/autolink/plugin.js +++ b/public/assets/tinymce/plugins/autolink/plugin.js @@ -1 +1 @@ -plugin-39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a.js \ No newline at end of file +plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/autolink/plugin.js.gz b/public/assets/tinymce/plugins/autolink/plugin.js.gz index 496c91791..e304b82e0 120000 --- a/public/assets/tinymce/plugins/autolink/plugin.js.gz +++ b/public/assets/tinymce/plugins/autolink/plugin.js.gz @@ -1 +1 @@ -plugin-39fd5f06a1105972f517e648fe7d894142f204967c0e1941bc4d3c4eb6f4c81a.js.gz \ No newline at end of file +plugin-07d8808077f685e3807917097c6786f5d00b986eb32b8c45d2111ea9a4fb34d3.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js b/public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js new file mode 100644 index 000000000..682c12166 --- /dev/null +++ b/public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js @@ -0,0 +1 @@ +!function(){"use strict";var t=function(n){var e=n,o=function(){return e};return{get:o,set:function(t){e=t},clone:function(){return t(o())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=function(t){return{isContextMenuVisible:function(){return t.get()}}},o=function(t){return t.settings.contextmenu_never_use_native},i=function(t){return t.getParam("contextmenu","link openlink image inserttable | cell row column deletetable")},r=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),u=function(t){return r.DOM.select(t.settings.ui_container)[0]},c=function(t,n){return{x:t,y:n}},l=function(t,n,e){return c(t.x+n,t.y+e)},s=function(t,n){if(t&&"static"!==r.DOM.getStyle(t,"position",!0)){var e=r.DOM.getPos(t),o=e.x-t.scrollLeft,i=e.y-t.scrollTop;return l(n,-o,-i)}return l(n,0,0)},a=function(t,n){if(t.inline)return s(u(t),c((f=n).pageX,f.pageY));var e,o,i,a,f,m=(e=t.getContentAreaContainer(),o=c((a=n).clientX,a.clientY),i=r.DOM.getPos(e),l(o,i.x,i.y));return s(u(t),m)},f=tinymce.util.Tools.resolve("tinymce.ui.Factory"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,n,e,o){null===o.get()?o.set(function(t,n){var e,o,r=[];o=i(t),m.each(o.split(/[ ,]/),function(n){var e=t.menuItems[n];"|"===n&&(e={text:n}),e&&(e.shortcut="",r.push(e))});for(var c=0;c<r.length;c++)"|"===r[c].text&&(0!==c&&c!==r.length-1||r.splice(c,1));return(e=f.create("menu",{items:r,context:"contextmenu",classes:"contextmenu"})).uiContainer=u(t),e.renderTo(u(t)),e.on("hide",function(t){t.control===this&&n.set(!1)}),t.on("remove",function(){e.remove(),e=null}),e}(t,e)):o.get().show(),o.get().moveTo(n.x,n.y),e.set(!0)},v=function(t,n,e){t.on("contextmenu",function(i){var r;r=t,(!i.ctrlKey||o(r))&&(i.preventDefault(),g(t,a(t,i),n,e))})};n.add("contextmenu",function(n){var o=t(null),i=t(!1);return v(n,i,o),e(i)})}(); diff --git a/public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js.gz b/public/assets/tinymce/plugins/contextmenu/plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..57e3bc4a2ebba0d7de646e8870effb7c06dfb679 GIT binary patch literal 886 zcmV-+1Bv_}iwFS6YM5FA1C3PQi{myBe(zu5_#sHFR+oK^E6Q<4p|ndEx-EBvu;`R= zA}UKk8s`!c|L+~yS(DtRun$gbX?}e3eKRwuTW`<?&-k%y6BG%fHCR?V9Sc<Bt>?#l z0?Lb^E_@<j8+`#?HM||yfb$>{{f<`1kD#y<#sv@ax6a4{<GkxS;T2kcXbi{}t&`6o zxFjQ_;C8^u*SjazuC0I6UaujRT!6Yvb;e=Sr{EFx_z1rJ$0qyD-OMcsFzb_t8)4|4 zN}<H-B+U@7p?EJIb`W2PuNSY;?w}L)wl_t8(or|8yl^i?>8$^^2wU*|i*2Zs!ukXe zQ4`YQR2Xosh~ax-f@>RJtiS<6e_QfS#CK7(3XS~y=i}dGl8CAH7RZ<_s7wb2*+spr zeaV=$^$_`Dwj=>B+=U;h-p^4S=AI~YR|W#c9EJk#@4P^HxC26;eu!jihSO=8kk~Zk zM5zH3vG*4q9FS4D4asJQQcPz2wHrsXr;w;5(h%hSo{BIrIQIwCNWy?Tj7QI5d+yZ2 zF)!|exVOB!IGKqV;nO$pNt?w2el||5%^3}2wennUNx?6o?*G4X-p>z+Ags`$7L8&w z0vTxEl^#Dv(4St}Wf?dH(m9ZEmhQg@eSZ7Osf4RKfeXhdvfR^ipj_988p2<{t2<gN zf7J#<JWy{m?{gXN$YuS5+#>L!Z=F+0g<-CK3AvxxHJPu}M73B}LD?R(1Z_5q%(u=W z`>-g)@&gxd_YcZELBAn1Y2lYuc`7NJpH7M2W1cVSL)r-WTc%BjXj)WdDWcrAX+zZU zj#qVvEJrhHR+*opbl}&xsm$FSAL7M@S;`!Z;>@TU&2(z|rW`EqA5N#(BQ?N`co-!h z5VbTUEfQtJq#tdDI*;N!|MTlbV4O|~()DS_IcYPthw5bo62q?`K8IfBd_cUE8@qy1 zT#hyNn~Iv93c-y{)2Z)8m^@JJG=bSGLKAkEezc<HaLDpP%_?RdJ5r1|o1f*(lzz|M zdj8DzgvV1Sdg?@i)F;Xlw0pA(hRj#hk0y4IH&(RP1e;iCFuLF2a5@DRIVTyc+(ufu z9zR2^TSwW&nj&j@EbkLgbzSA9UakHw%ejeyLY526gVodWIzT&`e@jg)fB;c6#;c$H M1LBtfQ6UEa0J|`?lmGw# literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/contextmenu/plugin.js b/public/assets/tinymce/plugins/contextmenu/plugin.js index 9e23be9bf..909e03b4e 120000 --- a/public/assets/tinymce/plugins/contextmenu/plugin.js +++ b/public/assets/tinymce/plugins/contextmenu/plugin.js @@ -1 +1 @@ -plugin-e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027.js \ No newline at end of file +plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/contextmenu/plugin.js.gz b/public/assets/tinymce/plugins/contextmenu/plugin.js.gz index f0db0fdd3..59a550d48 120000 --- a/public/assets/tinymce/plugins/contextmenu/plugin.js.gz +++ b/public/assets/tinymce/plugins/contextmenu/plugin.js.gz @@ -1 +1 @@ -plugin-e5a84914355081bd62ded32ada2b643a1170213b35566bb020a81b5d7a910027.js.gz \ No newline at end of file +plugin-35cc36b5d1523209d4b7b6a5380d3920072907ae2c782cf3a7da23f8e233fe5b.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js b/public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js new file mode 100644 index 000000000..aa49fd8a8 --- /dev/null +++ b/public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(n){var t=n,i=function(){return t};return{get:i,set:function(e){t=e},clone:function(){return e(i())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},i=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r=function(e,n){e.fire("FullscreenStateChanged",{state:n})},l=i.DOM,o=function(e,n){var t,i,o,c,s,u,d=document.body,a=document.documentElement,h=n.get(),f=function(){var e,n,t,r;l.setStyle(o,"height",(t=window,r=document.body,r.offsetWidth&&(e=r.offsetWidth,n=r.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(i.clientHeight-o.clientHeight))},m=function(){l.unbind(window,"resize",f)};if(t=(i=e.getContainer()).style,c=(o=e.getContentAreaContainer().firstChild).style,h)c.width=h.iframeWidth,c.height=h.iframeHeight,h.containerWidth&&(t.width=h.containerWidth),h.containerHeight&&(t.height=h.containerHeight),l.removeClass(d,"mce-fullscreen"),l.removeClass(a,"mce-fullscreen"),l.removeClass(i,"mce-fullscreen"),s=h.scrollPos,window.scrollTo(s.x,s.y),l.unbind(window,"resize",h.resizeHandler),e.off("remove",h.removeHandler),n.set(null),r(e,!1);else{var g={scrollPos:(u=l.getViewPort(),{x:u.x,y:u.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:c.width,iframeHeight:c.height,resizeHandler:f,removeHandler:m};c.width=c.height="100%",t.width=t.height="",l.addClass(d,"mce-fullscreen"),l.addClass(a,"mce-fullscreen"),l.addClass(i,"mce-fullscreen"),l.bind(window,"resize",f),e.on("remove",m),f(),n.set(g),r(e,!0)}},c=function(e,n){e.addCommand("mceFullScreen",function(){o(e,n)})},s=function(e){return function(n){var t=n.control;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}},u=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:s(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:s(e)})};n.add("fullscreen",function(n){var i=e(null);return n.settings.inline?t(i):(c(n,i),u(n),n.addShortcut("Ctrl+Shift+F","","mceFullScreen"),t(i))})}(); diff --git a/public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js.gz b/public/assets/tinymce/plugins/fullscreen/plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..48b25a051e5aad3a393d08efffc87f63a3c8d90b GIT binary patch literal 890 zcmV-=1BLt_iwFS6YM5FA1C3QpZ`?Kzz2{eW2{a&)F=1aN2t~VXkQ|H{S+_mQ(r871 zA`6l7dL!t+XQ;20)ODK6uE-hAn|W_I+!c+<yt0OimNgD<oUc{pS^SdLH<-*;BigXz z69Xz)oT<?_wYl+KJbblB^pOHbzq1#L)+g9Ormex~zlV`4E=1RLU=pv)xyn#BUTOJc zt#-0TXY~tmHrXC^b5!ObHR%y+Ccr04s4)-aJ~mprtVT3fFbx@ZNrIB{<vq6gDeT-< z@{cbMf02tL=z0MS#1YCu)#QG`KKRt*zD&&#a|W#o%gA)11D&W43hX9E&od~nkb#2+ z@+7xeQ=#$l+2&_RFYD>!PmSRZ%ESx>L9rC6*AfhPsADZjn}a`V<Q7<o>R5UP+$Sex za(kkR)@Ze~ML|dYQMoVQzvq~&c1W^m{i%;da!6$i*5iS3H5mKzOM6g!=^&szMF?eJ zNS3!;$xJKCWw74b)slJ!s%4#8Hs+bi;A1U}<Wt{}K_R+W6;vcwgXDW_e5weR8c({w z24o4h7bAiER%5#G3(7jbFO|-xBc;gXDU^|vQWbSt;ZRg22VUpxAzvtEHpQFh^mBl< zNi3ab^86+6#wb8jvsU&6_d0cs=fJ34Z;QDP+14ZdUk`P~!x1zstk#d#!NBvl@npG^ zui)f41bRb>QVw6AQj=?}1z_kN&Ia7U9=>L~3H{2$b*0-z7i4!YV$=@%ramU^oJ_=< zL<jl)R(N`}b+`rXYt&FmXZk&N0@f5qBlobOGMZS1g{IM{G%N*;CZS<fR8+vKh^Xq~ zsZr+EVE1=-zc85epOs~d$V>D5M>5Xl^v7m()%?Z{2}+oY5Eac3KGA<1xxb@HNf%{1 z^8%o)Dyo(Tz%cv{10F1Hr|sRt<a1XB_RW>2rf+hRHy%=ZYpAXs8ky2JO>C6?s10}> zG%LV9;RiI$XO9(U3wogS`0Aqt5(8IKFJ%qw?tQI497<LA4<BhCHD*42))?*XAgl6d zTe~&Xmi{Z6oO-|!a^Gn^zzg*#>jLML%I}T$p}tijLmAQT9z4B7Uj4hy>ZkCi_Sgi3 zb?hzEG!usl7Eh035S?DUqodiZ>1O=uxe^i2IKBP?8afDl+{4HX-*7`syh)Cp1qu-| Q;v#<c9i<%0Z*~X(0G%?lPXGV_ literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/fullscreen/plugin.js b/public/assets/tinymce/plugins/fullscreen/plugin.js index 037c84d59..00d38d28c 120000 --- a/public/assets/tinymce/plugins/fullscreen/plugin.js +++ b/public/assets/tinymce/plugins/fullscreen/plugin.js @@ -1 +1 @@ -plugin-cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d.js \ No newline at end of file +plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/fullscreen/plugin.js.gz b/public/assets/tinymce/plugins/fullscreen/plugin.js.gz index ff9f39e58..75b0f2388 120000 --- a/public/assets/tinymce/plugins/fullscreen/plugin.js.gz +++ b/public/assets/tinymce/plugins/fullscreen/plugin.js.gz @@ -1 +1 @@ -plugin-cb48d300c36e3fa846f5b76bbc8a753203899a12ab0cb92c3da05f0a3d4b393d.js.gz \ No newline at end of file +plugin-fd24da48ec9c1e68c3ab302a7374e238f57f78ac7745015b43e9337637d0f711.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js b/public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js new file mode 100644 index 000000000..2c4592215 --- /dev/null +++ b/public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js @@ -0,0 +1 @@ +!function(){"use strict";var e,t,n,r,o,a,i=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return function(){return e}},c={noop:function(){},noarg:function(e){return function(){return e()}},compose:function(e,t){return function(){return e(t.apply(null,arguments))}},constant:u,identity:function(e){return e},tripleEquals:function(e,t){return e===t},curry:function(e){for(var t=new Array(arguments.length-1),n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];var o=t.concat(n);return e.apply(null,o)}},not:function(e){return function(){return!e.apply(null,arguments)}},die:function(e){return function(){throw new Error(e)}},apply:function(e){return e()},call:function(e){e()},never:u(!1),always:u(!0)},l=c.never,s=c.always,f=function(){return m},m=(r={fold:function(e,t){return e()},is:l,isSome:l,isNone:s,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},or:n,orThunk:t,map:f,ap:f,each:function(){},bind:f,flatten:f,exists:l,forall:s,filter:f,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:c.constant("none()")},Object.freeze&&Object.freeze(r),r),p=function(e){var t=function(){return e},n=function(){return o},r=function(t){return t(e)},o={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:s,isNone:l,getOr:t,getOrThunk:t,getOrDie:t,or:n,orThunk:n,map:function(t){return p(t(e))},ap:function(t){return t.fold(f,function(t){return p(t(e))})},each:function(t){t(e)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(e)?o:m},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(l,function(t){return n(e,t)})},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return o},d={some:p,none:f,from:function(e){return null===e||e===undefined?m:p(e)}},h=(o=Array.prototype.indexOf)===undefined?function(e,t){return v(e,t)}:function(e,t){return o.call(e,t)},y=function(e,t){return h(e,t)>-1},g=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var a=e[o];r[o]=t(a,o,e)}return r},k=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var a=e[r];t(a,r,e)&&n.push(a)}return n},v=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},b=(Array.prototype.push,Array.prototype.slice,g),x=k,w=function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return d.some(o)}return d.none()},C=y,A=tinymce.util.Tools.resolve("tinymce.util.I18n"),S=tinymce.util.Tools.resolve("tinymce.Env"),T=S.mac?"\u2318":"Ctrl",P=S.mac?"Ctrl + Alt":"Shift + Alt",_={shortcuts:[{shortcut:T+" + B",action:"Bold"},{shortcut:T+" + I",action:"Italic"},{shortcut:T+" + U",action:"Underline"},{shortcut:T+" + A",action:"Select all"},{shortcut:T+" + Y or "+T+" + Shift + Z",action:"Redo"},{shortcut:T+" + Z",action:"Undo"},{shortcut:P+" + 1",action:"Header 1"},{shortcut:P+" + 2",action:"Header 2"},{shortcut:P+" + 3",action:"Header 3"},{shortcut:P+" + 4",action:"Header 4"},{shortcut:P+" + 5",action:"Header 5"},{shortcut:P+" + 6",action:"Header 6"},{shortcut:P+" + 7",action:"Paragraph"},{shortcut:P+" + 8",action:"Div"},{shortcut:P+" + 9",action:"Address"},{shortcut:"Alt + F9",action:"Focus to menubar"},{shortcut:"Alt + F10",action:"Focus to toolbar"},{shortcut:"Alt + F11",action:"Focus to element path"},{shortcut:"Ctrl + Shift + P > Ctrl + Shift + P",action:"Focus to contextual toolbar"},{shortcut:T+" + K",action:"Insert link (if link plugin activated)"},{shortcut:T+" + S",action:"Save (if save plugin activated)"},{shortcut:T+" + F",action:"Find (if searchreplace plugin activated)"}]},O=function(){var e=b(_.shortcuts,function(e){return'<tr data-mce-tabstop="1" tabindex="-1" aria-label="Action: '+(t=e).action+", Shortcut: "+t.shortcut.replace(/Ctrl/g,"Control")+'"><td>'+A.translate(e.action)+"</td><td>"+e.shortcut+"</td></tr>";var t}).join("");return{title:"Handy Shortcuts",type:"container",style:"overflow-y: auto; overflow-x: hidden; max-height: 250px",items:[{type:"container",html:'<div><table class="mce-table-striped"><thead><th>'+A.translate("Action")+"</th><th>"+A.translate("Shortcut")+"</th></thead>"+e+"</table></div>"}]}},H=(a=Object.keys)===undefined?function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}:a,M=function(e,t){for(var n=H(e),r=0,o=n.length;r<o;r++){var a=n[r];t(e[a],a,e)}},E=function(e,t){var n={};return M(e,function(r,o){var a=t(r,o,e);n[a.k]=a.v}),n},F=function(e,t){var n=[];return M(e,function(e,r){n.push(t(e,r))}),n},I=function(e){return F(e,function(e){return e})},L={bifilter:function(e,t){var n={},r={};return M(e,function(e,o){(t(e,o)?n:r)[o]=e}),{t:n,f:r}},each:M,map:function(e,t){return E(e,function(e,n,r){return{k:n,v:t(e,n,r)}})},mapToArray:F,tupleMap:E,find:function(e,t){for(var n=H(e),r=0,o=n.length;r<o;r++){var a=n[r],i=e[a];if(t(i,a,e))return d.some(i)}return d.none()},keys:H,values:I,size:function(e){return I(e).length}},B=[{key:"advlist",name:"Advanced List"},{key:"anchor",name:"Anchor"},{key:"autolink",name:"Autolink"},{key:"autoresize",name:"Autoresize"},{key:"autosave",name:"Autosave"},{key:"bbcode",name:"BBCode"},{key:"charmap",name:"Character Map"},{key:"code",name:"Code"},{key:"codesample",name:"Code Sample"},{key:"colorpicker",name:"Color Picker"},{key:"compat3x",name:"3.x Compatibility"},{key:"contextmenu",name:"Context Menu"},{key:"directionality",name:"Directionality"},{key:"emoticons",name:"Emoticons"},{key:"fullpage",name:"Full Page"},{key:"fullscreen",name:"Full Screen"},{key:"help",name:"Help"},{key:"hr",name:"Horizontal Rule"},{key:"image",name:"Image"},{key:"imagetools",name:"Image Tools"},{key:"importcss",name:"Import CSS"},{key:"insertdatetime",name:"Insert Date/Time"},{key:"legacyoutput",name:"Legacy Output"},{key:"link",name:"Link"},{key:"lists",name:"Lists"},{key:"media",name:"Media"},{key:"nonbreaking",name:"Nonbreaking"},{key:"noneditable",name:"Noneditable"},{key:"pagebreak",name:"Page Break"},{key:"paste",name:"Paste"},{key:"preview",name:"Preview"},{key:"print",name:"Print"},{key:"save",name:"Save"},{key:"searchreplace",name:"Search and Replace"},{key:"spellchecker",name:"Spell Checker"},{key:"tabfocus",name:"Tab Focus"},{key:"table",name:"Table"},{key:"template",name:"Template"},{key:"textcolor",name:"Text Color"},{key:"textpattern",name:"Text Pattern"},{key:"toc",name:"Table of Contents"},{key:"visualblocks",name:"Visual Blocks"},{key:"visualchars",name:"Visual Characters"},{key:"wordcount",name:"Word Count"}],j=c.curry(function(e,t){return e.replace(/\${([^{}]*)}/g,function(e,n){var r,o=t[n];return"string"==(r=typeof o)||"number"===r?o:e})},'<a href="${url}" target="_blank" rel="noopener">${name}</a>'),z=function(e){var t,n,r=(t=e,n=L.keys(t.plugins),t.settings.forced_plugins===undefined?n:x(n,c.not(c.curry(C,t.settings.forced_plugins)))),o=b(r,function(t){return"<li>"+(n=e,r=t,w(B,function(e){return e.key===r}).fold(function(){var e=n.plugins[r].getMetadata;return"function"==typeof e?j(e()):r},function(e){return j({name:e.name,url:"https://www.tinymce.com/docs/plugins/"+e.key})}))+"</li>";var n,r}),a=o.length,i=o.join("");return"<p><b>"+A.translate(["Plugins installed ({0}):",a])+"</b></p><ul>"+i+"</ul>"},D=function(e){return{title:"Plugins",type:"container",style:"overflow-y: auto; overflow-x: hidden;",layout:"flex",padding:10,spacing:10,items:[(t=e,{type:"container",html:'<div style="overflow-y: auto; overflow-x: hidden; max-height: 230px; height: 230px;" data-mce-tabstop="1" tabindex="-1">'+z(t)+"</div>",flex:1}),{type:"container",html:'<div style="padding: 10px; background: #e3e7f4; height: 100%;" data-mce-tabstop="1" tabindex="-1"><p><b>'+A.translate("Premium plugins:")+'</b></p><ul><li>PowerPaste</li><li>Spell Checker Pro</li><li>Accessibility Checker</li><li>Advanced Code Editor</li><li>Enhanced Media Embed</li><li>Link Checker</li></ul><br /><p style="float: right;"><a href="https://www.tinymce.com/pricing/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">'+A.translate("Learn more...")+"</a></p></div>",flex:1}]};var t},q=tinymce.util.Tools.resolve("tinymce.EditorManager"),N=function(){var e,t,n='<a href="https://www.tinymce.com/docs/changelog/?utm_campaign=editor_referral&utm_medium=help_dialog&utm_source=tinymce" target="_blank">TinyMCE '+(e=q.majorVersion,t=q.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"</a>";return[{type:"label",html:A.translate(["You are using {0}",n])},{type:"spacer",flex:1},{text:"Close",onclick:function(){this.parent().parent().close()}}]},R=function(e,t){return function(){e.windowManager.open({title:"Help",bodyType:"tabpanel",layout:"flex",body:[O(),D(e)],buttons:N(),onPostRender:function(){this.getEl("title").innerHTML='<img src="'+t+'/img/logo.png" alt="TinyMCE Logo" style="display: inline-block; width: 200px; height: 50px">'}})}},V=function(e,t){e.addCommand("mceHelp",R(e,t))},U=function(e,t){e.addButton("help",{icon:"help",onclick:R(e,t)}),e.addMenuItem("help",{text:"Help",icon:"help",context:"help",onclick:R(e,t)})};i.add("help",function(e,t){U(e,t),V(e,t),e.shortcuts.add("Alt+0","Open help dialog","mceHelp")})}(); diff --git a/public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js.gz b/public/assets/tinymce/plugins/help/plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..a76dc9fcb9321c100a1a4e779377b018703d17af GIT binary patch literal 3411 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/help/plugin.js b/public/assets/tinymce/plugins/help/plugin.js index 1fd9ad16e..b10f4333a 120000 --- a/public/assets/tinymce/plugins/help/plugin.js +++ b/public/assets/tinymce/plugins/help/plugin.js @@ -1 +1 @@ -plugin-3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c.js \ No newline at end of file +plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/help/plugin.js.gz b/public/assets/tinymce/plugins/help/plugin.js.gz index adb297475..39be76d83 120000 --- a/public/assets/tinymce/plugins/help/plugin.js.gz +++ b/public/assets/tinymce/plugins/help/plugin.js.gz @@ -1 +1 @@ -plugin-3acde0898cb9ed54abb955546f5f3def4cd193d5783b7179e018298986ac4b9c.js.gz \ No newline at end of file +plugin-1a3e93c1a23673542a242be66600b1d819787ff5fce5425f7c011487822127a8.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js b/public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js new file mode 100644 index 000000000..2af6fbe51 --- /dev/null +++ b/public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js @@ -0,0 +1 @@ +!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"<hr />")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); diff --git a/public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js.gz b/public/assets/tinymce/plugins/hr/plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..16d96fa923bce61ad0e6d9be56f5dfaebbeb51fe GIT binary patch literal 248 zcmV<U00;jciwFS6YM5FA1C@`lY6CG0hW9?jMbjCKOV_)mL$WkOpp?FV@u`WymWnNh zw8y=BoeNC^>C#0==-2oETD%u>;+a}CLdn=<N!|(c2b&sNil@)$&=m2(yfKGt5@rqu zY~g4363Wig){@;}0;OenVUilj*kM?6jFyHLHk2{RGbjJWBsRR3fS|83kijFmi@x&D zC+jLl63~kW4UhZO+&_Vu)TH^=ZB<0-2>S$j^p2^UTdDEIe{}F`-vm$9-^HQ(JKCi5 yjNBrXjbOZm;!*xZ)b8}j>B!IPYBBY*$C-WojntyKma1u0fA<YY+!v*-0RRAzhJ?ld literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/hr/plugin.js b/public/assets/tinymce/plugins/hr/plugin.js index 30aedec5e..9a1580f13 120000 --- a/public/assets/tinymce/plugins/hr/plugin.js +++ b/public/assets/tinymce/plugins/hr/plugin.js @@ -1 +1 @@ -plugin-25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23.js \ No newline at end of file +plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/hr/plugin.js.gz b/public/assets/tinymce/plugins/hr/plugin.js.gz index 464691418..3c7824baf 120000 --- a/public/assets/tinymce/plugins/hr/plugin.js.gz +++ b/public/assets/tinymce/plugins/hr/plugin.js.gz @@ -1 +1 @@ -plugin-25fde4e2e7fa1a1d38c81ac00c74d9093cc83755e5f0577d5222f2d031c4ec23.js.gz \ No newline at end of file +plugin-7efaeee8fa1f71745d5726205bbb4fd8c0f4eba1edf2baf5a31a3b59bb677622.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js b/public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js new file mode 100644 index 000000000..18f3430a7 --- /dev/null +++ b/public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.util.Tools"),n={hasDimensions:function(e){return!1!==e.settings.image_dimensions},hasAdvTab:function(e){return!0===e.settings.image_advtab},getPrependUrl:function(e){return e.getParam("image_prepend_url","")},getClassList:function(e){return e.getParam("image_class_list")},hasDescription:function(e){return!1!==e.settings.image_description},hasImageTitle:function(e){return!0===e.settings.image_title},hasImageCaption:function(e){return!0===e.settings.image_caption},getImageList:function(e){return e.getParam("image_list",!1)},hasUploadUrl:function(e){return e.getParam("images_upload_url",!1)},hasUploadHandler:function(e){return e.getParam("images_upload_handler",!1)},getUploadUrl:function(e){return e.getParam("images_upload_url")},getUploadHandler:function(e){return e.getParam("images_upload_handler")},getUploadBasePath:function(e){return e.getParam("images_upload_base_path")},getUploadCredentials:function(e){return e.getParam("images_upload_credentials")}},a="undefined"!=typeof window?window:Function("return this;")(),i=function(e,t){for(var n=t!==undefined&&null!==t?t:a,i=0;i<e.length&&n!==undefined&&null!==n;++i)n=n[e[i]];return n},r=function(e,t){var n=e.split(".");return i(n,t)},o={getOrDie:function(e,t){var n=r(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n}};function l(){return new(o.getOrDie("FileReader"))}var s=tinymce.util.Tools.resolve("tinymce.util.Promise"),u=tinymce.util.Tools.resolve("tinymce.util.XHR"),c=function(e,t){return Math.max(parseInt(e,10),parseInt(t,10))},d={getImageSize:function(e,t){var n=document.createElement("img");function a(e,a){n.parentNode&&n.parentNode.removeChild(n),t({width:e,height:a})}n.onload=function(){a(c(n.width,n.clientWidth),c(n.height,n.clientHeight))},n.onerror=function(){a(0,0)};var i=n.style;i.visibility="hidden",i.position="fixed",i.bottom=i.left="0px",i.width=i.height="auto",document.body.appendChild(n),n.src=e},buildListItems:function(e,n,a){return function i(e,a){return a=a||[],t.each(e,function(e){var t={text:e.text||e.title};e.menu?t.menu=i(e.menu):(t.value=e.value,n(t)),a.push(t)}),a}(e,a||[])},removePixelSuffix:function(e){return e&&(e=e.replace(/px$/,"")),e},addPixelSuffix:function(e){return e.length>0&&/^[0-9]+$/.test(e)&&(e+="px"),e},mergeMargins:function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},createImageList:function(e,t){var a=n.getImageList(e);"string"==typeof a?u.send({url:a,success:function(e){t(JSON.parse(e))}}):"function"==typeof a?a(t):t(a)},waitLoadImage:function(e,t,a){function i(){a.onload=a.onerror=null,e.selection&&(e.selection.select(a),e.nodeChanged())}a.onload=function(){t.width||t.height||!n.hasDimensions(e)||e.dom.setAttribs(a,{width:a.clientWidth,height:a.clientHeight}),i()},a.onerror=i},blobToDataUri:function(e){return new s(function(t,n){var a=new l;a.onload=function(){t(a.result)},a.onerror=function(){n(l.error.message)},a.readAsDataURL(e)})}},g={makeTab:function(e,t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(a=e,function(e){var t=a.dom,i=e.control.rootControl;if(n.hasAdvTab(a)){var r=i.toJSON(),o=t.parseStyle(r.style);i.find("#vspace").value(""),i.find("#hspace").value(""),((o=d.mergeMargins(o))["margin-top"]&&o["margin-bottom"]||o["margin-right"]&&o["margin-left"])&&(o["margin-top"]===o["margin-bottom"]?i.find("#vspace").value(d.removePixelSuffix(o["margin-top"])):i.find("#vspace").value(""),o["margin-right"]===o["margin-left"]?i.find("#hspace").value(d.removePixelSuffix(o["margin-right"])):i.find("#hspace").value("")),o["border-width"]&&i.find("#border").value(d.removePixelSuffix(o["border-width"])),i.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(o))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(n){t(e,n.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(n){t(e,n.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var a}},m=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},f=function(e,t){var n=e.find("#width")[0],a=e.find("#height")[0],i=e.find("#constrain")[0];n&&a&&i&&t(n,a,i.checked())},p=function(e,t,n){var a=e.state.get("oldVal"),i=t.state.get("oldVal"),r=e.value(),o=t.value();n&&a&&i&&r&&o&&(r!==a?(o=Math.round(r/a*o),isNaN(o)||t.value(o)):(r=Math.round(o/i*r),isNaN(r)||e.value(r))),m(e,t)},h=function(e){f(e,p)},b={createUi:function(){var e=function(e){h(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},syncSize:function(e){f(e,m)},updateSize:h},v=function(e){e.meta=e.control.rootControl.toJSON()},y=function(e,a){var i=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(a){var i,r,o,l,s,u,c,g,m;r=e,u=(i=a).meta||{},c=i.control,g=c.rootControl,(m=g.find("#image-list")[0])&&m.value(r.convertURL(c.value(),"src")),t.each(u,function(e,t){g.find("#"+t).value(e)}),u.width||u.height||(o=r.convertURL(c.value(),"src"),l=n.getPrependUrl(r),s=new RegExp("^(?:[a-z]+:)?//","i"),l&&!s.test(o)&&o.substring(0,l.length)!==l&&(o=l+o),c.value(o),d.getImageSize(r.documentBaseURI.toAbsolute(c.value()),function(e){e.width&&e.height&&n.hasDimensions(r)&&(g.find("#width").value(e.width),g.find("#height").value(e.height),b.updateSize(g))}))},onbeforecall:v},a];return n.hasDescription(e)&&i.push({name:"alt",type:"textbox",label:"Image description"}),n.hasImageTitle(e)&&i.push({name:"title",type:"textbox",label:"Image Title"}),n.hasDimensions(e)&&i.push(b.createUi()),n.getClassList(e)&&i.push({name:"class",type:"listbox",label:"Class",values:d.buildListItems(n.getClassList(e),function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({inline:"img",classes:[t.value]})})})}),n.hasImageCaption(e)&&i.push({name:"caption",type:"checkbox",label:"Caption"}),i},x={makeTab:function(e,t){return{title:"General",type:"form",items:y(e,t)}},getGeneralItems:y},w=function(){return o.getOrDie("URL")},S=function(e){return w().createObjectURL(e)},U=function(e){w().revokeObjectURL(e)},T=tinymce.util.Tools.resolve("tinymce.ui.Factory"),C=function(){},I=function(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t};function P(e){var n=function(t,n,a,i){var r,l;(r=new function(){return new(o.getOrDie("XMLHttpRequest"))}).open("POST",e.url),r.withCredentials=e.credentials,r.upload.onprogress=function(e){i(e.loaded/e.total*100)},r.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+r.status)},r.onload=function(){var t;r.status<200||r.status>=300?a("HTTP Error: "+r.status):(t=JSON.parse(r.responseText))&&"string"==typeof t.location?n(I(e.basePath,t.location)):a("Invalid JSON: "+r.responseText)},(l=new FormData).append("file",t.blob(),t.filename()),r.send(l)};return e=t.extend({credentials:!1,handler:n},e),{upload:function(t){return e.url||e.handler!==n?(a=t,i=e.handler,new s(function(e,t){try{i(a,e,t,C)}catch(n){t(n.message)}})):s.reject("Upload url missing from the settings.");var a,i}}}var L=function(e){return function(t){var a=T.get("Throbber"),i=t.control.rootControl,r=new a(i.getEl()),o=t.control.value(),l=S(o),s=P({url:n.getUploadUrl(e),basePath:n.getUploadBasePath(e),credentials:n.getUploadCredentials(e),handler:n.getUploadHandler(e)}),u=function(){r.hide(),U(l)};return r.show(),d.blobToDataUri(o).then(function(t){var n=e.editorUpload.blobCache.create({blob:o,blobUri:l,name:o.name?o.name.replace(/\.[^\.]+$/,""):null,base64:t.split(",")[1]});return s.upload(n).then(function(e){var t=i.find("#src");return t.value(e),i.find("tabpanel")[0].activateTab(0),t.fire("change"),u(),e})})["catch"](function(t){e.windowManager.alert(t),u()})}},_=".jpg,.jpeg,.png,.gif",N={makeTab:function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:_,onchange:L(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:_,height:100,onchange:L(e)}]}}};function A(e){var a=function(e,t){if(n.hasAdvTab(e)){var a=e.dom,i=t.toJSON(),r=a.parseStyle(i.style);r=d.mergeMargins(r),i.vspace&&(r["margin-top"]=r["margin-bottom"]=d.addPixelSuffix(i.vspace)),i.hspace&&(r["margin-left"]=r["margin-right"]=d.addPixelSuffix(i.hspace)),i.border&&(r["border-width"]=d.addPixelSuffix(i.border)),i.borderStyle&&(r["border-style"]=i.borderStyle),t.find("#style").value(a.serializeStyle(a.parseStyle(a.serializeStyle(r))))}};function i(i){var r,o,l,s,u={},c=e.dom;function m(){var n,i;b.updateSize(r),a(e,r),(u=t.extend(u,r.toJSON())).alt||(u.alt=""),u.title||(u.title=""),""===u.width&&(u.width=null),""===u.height&&(u.height=null),u.style||(u.style=null),u={src:u.src,alt:u.alt,title:u.title,width:u.width,height:u.height,style:u.style,caption:u.caption,"class":u["class"]},e.undoManager.transact(function(){if(u.src){if(""===u.title&&(u.title=null),o?c.setAttribs(o,u):(u.id="__mcenew",e.focus(),e.selection.setContent(c.createHTML("img",u)),o=c.get("__mcenew"),c.setAttrib(o,"id",null)),e.editorUpload.uploadImagesAuto(),!1===u.caption&&c.is(o.parentNode,"figure.image")&&(n=o.parentNode,c.insertAfter(o,n),c.remove(n)),!0!==u.caption)d.waitLoadImage(e,u,o);else if(!c.is(o.parentNode,"figure.image")){i=o,o=o.cloneNode(!0),(n=c.create("figure",{"class":"image"})).appendChild(o),n.appendChild(c.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable=!1;var t=c.getParent(i,function(t){return e.schema.getTextBlockElements()[t.nodeName]});t?c.split(t,i,n):c.replace(n,i),e.selection.select(n)}}else if(o){var a=c.is(o.parentNode,"figure.image")?o.parentNode:o;c.remove(a),e.focus(),e.nodeChanged(),c.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}})}if(o=e.selection.getNode(),(l=c.getParent(o,"figure.image"))&&(o=c.select("img",l)[0]),o&&("IMG"!==o.nodeName||o.getAttribute("data-mce-object")||o.getAttribute("data-mce-placeholder"))&&(o=null),o&&(u={src:c.getAttrib(o,"src"),alt:c.getAttrib(o,"alt"),title:c.getAttrib(o,"title"),"class":c.getAttrib(o,"class"),width:c.getAttrib(o,"width"),height:c.getAttrib(o,"height"),caption:!!l}),i&&(s={type:"listbox",label:"Image list",name:"image-list",values:d.buildListItems(i,function(t){t.value=e.convertURL(t.value||t.url,"src")},[{text:"None",value:""}]),value:u.src&&e.convertURL(u.src,"src"),onselect:function(e){var t=r.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),r.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){s=this}}),n.hasAdvTab(e)||n.hasUploadUrl(e)||n.hasUploadHandler(e)){var f=[x.makeTab(e,s)];n.hasAdvTab(e)&&(o&&(o.style.marginLeft&&o.style.marginRight&&o.style.marginLeft===o.style.marginRight&&(u.hspace=d.removePixelSuffix(o.style.marginLeft)),o.style.marginTop&&o.style.marginBottom&&o.style.marginTop===o.style.marginBottom&&(u.vspace=d.removePixelSuffix(o.style.marginTop)),o.style.borderWidth&&(u.border=d.removePixelSuffix(o.style.borderWidth)),u.borderStyle=o.style.borderStyle,u.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(o,"style")))),f.push(g.makeTab(e,a))),(n.hasUploadUrl(e)||n.hasUploadHandler(e))&&f.push(N.makeTab(e)),r=e.windowManager.open({title:"Insert/edit image",data:u,bodyType:"tabpanel",body:f,onSubmit:m})}else r=e.windowManager.open({title:"Insert/edit image",data:u,body:x.getGeneralItems(e,s),onSubmit:m});b.syncSize(r)}return{open:function(){d.createImageList(e,i)}}}var k=function(e){e.addCommand("mceImage",A(e).open)},D=function(e){return function(n){for(var a,i,r=n.length,o=function(t){t.attr("contenteditable",e?"true":null)};r--;)a=n[r],(i=a.attr("class"))&&/\bimage\b/.test(i)&&(a.attr("contenteditable",e?"false":null),t.each(a.getAll("figcaption"),o))}},R=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",D(!0)),e.serializer.addNodeFilter("figure",D(!1))})},z=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:A(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:A(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){R(e),z(e),k(e)})}(); diff --git a/public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js.gz b/public/assets/tinymce/plugins/image/plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5a17a161e616d89c8917851611ac6faca5d0d497 GIT binary patch literal 4928 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/image/plugin.js b/public/assets/tinymce/plugins/image/plugin.js index 5e1eed6de..4ec6f3dbc 120000 --- a/public/assets/tinymce/plugins/image/plugin.js +++ b/public/assets/tinymce/plugins/image/plugin.js @@ -1 +1 @@ -plugin-f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd.js \ No newline at end of file +plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/image/plugin.js.gz b/public/assets/tinymce/plugins/image/plugin.js.gz index c67f0597e..b8efdd346 120000 --- a/public/assets/tinymce/plugins/image/plugin.js.gz +++ b/public/assets/tinymce/plugins/image/plugin.js.gz @@ -1 +1 @@ -plugin-f784f22299b8db7c332600ae1ae2eaf049371d740b4aabd13aa086b3b0ca73fd.js.gz \ No newline at end of file +plugin-34cf331f10b12cc04cac1155bb99098a17dcaec6115c810288a177a8e2065f25.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js b/public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js new file mode 100644 index 000000000..a364661f9 --- /dev/null +++ b/public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js @@ -0,0 +1 @@ +!function(){"use strict";var t=function(e){var n=e,o=function(){return n};return{get:o,set:function(t){n=t},clone:function(){return t(o())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");function o(t,e){return i(document.createElement("canvas"),t,e)}function r(t){return t.getContext("2d")}function i(t,e,n){return t.width=e,t.height=n,t}var a,u,c,l,s={create:o,clone:function(t){var e;return r(e=o(t.width,t.height)).drawImage(t,0,0),e},resize:i,get2dContext:r,get3dContext:function(t){var e=null;try{e=t.getContext("webgl")||t.getContext("experimental-webgl")}catch(n){}return e||(e=null),e}},f={getWidth:function(t){return t.naturalWidth||t.width},getHeight:function(t){return t.naturalHeight||t.height}},d=window.Promise?window.Promise:function(){var t=function(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],c(t,n(i,this),n(a,this))},e=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(t){setTimeout(t,1)};function n(t,e){return function(){t.apply(e,arguments)}}var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function r(t){var n=this;null!==this._state?e(function(){var e=n._state?t.onFulfilled:t.onRejected;if(null!==e){var o;try{o=e(n._value)}catch(r){return void t.reject(r)}t.resolve(o)}else(n._state?t.resolve:t.reject)(n._value)}):this._deferreds.push(t)}function i(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void c(n(e,t),n(i,this),n(a,this))}this._state=!0,this._value=t,u.call(this)}catch(o){a.call(this,o)}}function a(t){this._state=!1,this._value=t,u.call(this)}function u(){for(var t=0,e=this._deferreds.length;t<e;t++)r.call(this,this._deferreds[t]);this._deferreds=null}function c(t,e,n){var o=!1;try{t(function(t){o||(o=!0,e(t))},function(t){o||(o=!0,n(t))})}catch(r){if(o)return;o=!0,n(r)}}return t.prototype["catch"]=function(t){return this.then(null,t)},t.prototype.then=function(e,n){var o=this;return new t(function(t,i){r.call(o,new function(t,e,n,o){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.resolve=n,this.reject=o}(e,n,t,i))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&o(arguments[0])?arguments[0]:arguments);return new t(function(t,n){if(0===e.length)return t([]);var o=e.length;function r(i,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var u=a.then;if("function"==typeof u)return void u.call(a,function(t){r(i,t)},n)}e[i]=a,0==--o&&t(e)}catch(c){n(c)}}for(var i=0;i<e.length;i++)r(i,e[i])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(e){return new t(function(t,n){n(e)})},t.race=function(e){return new t(function(t,n){for(var o=0,r=e.length;o<r;o++)e[o].then(t,n)})},t}(),h=function(t){return function(){return t}},p={noop:function(){},noarg:function(t){return function(){return t()}},compose:function(t,e){return function(){return t(e.apply(null,arguments))}},constant:h,identity:function(t){return t},tripleEquals:function(t,e){return t===e},curry:function(t){for(var e=new Array(arguments.length-1),n=1;n<arguments.length;n++)e[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),o=0;o<n.length;o++)n[o]=arguments[o];var r=e.concat(n);return t.apply(null,r)}},not:function(t){return function(){return!t.apply(null,arguments)}},die:function(t){return function(){throw new Error(t)}},apply:function(t){return t()},call:function(t){t()},never:h(!1),always:h(!0)},m=p.never,g=p.always,v=function(){return y},y=(l={fold:function(t,e){return t()},is:m,isSome:m,isNone:g,getOr:c=function(t){return t},getOrThunk:u=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},or:c,orThunk:u,map:v,ap:v,each:function(){},bind:v,flatten:v,exists:m,forall:g,filter:v,equals:a=function(t){return t.isNone()},equals_:a,toArray:function(){return[]},toString:p.constant("none()")},Object.freeze&&Object.freeze(l),l),b=function(t){var e=function(){return t},n=function(){return r},o=function(e){return e(t)},r={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:g,isNone:m,getOr:e,getOrThunk:e,getOrDie:e,or:n,orThunk:n,map:function(e){return b(e(t))},ap:function(e){return e.fold(v,function(e){return b(e(t))})},each:function(e){e(t)},bind:o,flatten:e,exists:o,forall:o,filter:function(e){return e(t)?r:y},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(m,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},w={some:b,none:v,from:function(t){return null===t||t===undefined?y:b(t)}},x="undefined"!=typeof window?window:Function("return this;")(),R=function(t,e){for(var n=e!==undefined&&null!==e?e:x,o=0;o<t.length&&n!==undefined&&null!==n;++o)n=n[t[o]];return n},I=function(t,e){var n=t.split(".");return R(n,e)},T={getOrDie:function(t,e){var n=I(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n}};function k(){return new(T.getOrDie("FileReader"))}var C={atob:function(t){return T.getOrDie("atob")(t)},requestAnimationFrame:function(t){T.getOrDie("requestAnimationFrame")(t)}};function B(t){return new d(function(e,n){var o=URL.createObjectURL(t),r=new Image,i=function(){r.removeEventListener("load",a),r.removeEventListener("error",u)};function a(){i(),e(r)}function u(){i(),n("Unable to load data of type "+t.type+": "+o)}r.addEventListener("load",a),r.addEventListener("error",u),r.src=o,r.complete&&a()})}function U(t){return new d(function(e,n){var o=new XMLHttpRequest;o.open("GET",t,!0),o.responseType="blob",o.onload=function(){200==this.status&&e(this.response)},o.onerror=function(){var t,e=this;n(0===this.status?((t=new Error("No access to download image")).code=18,t.name="SecurityError",t):new Error("Error "+e.status+" downloading image"))},o.send()})}function M(t){var e=t.split(","),n=/data:([^;]+)/.exec(e[0]);if(!n)return w.none();for(var o,r,i,a=n[1],u=e[1],c=C.atob(u),l=c.length,s=Math.ceil(l/1024),f=new Array(s),d=0;d<s;++d){for(var h=1024*d,p=Math.min(h+1024,l),m=new Array(p-h),g=h,v=0;g<p;++v,++g)m[v]=c[g].charCodeAt(0);f[d]=(o=m,new(T.getOrDie("Uint8Array"))(o))}return w.some((r=f,i={type:a},new(T.getOrDie("Blob"))(r,i)))}function A(t){return new d(function(e,n){M(t).fold(function(){n("uri is not base64: "+t)},e)})}function j(t){return new d(function(e){var n=new k;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}var E={blobToImage:B,imageToBlob:function(t){return(e=t,new d(function(t){e.complete?t(e):e.addEventListener("load",function n(){e.removeEventListener("load",n),t(e)})})).then(function(t){var e=t.src;return 0===e.indexOf("blob:")?U(e):0===e.indexOf("data:")?A(e):U(e)});var e},blobToArrayBuffer:function(t){return new d(function(e){var n=new k;n.onloadend=function(){e(n.result)},n.readAsArrayBuffer(t)})},blobToDataUri:j,blobToBase64:function(t){return j(t).then(function(t){return t.split(",")[1]})},dataUriToBlobSync:M,canvasToBlob:function(t,e,n){return e=e||"image/png",HTMLCanvasElement.prototype.toBlob?new d(function(o){t.toBlob(function(t){o(t)},e,n)}):A(t.toDataURL(e,n))},canvasToDataURL:function(t,e,n){return e=e||"image/png",t.then(function(t){return t.toDataURL(e,n)})},blobToCanvas:function(t){return B(t).then(function(t){var e,n;return e=t,URL.revokeObjectURL(e.src),n=s.create(f.getWidth(t),f.getHeight(t)),s.get2dContext(n).drawImage(t,0,0),n})},uriToBlob:function(t){return 0===t.indexOf("blob:")?U(t):0===t.indexOf("data:")?A(t):null}},z=function(t){return E.blobToImage(t)},O=function(t){return E.imageToBlob(t)};function D(t,e,n){var o=e.type;function r(e,n){return t.then(function(t){return E.canvasToDataURL(t,e,n)})}return{getType:p.constant(o),toBlob:function(){return d.resolve(e)},toDataURL:function(){return n},toBase64:function(){return n.split(",")[1]},toAdjustedBlob:function(e,n){return t.then(function(t){return E.canvasToBlob(t,e,n)})},toAdjustedDataURL:r,toAdjustedBase64:function(t,e){return r(t,e).then(function(t){return t.split(",")[1]})},toCanvas:function(){return t.then(s.clone)}}}function S(t){return E.blobToDataUri(t).then(function(e){return D(E.blobToCanvas(t),t,e)})}var L={fromBlob:S,fromCanvas:function(t,e){return E.canvasToBlob(t,e).then(function(e){return D(d.resolve(t),e,t.toDataURL())})},fromImage:function(t){return E.imageToBlob(t).then(function(t){return S(t)})},fromBlobAndUrlSync:function(t,e){return D(E.blobToCanvas(t),t,e)}};function H(t,e,n){return(t=parseFloat(t))>n?t=n:t<e&&(t=e),t}var _=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];function F(t,e){var n,o,r,i,a=[],u=new Array(10);for(n=0;n<5;n++){for(o=0;o<5;o++)a[o]=e[o+5*n];for(o=0;o<5;o++){for(i=0,r=0;r<5;r++)i+=t[o+5*r]*a[r];u[o+5*n]=i}}return u}function P(t,e){return e=H(e,0,1),t.map(function(t,n){return n%6==0?t=1-(1-t)*e:t*=e,H(t,0,1)})}var W={identity:function(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]},adjust:P,multiply:F,adjustContrast:function(t,e){var n;return e=H(e,-1,1),F(t,[(n=(e*=100)<0?127+e/100*127:127*(n=0==(n=e%1)?_[e]:_[Math.floor(e)]*(1-n)+_[Math.floor(e)+1]*n)+127)/127,0,0,0,.5*(127-n),0,n/127,0,0,.5*(127-n),0,0,n/127,0,.5*(127-n),0,0,0,1,0,0,0,0,0,1])},adjustBrightness:function(t,e){return F(t,[1,0,0,0,e=H(255*e,-255,255),0,1,0,0,e,0,0,1,0,e,0,0,0,1,0,0,0,0,0,1])},adjustSaturation:function(t,e){var n;return F(t,[.3086*(1-(n=1+((e=H(e,-1,1))>0?3*e:e)))+n,.6094*(1-n),.082*(1-n),0,0,.3086*(1-n),.6094*(1-n)+n,.082*(1-n),0,0,.3086*(1-n),.6094*(1-n),.082*(1-n)+n,0,0,0,0,0,1,0,0,0,0,0,1])},adjustHue:function(t,e){var n,o,r,i,a;return e=H(e,-180,180)/180*Math.PI,F(t,[(r=.213)+.787*(n=Math.cos(e))+(o=Math.sin(e))*-r,(i=.715)+n*-i+o*-i,(a=.072)+n*-a+.928*o,0,0,r+n*-r+.143*o,i+n*(1-i)+.14*o,a+n*-a+-.283*o,0,0,r+n*-r+-.787*o,i+n*-i+o*i,a+.928*n+o*a,0,0,0,0,0,1,0,0,0,0,0,1])},adjustColors:function(t,e,n,o){return F(t,[e=H(e,0,2),0,0,0,0,0,n=H(n,0,2),0,0,0,0,0,o=H(o,0,2),0,0,0,0,0,1,0,0,0,0,0,1])},adjustSepia:function(t,e){return F(t,P([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e=H(e,0,1)))},adjustGrayscale:function(t,e){return F(t,P([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e=H(e,0,1)))}};function q(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,u=s.get2dContext(o),a=function(t,e){var n,o,r,i,a,u=t.data,c=e[0],l=e[1],s=e[2],f=e[3],d=e[4],h=e[5],p=e[6],m=e[7],g=e[8],v=e[9],y=e[10],b=e[11],w=e[12],x=e[13],R=e[14],I=e[15],T=e[16],k=e[17],C=e[18],B=e[19];for(a=0;a<u.length;a+=4)n=u[a],o=u[a+1],r=u[a+2],i=u[a+3],u[a]=n*c+o*l+r*s+i*f+d,u[a+1]=n*h+o*p+r*m+i*g+v,u[a+2]=n*y+o*b+r*w+i*x+R,u[a+3]=n*I+o*T+r*k+i*C+B;return t}(u.getImageData(0,0,o.width,o.height),i),u.putImageData(a,0,0),L.fromCanvas(o,r);var o,r,i,a,u})}function V(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,c=s.get2dContext(o),a=c.getImageData(0,0,o.width,o.height),u=c.getImageData(0,0,o.width,o.height),u=function(t,e,n){var o,r,i,a,u,c,l,s,f,d,h,p,m,g,v,y,b;function w(t,e,n){return t>n?t=n:t<e&&(t=e),t}for(i=Math.round(Math.sqrt(n.length)),a=Math.floor(i/2),o=t.data,r=e.data,y=t.width,b=t.height,c=0;c<b;c++)for(u=0;u<y;u++){for(l=s=f=0,h=0;h<i;h++)for(d=0;d<i;d++)p=w(u+d-a,0,y-1),m=w(c+h-a,0,b-1),g=4*(m*y+p),v=n[h*i+d],l+=o[g]*v,s+=o[g+1]*v,f+=o[g+2]*v;r[g=4*(c*y+u)]=w(l,0,255),r[g+1]=w(s,0,255),r[g+2]=w(f,0,255)}return e}(a,u,i),c.putImageData(u,0,0),L.fromCanvas(o,r);var o,r,i,a,u,c})}function N(t){return function(e,n){return e.toCanvas().then(function(o){return function(e,n,o){var r,i,a=s.get2dContext(e),u=new Array(256);for(i=0;i<u.length;i++)u[i]=t(i,o);return r=function(t,e){var n,o=t.data;for(n=0;n<o.length;n+=4)o[n]=e[o[n]],o[n+1]=e[o[n+1]],o[n+2]=e[o[n+2]];return t}(a.getImageData(0,0,e.width,e.height),u),a.putImageData(r,0,0),L.fromCanvas(e,n)}(o,e.getType(),n)})}}function $(t){return function(e,n){return q(e,t(W.identity(),n))}}function X(t){return function(e){return V(e,t)}}var G,Y={invert:(G=[-1,0,0,0,255,0,-1,0,0,255,0,0,-1,0,255,0,0,0,1,0],function(t){return q(t,G)}),brightness:$(W.adjustBrightness),hue:$(W.adjustHue),saturate:$(W.adjustSaturation),contrast:$(W.adjustContrast),grayscale:$(W.adjustGrayscale),sepia:$(W.adjustSepia),colorize:function(t,e,n,o){return q(t,W.adjustColors(W.identity(),e,n,o))},sharpen:X([0,-1,0,-1,5,-1,0,-1,0]),emboss:X([-2,-1,0,-1,1,1,0,1,2]),gamma:N(function(t,e){return 255*Math.pow(t/255,1-e)}),exposure:N(function(t,e){return 255*(1-Math.exp(-t/255*e))}),colorFilter:q,convoluteFilter:V},J={scale:function Jt(t,e,n){var o=f.getWidth(t),r=f.getHeight(t),i=e/o,a=n/r,u=!1;(i<.5||i>2)&&(i=i<.5?.5:2,u=!0),(a<.5||a>2)&&(a=a<.5?.5:2,u=!0);var c,l,h,p=(c=t,l=i,h=a,new d(function(t){var e=f.getWidth(c),n=f.getHeight(c),o=Math.floor(e*l),r=Math.floor(n*h),i=s.create(o,r),a=s.get2dContext(i);a.drawImage(c,0,0,e,n,0,0,o,r),t(i)}));return u?p.then(function(t){return Jt(t,e,n)}):p}},K={rotate:function(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,a=s.create(o.width,o.height),u=s.get2dContext(a),c=0,l=0,90!=(i=i<0?360+i:i)&&270!=i||s.resize(a,a.height,a.width),90!=i&&180!=i||(c=a.width),270!=i&&180!=i||(l=a.height),u.translate(c,l),u.rotate(i*Math.PI/180),u.drawImage(o,0,0),L.fromCanvas(a,r);var o,r,i,a,u,c,l})},flip:function(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,a=s.create(o.width,o.height),u=s.get2dContext(a),"v"==i?(u.scale(1,-1),u.drawImage(o,0,-a.height)):(u.scale(-1,1),u.drawImage(o,-a.width,0)),L.fromCanvas(a,r);var o,r,i,a,u})},crop:function(t,e,n,o,r){return t.toCanvas().then(function(i){return a=i,u=t.getType(),c=e,l=n,f=o,d=r,h=s.create(f,d),s.get2dContext(h).drawImage(a,-c,-l),L.fromCanvas(h,u);var a,u,c,l,f,d,h})},resize:function(t,e,n){return t.toCanvas().then(function(o){return J.scale(o,e,n).then(function(e){return L.fromCanvas(e,t.getType())})})}},Z={invert:function(t){return Y.invert(t)},sharpen:function(t){return Y.sharpen(t)},emboss:function(t){return Y.emboss(t)},brightness:function(t,e){return Y.brightness(t,e)},hue:function(t,e){return Y.hue(t,e)},saturate:function(t,e){return Y.saturate(t,e)},contrast:function(t,e){return Y.contrast(t,e)},grayscale:function(t,e){return Y.grayscale(t,e)},sepia:function(t,e){return Y.sepia(t,e)},colorize:function(t,e,n,o){return Y.colorize(t,e,n,o)},gamma:function(t,e){return Y.gamma(t,e)},exposure:function(t,e){return Y.exposure(t,e)},flip:function(t,e){return K.flip(t,e)},crop:function(t,e,n,o,r){return K.crop(t,e,n,o,r)},resize:function(t,e,n){return K.resize(t,e,n)},rotate:function(t,e){return K.rotate(t,e)}},Q=function(t){return t.toBlob()},tt={blobToImageResult:function(t){return L.fromBlob(t)},fromBlobAndUrlSync:function(t,e){return L.fromBlobAndUrlSync(t,e)},imageToImageResult:function(t){return L.fromImage(t)},imageResultToBlob:function(t,e,n){return e===undefined&&n===undefined?Q(t):t.toAdjustedBlob(e,n)},imageResultToOriginalBlob:Q,imageResultToDataURL:function(t){return t.toDataURL()}},et=function(){return T.getOrDie("URL")},nt={createObjectURL:function(t){return et().createObjectURL(t)},revokeObjectURL:function(t){et().revokeObjectURL(t)}},ot=tinymce.util.Tools.resolve("tinymce.util.Delay"),rt=tinymce.util.Tools.resolve("tinymce.util.Promise"),it=tinymce.util.Tools.resolve("tinymce.util.URI"),at=function(t){return t.getParam("imagetools_toolbar","rotateleft rotateright | flipv fliph | crop editimage imageoptions")},ut=function(t){return t.getParam("imagetools_proxy")},ct=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),lt=tinymce.util.Tools.resolve("tinymce.ui.Factory"),st=tinymce.util.Tools.resolve("tinymce.geom.Rect"),ft=function(t){return new rt(function(e){var n=function(){t.removeEventListener("load",n),e(t)};t.complete?e(t):t.addEventListener("load",n)})},dt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),ht=tinymce.util.Tools.resolve("tinymce.util.Observable"),pt=tinymce.util.Tools.resolve("tinymce.util.VK"),mt=0,gt={create:function(t){return new(lt.get("Control").extend({Defaults:{classes:"imagepanel"},selection:function(t){return arguments.length?(this.state.set("rect",t),this):this.state.get("rect")},imageSize:function(){var t=this.state.get("viewRect");return{w:t.w,h:t.h}},toggleCropRect:function(t){this.state.set("cropEnabled",t)},imageSrc:function(t){var e=this,n=new Image;n.src=t,ft(n).then(function(){var t,o,r=e.state.get("viewRect");if((o=e.$el.find("img"))[0])o.replaceWith(n);else{var i=document.createElement("div");i.className="mce-imagepanel-bg",e.getEl().appendChild(i),e.getEl().appendChild(n)}t={x:0,y:0,w:n.naturalWidth,h:n.naturalHeight},e.state.set("viewRect",t),e.state.set("rect",st.inflate(t,-20,-20)),r&&r.w===t.w&&r.h===t.h||e.zoomFit(),e.repaintImage(),e.fire("load")})},zoom:function(t){return arguments.length?(this.state.set("zoom",t),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var t,e,n,o,r,i;t=this.$el.find("img"),e=this.getEl().clientWidth,n=this.getEl().clientHeight,o=t[0].naturalWidth,r=t[0].naturalHeight,(i=Math.min((e-10)/o,(n-10)/r))>=1&&(i=1),this.zoom(i)},repaintImage:function(){var t,e,n,o,r,i,a,u,c,l,s;s=this.getEl(),c=this.zoom(),l=this.state.get("rect"),a=this.$el.find("img"),u=this.$el.find(".mce-imagepanel-bg"),r=s.offsetWidth,i=s.offsetHeight,n=a[0].naturalWidth*c,o=a[0].naturalHeight*c,t=Math.max(0,r/2-n/2),e=Math.max(0,i/2-o/2),a.css({left:t,top:e,width:n,height:o}),u.css({left:t,top:e,width:n,height:o}),this.cropRect&&(this.cropRect.setRect({x:l.x*c+t,y:l.y*c+e,w:l.w*c,h:l.h*c}),this.cropRect.setClampRect({x:t,y:e,w:n,h:o}),this.cropRect.setViewPortRect({x:0,y:0,w:r,h:i}))},bindStates:function(){var t=this;function e(e){t.cropRect=function(t,e,o,r,i){var a,u,c,l,s="mce-",f=s+"crid-"+mt++;function d(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function h(e,n,r,i){var u,c,l,s,f;u=n.x,c=n.y,l=n.w,s=n.h,u+=r*e.deltaX,c+=i*e.deltaY,(l+=r*e.deltaW)<20&&(l=20),(s+=i*e.deltaH)<20&&(s=20),f=t=st.clamp({x:u,y:c,w:l,h:s},o,"move"===e.name),f=d(o,f),a.fire("updateRect",{rect:f}),g(f)}function p(t){function o(t,e){e.h<0&&(e.h=0),e.w<0&&(e.w=0),dt("#"+f+"-"+t,r).css({left:e.x,top:e.y,width:e.w,height:e.h})}n.each(u,function(e){dt("#"+f+"-"+e.name,r).css({left:t.w*e.xMul+t.x,top:t.h*e.yMul+t.y})}),o("top",{x:e.x,y:e.y,w:e.w,h:t.y-e.y}),o("right",{x:t.x+t.w,y:t.y,w:e.w-t.x-t.w+e.x,h:t.h}),o("bottom",{x:e.x,y:t.y+t.h,w:e.w,h:e.h-t.y-t.h+e.y}),o("left",{x:e.x,y:t.y,w:t.x-e.x,h:t.h}),o("move",t)}function m(e){p(t=e)}function g(t){var e,n;m((e=o,{x:(n=t).x+e.x,y:n.y+e.y,w:n.w,h:n.h}))}return u=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],l=["top","right","bottom","left"],dt('<div id="'+f+'" class="'+s+'croprect-container" role="grid" aria-dropeffect="execute">').appendTo(r),n.each(l,function(t){dt("#"+f,r).append('<div id="'+f+"-"+t+'"class="'+s+'croprect-block" style="display: none" data-mce-bogus="all">')}),n.each(u,function(t){dt("#"+f,r).append('<div id="'+f+"-"+t.name+'" class="'+s+"croprect-handle "+s+"croprect-handle-"+t.name+'"style="display: none" data-mce-bogus="all" role="gridcell" tabindex="-1" aria-label="'+t.label+'" aria-grabbed="false">')}),c=n.map(u,function(e){var n;return new(lt.get("DragHelper"))(f,{document:r.ownerDocument,handle:f+"-"+e.name,start:function(){n=t},drag:function(t){h(e,n,t.deltaX,t.deltaY)}})}),p(t),dt(r).on("focusin focusout",function(t){dt(t.target).attr("aria-grabbed","focus"===t.type)}),dt(r).on("keydown",function(e){var o;function r(t,e,n,r,i){t.stopPropagation(),t.preventDefault(),h(o,n,r,i)}switch(n.each(u,function(t){if(e.target.id===f+"-"+t.name)return o=t,!1}),e.keyCode){case pt.LEFT:r(e,0,t,-10,0);break;case pt.RIGHT:r(e,0,t,10,0);break;case pt.UP:r(e,0,t,0,-10);break;case pt.DOWN:r(e,0,t,0,10);break;case pt.ENTER:case pt.SPACEBAR:e.preventDefault(),i()}}),a=n.extend({toggleVisibility:function(t){var e;e=n.map(u,function(t){return"#"+f+"-"+t.name}).concat(n.map(l,function(t){return"#"+f+"-"+t})).join(","),t?dt(e,r).show():dt(e,r).hide()},setClampRect:function(e){o=e,p(t)},setRect:m,getInnerRect:function(){return d(o,t)},setInnerRect:g,setViewPortRect:function(n){e=n,p(t)},destroy:function(){n.each(c,function(t){t.destroy()}),c=[]}},ht)}(e,t.state.get("viewRect"),t.state.get("viewRect"),t.getEl(),function(){t.fire("crop")}),t.cropRect.on("updateRect",function(e){var n=e.rect,o=t.zoom();n={x:Math.round(n.x/o),y:Math.round(n.y/o),w:Math.round(n.w/o),h:Math.round(n.h/o)},t.state.set("rect",n)}),t.on("remove",t.cropRect.destroy)}t.state.on("change:cropEnabled",function(e){t.cropRect.toggleVisibility(e.value),t.repaintImage()}),t.state.on("change:zoom",function(){t.repaintImage()}),t.state.on("change:rect",function(n){var o=n.value;t.cropRect||e(o),t.cropRect.setRect(o)})}}))(t)}};function vt(t){return{blob:t,url:nt.createObjectURL(t)}}function yt(t){t&&nt.revokeObjectURL(t.url)}function bt(t){n.each(t,yt)}function wt(t,e,o,r){var i,a,u,c,l,s,f,d,h,p,m,g,v,y,b,w,x,R,I,T,k,C,B,U,M,A,j,E=function(){var t=[],e=-1;function n(){return e>0}function o(){return-1!==e&&e<t.length-1}return{data:t,add:function(n){var o;return o=t.splice(++e),t.push(n),{state:n,removed:o}},undo:function(){if(n())return t[--e]},redo:function(){if(o())return t[++e]},canUndo:n,canRedo:o}}(),z=function(e){return t.rtl?e.reverse():e};function O(t){var e,n,o,r;e=i.find("#w")[0],n=i.find("#h")[0],o=parseInt(e.value(),10),r=parseInt(n.value(),10),i.find("#constrain")[0].checked()&&U&&M&&o&&r&&("w"===t.control.settings.name?(r=Math.round(o*A),n.value(r)):(o=Math.round(r*j),e.value(o))),U=o,M=r}function D(t){return Math.round(100*t)+"%"}function S(){i.find("#undo").disabled(!E.canUndo()),i.find("#redo").disabled(!E.canRedo()),i.statusbar.find("#save").disabled(!E.canUndo())}function L(){i.find("#undo").disabled(!0),i.find("#redo").disabled(!0)}function H(t){t&&d.imageSrc(t.url)}function _(t){return function(){var e=n.grep(B,function(e){return e.settings.name!==t});n.each(e,function(t){t.hide()}),t.show(),t.focus()}}function F(t){H(c=vt(t))}function P(t){H(e=vt(t)),bt(E.add(e).removed),S()}function W(){var t=d.selection();tt.blobToImageResult(e.blob).then(function(e){Z.crop(e,t.x,t.y,t.w,t.h).then(X).then(function(t){P(t),V()})})}var q=function(t){var n=[].slice.call(arguments,1);return function(){var o=c||e;tt.blobToImageResult(o.blob).then(function(e){t.apply(this,[e].concat(n)).then(X).then(F)})}};function V(){H(e),yt(c),_(a)(),S()}function N(){c?(P(c.blob),V()):function e(n,o){c?o():setTimeout(function(){n-- >0?e(n,o):t.windowManager.alert("Error: failed to apply image operation.")},10)}(100,N)}function $(t){return lt.create("Form",{layout:"flex",direction:"row",labelGap:5,border:"0 0 1 0",align:"center",pack:"center",padding:"0 10 0 10",spacing:5,flex:0,minHeight:60,defaults:{classes:"imagetool",type:"button"},items:t})}var X=function(t){return t.toBlob()};function G(t,n){return $(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",function(){L(),tt.blobToImageResult(e.blob).then(function(t){return n(t)}).then(X).then(function(t){var e=vt(t);H(e),yt(c),c=e})})}function Y(n,o,r,i,a){return $(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{type:"slider",flex:1,ondragend:function(t){var n;n=t.value,tt.blobToImageResult(e.blob).then(function(t){return o(t,n)}).then(X).then(function(t){var e=vt(t);H(e),yt(c),c=e})},minValue:t.rtl?a:i,maxValue:t.rtl?i:a,value:r,previewFilter:D},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",function(){this.find("slider").value(r),L()})}l=$(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:W}])).hide().on("show hide",function(t){d.toggleCropRect("show"===t.type)}).on("show",L),s=$(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{type:"textbox",name:"w",label:"Width",size:4,onkeyup:O},{type:"textbox",name:"h",label:"Height",size:4,onkeyup:O},{type:"checkbox",name:"constrain",text:"Constrain proportions",checked:!0,onchange:function(t){!0===t.control.value()&&(A=M/U,j=U/M)}},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:"submit"}])).hide().on("submit",function(t){var n=parseInt(i.find("#w").value(),10),o=parseInt(i.find("#h").value(),10);t.preventDefault(),function(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];var r=[].slice.call(arguments,1);return function(){tt.blobToImageResult(e.blob).then(function(e){t.apply(this,[e].concat(r)).then(X).then(P)})}}(Z.resize,n,o)(),V()}).on("show",L),f=$(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{icon:"fliph",tooltip:"Flip horizontally",onclick:q(Z.flip,"h")},{icon:"flipv",tooltip:"Flip vertically",onclick:q(Z.flip,"v")},{icon:"rotateleft",tooltip:"Rotate counterclockwise",onclick:q(Z.rotate,-90)},{icon:"rotateright",tooltip:"Rotate clockwise",onclick:q(Z.rotate,90)},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",L),m=G(0,Z.invert),I=G(0,Z.sharpen),T=G(0,Z.emboss),g=Y(0,Z.brightness,0,-1,1),v=Y(0,Z.hue,180,0,360),y=Y(0,Z.saturate,0,-1,1),b=Y(0,Z.contrast,0,-1,1),w=Y(0,Z.grayscale,0,0,1),x=Y(0,Z.sepia,0,0,1),R=function(n,o){function r(){var t,n,r;t=i.find("#r")[0].value(),n=i.find("#g")[0].value(),r=i.find("#b")[0].value(),tt.blobToImageResult(e.blob).then(function(e){return o(e,t,n,r)}).then(X).then(function(t){var e=vt(t);H(e),yt(c),c=e})}var a=t.rtl?2:0,u=t.rtl?0:2;return $(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{type:"slider",label:"R",name:"r",minValue:a,value:1,maxValue:u,ondragend:r,previewFilter:D},{type:"slider",label:"G",name:"g",minValue:a,value:1,maxValue:u,ondragend:r,previewFilter:D},{type:"slider",label:"B",name:"b",minValue:a,value:1,maxValue:u,ondragend:r,previewFilter:D},{type:"spacer",flex:1},{text:"Apply",subtype:"primary",onclick:N}])).hide().on("show",function(){i.find("#r,#g,#b").value(1),L()})}(0,Z.colorize),k=Y(0,Z.gamma,0,-1,1),C=Y(0,Z.exposure,1,0,2),u=$(z([{text:"Back",onclick:V},{type:"spacer",flex:1},{text:"hue",icon:"hue",onclick:_(v)},{text:"saturate",icon:"saturate",onclick:_(y)},{text:"sepia",icon:"sepia",onclick:_(x)},{text:"emboss",icon:"emboss",onclick:_(T)},{text:"exposure",icon:"exposure",onclick:_(C)},{type:"spacer",flex:1}])).hide(),a=$(z([{tooltip:"Crop",icon:"crop",onclick:_(l)},{tooltip:"Resize",icon:"resize2",onclick:_(s)},{tooltip:"Orientation",icon:"orientation",onclick:_(f)},{tooltip:"Brightness",icon:"sun",onclick:_(g)},{tooltip:"Sharpen",icon:"sharpen",onclick:_(I)},{tooltip:"Contrast",icon:"contrast",onclick:_(b)},{tooltip:"Color levels",icon:"drop",onclick:_(R)},{tooltip:"Gamma",icon:"gamma",onclick:_(k)},{tooltip:"Invert",icon:"invert",onclick:_(m)}])),d=gt.create({flex:1,imageSrc:e.url}),h=lt.create("Container",{layout:"flex",direction:"column",pack:"start",border:"0 1 0 0",padding:5,spacing:5,items:[{type:"button",icon:"undo",tooltip:"Undo",name:"undo",onclick:function(){H(e=E.undo()),S()}},{type:"button",icon:"redo",tooltip:"Redo",name:"redo",onclick:function(){H(e=E.redo()),S()}},{type:"button",icon:"zoomin",tooltip:"Zoom in",onclick:function(){var t=d.zoom();t<2&&(t+=.1),d.zoom(t)}},{type:"button",icon:"zoomout",tooltip:"Zoom out",onclick:function(){var t=d.zoom();t>.1&&(t-=.1),d.zoom(t)}}]}),p=lt.create("Container",{type:"container",layout:"flex",direction:"row",align:"stretch",flex:1,items:z([h,d])}),B=[a,l,s,f,u,m,g,v,y,b,w,x,R,I,T,k,C],(i=t.windowManager.open({layout:"flex",direction:"column",align:"stretch",minWidth:Math.min(ct.DOM.getViewPort().w,800),minHeight:Math.min(ct.DOM.getViewPort().h,650),title:"Edit image",items:B.concat([p]),buttons:z([{text:"Save",name:"save",subtype:"primary",onclick:function(){o(e.blob),i.close()}},{text:"Cancel",onclick:"close"}])})).on("close",function(){r(),bt(E.data),E=null,c=null}),E.add(e),S(),d.on("load",function(){U=d.imageSize().w,M=d.imageSize().h,A=M/U,j=U/M,i.find("#w").value(U),i.find("#h").value(M)}),d.on("crop",W)}var xt={edit:function(t,e){return new rt(function(n,o){return e.toBlob().then(function(e){wt(t,vt(e),n,o)})})}},Rt={getImageSize:function(t){var e,n;function o(t){return/^[0-9\.]+px$/.test(t)}return e=t.style.width,n=t.style.height,e||n?o(e)&&o(n)?{w:parseInt(e,10),h:parseInt(n,10)}:null:(e=t.width,n=t.height,e&&n?{w:parseInt(e,10),h:parseInt(n,10)}:null)},setImageSize:function(t,e){var n,o;e&&(n=t.style.width,o=t.style.height,(n||o)&&(t.style.width=e.w+"px",t.style.height=e.h+"px",t.removeAttribute("data-mce-style")),n=t.width,o=t.height,(n||o)&&(t.setAttribute("width",e.w),t.setAttribute("height",e.h)))},getNaturalImageSize:function(t){return{w:t.naturalWidth,h:t.naturalHeight}}},It=(Array.prototype.indexOf,undefined,Array.prototype.push,Array.prototype.slice,function(t,e){for(var n=0,o=t.length;n<o;n++){var r=t[n];if(e(r,n,t))return w.some(r)}return w.none()}),Tt=function(t){return null!==t&&t!==undefined},kt={traverse:function(t,e){var n;return n=e.reduce(function(t,e){return Tt(t)?t[e]:undefined},t),Tt(n)?n:null},readBlob:function(t){return new rt(function(e){var n=new k;n.onload=function(t){var n=t.target;e(n.result)},n.readAsText(t)})},requestUrlAsBlob:function(t,e){return new rt(function(o){var r;(r=new function(){return new(T.getOrDie("XMLHttpRequest"))}).onreadystatechange=function(){4===r.readyState&&o({status:r.status,blob:this.response})},r.open("GET",t,!0),n.each(e,function(t,e){r.setRequestHeader(e,t)}),r.responseType="blob",r.send()})},parseJson:function(t){var e;try{e=JSON.parse(t)}catch(n){}return e}},Ct=[{code:404,message:"Could not find Image Proxy"},{code:403,message:"Rejected request"},{code:0,message:"Incorrect Image Proxy URL"}],Bt=[{type:"key_missing",message:"The request did not include an api key."},{type:"key_not_found",message:"The provided api key could not be found."},{type:"domain_not_trusted",message:"The api key is not valid for the request origins."}],Ut=function(t){return"ImageProxy HTTP error: "+It(Ct,function(e){return t===e.code}).fold(p.constant("Unknown ImageProxy error"),function(t){return t.message})},Mt=function(t){var e=Ut(t);return rt.reject(e)},At=function(t){return It(Bt,function(e){return e.type===t}).fold(p.constant("Unknown service error"),function(t){return t.message})},jt=function(t,e){return kt.readBlob(e).then(function(t){var e,n,o,r=(e=t,n=kt.parseJson(e),"ImageProxy Service error: "+((o=kt.traverse(n,["error","type"]))?At(o):"Invalid JSON in service error message"));return rt.reject(r)})},Et={handleServiceErrorResponse:function(t,e){return 400===(n=t)||403===n||500===n?jt(0,e):Mt(t);var n},handleHttpError:Mt,getHttpErrorMsg:Ut,getServiceErrorMsg:At},zt=function(t,e){return kt.requestUrlAsBlob((n=t,o=e,r=-1===n.indexOf("?")?"?":"&",/[?&]apiKey=/.test(n)||!o?n:n+r+"apiKey="+encodeURIComponent(o)),{"Content-Type":"application/json;charset=UTF-8","tiny-api-key":e}).then(function(t){return t.status<200||t.status>=300?Et.handleServiceErrorResponse(t.status,t.blob):rt.resolve(t.blob)});var n,o,r},Ot=function(t,e){return e?zt(t,e):(n=t,kt.requestUrlAsBlob(n,{}).then(function(t){return t.status<200||t.status>=300?Et.handleHttpError(t.status):rt.resolve(t.blob)}));var n},Dt=0,St=function(t,e){t.notificationManager.open({text:e,type:"error"})},Lt=function(t){return t.selection.getNode()},Ht=function(t,e){var n=e.src;return 0===n.indexOf("data:")||0===n.indexOf("blob:")||new it(n).host===t.documentBaseURI.host},_t=function(t,e){return-1!==n.inArray(t.settings.imagetools_cors_hosts,new it(e.src).host)},Ft=function(t){var e,n,o,r,i,a;return(e=t.editorUpload.blobCache.getByUri(Lt(t).src))?rt.resolve(e.blob()):(n=t,o=Lt(t),a=o.src,_t(n,o)?Ot(o.src,null):Ht(n,o)?O(o):(a=ut(n),a+=(-1===a.indexOf("?")?"?":"&")+"url="+encodeURIComponent(o.src),r=(i=n).settings.api_key||i.settings.imagetools_api_key,Ot(a,r)))},Pt=function(t,e){var n=ot.setEditorTimeout(t,function(){t.editorUpload.uploadImagesAuto()},t.settings.images_upload_timeout||3e4);e.set(n)},Wt=function(t){clearTimeout(t.get())},qt=function(t,e,n,o,r){return e.toBlob().then(function(i){var a,u,c,l,s,f,d;return c=t.editorUpload.blobCache,a=(s=Lt(t)).src,t.settings.images_reuse_filename&&((l=c.getByUri(a))?(a=l.uri(),u=l.name()):(f=t,u=(d=a.match(/\/([^\/\?]+)?\.(?:jpeg|jpg|png|gif)(?:\?|$)/i))?f.dom.encode(d[1]):null)),l=c.create({id:"imagetools"+Dt++,blob:i,base64:e.toBase64(),uri:a,name:u}),c.add(l),t.undoManager.transact(function(){t.$(s).on("load",function e(){t.$(s).off("load",e),t.nodeChanged(),n?t.editorUpload.uploadImagesAuto():(Wt(o),Pt(t,o))}),r&&t.$(s).attr({width:r.w,height:r.h}),t.$(s).attr({src:l.blobUri()}).removeAttr("data-mce-src")}),l})},Vt=function(t,e,n,o){return function(){return t._scanForImages().then(p.curry(Ft,t)).then(tt.blobToImageResult).then(n).then(function(n){return qt(t,n,!1,e,o)},function(e){St(t,e)})}},Nt={rotate:function(t,e,n){return function(){var o=Rt.getImageSize(Lt(t)),r=o?{w:o.h,h:o.w}:null;return Vt(t,e,function(t){return Z.rotate(t,n)},r)()}},flip:function(t,e,n){return function(){return Vt(t,e,function(t){return Z.flip(t,n)})()}},editImageDialog:function(t,e){return function(){var n=Lt(t),o=Rt.getNaturalImageSize(n),r=function(t){return new rt(function(e){z(t).then(function(r){var i=Rt.getNaturalImageSize(r);o.w===i.w&&o.h===i.h||Rt.getImageSize(n)&&Rt.setImageSize(n,i),nt.revokeObjectURL(r.src),e(t)})})};Ft(t).then(tt.blobToImageResult).then(p.curry(function(t,n){return xt.edit(t,n).then(r).then(tt.blobToImageResult).then(function(n){return qt(t,n,!0,e)},function(){})},t),function(e){St(t,e)})}},isEditableImage:function(t,e){return t.dom.is(e,"img:not([data-mce-object],[data-mce-placeholder])")&&(Ht(t,e)||_t(t,e)||t.settings.imagetools_proxy)},cancelTimedUpload:Wt},$t=function(t,e){n.each({mceImageRotateLeft:Nt.rotate(t,e,-90),mceImageRotateRight:Nt.rotate(t,e,90),mceImageFlipVertical:Nt.flip(t,e,"v"),mceImageFlipHorizontal:Nt.flip(t,e,"h"),mceEditImage:Nt.editImageDialog(t,e)},function(e,n){t.addCommand(n,e)})},Xt=function(t,e,n){t.on("NodeChange",function(o){var r=n.get();r&&r.src!==o.element.src&&(Nt.cancelTimedUpload(e),t.editorUpload.uploadImagesAuto(),n.set(null)),Nt.isEditableImage(t,o.element)&&n.set(o.element)})},Gt=function(t){t.addButton("rotateleft",{title:"Rotate counterclockwise",cmd:"mceImageRotateLeft"}),t.addButton("rotateright",{title:"Rotate clockwise",cmd:"mceImageRotateRight"}),t.addButton("flipv",{title:"Flip vertically",cmd:"mceImageFlipVertical"}),t.addButton("fliph",{title:"Flip horizontally",cmd:"mceImageFlipHorizontal"}),t.addButton("editimage",{title:"Edit image",cmd:"mceEditImage"}),t.addButton("imageoptions",{title:"Image options",icon:"options",cmd:"mceImage"})},Yt=function(t){t.addContextToolbar(p.curry(Nt.isEditableImage,t),at(t))};e.add("imagetools",function(e){var n=t(0),o=t(null);$t(e,n),Gt(e),Yt(e),Xt(e,n,o)})}(); diff --git a/public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js.gz b/public/assets/tinymce/plugins/imagetools/plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..08882d658541da84835e8bc8b506ed39fd7db3b8 GIT binary patch literal 12042 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/imagetools/plugin.js b/public/assets/tinymce/plugins/imagetools/plugin.js index c20a260cc..4513c9f14 120000 --- a/public/assets/tinymce/plugins/imagetools/plugin.js +++ b/public/assets/tinymce/plugins/imagetools/plugin.js @@ -1 +1 @@ -plugin-07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a.js \ No newline at end of file +plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/imagetools/plugin.js.gz b/public/assets/tinymce/plugins/imagetools/plugin.js.gz index e46db877e..d04a7d85e 120000 --- a/public/assets/tinymce/plugins/imagetools/plugin.js.gz +++ b/public/assets/tinymce/plugins/imagetools/plugin.js.gz @@ -1 +1 @@ -plugin-07200ec683beba83f703fb385e5451a4e9f4aeb198c30b0cf10183c369c9766a.js.gz \ No newline at end of file +plugin-a05e3717ef0c53841e01fe61dcd30da969df899c85b7ed81b0b875123d093bfc.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js b/public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js new file mode 100644 index 000000000..609d4352f --- /dev/null +++ b/public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.VK"),n=function(t){return t.target_list},o=function(t){return t.rel_list},i=function(t){return t.link_class_list},r=function(t){return"boolean"==typeof t.link_assume_external_targets&&t.link_assume_external_targets},a=function(t){return"boolean"==typeof t.link_context_toolbar&&t.link_context_toolbar},l=function(t){return t.link_list},u=function(t){return"string"==typeof t.default_link_target},c=function(t){return t.default_link_target},s=n,f=function(t,e){t.settings.target_list=e},d=function(t){return!1!==n(t)},m=o,v=function(t){return o(t)!==undefined},g=i,h=function(t){return i(t)!==undefined},x=function(t){return!1!==t.link_title},p=function(t){return"boolean"==typeof t.allow_unsafe_link_target&&t.allow_unsafe_link_target},y=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),k=tinymce.util.Tools.resolve("tinymce.Env"),b=function(t){if(!k.ie||k.ie>10){var e=document.createElement("a");e.target="_blank",e.href=t,e.rel="noreferrer noopener";var n=document.createEvent("MouseEvents");n.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),r=e,a=n,document.body.appendChild(r),r.dispatchEvent(a),document.body.removeChild(r)}else{var o=window.open("","_blank");if(o){o.opener=null;var i=o.document;i.open(),i.write('<meta http-equiv="refresh" content="0; url='+y.DOM.encode(t)+'">'),i.close()}}var r,a},_=tinymce.util.Tools.resolve("tinymce.util.Tools"),w=function(t,e){var n,o,i=["noopener"],r=t?t.split(/\s+/):[],a=function(t){return t.filter(function(t){return-1===_.inArray(i,t)})};return(r=e?(n=a(n=r)).length?n.concat(i):i:a(r)).length?(o=r,_.trim(o.sort().join(" "))):null},T=function(t,e){return e=e||t.selection.getNode(),M(e)?t.dom.select("a[href]",e)[0]:t.dom.getParent(e,"a[href]")},C=function(t){return t&&"A"===t.nodeName&&t.href},M=function(t){return t&&"FIGURE"===t.nodeName&&/\bimage\b/i.test(t.className)},O=function(t,e){var n,o;(o=t.dom.select("img",e)[0])&&(n=t.dom.getParents(o,"a[href]",e)[0])&&(n.parentNode.insertBefore(o,n),t.dom.remove(n))},N=function(t,e,n){var o,i;(i=t.dom.select("img",e)[0])&&(o=t.dom.create("a",n),i.parentNode.insertBefore(o,i),o.appendChild(i))},R=function(t,e){return function(n){t.undoManager.transact(function(){var o=t.selection.getNode(),i=T(t,o),r={href:n.href,target:n.target?n.target:null,rel:n.rel?n.rel:null,"class":n["class"]?n["class"]:null,title:n.title?n.title:null};v(t.settings)||!1!==p(t.settings)||(r.rel=w(r.rel,"_blank"===r.target)),n.href===e.href&&(e.attach(),e={}),i?(t.focus(),n.hasOwnProperty("text")&&("innerText"in i?i.innerText=n.text:i.textContent=n.text),t.dom.setAttribs(i,r),t.selection.select(i),t.undoManager.add()):M(o)?N(t,o,r):n.hasOwnProperty("text")?t.insertContent(t.dom.createHTML("a",r,t.dom.encode(n.text))):t.execCommand("mceInsertLink",!1,r)})}},A=function(t){return function(){t.undoManager.transact(function(){var e=t.selection.getNode();M(e)?O(t,e):t.execCommand("unlink")})}},L=C,P=function(t){return _.grep(t,C).length>0},E=function(t){return!(/</.test(t)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(t)||-1===t.indexOf("href=")))},K=T,S=function(t,e){var n=e?e.innerText||e.textContent:t.getContent({format:"text"});return n.replace(/\uFEFF/g,"")},U=w,D=tinymce.util.Tools.resolve("tinymce.util.Delay"),I=tinymce.util.Tools.resolve("tinymce.util.XHR"),B={},F=function(t,e,n){var o=function(t,n){return n=n||[],_.each(t,function(t){var i={text:t.text||t.title};t.menu?i.menu=o(t.menu):(i.value=t.value,e&&e(i)),n.push(i)}),n};return o(t,n||[])},q=function(t,e,n){var o=t.selection.getRng();D.setEditorTimeout(t,function(){t.windowManager.confirm(e,function(e){t.selection.setRng(o),n(e)})})},V=function(t,e){var n,o,i,a,l,y,k,b,w,T,C,M={},O=t.selection,N=t.dom,L=function(t){var e=i.find("#text");(!e.value()||t.lastControl&&e.value()===t.lastControl.text())&&e.value(t.control.text()),i.find("#href").value(t.control.value())},P=function(){o||!a||M.text||this.parent().parent().find("#text")[0].value(this.value())};a=E(O.getContent()),n=K(t),M.text=o=S(t.selection,n),M.href=n?N.getAttrib(n,"href"):"",n?M.target=N.getAttrib(n,"target"):u(t.settings)&&(M.target=c(t.settings)),(C=N.getAttrib(n,"rel"))&&(M.rel=C),(C=N.getAttrib(n,"class"))&&(M["class"]=C),(C=N.getAttrib(n,"title"))&&(M.title=C),a&&(l={name:"text",type:"textbox",size:40,label:"Text to display",onchange:function(){M.text=this.value()}}),e&&(y={type:"listbox",label:"Link list",values:F(e,function(e){e.value=t.convertURL(e.value||e.url,"href")},[{text:"None",value:""}]),onselect:L,value:t.convertURL(M.href,"href"),onPostRender:function(){y=this}}),d(t.settings)&&(s(t.settings)===undefined&&f(t,[{text:"None",value:""},{text:"New window",value:"_blank"}]),b={name:"target",type:"listbox",label:"Target",values:F(s(t.settings))}),v(t.settings)&&(k={name:"rel",type:"listbox",label:"Rel",values:F(m(t.settings),function(e){!1===p(t.settings)&&(e.value=U(e.value,"_blank"===M.target))})}),h(t.settings)&&(w={name:"class",type:"listbox",label:"Class",values:F(g(t.settings),function(e){e.value&&(e.textStyle=function(){return t.formatter.getCssText({inline:"a",classes:[e.value]})})})}),x(t.settings)&&(T={name:"title",type:"textbox",label:"Title",value:M.title}),i=t.windowManager.open({title:"Insert link",data:M,body:[{name:"href",type:"filepicker",filetype:"file",size:40,autofocus:!0,label:"Url",onchange:function(e){var n=e.meta||{};y&&y.value(t.convertURL(this.value(),"href")),_.each(e.meta,function(t,e){var n=i.find("#"+e);"text"===e?0===o.length&&(n.value(t),M.text=t):n.value(t)}),n.attach&&(B={href:this.value(),attach:n.attach}),n.text||P.call(this)},onkeyup:P,onpaste:P,onbeforecall:function(t){t.meta=i.toJSON()}},l,T,function(e){var n=[];if(_.each(t.dom.select("a:not([href])"),function(t){var o=t.name||t.id;o&&n.push({text:o,value:"#"+o,selected:-1!==e.indexOf("#"+o)})}),n.length)return n.unshift({text:"None",value:""}),{name:"anchor",type:"listbox",label:"Anchors",values:n,onselect:L}}(M.href),y,k,b,w],onSubmit:function(e){var n=r(t.settings),i=R(t,B),l=A(t),u=_.extend({},M,e.data),c=u.href;c?(a&&u.text!==o||delete u.text,c.indexOf("@")>0&&-1===c.indexOf("//")&&-1===c.indexOf("mailto:")?q(t,"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",function(t){t&&(u.href="mailto:"+c),i(u)}):!0===n&&!/^\w+:/i.test(c)||!1===n&&/^\s*www[\.|\d\.]/i.test(c)?q(t,"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(t){t&&(u.href="http://"+c),i(u)}):i(u)):l()}})},z=function(t){var e,n,o;n=V,"string"==typeof(o=l((e=t).settings))?I.send({url:o,success:function(t){n(e,JSON.parse(t))}}):"function"==typeof o?o(function(t){n(e,t)}):n(e,o)},H=function(t,e){return t.dom.getParent(e,"a[href]")},J=function(t){return H(t,t.selection.getStart())},$=function(t,e){if(e){var n=(i=e).getAttribute("data-mce-href")||i.getAttribute("href");if(/^#/.test(n)){var o=t.$(n);o.length&&t.selection.scrollIntoView(o[0],!0)}else b(e.href)}var i},j=function(t){return function(){z(t)}},G=function(t){return function(){$(t,J(t))}},X=function(t){return function(e){var n,o,i,r;return!!(a(t.settings)&&(!(r=t.plugins.contextmenu)||!r.isContextMenuVisible())&&L(e)&&3===(i=(o=(n=t.selection).getRng()).startContainer).nodeType&&n.isCollapsed()&&o.startOffset>0&&o.startOffset<i.data.length)}},Q=function(t){t.on("click",function(n){var o=H(t,n.target);o&&e.metaKeyPressed(n)&&(n.preventDefault(),$(t,o))}),t.on("keydown",function(e){var n,o=J(t);o&&13===e.keyCode&&!0===(n=e).altKey&&!1===n.shiftKey&&!1===n.ctrlKey&&!1===n.metaKey&&(e.preventDefault(),$(t,o))})},W=function(t){return function(){var e=this;t.on("nodechange",function(n){e.active(!t.readonly&&!!K(t,n.element))})}},Y=function(t){return function(){var e=this,n=function(t){P(t.parents)?e.show():e.hide()};P(t.dom.getParents(t.selection.getStart()))||e.hide(),t.on("nodechange",n),e.on("remove",function(){t.off("nodechange",n)})}},Z=function(t){t.addCommand("mceLink",j(t))},tt=function(t){t.addShortcut("Meta+K","",j(t))},et=function(t){t.addButton("link",{active:!1,icon:"link",tooltip:"Insert/edit link",onclick:j(t),onpostrender:W(t)}),t.addButton("unlink",{active:!1,icon:"unlink",tooltip:"Remove link",onclick:A(t),onpostrender:W(t)}),t.addContextToolbar&&t.addButton("openlink",{icon:"newtab",tooltip:"Open link",onclick:G(t)})},nt=function(t){t.addMenuItem("openlink",{text:"Open link",icon:"newtab",onclick:G(t),onPostRender:Y(t),prependToContext:!0}),t.addMenuItem("link",{icon:"link",text:"Link",shortcut:"Meta+K",onclick:j(t),stateSelector:"a[href]",context:"insert",prependToContext:!0})},ot=function(t){t.addContextToolbar&&t.addContextToolbar(X(t),"openlink | link unlink")};t.add("link",function(t){et(t),nt(t),ot(t),Q(t),Z(t),tt(t)})}(); diff --git a/public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js.gz b/public/assets/tinymce/plugins/link/plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..14a563351bb31f82df5b4feb6739b624745add1d GIT binary patch literal 3373 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 DyF;#H literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/link/plugin.js b/public/assets/tinymce/plugins/link/plugin.js index e3a3ab3db..2588f98f7 120000 --- a/public/assets/tinymce/plugins/link/plugin.js +++ b/public/assets/tinymce/plugins/link/plugin.js @@ -1 +1 @@ -plugin-f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524.js \ No newline at end of file +plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/link/plugin.js.gz b/public/assets/tinymce/plugins/link/plugin.js.gz index bb30029f6..c06c7d174 120000 --- a/public/assets/tinymce/plugins/link/plugin.js.gz +++ b/public/assets/tinymce/plugins/link/plugin.js.gz @@ -1 +1 @@ -plugin-f88d56ea19b064106188bcdc5d77ecdc89edebd19f6f3d86865fd243c975f524.js.gz \ No newline at end of file +plugin-31cc77e15370da31ac3f3e66499bd00c9e9c71a4440e9b87436d6bba6f3cdee3.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js b/public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js new file mode 100644 index 000000000..345c89e96 --- /dev/null +++ b/public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),n=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),o=tinymce.util.Tools.resolve("tinymce.util.VK"),r=tinymce.util.Tools.resolve("tinymce.dom.BookmarkManager"),i=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=function(e){return e&&"BR"===e.nodeName},d=function(e){return e&&3===e.nodeType},l=function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)},c=function(e){return e&&/^(LI|DT|DD)$/.test(e.nodeName)},f=function(e){return e&&/^(TH|TD)$/.test(e.nodeName)},u=s,m=function(e){return e.parentNode.firstChild===e},g=function(e){return e.parentNode.lastChild===e},p=function(e,t){return t&&!!e.schema.getTextBlockElements()[t.nodeName]},v=function(e,t){return e&&e.nodeName in t},h=function(e,t){return!!s(t)&&!(!e.isBlock(t.nextSibling)||s(t.previousSibling))},C=function(e,t,n){var o=e.isEmpty(t);return!(n&&e.select("span[data-mce-type=bookmark]",t).length>0)&&o},y=function(e,t){return e.isChildOf(t,e.getRoot())},N=function(e,n){var o=t.getNode(e,n);return c(e)&&d(o)?{container:o,offset:n>=e.childNodes.length?o.data.length:0}:{container:e,offset:n}},L=function(e){var t=e.cloneRange(),n=N(e.startContainer,e.startOffset);t.setStart(n.container,n.offset);var o=N(e.endContainer,e.endOffset);return t.setEnd(o.container,o.offset),t},S=a.DOM,b=function(e){var t={},n=function(n){var o,r,i;r=e[n?"startContainer":"endContainer"],i=e[n?"startOffset":"endOffset"],1===r.nodeType&&(o=S.create("span",{"data-mce-type":"bookmark"}),r.hasChildNodes()?(i=Math.min(i,r.childNodes.length-1),n?r.insertBefore(o,r.childNodes[i]):S.insertAfter(o,r.childNodes[i])):r.appendChild(o),r=o,i=0),t[n?"startContainer":"endContainer"]=r,t[n?"startOffset":"endOffset"]=i};return n(!0),e.collapsed||n(),t},D=function(e){function t(t){var n,o,r;n=r=e[t?"startContainer":"endContainer"],o=e[t?"startOffset":"endOffset"],n&&(1===n.nodeType&&(o=function(e){for(var t=e.parentNode.firstChild,n=0;t;){if(t===e)return n;1===t.nodeType&&"bookmark"===t.getAttribute("data-mce-type")||n++,t=t.nextSibling}return-1}(n),n=n.parentNode,S.remove(r),!n.hasChildNodes()&&S.isBlock(n)&&n.appendChild(S.create("br"))),e[t?"startContainer":"endContainer"]=n,e[t?"startOffset":"endOffset"]=o)}t(!0),t();var n=S.createRng();return n.setStart(e.startContainer,e.startOffset),e.endContainer&&n.setEnd(e.endContainer,e.endOffset),L(n)},k=a.DOM,T=function(e,t){var n,o=t.parentNode;"LI"===o.nodeName&&o.firstChild===t&&((n=o.previousSibling)&&"LI"===n.nodeName?(n.appendChild(t),C(e,o)&&k.remove(o)):k.setStyle(o,"listStyleType","none")),l(o)&&(n=o.previousSibling)&&"LI"===n.nodeName&&n.appendChild(t)},I=function(e,t){i.each(i.grep(e.select("ol,ul",t)),function(t){T(e,t)})},B=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),R=function(e){var t=e.selection.getStart(!0);return e.dom.getParent(t,"OL,UL,DL",O(e,t))},O=function(e,t){var n=e.dom.getParents(t,"TD,TH");return n.length>0?n[0]:e.getBody()},E={getParentList:R,getSelectedSubLists:function(e){var t,n,o,r=R(e),a=e.selection.getSelectedBlocks();return o=a,(n=r)&&1===o.length&&o[0]===n?(t=r,i.grep(t.querySelectorAll("ol,ul,dl"),function(e){return l(e)})):i.grep(a,function(e){return l(e)&&r!==e})},getSelectedListItems:function(e){var t,n,o,r=e.selection.getSelectedBlocks();return i.grep((t=e,n=r,o=i.map(n,function(e){var n=t.dom.getParent(e,"li,dd,dt",O(t,e));return n||e}),B.unique(o)),function(e){return c(e)})},getClosestListRootElm:O},A=tinymce.util.Tools.resolve("tinymce.Env"),P=a.DOM,x=function(e,t,n){var o,r,i,a=P.createFragment(),s=e.schema.getBlockElements();if(e.settings.forced_root_block&&(n=n||e.settings.forced_root_block),n&&((r=P.create(n)).tagName===e.settings.forced_root_block&&P.setAttribs(r,e.settings.forced_root_block_attrs),v(t.firstChild,s)||a.appendChild(r)),t)for(;o=t.firstChild;){var d=o.nodeName;i||"SPAN"===d&&"bookmark"===o.getAttribute("data-mce-type")||(i=!0),v(o,s)?(a.appendChild(o),r=null):n?(r||(r=P.create(n),a.appendChild(r)),r.appendChild(o)):a.appendChild(o)}return e.settings.forced_root_block?i||A.ie&&!(A.ie>10)||r.appendChild(P.create("br",{"data-mce-bogus":"1"})):a.appendChild(P.create("br")),a},_=a.DOM,M=function(e,t,n,o){var r,a,s,d,l;for(s=_.select('span[data-mce-type="bookmark"]',t),o=o||x(e,n),(r=_.createRng()).setStartAfter(n),r.setEndAfter(t),d=(a=r.extractContents()).firstChild;d;d=d.firstChild)if("LI"===d.nodeName&&e.dom.isEmpty(d)){_.remove(d);break}e.dom.isEmpty(a)||_.insertAfter(a,t),_.insertAfter(o,t),C(e.dom,n.parentNode)&&(l=n.parentNode,i.each(s,function(e){l.parentNode.insertBefore(e,n.parentNode)}),_.remove(l)),_.remove(n),C(e.dom,t)&&_.remove(t)},U=a.DOM,H=function(e,t){C(e,t)&&U.remove(t)},$=function(e,t){var n,o=t.parentNode,r=o.parentNode;return!(o!==e.getBody()&&("DD"===t.nodeName?(U.rename(t,"DT"),0):m(t)&&g(t)?("LI"===r.nodeName?(U.insertAfter(t,r),H(e.dom,r),U.remove(o)):l(r)?U.remove(o,!0):(r.insertBefore(x(e,t),o),U.remove(o)),0):m(t)?("LI"===r.nodeName?(U.insertAfter(t,r),t.appendChild(o),H(e.dom,r)):l(r)?r.insertBefore(t,o):(r.insertBefore(x(e,t),o),U.remove(t)),0):g(t)?("LI"===r.nodeName?U.insertAfter(t,r):l(r)?U.insertAfter(t,o):(U.insertAfter(x(e,t),o),U.remove(t)),0):("LI"===r.nodeName?(o=r,n=x(e,t,"LI")):n=l(r)?x(e,t,"LI"):x(e,t),M(e,o,t,n),I(e.dom,o.parentNode),0)))},w=$,K=function(e){var t=E.getSelectedListItems(e);if(t.length){var n=b(e.selection.getRng(!0)),o=void 0,r=void 0,i=E.getClosestListRootElm(e,e.selection.getStart(!0));for(o=t.length;o--;)for(var a=t[o].parentNode;a&&a!==i;){for(r=t.length;r--;)if(t[r]===a){t.splice(o,1);break}a=a.parentNode}for(o=0;o<t.length&&($(e,t[o])||0!==o);o++);return e.selection.setRng(D(n)),e.nodeChanged(),!0}},Q=function(e,t){i.each(t,function(t,n){e.setAttribute(n,t)})},W=function(e,t,n){var o,r,a,s,d,l,c;o=e,r=t,s=(a=n)["list-style-type"]?a["list-style-type"]:null,o.setStyle(r,"list-style-type",s),d=e,Q(l=t,(c=n)["list-attributes"]),i.each(d.select("li",l),function(e){Q(e,c["list-item-attributes"])})},j=function(e,t,n,o){var r,i;for(r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1===r.nodeType&&(r=r.childNodes[Math.min(i,r.childNodes.length-1)]||r),!n&&u(r.nextSibling)&&(r=r.nextSibling);r.parentNode!==o;){if(p(e,r))return r;if(/^(TD|TH)$/.test(r.parentNode.nodeName))return r;r=r.parentNode}return r},q=function(e,t,n){void 0===n&&(n={});var o,a=e.selection.getRng(!0),s="LI",d=E.getClosestListRootElm(e,e.selection.getStart(!0)),c=e.dom;"false"!==c.getContentEditable(e.selection.getNode())&&("DL"===(t=t.toUpperCase())&&(s="DT"),o=b(a),i.each(function(e,t,n){for(var o,a=[],s=e.dom,d=j(e,t,!0,n),l=j(e,t,!1,n),c=[],f=d;f&&(c.push(f),f!==l);f=f.nextSibling);return i.each(c,function(t){if(p(e,t))return a.push(t),void(o=null);if(s.isBlock(t)||u(t))return u(t)&&s.remove(t),void(o=null);var i=t.nextSibling;r.isBookmarkNode(t)&&(p(e,i)||!i&&t.parentNode===n)?o=null:(o||(o=s.create("p"),t.parentNode.insertBefore(o,t),a.push(o)),o.appendChild(t))}),a}(e,a,d),function(o){var r,a,d,f,u,m,g,p,v;(a=o.previousSibling)&&l(a)&&a.nodeName===t&&(d=a,f=n,u=c.getStyle(d,"list-style-type"),m=f?f["list-style-type"]:"",u===(m=null===m?"":m))?(r=a,o=c.rename(o,s),a.appendChild(o)):(r=c.create(t),o.parentNode.insertBefore(r,o),r.appendChild(o),o=c.rename(o,s)),g=c,p=o,v=["margin","margin-right","margin-bottom","margin-left","margin-top","padding","padding-right","padding-bottom","padding-left","padding-top"],i.each(v,function(e){return g.setStyle(p,((t={})[e]="",t));var t}),W(c,r,n),z(e.dom,r)}),e.selection.setRng(D(o)))},F=function(e){var t=b(e.selection.getRng(!0)),n=E.getClosestListRootElm(e,e.selection.getStart(!0)),o=E.getSelectedListItems(e),r=i.grep(o,function(t){return e.dom.isEmpty(t)});o=i.grep(o,function(t){return!e.dom.isEmpty(t)}),i.each(r,function(t){C(e.dom,t)&&w(e,t)}),i.each(o,function(t){var o,r;if(t.parentNode!==e.getBody()){for(o=t;o&&o!==n;o=o.parentNode)l(o)&&(r=o);M(e,r,t),I(e.dom,r.parentNode)}}),e.selection.setRng(D(t))},V=function(e,t,n){return d=n,(s=t)&&d&&l(s)&&s.nodeName===d.nodeName&&(i=t,a=n,(r=e).getStyle(i,"list-style-type",!0)===r.getStyle(a,"list-style-type",!0))&&(o=n,t.className===o.className);var o,r,i,a,s,d},z=function(e,t){var n,o;if(n=t.nextSibling,V(e,t,n)){for(;o=n.firstChild;)t.appendChild(o);e.remove(n)}if(n=t.previousSibling,V(e,t,n)){for(;o=n.lastChild;)t.insertBefore(o,t.firstChild);e.remove(n)}},G=function(e,t,n,o,r){if(t.nodeName!==o||J(r)){var a=b(e.selection.getRng(!0));i.each([t].concat(n),function(t){!function(e,t,n,o){if(t.nodeName!==n){var r=e.rename(t,n);W(e,r,o)}else W(e,t,o)}(e.dom,t,o,r)}),e.selection.setRng(D(a))}else F(e)},J=function(e){return"list-style-type"in e},X={toggleList:function(e,t,n){var o=E.getParentList(e),r=E.getSelectedSubLists(e);n=n||{},o&&r.length>0?G(e,o,r,t,n):function(e,t,n,o){if(t!==e.getBody())if(t)if(t.nodeName!==n||J(o)){var r=b(e.selection.getRng(!0));W(e.dom,t,o),z(e.dom,e.dom.rename(t,n)),e.selection.setRng(D(r))}else F(e);else q(e,n,o)}(e,o,t,n)},removeList:F,mergeWithAdjacentLists:z},Y=function(e,o,r,i){var a,s,d=o.startContainer,l=o.startOffset;if(3===d.nodeType&&(r?l<d.data.length:l>0))return d;for(a=e.schema.getNonEmptyElements(),1===d.nodeType&&(d=t.getNode(d,l)),s=new n(d,i),r&&h(e.dom,d)&&s.next();d=s[r?"next":"prev2"]();){if("LI"===d.nodeName&&!d.hasChildNodes())return d;if(a[d.nodeName])return d;if(3===d.nodeType&&d.data.length>0)return d}},Z=function(e,t){var n=t.childNodes;return 1===n.length&&!l(n[0])&&e.isBlock(n[0])},ee=function(e,t,n){var o,r,i,a;if(r=Z(e,n)?n.firstChild:n,Z(i=e,a=t)&&i.remove(a.firstChild,!0),!C(e,t,!0))for(;o=t.firstChild;)r.appendChild(o)},te=function(e,t,n){var o,r,i=t.parentNode;y(e,t)&&y(e,n)&&(l(n.lastChild)&&(r=n.lastChild),i===n.lastChild&&u(i.previousSibling)&&e.remove(i.previousSibling),(o=n.lastChild)&&u(o)&&t.hasChildNodes()&&e.remove(o),C(e,n,!0)&&e.$(n).empty(),ee(e,t,n),r&&n.appendChild(r),e.remove(t),C(e,i)&&i!==e.getRoot()&&e.remove(i))},ne=function(e,t,n,o){var r,i,a,s=e.dom;if(s.isEmpty(o))i=n,a=o,(r=e).dom.$(a).empty(),te(r.dom,i,a),r.selection.setCursorLocation(a);else{var d=b(t);te(s,n,o),e.selection.setRng(D(d))}},oe=function(e,t){var n,o,r,i=e.dom,a=e.selection,s=a.getStart(),d=E.getClosestListRootElm(e,s),l=i.getParent(a.getStart(),"LI",d);if(l){if((n=l.parentNode)===e.getBody()&&C(i,n))return!0;if(o=L(a.getRng(!0)),(r=i.getParent(Y(e,o,t,d),"LI",d))&&r!==l)return t?ne(e,o,r,l):function(e,t,n,o){var r=b(t);te(e.dom,n,o);var i=D(r);e.selection.setRng(i)}(e,o,l,r),!0;if(!r&&!t&&X.removeList(e))return!0}return!1},re=function(e,t){return oe(e,t)||function(e,t){var n=e.dom,o=e.selection.getStart(),r=E.getClosestListRootElm(e,o),i=n.getParent(o,n.isBlock,r);if(i&&n.isEmpty(i)){var a=L(e.selection.getRng(!0)),s=n.getParent(Y(e,a,t,r),"LI",r);if(s)return e.undoManager.transact(function(){var o,a,d,l;a=i,d=r,l=(o=n).getParent(a.parentNode,o.isBlock,d),o.remove(a),l&&o.isEmpty(l)&&o.remove(l),X.mergeWithAdjacentLists(n,s.parentNode),e.selection.select(s,!0),e.selection.collapse(t)}),!0}return!1}(e,t)},ie=function(e,t){return e.selection.isCollapsed()?re(e,t):(o=(n=e).selection.getStart(),r=E.getClosestListRootElm(n,o),!!(n.dom.getParent(o,"LI,DT,DD",r)||E.getSelectedListItems(n).length>0)&&(n.undoManager.transact(function(){n.execCommand("Delete"),I(n.dom,n.getBody())}),!0));var n,o,r},ae=function(e){e.on("keydown",function(t){t.keyCode===o.BACKSPACE?ie(e,!1)&&t.preventDefault():t.keyCode===o.DELETE&&ie(e,!0)&&t.preventDefault()})},se=ie,de=function(e){return{backspaceDelete:function(t){se(e,t)}}},le=a.DOM,ce=function(e,t){var n;if(l(e)){for(;n=e.firstChild;)t.appendChild(n);le.remove(e)}},fe=function(e){var t,n,o,r,i=E.getSelectedListItems(e);if(i.length){for(var a=b(e.selection.getRng(!0)),s=0;s<i.length&&(t=i[s],n=void 0,o=void 0,r=void 0,("DT"===t.nodeName?(le.rename(t,"DD"),1):(n=t.previousSibling)&&l(n)?(n.appendChild(t),1):n&&"LI"===n.nodeName&&l(n.lastChild)?(n.lastChild.appendChild(t),ce(t.lastChild,n.lastChild),1):(n=t.nextSibling)&&l(n)?(n.insertBefore(t,n.firstChild),1):(n=t.previousSibling)&&"LI"===n.nodeName&&(o=le.create(t.parentNode.nodeName),(r=le.getStyle(t.parentNode,"listStyleType"))&&le.setStyle(o,"listStyleType",r),n.appendChild(o),o.appendChild(t),ce(t.lastChild,o),1))||0!==s);s++);return e.selection.setRng(D(a)),e.nodeChanged(),!0}},ue=function(e,t){return function(){var n=e.dom.getParent(e.selection.getStart(),"UL,OL,DL");return n&&n.nodeName===t}},me=function(e){e.on("BeforeExecCommand",function(t){var n,o=t.command.toLowerCase();if("indent"===o?fe(e)&&(n=!0):"outdent"===o&&K(e)&&(n=!0),n)return e.fire("ExecCommand",{command:t.command}),t.preventDefault(),!0}),e.addCommand("InsertUnorderedList",function(t,n){X.toggleList(e,"UL",n)}),e.addCommand("InsertOrderedList",function(t,n){X.toggleList(e,"OL",n)}),e.addCommand("InsertDefinitionList",function(t,n){X.toggleList(e,"DL",n)}),e.addQueryStateHandler("InsertUnorderedList",ue(e,"UL")),e.addQueryStateHandler("InsertOrderedList",ue(e,"OL")),e.addQueryStateHandler("InsertDefinitionList",ue(e,"DL"))},ge=function(e){return e.getParam("lists_indent_on_tab",!0)},pe=function(e){var t;ge(e)&&(t=e).on("keydown",function(e){e.keyCode!==o.TAB||o.metaKeyPressed(e)||t.dom.getParent(t.selection.getStart(),"LI,DT,DD")&&(e.preventDefault(),e.shiftKey?K(t):fe(t))}),ae(e)},ve=function(e,t){return function(n){var o=n.control;e.on("NodeChange",function(e){var n=function(e,t){for(var n=0;n<e.length;n++)if(t(e[n]))return n;return-1}(e.parents,f),r=-1!==n?e.parents.slice(0,n):e.parents,a=i.grep(r,l);o.active(a.length>0&&a[0].nodeName===t)})}},he=function(e){var t,n,o,r;n="advlist",o=(t=e).settings.plugins?t.settings.plugins:"",-1===i.inArray(o.split(/[ ,]/),n)&&(e.addButton("numlist",{active:!1,title:"Numbered list",cmd:"InsertOrderedList",onPostRender:ve(e,"OL")}),e.addButton("bullist",{active:!1,title:"Bullet list",cmd:"InsertUnorderedList",onPostRender:ve(e,"UL")})),e.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:(r=e,function(e){var t=e.control;r.on("nodechange",function(){var e=E.getSelectedListItems(r),n=e.length>0&&m(e[0]);t.disabled(n)})})})};e.add("lists",function(e){return pe(e),he(e),me(e),de(e)})}(); diff --git a/public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js.gz b/public/assets/tinymce/plugins/lists/plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f678cadd038f6d7a8ce1319004a624c55a8c31df GIT binary patch literal 4748 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 aDg1k-|4x{>@d>f$fBqjd)|eE*Hvj;z@Ij6M literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/lists/plugin.js b/public/assets/tinymce/plugins/lists/plugin.js index ebe153296..7a247befb 120000 --- a/public/assets/tinymce/plugins/lists/plugin.js +++ b/public/assets/tinymce/plugins/lists/plugin.js @@ -1 +1 @@ -plugin-6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd.js \ No newline at end of file +plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/lists/plugin.js.gz b/public/assets/tinymce/plugins/lists/plugin.js.gz index 39f48df2c..cf39611ad 120000 --- a/public/assets/tinymce/plugins/lists/plugin.js.gz +++ b/public/assets/tinymce/plugins/lists/plugin.js.gz @@ -1 +1 @@ -plugin-6c286302096200d4813e0aea69c6f6dec2c8ab244455e76491e8d8c1ceb228fd.js.gz \ No newline at end of file +plugin-b09a1081e5a207f044c9012f6206200724018140203ef2f3754ffef659e1e215.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js b/public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js new file mode 100644 index 000000000..69f23711c --- /dev/null +++ b/public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Tools"),i=function(e){return e.getParam("media_scripts")},a=function(e){return e.getParam("audio_template_callback")},o=function(e){return e.getParam("video_template_callback")},n=function(e){return e.getParam("media_live_embeds",!0)},c=function(e){return e.getParam("media_filter_html",!0)},s=function(e){return e.getParam("media_url_resolver")},u=function(e){return e.getParam("media_alt_source",!0)},l=function(e){return e.getParam("media_poster",!0)},m=function(e){return e.getParam("media_dimensions",!0)},d=tinymce.util.Tools.resolve("tinymce.html.SaxParser"),h=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),p=function(e,t){if(e)for(var r=0;r<e.length;r++)if(-1!==t.indexOf(e[r].filter))return e[r]},f=function(e){return function(t){return t?t.style[e].replace(/px$/,""):""}},g=function(e){return function(t,r){var i;t&&(t.style[e]=/^[0-9.]+$/.test(i=r)?i+"px":i)}},v={getMaxWidth:f("maxWidth"),getMaxHeight:f("maxHeight"),setMaxWidth:g("maxWidth"),setMaxHeight:g("maxHeight")},w=h.DOM,b=function(e){return w.getAttrib(e,"data-ephox-embed-iri")},y=function(e,t){return s=t,u=w.createFragment(s),""!==b(u.firstChild)?(n=t,c=w.createFragment(n).firstChild,{type:"ephox-embed-iri",source1:b(c),source2:"",poster:"",width:v.getMaxWidth(c),height:v.getMaxHeight(c)}):(i=e,a=t,o={},d({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(e,t){if(o.source1||"param"!==e||(o.source1=t.map.movie),"iframe"!==e&&"object"!==e&&"embed"!==e&&"video"!==e&&"audio"!==e||(o.type||(o.type=e),o=r.extend(t.map,o)),"script"===e){var a=p(i,t.map.src);if(!a)return;o={type:"script",source1:t.map.src,width:a.width,height:a.height}}"source"===e&&(o.source1?o.source2||(o.source2=t.map.src):o.source1=t.map.src),"img"!==e||o.poster||(o.poster=t.map.src)}}).parse(a),o.source1=o.source1||o.src||o.data,o.source2=o.source2||"",o.poster=o.poster||"",o);var i,a,o,n,c,s,u},x=tinymce.util.Tools.resolve("tinymce.util.Promise"),j=function(e){var t={mp3:"audio/mpeg",wav:"audio/wav",mp4:"video/mp4",webm:"video/webm",ogg:"video/ogg",swf:"application/x-shockwave-flash"}[e.toLowerCase().split(".").pop()];return t||""},M=tinymce.util.Tools.resolve("tinymce.html.Writer"),_=tinymce.util.Tools.resolve("tinymce.html.Schema"),C=h.DOM,S=function(e,t){var r,i,a,o;for(r in t)if(a=""+t[r],e.map[r])for(i=e.length;i--;)(o=e[i]).name===r&&(a?(e.map[r]=a,o.value=a):(delete e.map[r],e.splice(i,1)));else a&&(e.push({name:r,value:a}),e.map[r]=a)},k=function(e,t){var r,i,a=C.createFragment(e).firstChild;return v.setMaxWidth(a,t.width),v.setMaxHeight(a,t.height),r=a.outerHTML,i=M(),d(i).parse(r),i.getContent()},A=function(e,t,r){return u=e,l=C.createFragment(u),""!==C.getAttrib(l.firstChild,"data-ephox-embed-iri")?k(e,t):(i=e,a=t,o=r,c=M(),s=0,d({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(e){c.comment(e)},cdata:function(e){c.cdata(e)},text:function(e,t){c.text(e,t)},start:function(e,t,r){switch(e){case"video":case"object":case"embed":case"img":case"iframe":a.height!==undefined&&a.width!==undefined&&S(t,{width:a.width,height:a.height})}if(o)switch(e){case"video":S(t,{poster:a.poster,src:""}),a.source2&&S(t,{src:""});break;case"iframe":S(t,{src:a.source1});break;case"source":if(++s<=2&&(S(t,{src:a["source"+s],type:a["source"+s+"mime"]}),!a["source"+s]))return;break;case"img":if(!a.poster)return;n=!0}c.start(e,t,r)},end:function(e){if("video"===e&&o)for(var t=1;t<=2;t++)if(a["source"+t]){var r=[];r.map={},s<t&&(S(r,{src:a["source"+t],type:a["source"+t+"mime"]}),c.start("source",r,!0))}if(a.poster&&"object"===e&&o&&!n){var i=[];i.map={},S(i,{src:a.poster,width:a.width,height:a.height}),c.start("img",i,!0)}c.end(e)}},_({})).parse(i),c.getContent());var i,a,o,n,c,s,u,l},F=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$2",allowFullscreen:!0},{regex:/youtube.com\/embed\/([a-z0-9\-_]+(?:\?.+)?)/i,type:"iframe",w:560,h:314,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowfullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&byline=0",allowfullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1},{regex:/dailymotion\.com\/video\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0},{regex:/dai\.ly\/([^_]+)/,type:"iframe",w:480,h:270,url:"//www.dailymotion.com/embed/video/$1",allowFullscreen:!0}],N=function(e,t){var n=r.extend({},t);if(!n.source1&&(r.extend(n,y(i(e),n.embed)),!n.source1))return"";if(n.source2||(n.source2=""),n.poster||(n.poster=""),n.source1=e.convertURL(n.source1,"source"),n.source2=e.convertURL(n.source2,"source"),n.source1mime=j(n.source1),n.source2mime=j(n.source2),n.poster=e.convertURL(n.poster,"poster"),r.each(F,function(e){var t,r,i=e.regex.exec(n.source1);if(i){for(r=e.url,t=0;i[t];t++)r=r.replace("$"+t,function(){return i[t]});n.source1=r,n.type=e.type,n.allowFullscreen=e.allowFullscreen,n.width=n.width||e.w,n.height=n.height||e.h}}),n.embed)return A(n.embed,n,!0);var c=p(i(e),n.source1);c&&(n.type="script",n.width=c.width,n.height=c.height);var s,u,l,m,d,h,f,g,v=a(e),w=o(e);return n.width=n.width||300,n.height=n.height||150,r.each(n,function(t,r){n[r]=e.dom.encode(t)}),"iframe"===n.type?(g=(f=n).allowFullscreen?' allowFullscreen="1"':"",'<iframe src="'+f.source1+'" width="'+f.width+'" height="'+f.height+'"'+g+"></iframe>"):"application/x-shockwave-flash"===n.source1mime?(h='<object data="'+(d=n).source1+'" width="'+d.width+'" height="'+d.height+'" type="application/x-shockwave-flash">',d.poster&&(h+='<img src="'+d.poster+'" width="'+d.width+'" height="'+d.height+'" />'),h+="</object>"):-1!==n.source1mime.indexOf("audio")?(l=n,(m=v)?m(l):'<audio controls="controls" src="'+l.source1+'">'+(l.source2?'\n<source src="'+l.source2+'"'+(l.source2mime?' type="'+l.source2mime+'"':"")+" />\n":"")+"</audio>"):"script"===n.type?'<script src="'+n.source1+'"><\/script>':(s=n,(u=w)?u(s):'<video width="'+s.width+'" height="'+s.height+'"'+(s.poster?' poster="'+s.poster+'"':"")+' controls="controls">\n<source src="'+s.source1+'"'+(s.source1mime?' type="'+s.source1mime+'"':"")+" />\n"+(s.source2?'<source src="'+s.source2+'"'+(s.source2mime?' type="'+s.source2mime+'"':"")+" />\n":"")+"</video>")},O={},P=function(e){return function(t){return N(e,t)}},T=function(e,t){var r,i,a,o,n,c=s(e);return c?(a=t,o=P(e),n=c,new x(function(e,t){var r=function(t){return t.html&&(O[a.source1]=t),e({url:a.source1,html:t.html?t.html:o(a)})};O[a.source1]?r(O[a.source1]):n({url:a.source1},r,t)})):(r=t,i=P(e),new x(function(e){e({html:i(r),url:r.source1})}))},z=function(e){return O.hasOwnProperty(e)},$=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},L=function(e,t){var r=e.find("#width")[0],i=e.find("#height")[0],a=e.find("#constrain")[0];r&&i&&a&&t(r,i,a.checked())},H=function(e,t,r){var i=e.state.get("oldVal"),a=t.state.get("oldVal"),o=e.value(),n=t.value();r&&i&&a&&o&&n&&(o!==i?(n=Math.round(o/i*n),isNaN(n)||t.value(n)):(o=Math.round(n/a*o),isNaN(o)||e.value(o))),$(e,t)},W=function(e){L(e,H)},J=function(e){var t=function(){e(function(e){W(e)})};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:t,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},R=function(e){L(e,$)},D=W,E=t.ie&&t.ie<=8?"onChange":"onInput",I=function(e){return function(t){var r=t&&t.msg?"Media embed handler error: "+t.msg:"Media embed handler threw unknown error.";e.notificationManager.open({type:"error",text:r})}},U=function(e,t){return function(a){var o=a.html,n=e.find("#embed")[0],c=r.extend(y(i(t),o),{source1:a.url});e.fromJSON(c),n&&(n.value(o),D(e))}},V=function(e,t){var r=e.dom.select("img[data-mce-object]");e.insertContent(t),function(e,t){var r,i,a=e.dom.select("img[data-mce-object]");for(r=0;r<t.length;r++)for(i=a.length-1;i>=0;i--)t[r]===a[i]&&a.splice(i,1);e.selection.select(a[0])}(e,r),e.nodeChanged()},B=function(e){var t,a,o,n,c,s=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onpaste:function(){setTimeout(function(){T(e,t.toJSON()).then(U(t,e))["catch"](I(e))},1)},onchange:function(i){var a,o;T(e,t.toJSON()).then(U(t,e))["catch"](I(e)),a=t,o=i.meta,r.each(o,function(e,t){a.find("#"+t).value(e)})},onbeforecall:function(e){e.meta=t.toJSON()}}],d=[];if(u(e)&&d.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),l(e)&&d.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),m(e)){var h=J(function(e){e(t),a=t.toJSON(),t.find("#embed").value(A(a.embed,a))});s.push(h)}n=(o=e).selection.getNode(),c=n.getAttribute("data-ephox-embed-iri"),a=c?{source1:c,"data-ephox-embed-iri":c,width:v.getMaxWidth(n),height:v.getMaxHeight(n)}:n.getAttribute("data-mce-object")?y(i(o),o.serializer.serialize(n,{selection:!0})):{};var p={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:function(e){var t=e.selection.getNode();if(t.getAttribute("data-mce-object")||t.getAttribute("data-ephox-embed-iri"))return e.selection.getContent()}(e),multiline:!0,rows:5,label:"Source"};p[E]=function(){a=r.extend({},y(i(e),this.value())),this.parent().parent().fromJSON(a)};var f=[{title:"General",type:"form",items:s},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},p]}];d.length>0&&f.push({title:"Advanced",type:"form",items:d}),t=e.windowManager.open({title:"Insert/edit media",data:a,bodyType:"tabpanel",body:f,onSubmit:function(){var r,i;D(t),r=e,(i=t.toJSON()).embed=A(i.embed,i),i.embed&&z(i.source1)?V(r,i.embed):T(r,i).then(function(e){V(r,e.html)})["catch"](I(r))}}),R(t)},G=function(e){return{showDialog:function(){B(e)}}},q=function(e){e.addCommand("mceMedia",function(){B(e)})},K=tinymce.util.Tools.resolve("tinymce.html.Node"),Q=function(e,t){if(!1===c(e))return t;var r,i=M();return d({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(e){i.comment(e)},cdata:function(e){i.cdata(e)},text:function(e,t){i.text(e,t)},start:function(t,a,o){if(r=!0,"script"!==t&&"noscript"!==t){for(var n=0;n<a.length;n++){if(0===a[n].name.indexOf("on"))return;"style"===a[n].name&&(a[n].value=e.dom.serializeStyle(e.dom.parseStyle(a[n].value),t))}i.start(t,a,o),r=!1}},end:function(e){r||i.end(e)}},_({})).parse(t),i.getContent()},X=function(e,r){var i,a=r.name;return(i=new K("img",1)).shortEnded=!0,Z(e,r,i),i.attr({width:r.attr("width")||"300",height:r.attr("height")||("audio"===a?"30":"150"),style:r.attr("style"),src:t.transparentSrc,"data-mce-object":a,"class":"mce-object mce-object-"+a}),i},Y=function(e,t){var r,i,a,o=t.name;return(r=new K("span",1)).attr({contentEditable:"false",style:t.attr("style"),"data-mce-object":o,"class":"mce-preview-object mce-object-"+o}),Z(e,t,r),(i=new K(o,1)).attr({src:t.attr("src"),allowfullscreen:t.attr("allowfullscreen"),style:t.attr("style"),"class":t.attr("class"),width:t.attr("width"),height:t.attr("height"),frameborder:"0"}),(a=new K("span",1)).attr("class","mce-shim"),r.append(i),r.append(a),r},Z=function(e,t,r){var i,a,o,n,c;for(n=(o=t.attributes).length;n--;)i=o[n].name,a=o[n].value,"width"!==i&&"height"!==i&&"style"!==i&&("data"!==i&&"src"!==i||(a=e.convertURL(a,i)),r.attr("data-mce-p-"+i,a));(c=t.firstChild&&t.firstChild.value)&&(r.attr("data-mce-html",escape(Q(e,c))),r.firstChild=null)},ee=function(e){for(;e=e.parent;)if(e.attr("data-ephox-embed-iri"))return!0;return!1},te=function(e){return function(r){for(var a,o,c=r.length;c--;)(a=r[c]).parent&&(a.parent.attr("data-mce-object")||("script"!==a.name||(o=p(i(e),a.attr("src"))))&&(o&&(o.width&&a.attr("width",o.width.toString()),o.height&&a.attr("height",o.height.toString())),"iframe"===a.name&&n(e)&&t.ceFalse?ee(a)||a.replace(Y(e,a)):ee(a)||a.replace(X(e,a))))}},re=function(e){e.on("preInit",function(){var t=e.schema.getSpecialElements();r.each("video audio iframe object".split(" "),function(e){t[e]=new RegExp("</"+e+"[^>]*>","gi")});var i=e.schema.getBoolAttrs();r.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(e){i[e]={}}),e.parser.addNodeFilter("iframe,video,audio,object,embed,script",te(e)),e.serializer.addAttributeFilter("data-mce-object",function(t,r){for(var i,a,o,n,c,s,u,l,m=t.length;m--;)if((i=t[m]).parent){for(u=i.attr(r),a=new K(u,1),"audio"!==u&&"script"!==u&&((l=i.attr("class"))&&-1!==l.indexOf("mce-preview-object")?a.attr({width:i.firstChild.attr("width"),height:i.firstChild.attr("height")}):a.attr({width:i.attr("width"),height:i.attr("height")})),a.attr({style:i.attr("style")}),o=(n=i.attributes).length;o--;){var d=n[o].name;0===d.indexOf("data-mce-p-")&&a.attr(d.substr(11),n[o].value)}"script"===u&&a.attr("type","text/javascript"),(c=i.attr("data-mce-html"))&&((s=new K("#text",3)).raw=!0,s.value=Q(e,unescape(c)),a.append(s)),i.replace(a)}})}),e.on("setContent",function(){e.$("span.mce-preview-object").each(function(t,r){var i=e.$(r);0===i.find("span.mce-shim",r).length&&i.append('<span class="mce-shim"></span>')})})},ie=function(e){e.on("ResolveName",function(e){var t;1===e.target.nodeType&&(t=e.target.getAttribute("data-mce-object"))&&(e.name=t)})},ae=function(e){e.on("click keyup",function(){var t=e.selection.getNode();t&&e.dom.hasClass(t,"mce-preview-object")&&e.dom.getAttrib(t,"data-mce-selected")&&t.setAttribute("data-mce-selected","2")}),e.on("ObjectSelected",function(e){var t=e.target.getAttribute("data-mce-object");"audio"!==t&&"script"!==t||e.preventDefault()}),e.on("objectResized",function(e){var t,r=e.target;r.getAttribute("data-mce-object")&&(t=r.getAttribute("data-mce-html"))&&(t=unescape(t),r.setAttribute("data-mce-html",escape(A(t,{width:e.width,height:e.height}))))})},oe=function(e){e.addButton("media",{tooltip:"Insert/edit media",cmd:"mceMedia",stateSelector:["img[data-mce-object]","span[data-mce-object]","div[data-ephox-embed-iri]"]}),e.addMenuItem("media",{icon:"media",text:"Media",cmd:"mceMedia",context:"insert",prependToContext:!0})};e.add("media",function(e){return q(e),oe(e),ie(e),re(e),ae(e),G(e)})}(); diff --git a/public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js.gz b/public/assets/tinymce/plugins/media/plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..4498091e29046cecf4b9f989c1c52629aff88dea GIT binary patch literal 5329 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/media/plugin.js b/public/assets/tinymce/plugins/media/plugin.js index 984729b1a..edc2985a1 120000 --- a/public/assets/tinymce/plugins/media/plugin.js +++ b/public/assets/tinymce/plugins/media/plugin.js @@ -1 +1 @@ -plugin-f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934.js \ No newline at end of file +plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/media/plugin.js.gz b/public/assets/tinymce/plugins/media/plugin.js.gz index 6744a317e..317f91bce 120000 --- a/public/assets/tinymce/plugins/media/plugin.js.gz +++ b/public/assets/tinymce/plugins/media/plugin.js.gz @@ -1 +1 @@ -plugin-f6af71d03b82b21a5cc6b9388b2a2fa86ddb5a3dd287df34fa4a31711544b934.js.gz \ No newline at end of file +plugin-63339a1e87295bc2bafbb84fae355c1a8d8d566f2c3393fbdcf8f47d61b36f94.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js b/public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js new file mode 100644 index 000000000..c97e35f3e --- /dev/null +++ b/public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(t){var n=t,r=function(){return n};return{get:r,set:function(e){n=e},clone:function(){return e(r())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(e){return!(!/(^|[ ,])powerpaste([, ]|$)/.test(e.settings.plugins)||!t.get("powerpaste")||("undefined"!=typeof window.console&&window.console.log&&window.console.log("PowerPaste is incompatible with Paste plugin! Remove 'paste' from the 'plugins' option."),0))},r=function(e,t){return{clipboard:e,quirks:t}},a=function(e,t,n,r){return e.fire("PastePreProcess",{content:t,internal:n,wordContent:r})},i=function(e,t,n,r){return e.fire("PastePostProcess",{node:t,internal:n,wordContent:r})},o=function(e,t){return e.fire("PastePlainTextToggle",{state:t})},s=function(e,t){return e.fire("paste",{ieFake:t})},l={shouldPlainTextInform:function(e){return e.getParam("paste_plaintext_inform",!0)},shouldBlockDrop:function(e){return e.getParam("paste_block_drop",!1)},shouldPasteDataImages:function(e){return e.getParam("paste_data_images",!1)},shouldFilterDrop:function(e){return e.getParam("paste_filter_drop",!0)},getPreProcess:function(e){return e.getParam("paste_preprocess")},getPostProcess:function(e){return e.getParam("paste_postprocess")},getWebkitStyles:function(e){return e.getParam("paste_webkit_styles")},shouldRemoveWebKitStyles:function(e){return e.getParam("paste_remove_styles_if_webkit",!0)},shouldMergeFormats:function(e){return e.getParam("paste_merge_formats",!0)},isSmartPasteEnabled:function(e){return e.getParam("smart_paste",!0)},isPasteAsTextEnabled:function(e){return e.getParam("paste_as_text",!1)},getRetainStyleProps:function(e){return e.getParam("paste_retain_style_properties")},getWordValidElements:function(e){return e.getParam("paste_word_valid_elements","-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody")},shouldConvertWordFakeLists:function(e){return e.getParam("paste_convert_word_fake_lists",!0)},shouldUseDefaultFilters:function(e){return e.getParam("paste_enable_default_filters",!0)}},u=function(e,t,n){var r,a,i;"text"===t.pasteFormat.get()?(t.pasteFormat.set("html"),o(e,!1)):(t.pasteFormat.set("text"),o(e,!0),i=e,!1===n.get()&&l.shouldPlainTextInform(i)&&(a="Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.",(r=e).notificationManager.open({text:r.translate(a),type:"info"}),n.set(!0))),e.focus()},c=function(e,t,n){e.addCommand("mceTogglePlainTextPaste",function(){u(e,t,n)}),e.addCommand("mceInsertClipboardContent",function(e,n){n.content&&t.pasteHtml(n.content,n.internal),n.text&&t.pasteText(n.text)})},f=tinymce.util.Tools.resolve("tinymce.Env"),d=tinymce.util.Tools.resolve("tinymce.util.Delay"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),p=tinymce.util.Tools.resolve("tinymce.util.VK"),g="x-tinymce/html",v="\x3c!-- "+g+" --\x3e",h={mark:function(e){return v+e},unmark:function(e){return e.replace(v,"")},isMarked:function(e){return-1!==e.indexOf(v)},internalHtmlMime:function(){return g}},y=tinymce.util.Tools.resolve("tinymce.html.Entities"),b=function(e){return e.replace(/\r?\n/g,"<br>")},x=function(e,t,n){var r=e.split(/\n\n/),a=function(e,t){var n,r=[],a="<"+e;if("object"==typeof t){for(n in t)t.hasOwnProperty(n)&&r.push(n+'="'+y.encodeAllRaw(t[n])+'"');r.length&&(a+=" "+r.join(" "))}return a+">"}(t,n),i="</"+t+">",o=m.map(r,function(e){return e.split(/\n/).join("<br />")});return 1===o.length?o[0]:m.map(o,function(e){return a+e+i}).join("")},P={isPlainText:function(e){return!/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test(e)},convert:function(e,t,n){return t?x(e,t,n):b(e)},toBRs:b,toBlockElements:x},w=tinymce.util.Tools.resolve("tinymce.html.DomParser"),T=tinymce.util.Tools.resolve("tinymce.html.Node"),_=tinymce.util.Tools.resolve("tinymce.html.Schema"),C=tinymce.util.Tools.resolve("tinymce.html.Serializer");function D(e,t){return m.each(t,function(t){e=t.constructor===RegExp?e.replace(t,""):e.replace(t[0],t[1])}),e}var k={filter:D,innerText:function(e){var t=_(),n=w({},t),r="",a=t.getShortEndedElements(),i=m.makeMap("script noscript style textarea video audio iframe object"," "),o=t.getBlockElements();return e=D(e,[/<!\[[^\]]+\]>/g]),function s(e){var t=e.name,n=e;if("br"!==t)if(a[t]&&(r+=" "),i[t])r+=" ";else{if(3===e.type&&(r+=e.value),!e.shortEnded&&(e=e.firstChild))for(;s(e),e=e.next;);o[t]&&n.next&&(r+="\n","p"===t&&(r+="\n"))}else r+="\n"}(n.parse(e)),r},trimHtml:function(e){return e=D(e,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,function(e,t,n){return t||n?"\xa0":" "}],/<br class="Apple-interchange-newline">/g,/<br>$/i])},createIdGenerator:function(e){var t=0;return function(){return e+t++}},isMsEdge:function(){return-1!==navigator.userAgent.indexOf(" Edge/")}};function R(e){var t,n;return n=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],e=e.replace(/^[\u00a0 ]+/,""),m.each(n,function(n){if(n.test(e))return t=!0,!1}),t}function E(e){var t,n,r=1;function a(e){var t="";if(3===e.type)return e.value;if(e=e.firstChild)for(;t+=a(e),e=e.next;);return t}function i(e,t){if(3===e.type&&t.test(e.value))return e.value=e.value.replace(t,""),!1;if(e=e.firstChild)do{if(!i(e,t))return!1}while(e=e.next);return!0}function o(e,a,o){var s=e._listLevel||r;s!==r&&(s<r?t&&(t=t.parent.parent):(n=t,t=null)),t&&t.name===a?t.append(e):(n=n||t,t=new T(a,1),o>1&&t.attr("start",""+o),e.wrap(t)),e.name="li",s>r&&n&&n.lastChild.append(t),r=s,function l(e){if(e._listIgnore)e.remove();else if(e=e.firstChild)for(;l(e),e=e.next;);}(e),i(e,/^\u00a0+/),i(e,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),i(e,/^\u00a0+/)}for(var s=[],l=e.firstChild;null!=l;)if(s.push(l),null!==(l=l.walk()))for(;void 0!==l&&l.parent!==e;)l=l.walk();for(var u=0;u<s.length;u++)if("p"===(e=s[u]).name&&e.firstChild){var c=a(e);if(/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(c)){o(e,"ul");continue}if(R(c)){var f=/([0-9]+)\./.exec(c),d=1;f&&(d=parseInt(f[1],10)),o(e,"ol",d);continue}if(e._listLevel){o(e,"ul",1);continue}t=null}else n=t,t=null}function M(e,t,n,r){var a,i={},o=e.dom.parseStyle(r);return m.each(o,function(o,s){switch(s){case"mso-list":(a=/\w+ \w+([0-9]+)/i.exec(r))&&(n._listLevel=parseInt(a[1],10)),/Ignore/i.test(o)&&n.firstChild&&(n._listIgnore=!0,n.firstChild._listIgnore=!0);break;case"horiz-align":s="text-align";break;case"vert-align":s="vertical-align";break;case"font-color":case"mso-foreground":s="color";break;case"mso-background":case"mso-highlight":s="background";break;case"font-weight":case"font-style":return void("normal"!==o&&(i[s]=o));case"mso-element":if(/^(comment|comment-list)$/i.test(o))return void n.remove()}0!==s.indexOf("mso-comment")?0!==s.indexOf("mso-")&&("all"===l.getRetainStyleProps(e)||t&&t[s])&&(i[s]=o):n.remove()}),/(bold)/i.test(i["font-weight"])&&(delete i["font-weight"],n.wrap(new T("b",1))),/(italic)/i.test(i["font-style"])&&(delete i["font-style"],n.wrap(new T("i",1))),(i=e.dom.serializeStyle(i,n.name))||null}var S={preProcess:function(e,t){return l.shouldUseDefaultFilters(e)?function(e,t){var n,r;(n=l.getRetainStyleProps(e))&&(r=m.makeMap(n.split(/[, ]/))),t=k.filter(t,[/<br class="?Apple-interchange-newline"?>/gi,/<b[^>]+id="?docs-internal-[^>]*>/gi,/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(e,t){return t.length>0?t.replace(/./," ").slice(Math.floor(t.length/2)).split("").join("\xa0"):""}]]);var a=l.getWordValidElements(e),i=_({valid_elements:a,valid_children:"-li[p]"});m.each(i.elements,function(e){e.attributes["class"]||(e.attributes["class"]={},e.attributesOrder.push("class")),e.attributes.style||(e.attributes.style={},e.attributesOrder.push("style"))});var o=w({},i);o.addAttributeFilter("style",function(t){for(var n,a=t.length;a--;)(n=t[a]).attr("style",M(e,r,n,n.attr("style"))),"span"===n.name&&n.parent&&!n.attributes.length&&n.unwrap()}),o.addAttributeFilter("class",function(e){for(var t,n,r=e.length;r--;)n=(t=e[r]).attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(n)&&t.remove(),t.attr("class",null)}),o.addNodeFilter("del",function(e){for(var t=e.length;t--;)e[t].remove()}),o.addNodeFilter("a",function(e){for(var t,n,r,a=e.length;a--;)if(n=(t=e[a]).attr("href"),r=t.attr("name"),n&&-1!==n.indexOf("#_msocom_"))t.remove();else if(n&&0===n.indexOf("file://")&&(n=n.split("#")[1])&&(n="#"+n),n||r){if(r&&!/^_?(?:toc|edn|ftn)/i.test(r)){t.unwrap();continue}t.attr({href:n,name:r})}else t.unwrap()});var s=o.parse(t);return l.shouldConvertWordFakeLists(e)&&E(s),t=C({validate:e.settings.validate},i).serialize(s)}(e,t):t},isWordContent:function(e){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(e)||/class="OutlineElement/.test(e)||/id="?docs\-internal\-guid\-/.test(e)}},F=function(e,t){return{content:e,cancelled:t}},I=function(e,t,n,r){var o,s,l,u,c,f,d=a(e,t,n,r);return e.hasEventListeners("PastePostProcess")&&!d.isDefaultPrevented()?(o=e,s=d.content,l=n,u=r,c=o.dom.create("div",{style:"display:none"},s),f=i(o,c,l,u),F(f.node.innerHTML,f.isDefaultPrevented())):F(d.content,d.isDefaultPrevented())},O=function(e,t,n){var r=S.isWordContent(t),a=r?S.preProcess(e,t):t;return I(e,a,n,r)},A=function(e,t){return e.insertContent(t,{merge:l.shouldMergeFormats(e),paste:!0}),!0},B=function(e){return/^https?:\/\/[\w\?\-\/+=.&%@~#]+$/i.test(e)},H=function(e){return B(e)&&/.(gif|jpe?g|png)$/.test(e)},N=function(e,t,n){return!(!1!==e.selection.isCollapsed()||!B(t)||(a=t,i=n,(r=e).undoManager.extra(function(){i(r,a)},function(){r.execCommand("mceInsertLink",!1,a)}),0));var r,a,i},L=function(e,t,n){return!!H(t)&&(a=t,i=n,(r=e).undoManager.extra(function(){i(r,a)},function(){r.insertContent('<img src="'+a+'">')}),!0);var r,a,i},$=function(e,t){var n,r;!1===l.isSmartPasteEnabled(e)?A(e,t):(n=e,r=t,m.each([N,L,A],function(e){return!0!==e(n,r,A)}))},W=function(e,t,n){var r=n||h.isMarked(t),a=O(e,h.unmark(t),r);!1===a.cancelled&&$(e,a.content)},j=function(e,t){t=e.dom.encode(t).replace(/\r\n/g,"\n"),t=P.convert(t,e.settings.forced_root_block,e.settings.forced_root_block_attrs),W(e,t,!1)},V=function(e){var t={};if(e){if(e.getData){var n=e.getData("Text");n&&n.length>0&&-1===n.indexOf("data:text/mce-internal,")&&(t["text/plain"]=n)}if(e.types)for(var r=0;r<e.types.length;r++){var a=e.types[r];try{t[a]=e.getData(a)}catch(i){t[a]=""}}}return t},z=function(e,t){return t in e&&e[t].length>0},K=function(e){return z(e,"text/html")||z(e,"text/plain")},U=function(e,t,n,r){var a=k.createIdGenerator("mceclip");t&&(e.selection.setRng(t),t=null);var i,o,s,l,u,c,f,d=n.result,m=-1!==(o=(i=d).indexOf(","))?i.substr(o+1):null,p=a(),g=e.settings.images_reuse_filename&&r.name?(s=e,l=r.name,(u=l.match(/([\s\S]+?)\.(?:jpeg|jpg|png|gif)$/i))?s.dom.encode(u[1]):null):p,v=new Image;if(v.src=d,c=e.settings,f=v,!c.images_dataimg_filter||c.images_dataimg_filter(f)){var h,y=e.editorUpload.blobCache,b=void 0;(h=y.findFirst(function(e){return e.base64()===m}))?b=h:(b=y.create(p,r,m,g),y.add(b)),W(e,'<img src="'+b.blobUri()+'">',!1)}else W(e,'<img src="'+d+'">',!1)},G=function(e,t,n){var r="paste"===t.type?t.clipboardData:t.dataTransfer;function a(r){var a,i,o,s=!1;if(r)for(a=0;a<r.length;a++)if(i=r[a],/^image\/(jpeg|png|gif|bmp)$/.test(i.type)){var l=i.getAsFile?i.getAsFile():i;(o=new window.FileReader).onload=U.bind(null,e,n,o,l),o.readAsDataURL(l),t.preventDefault(),s=!0}return s}if(e.settings.paste_data_images&&r)return a(r.items)||a(r.files)},X=function(e){return p.metaKeyPressed(e)&&86===e.keyCode||e.shiftKey&&45===e.keyCode},q=function(e,t,n){var r,a=0;function i(n,r,a,i){var o,s;z(n,"text/html")?o=n["text/html"]:(o=t.getHtml(),i=i||h.isMarked(o),t.isDefaultContent(o)&&(a=!0)),o=k.trimHtml(o),t.remove(),s=!1===i&&P.isPlainText(o),o.length&&!s||(a=!0),a&&(o=z(n,"text/plain")&&s?n["text/plain"]:k.innerText(o)),t.isDefaultContent(o)?r||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents."):a?j(e,o):W(e,o,i)}e.on("keydown",function(n){function i(e){X(e)&&!e.isDefaultPrevented()&&t.remove()}if(X(n)&&!n.isDefaultPrevented()){if((r=n.shiftKey&&86===n.keyCode)&&f.webkit&&-1!==navigator.userAgent.indexOf("Version/"))return;if(n.stopImmediatePropagation(),a=(new Date).getTime(),f.ie&&r)return n.preventDefault(),void s(e,!0);t.remove(),t.create(),e.once("keyup",i),e.once("paste",function(){e.off("keyup",i)})}}),e.on("paste",function(o){var s,l,u,c=(new Date).getTime(),p=(s=e,l=V(o.clipboardData||s.getDoc().dataTransfer),k.isMsEdge()?m.extend(l,{"text/html":""}):l),g=(new Date).getTime()-c,v=(new Date).getTime()-a-g<1e3,y="text"===n.get()||r,b=z(p,h.internalHtmlMime());r=!1,o.isDefaultPrevented()||(u=o.clipboardData,-1!==navigator.userAgent.indexOf("Android")&&u&&u.items&&0===u.items.length)?t.remove():K(p)||!G(e,o,t.getLastRng()||e.selection.getRng())?(v||o.preventDefault(),!f.ie||v&&!o.ieFake||z(p,"text/html")||(t.create(),e.dom.bind(t.getEl(),"paste",function(e){e.stopPropagation()}),e.getDoc().execCommand("Paste",!1,null),p["text/html"]=t.getHtml()),z(p,"text/html")?(o.preventDefault(),b||(b=h.isMarked(p["text/html"])),i(p,v,y,b)):d.setEditorTimeout(e,function(){i(p,v,y,b)},0)):t.remove()})},Y=function(e){return e.dom.get("mcepastebin")},Z=function(e,t){return t===e},J=function(t){var n=e(null),r="%MCEPASTEBIN%";return{create:function(){return function(e,t,n){var r,a,i=e.dom,o=e.getBody(),s=e.dom.getViewPort(e.getWin()).y,l=20;t.set(e.selection.getRng());var u=t.get();if(e.inline&&(a=e.selection.getScrollContainer())&&a.scrollTop>0&&(s=a.scrollTop),u.getClientRects){var c=function(e){var t,n,r,a=e.startContainer;if((t=e.getClientRects()).length)return t[0];if(e.collapsed&&1===a.nodeType){for(r=a.childNodes[u.startOffset];r&&3===r.nodeType&&!r.data.length;)r=r.nextSibling;if(r)return"BR"===r.tagName&&(n=i.doc.createTextNode("\ufeff"),r.parentNode.insertBefore(n,r),(e=i.createRng()).setStartBefore(n),e.setEndAfter(n),t=e.getClientRects(),i.remove(n)),t.length?t[0]:void 0}}(u);if(c)l=s+(c.top-i.getPos(o).y);else{l=s;var d=u.startContainer;d&&(3===d.nodeType&&d.parentNode!==o&&(d=d.parentNode),1===d.nodeType&&(l=i.getPos(d,a||o).y))}}r=e.dom.add(e.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+l+"px; width: 10px; height: 10px; overflow: hidden; opacity: 0"},n),(f.ie||f.gecko)&&i.setStyle(r,"left","rtl"===i.getStyle(o,"direction",!0)?65535:-65535),i.bind(r,"beforedeactivate focusin focusout",function(e){e.stopPropagation()}),r.focus(),e.selection.select(r,!0)}(t,n,r)},remove:function(){return function(e,t){if(Y(e)){for(var n=void 0,r=t.get();n=e.dom.get("mcepastebin");)e.dom.remove(n),e.dom.unbind(n);r&&e.selection.setRng(r)}t.set(null)}(t,n)},getEl:function(){return Y(t)},getHtml:function(){return function(e){var t,n,r,a,i,o=function(t,n){t.appendChild(n),e.dom.remove(n,!0)};for(n=m.grep(e.getBody().childNodes,function(e){return"mcepastebin"===e.id}),t=n.shift(),m.each(n,function(e){o(t,e)}),r=(a=e.dom.select("div[id=mcepastebin]",t)).length-1;r>=0;r--)i=e.dom.create("div"),t.insertBefore(i,a[r]),o(i,a[r]);return t?t.innerHTML:""}(t)},getLastRng:function(){return n.get()},isDefault:function(){return e=r,a=Y(t),(n=a)&&"mcepastebin"===n.id&&Z(e,a.innerHTML);var e,n,a},isDefaultContent:function(e){return Z(r,e)}}},Q=function(e,t){var n=J(e);return e.on("preInit",function(){return q(r=e,n,t),void r.parser.addNodeFilter("img",function(e,t,n){var i,o=function(e){e.attr("data-mce-object")||a===f.transparentSrc||e.remove()};if(!r.settings.paste_data_images&&(i=n).data&&!0===i.data.paste)for(var s=e.length;s--;)(a=e[s].attributes.map.src)&&(0===a.indexOf("webkit-fake-url")?o(e[s]):r.settings.allow_html_data_urls||0!==a.indexOf("data:")||o(e[s]))});var r,a}),{pasteFormat:t,pasteHtml:function(t,n){return W(e,t,n)},pasteText:function(t){return j(e,t)},pasteImageData:function(t,n){return G(e,t,n)},getDataTransferItems:V,hasHtmlOrText:K,hasContentType:z}},ee=function(){},te=function(e,t,n){if(r=e,!1!==f.iOS||r===undefined||"function"!=typeof r.setData||!0===k.isMsEdge())return!1;try{return e.clearData(),e.setData("text/html",t),e.setData("text/plain",n),e.setData(h.internalHtmlMime(),t),!0}catch(a){return!1}var r},ne=function(e,t,n,r){te(e.clipboardData,t.html,t.text)?(e.preventDefault(),r()):n(t.html,r)},re=function(e){return function(t,n){var r=h.mark(t),a=e.dom.create("div",{contenteditable:"false","data-mce-bogus":"all"}),i=e.dom.create("div",{contenteditable:"true"},r);e.dom.setStyles(a,{position:"fixed",top:"0",left:"-3000px",width:"1000px",overflow:"hidden"}),a.appendChild(i),e.dom.add(e.getBody(),a);var o=e.selection.getRng();i.focus();var s=e.dom.createRng();s.selectNodeContents(i),e.selection.setRng(s),setTimeout(function(){e.selection.setRng(o),a.parentNode.removeChild(a),n()},0)}},ae=function(e){return{html:e.selection.getContent({contextual:!0}),text:e.selection.getContent({format:"text"})}},ie=function(e){var t,n;e.on("cut",(t=e,function(e){!1===t.selection.isCollapsed()&&ne(e,ae(t),re(t),function(){setTimeout(function(){t.execCommand("Delete")},0)})})),e.on("copy",(n=e,function(e){!1===n.selection.isCollapsed()&&ne(e,ae(n),re(n),ee)}))},oe=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),se=function(e,t){return oe.getCaretRangeFromPoint(t.clientX,t.clientY,e.getDoc())},le=function(e,t){e.focus(),e.selection.setRng(t)},ue=function(e,t,n){l.shouldBlockDrop(e)&&e.on("dragend dragover draggesture dragdrop drop drag",function(e){e.preventDefault(),e.stopPropagation()}),l.shouldPasteDataImages(e)||e.on("drop",function(e){var t=e.dataTransfer;t&&t.files&&t.files.length>0&&e.preventDefault()}),e.on("drop",function(r){var a,i;if(i=se(e,r),!r.isDefaultPrevented()&&!n.get()){a=t.getDataTransferItems(r.dataTransfer);var o,s=t.hasContentType(a,h.internalHtmlMime());if((t.hasHtmlOrText(a)&&(!(o=a["text/plain"])||0!==o.indexOf("file://"))||!t.pasteImageData(r,i))&&i&&l.shouldFilterDrop(e)){var u=a["mce-internal"]||a["text/html"]||a["text/plain"];u&&(r.preventDefault(),d.setEditorTimeout(e,function(){e.undoManager.transact(function(){a["mce-internal"]&&e.execCommand("Delete"),le(e,i),u=k.trimHtml(u),a["text/html"]?t.pasteHtml(u,s):t.pasteText(u)})}))}}}),e.on("dragstart",function(e){n.set(!0)}),e.on("dragover dragend",function(t){l.shouldPasteDataImages(e)&&!1===n.get()&&(t.preventDefault(),le(e,se(e,t))),"dragend"===t.type&&n.set(!1)})},ce=function(e){var t=e.plugins.paste,n=l.getPreProcess(e);n&&e.on("PastePreProcess",function(e){n.call(t,t,e)});var r=l.getPostProcess(e);r&&e.on("PastePostProcess",function(e){r.call(t,t,e)})};function fe(e,t){e.on("PastePreProcess",function(n){n.content=t(e,n.content,n.internal,n.wordContent)})}function de(e,t){if(!S.isWordContent(t))return t;var n=[];m.each(e.schema.getBlockElements(),function(e,t){n.push(t)});var r=new RegExp("(?:<br> [\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br> [\\s\\r\\n]+|<br>)*","g");return t=k.filter(t,[[r,"$1"]]),t=k.filter(t,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function me(e,t,n,r){if(r||n)return t;var a,i=l.getWebkitStyles(e);if(!1===l.shouldRemoveWebKitStyles(e)||"all"===i)return t;if(i&&(a=i.split(/[, ]/)),a){var o=e.dom,s=e.selection.getNode();t=t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(e,t,n,r){var i=o.parseStyle(o.decode(n),"span"),l={};if("none"===a)return t+r;for(var u=0;u<a.length;u++){var c=i[a[u]],f=o.getStyle(s,a[u],!0);/color/.test(a[u])&&(c=o.toHex(c),f=o.toHex(f)),f!==c&&(l[a[u]]=c)}return(l=o.serializeStyle(l,"span"))?t+' style="'+l+'"'+r:t+r})}else t=t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return t=t.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(e,t,n,r){return t+' style="'+n+'"'+r})}function pe(e,t){e.$("a",t).find("font,u").each(function(t,n){e.dom.remove(n,!0)})}var ge=function(e){var t,n;f.webkit&&fe(e,me),f.ie&&(fe(e,de),n=pe,(t=e).on("PastePostProcess",function(e){n(t,e.node)}))},ve=function(e){return function(){return e}},he=(ve(!1),ve(!0),function(e){for(var t=new Array(arguments.length-1),n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];var a=t.concat(n);return e.apply(null,a)}}),ye=function(e,t,n){var r=n.control;r.active("text"===t.pasteFormat.get()),e.on("PastePlainTextToggle",function(e){r.active(e.state)})},be=function(e,t){var n=he(ye,e,t);e.addButton("pastetext",{active:!1,icon:"pastetext",tooltip:"Paste as text",cmd:"mceTogglePlainTextPaste",onPostRender:n}),e.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:t.pasteFormat,cmd:"mceTogglePlainTextPaste",onPostRender:n})};t.add("paste",function(t){if(!1===n(t)){var a=e(!1),i=e(!1),o=e(l.isPasteAsTextEnabled(t)?"text":"html"),s=Q(t,o),u=ge(t);return be(t,s),c(t,s,a),ce(t),ie(t),ue(t,s,i),r(s,u)}})}(); diff --git a/public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js.gz b/public/assets/tinymce/plugins/paste/plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff3cab088a24ff2a0296131a84d08fc4c659d765 GIT binary patch literal 8358 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/paste/plugin.js b/public/assets/tinymce/plugins/paste/plugin.js index 706f8f20b..7c6d0e864 120000 --- a/public/assets/tinymce/plugins/paste/plugin.js +++ b/public/assets/tinymce/plugins/paste/plugin.js @@ -1 +1 @@ -plugin-fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6.js \ No newline at end of file +plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/paste/plugin.js.gz b/public/assets/tinymce/plugins/paste/plugin.js.gz index 5485258b3..c50a2ec21 120000 --- a/public/assets/tinymce/plugins/paste/plugin.js.gz +++ b/public/assets/tinymce/plugins/paste/plugin.js.gz @@ -1 +1 @@ -plugin-fd05a4269ce87915ba2f960c19f5a9e8b6f23ac4ebd43658aeb2f308b2318dd6.js.gz \ No newline at end of file +plugin-9f39f17ecccb798a6a6ff4e227546c8c9d63f331b33add21b7c69e6db7d09b8e.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js b/public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js new file mode 100644 index 000000000..53e9753bc --- /dev/null +++ b/public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.Env"),n=function(e){return parseInt(e.getParam("plugin_preview_width","650"),10)},i=function(e){return parseInt(e.getParam("plugin_preview_height","500"),10)},o=function(e){return e.getParam("content_style","")},r=tinymce.util.Tools.resolve("tinymce.util.Tools"),c=function(e){var t="",n=e.dom.encode,i=o(e);t+='<base href="'+n(e.documentBaseURI.getURI())+'">',i&&(t+='<style type="text/css">'+i+"</style>"),r.each(e.contentCSS,function(i){t+='<link type="text/css" rel="stylesheet" href="'+n(e.documentBaseURI.toAbsolute(i))+'">'});var c=e.settings.body_id||"tinymce";-1!==c.indexOf("=")&&(c=(c=e.getParam("body_id","","hash"))[e.id]||c);var a=e.settings.body_class||"";-1!==a.indexOf("=")&&(a=(a=e.getParam("body_class","","hash"))[e.id]||"");var s=e.settings.directionality?' dir="'+e.settings.directionality+'"':"";return"<!DOCTYPE html><html><head>"+t+'</head><body id="'+n(c)+'" class="mce-content-body '+n(a)+'"'+n(s)+">"+e.getContent()+'<script>document.addEventListener && document.addEventListener("click", function(e) {for (var elm = e.target; elm; elm = elm.parentNode) {if (elm.nodeName === "A") {e.preventDefault();}}}, false);<\/script> </body></html>'},a=function(e,t,n){var i=c(e);if(n)t.src="data:text/html;charset=utf-8,"+encodeURIComponent(i);else{var o=t.contentWindow.document;o.open(),o.write(i),o.close()}},s=function(e){var o=!t.ie,r='<iframe src="" frameborder="0"'+(o?' sandbox="allow-scripts"':"")+"></iframe>",c=n(e),s=i(e);e.windowManager.open({title:"Preview",width:c,height:s,html:r,buttons:{text:"Close",onclick:function(e){e.control.parent().parent().close()}},onPostRender:function(t){var n=t.control.getEl("body").firstChild;a(e,n,o)}})},d=function(e){e.addCommand("mcePreview",function(){s(e)})},l=function(e){e.addButton("preview",{title:"Preview",cmd:"mcePreview"}),e.addMenuItem("preview",{text:"Preview",cmd:"mcePreview",context:"view"})};e.add("preview",function(e){d(e),l(e)})}(); diff --git a/public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js.gz b/public/assets/tinymce/plugins/preview/plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f089ca982027c9f9765cefee739ab0d835ee55bd GIT binary patch literal 987 zcmV<110?((iwFS6YM5FA1D#dhZ`(Eye&1iA@FA99MNS_&43g-fb@LElZG*PMFl<9W zQ|E{%MH=MEj^X%!-;uHtr*4K~FE%CKec#=8KXkU}jYMTlnr&I{A@S&xL{_bYOMs&? zn@&Q}qte9}Yqc*Nc&k^Cvcuht?(dX&FO0YY$FdxM$m`0i$ky;je#o{Cuy-a|3g_Y4 zU<$<@;EiyiOW88A+%6rg6s&L8s==1!?B~~)1oP@L+vV#2Vzr>|S|qU7myclfdtk>H z(i#MVw;ned$d{3m`=QLA?ubl2;|Zc8XN+`#qOn~8M%o4_HA~kOj`^sb3#wA<V8PjF zOkQLs`;J0+OBcU?x(+eYUz%m(5u1*3b$*^k#~5jXn<a3DaE}w|JsFJEnAMYbIi-MH z0YbI}yH9ZT`E&jlqRO@rN-OjATcpH+<}Bj)7693Q28s5~oOJ0C2y}>am&K-&l)48b zweEZ|x6S5OH4hI5^;mWB>Wp()DAU0G$3@CG%P2$1)8P12pS@?OOwL;2Tb5;iL7|#| z9v<YtBu<#57Ty!to<)4iB6uoJS)$i>iKr_glRsu^l!GXz&<Z!djuLtiWO~tr)ESi& z)6j*iK703Z_T|r;tE9zFPwV|Jh-S*hI3CrLc&<ZiiE4%l$e?i&Bjt>Ayx5obB3cCt z5iG*NXJbZ4G0oXvmC{}9rBh3s9x7Rgrny?t;Wy>U23&G}p1gQT1EZDv%JSr>-;?da zx+IOOMt2FP0Yl-4whGVH;ic{h8e;<cK(jzjYLTSjrJ=_UqJxBUp0GEJuAm4*O{VW) zA$m=LSG(PgNQL$^K=t2~eHKYQ37JnxtRUZLmy4rG%rQ5^G%7B`<f%n!GAz84oHYVP z8QVU%R<aE%26>N*i(himEsiYp_{?@oYl3<ztAO|;pyhZNtv{%{?D}yuDqGkk&?3%l zv34p>1|6lg9@31m@F%;%@-r+H(Bc`@YT<$wF+`Tchq-kPP;XsQT~kY)=7nkI_MS7L zwOwBfTKL#qq3HEw0GTq{OM!$aRY)I-b&Pet<cB!7s8B=6ZiY3=^0<>rnGgH4^m)*y zbosnTw8od)AX>?0At9Dq6FZ_j&S}^>&gy-^)9mT+q=Pj#*5fCj*>q3tI7njl`UVi{ zq$@oPDa(q5avo=`(oH3(#3r`{Mq9h#&qJWrrP6gIRT?JcF}<TNr6<eas!v_t#$@Rm zb8tJ6Np?+n47|(o==mN@e~r*R^NotV=$gk)3MPA`T@|5@AdUlULP_-yJ59z<{{lT5 Jt<L=i002P-^4b6Z literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/preview/plugin.js b/public/assets/tinymce/plugins/preview/plugin.js index ef0687225..5bc6765cb 120000 --- a/public/assets/tinymce/plugins/preview/plugin.js +++ b/public/assets/tinymce/plugins/preview/plugin.js @@ -1 +1 @@ -plugin-12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e.js \ No newline at end of file +plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/preview/plugin.js.gz b/public/assets/tinymce/plugins/preview/plugin.js.gz index 6e6012213..b084344d1 120000 --- a/public/assets/tinymce/plugins/preview/plugin.js.gz +++ b/public/assets/tinymce/plugins/preview/plugin.js.gz @@ -1 +1 @@ -plugin-12423d5f791563ea481987a72b59986e6a407e68c5556c12a7d3a89891c6ac3e.js.gz \ No newline at end of file +plugin-ae77492a6d6ff2e42e121b0982d853c309a732dbcb0176250869795b44fa9b28.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js b/public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js new file mode 100644 index 000000000..0904faa34 --- /dev/null +++ b/public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(t){t.addCommand("mcePrint",function(){t.getWin().print()})},i=function(t){t.addButton("print",{title:"Print",cmd:"mcePrint"}),t.addMenuItem("print",{text:"Print",cmd:"mcePrint",icon:"print"})};t.add("print",function(t){n(t),i(t),t.addShortcut("Meta+P","","mcePrint")})}(); diff --git a/public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js.gz b/public/assets/tinymce/plugins/print/plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..3722e54e43b033cdd96de043f5feaab4763960ad GIT binary patch literal 228 zcmV<A02}`wiwFS6YM5FA19gwVYQr!LhVOfdPA8igKR`k++i8bDpo5-`qh$g|E{<GQ zLf(B&)@6Y)5JE!#|4Dj$&+LUFD?LFT@i0mvFHm1yI>=FoZ-Ymhg@S#HF^o3h7{e76 z{LI>rd*a5i>oI{geB79#C$X;UUg9t~?i3V#n}`L>Zm-xL<xHitmu0B*tY<@iG0$0~ zv~c-GOhOW{f;-U<UG=+Q)@JoI$oW-p*tzgi{xKQyk*mA198s@`&ALBmNrslRYEB<9 eiO-^-L2*wl7$~uUmyeXLAHD#-!d{YZ0RRAzWoxJa literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/print/plugin.js b/public/assets/tinymce/plugins/print/plugin.js index b5e815b64..5cb0cacb6 120000 --- a/public/assets/tinymce/plugins/print/plugin.js +++ b/public/assets/tinymce/plugins/print/plugin.js @@ -1 +1 @@ -plugin-984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab.js \ No newline at end of file +plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/print/plugin.js.gz b/public/assets/tinymce/plugins/print/plugin.js.gz index a54e530ce..b450af326 120000 --- a/public/assets/tinymce/plugins/print/plugin.js.gz +++ b/public/assets/tinymce/plugins/print/plugin.js.gz @@ -1 +1 @@ -plugin-984a7a3b4b52c24bb4b4ea8fc467228ff13c179e041c09a9b4ff30d971d646ab.js.gz \ No newline at end of file +plugin-1ba88c314fa4c0c47ab0af0aa908c03d7906a77fef6a319a302ffff44099fe26.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js b/public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js new file mode 100644 index 000000000..a294cd2b4 --- /dev/null +++ b/public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(t){var n=t,r=function(){return n};return{get:r,set:function(e){n=e},clone:function(){return e(r())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");function r(e){return e&&1===e.nodeType&&"false"===e.contentEditable}var a={findAndReplaceDOMText:function(e,t,n,a,i){var o,d,c,l,s,u,f=[],p=0;function g(e,t){if(t=t||0,!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");var n=e.index;if(t>0){var r=e[t];if(!r)throw new Error("Invalid capture group");n+=e[0].indexOf(r),e[0]=r}return[n,n+e[0].length,[e[0]]]}if(c=t.ownerDocument,l=i.getBlockElements(),s=i.getWhiteSpaceElements(),u=i.getShortEndedElements(),d=function h(e){var t;if(3===e.nodeType)return e.data;if(s[e.nodeName]&&!l[e.nodeName])return"";if(t="",r(e))return"\n";if((l[e.nodeName]||u[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=h(e),e=e.nextSibling;);return t}(t)){if(e.global)for(;o=e.exec(d);)f.push(g(o,a));else o=d.match(e),f.push(g(o,a));return f.length&&(p=f.length,function(e,t,n){var a,i,o,d,c=[],f=0,p=e,g=t.shift(),h=0;e:for(;;){if((l[p.nodeName]||u[p.nodeName]||r(p))&&f++,3===p.nodeType&&(!i&&p.length+f>=g[1]?(i=p,d=g[1]-f):a&&c.push(p),!a&&p.length+f>g[0]&&(a=p,o=g[0]-f),f+=p.length),a&&i){if(p=n({startNode:a,startNodeIndex:o,endNode:i,endNodeIndex:d,innerNodes:c,match:g[2],matchIndex:h}),f-=i.length-d,a=null,i=null,c=[],h++,!(g=t.shift()))break}else if(s[p.nodeName]&&!l[p.nodeName]||!p.firstChild){if(p.nextSibling){p=p.nextSibling;continue}}else if(!r(p)){p=p.firstChild;continue}for(;;){if(p.nextSibling){p=p.nextSibling;break}if(p.parentNode===e)break e;p=p.parentNode}}}(t,f,function(e){var t;if("function"!=typeof e){var n=e.nodeType?e:c.createElement(e);t=function(e,t){var r=n.cloneNode(!1);return r.setAttribute("data-mce-index",t),e&&r.appendChild(c.createTextNode(e)),r}}else t=e;return function(e){var n,r,a,i=e.startNode,o=e.endNode,d=e.matchIndex;if(i===o){var l=i;a=l.parentNode,e.startNodeIndex>0&&(n=c.createTextNode(l.data.substring(0,e.startNodeIndex)),a.insertBefore(n,l));var s=t(e.match[0],d);return a.insertBefore(s,l),e.endNodeIndex<l.length&&(r=c.createTextNode(l.data.substring(e.endNodeIndex)),a.insertBefore(r,l)),l.parentNode.removeChild(l),s}n=c.createTextNode(i.data.substring(0,e.startNodeIndex)),r=c.createTextNode(o.data.substring(e.endNodeIndex));for(var u=t(i.data.substring(e.startNodeIndex),d),f=[],p=0,g=e.innerNodes.length;p<g;++p){var h=e.innerNodes[p],m=t(h.data,d);h.parentNode.replaceChild(m,h),f.push(m)}var v=t(o.data.substring(0,e.endNodeIndex),d);return(a=i.parentNode).insertBefore(n,i),a.insertBefore(u,i),a.removeChild(i),(a=o.parentNode).insertBefore(v,o),a.insertBefore(r,o),a.removeChild(o),v}}(n))),p}}},i=function(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t},o=function(e){var t=e.parentNode;e.firstChild&&t.insertBefore(e.firstChild,e),e.parentNode.removeChild(e)},d=function(e,t){var r,a=[];if((r=n.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<r.length;o++){var d=i(r[o]);null!==d&&d.length&&d===t.toString()&&a.push(r[o])}return a},c=function(e,t,n){var r=t.get(),a=e.dom;(n=!1!==n)?r++:r--,a.removeClass(d(e,t.get()),"mce-match-marker-selected");var i=d(e,r);return i.length?(a.addClass(d(e,r),"mce-match-marker-selected"),e.selection.scrollIntoView(i[0]),r):-1},l=function(e,t){var n=t.parentNode;e.remove(t),e.isEmpty(n)&&e.remove(n)},s=function(e,t){var n=c(e,t,!0);-1!==n&&t.set(n)},u=function(e,t){var n=c(e,t,!1);-1!==n&&t.set(n)},f=function(e){var t=i(e);return null!==t&&t.length>0},p=function(e,t,r){var a,d,c,l;for(d=n.toArray(e.getBody().getElementsByTagName("span")),a=0;a<d.length;a++){var s=i(d[a]);null!==s&&s.length&&(s===t.get().toString()&&(c||(c=d[a].firstChild),l=d[a].firstChild),o(d[a]))}if(c&&l){var u=e.dom.createRng();return u.setStart(c,0),u.setEnd(l,l.data.length),!1!==r&&e.selection.setRng(u),u}},g=function(e,t){return d(e,t.get()+1).length>0},h=function(e,t){return d(e,t.get()-1).length>0},m={done:p,find:function(e,t,n,r,i){n=(n=n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")).replace(/\s/g,"\\s"),n=i?"\\b"+n+"\\b":n;var o,d,l,s,u,f=(o=e,d=t,l=new RegExp(n,r?"g":"gi"),(u=o.dom.create("span",{"data-mce-bogus":1})).className="mce-match-marker",s=o.getBody(),p(o,d,!1),a.findAndReplaceDOMText(l,s,u,!1,o.schema));return f&&(t.set(-1),t.set(c(e,t,!0))),f},next:s,prev:u,replace:function(e,t,r,a,d){var c,p,m,v,x,b,N=t.get();for(a=!1!==a,m=e.getBody(),p=n.grep(n.toArray(m.getElementsByTagName("span")),f),c=0;c<p.length;c++){var y=i(p[c]);if(v=x=parseInt(y,10),d||v===t.get()){for(r.length?(p[c].firstChild.nodeValue=r,o(p[c])):l(e.dom,p[c]);p[++c];){if((v=parseInt(i(p[c]),10))!==x){c--;break}l(e.dom,p[c])}a&&N--}else x>t.get()&&p[c].setAttribute("data-mce-index",x-1)}return t.set(N),a?(b=g(e,t),s(e,t)):(b=h(e,t),u(e,t)),!d&&b},hasNext:g,hasPrev:h},v=function(e,t){return{done:function(n){return m.done(e,t,n)},find:function(n,r,a){return m.find(e,t,n,r,a)},next:function(){return m.next(e,t)},prev:function(){return m.prev(e,t)},replace:function(n,r,a){return m.replace(e,t,n,r,a)}}},x=function(e,t){var r,a={};function i(){d.statusbar.find("#next").disabled(!1===m.hasNext(e,t)),d.statusbar.find("#prev").disabled(!1===m.hasPrev(e,t))}function o(){e.windowManager.alert("Could not find the specified string.",function(){d.find("#find")[0].focus()})}e.undoManager.add(),r=n.trim(e.selection.getContent({format:"text"}));var d=e.windowManager.open({layout:"flex",pack:"center",align:"center",onClose:function(){e.focus(),m.done(e,t),e.undoManager.add()},onSubmit:function(n){var r,c,l,s;return n.preventDefault(),c=d.find("#case").checked(),s=d.find("#words").checked(),(l=d.find("#find").value()).length?a.text===l&&a.caseState===c&&a.wholeWord===s?m.hasNext(e,t)?(m.next(e,t),void i()):void o():((r=m.find(e,t,l,c,s))||o(),d.statusbar.items().slice(1).disabled(0===r),i(),void(a={text:l,caseState:c,wholeWord:s})):(m.done(e,t,!1),void d.statusbar.items().slice(1).disabled(!0))},buttons:[{text:"Find",subtype:"primary",onclick:function(){d.submit()}},{text:"Replace",disabled:!0,onclick:function(){m.replace(e,t,d.find("#replace").value())||(d.statusbar.items().slice(1).disabled(!0),t.set(-1),a={})}},{text:"Replace all",disabled:!0,onclick:function(){m.replace(e,t,d.find("#replace").value(),!0,!0),d.statusbar.items().slice(1).disabled(!0),a={}}},{type:"spacer",flex:1},{text:"Prev",name:"prev",disabled:!0,onclick:function(){m.prev(e,t),i()}},{text:"Next",name:"next",disabled:!0,onclick:function(){m.next(e,t),i()}}],title:"Find and replace",items:{type:"form",padding:20,labelGap:30,spacing:10,items:[{type:"textbox",name:"find",size:40,label:"Find",value:r},{type:"textbox",name:"replace",size:40,label:"Replace with"},{type:"checkbox",name:"case",text:"Match case",label:" "},{type:"checkbox",name:"words",text:"Whole words",label:" "}]}})},b=function(e,t){e.addCommand("SearchReplace",function(){x(e,t)})},N=function(e,t){return function(){x(e,t)}},y=function(e,t){e.addMenuItem("searchreplace",{text:"Find and replace",shortcut:"Meta+F",onclick:N(e,t),separator:"before",context:"edit"}),e.addButton("searchreplace",{tooltip:"Find and replace",onclick:N(e,t)}),e.shortcuts.add("Meta+F","",N(e,t))};t.add("searchreplace",function(t){var n=e(-1);return b(t,n),y(t,n),v(t,n)})}(); diff --git a/public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js.gz b/public/assets/tinymce/plugins/searchreplace/plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2767923a74b56c3c2fec6c67ecb3e0c283e4c3df GIT binary patch literal 2897 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/searchreplace/plugin.js b/public/assets/tinymce/plugins/searchreplace/plugin.js index c908424a0..21f5d37e2 120000 --- a/public/assets/tinymce/plugins/searchreplace/plugin.js +++ b/public/assets/tinymce/plugins/searchreplace/plugin.js @@ -1 +1 @@ -plugin-d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2.js \ No newline at end of file +plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/searchreplace/plugin.js.gz b/public/assets/tinymce/plugins/searchreplace/plugin.js.gz index fa0dd4dff..6bc9bd66b 120000 --- a/public/assets/tinymce/plugins/searchreplace/plugin.js.gz +++ b/public/assets/tinymce/plugins/searchreplace/plugin.js.gz @@ -1 +1 @@ -plugin-d4a4c10df900c99407d7c660da67017ac8d8571f997bd4a66ef2bebd9b6803e2.js.gz \ No newline at end of file +plugin-2fedcff466db9c0ccc810f9ff01763a43aa95f1011e6d35558b40e178fbb3f89.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js b/public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js new file mode 100644 index 000000000..62ff47e51 --- /dev/null +++ b/public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(t){var n=t,r=function(){return n};return{get:r,set:function(e){n=e},clone:function(){return e(r())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=function(e){return!(!/(^|[ ,])tinymcespellchecker([, ]|$)/.test(e.settings.plugins)||!t.get("tinymcespellchecker")||("undefined"!=typeof window.console&&window.console.log&&window.console.log("Spell Checker Pro is incompatible with Spell Checker plugin! Remove 'spellchecker' from the 'plugins' option."),0))},r=function(e){return e.getParam("spellchecker_languages","English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr_FR,German=de,Italian=it,Polish=pl,Portuguese=pt_BR,Spanish=es,Swedish=sv")},o=function(e){var t=e.getParam("language","en");return e.getParam("spellchecker_language",t)},i=function(e){return e.getParam("spellchecker_rpc_url")},c=function(e){return e.getParam("spellchecker_callback")},a=function(e){var t=new RegExp('[^\\s!"#$%&()*+,-./:;<=>?@[\\]^_{|}`\xa7\xa9\xab\xae\xb1\xb6\xb7\xb8\xbb\xbc\xbd\xbe\xbf\xd7\xf7\xa4\u201d\u201c\u201e\xa0\u2002\u2003\u2009]+',"g");return e.getParam("spellchecker_wordchar_pattern",t)},l=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=tinymce.util.Tools.resolve("tinymce.util.URI"),u=tinymce.util.Tools.resolve("tinymce.util.XHR"),d=function(e){return e.fire("SpellcheckStart")},f=function(e){return e.fire("SpellcheckEnd")};function h(e){return e&&1===e.nodeType&&"false"===e.contentEditable}function g(e,t){var n,r,o,i,c,a=[],l=t.dom;function s(e,t){if(!e[0])throw new Error("findAndReplaceDOMText cannot handle zero-length matches");return{start:e.index,end:e.index+e[0].length,text:e[0],data:t}}function u(t){var n=e.getElementsByTagName("*"),r=[];t="number"==typeof t?""+t:null;for(var o=0;o<n.length;o++){var i=n[o],c=i.getAttribute("data-mce-index");null!==c&&c.length&&-1!==i.className.indexOf("mce-spellchecker-word")&&(c!==t&&null!==t||r.push(i))}return r}function d(e){for(var t=a.length;t--;)if(a[t]===e)return t;return-1}function f(e){for(var t=0,n=a.length;t<n&&!1!==e(a[t],t);t++);return this}function g(e){var t,n,r=u(e?d(e):null);for(t=r.length;t--;)(n=r[t]).parentNode.insertBefore(n.firstChild,n),n.parentNode.removeChild(n);return this}function m(e){var n=u(d(e)),r=t.dom.createRng();return r.setStartBefore(n[0]),r.setEndAfter(n[n.length-1]),r}return o=t.schema.getBlockElements(),i=t.schema.getWhiteSpaceElements(),c=t.schema.getShortEndedElements(),{text:r=function p(e){var t;if(3===e.nodeType)return e.data;if(i[e.nodeName]&&!o[e.nodeName])return"";if(h(e))return"\n";if(t="",(o[e.nodeName]||c[e.nodeName])&&(t+="\n"),e=e.firstChild)for(;t+=p(e),e=e.nextSibling;);return t}(e),matches:a,each:f,filter:function(e){var t=[];return f(function(n,r){e(n,r)&&t.push(n)}),a=t,this},reset:function(){return a.splice(0,a.length),g(),this},matchFromElement:function(e){return a[e.getAttribute("data-mce-index")]},elementFromMatch:function(e){return u(d(e))[0]},find:function(e,t){if(r&&e.global)for(;n=e.exec(r);)a.push(s(n,t));return this},add:function(e,t,n){return a.push({start:e,end:e+t,text:r.substr(e,t),data:n}),this},wrap:function(t){return a.length&&function(e,t,n){var r,a,l,s,u,d=[],f=0,g=e,m=0;(t=t.slice(0)).sort(function(e,t){return e.start-t.start}),u=t.shift();e:for(;;){if((o[g.nodeName]||c[g.nodeName]||h(g))&&f++,3===g.nodeType&&(!a&&g.length+f>=u.end?(a=g,s=u.end-f):r&&d.push(g),!r&&g.length+f>u.start&&(r=g,l=u.start-f),f+=g.length),r&&a){if(g=n({startNode:r,startNodeIndex:l,endNode:a,endNodeIndex:s,innerNodes:d,match:u.text,matchIndex:m}),f-=a.length-s,r=null,a=null,d=[],m++,!(u=t.shift()))break}else if(i[g.nodeName]&&!o[g.nodeName]||!g.firstChild){if(g.nextSibling){g=g.nextSibling;continue}}else if(!h(g)){g=g.firstChild;continue}for(;;){if(g.nextSibling){g=g.nextSibling;break}if(g.parentNode===e)break e;g=g.parentNode}}}(e,a,function(e){function t(t,n){var r=a[n];r.stencil||(r.stencil=e(r));var o=r.stencil.cloneNode(!1);return o.setAttribute("data-mce-index",n),t&&o.appendChild(l.doc.createTextNode(t)),o}return function(e){var n,r,o,i=e.startNode,c=e.endNode,a=e.matchIndex,s=l.doc;if(i===c){var u=i;o=u.parentNode,e.startNodeIndex>0&&(n=s.createTextNode(u.data.substring(0,e.startNodeIndex)),o.insertBefore(n,u));var d=t(e.match,a);return o.insertBefore(d,u),e.endNodeIndex<u.length&&(r=s.createTextNode(u.data.substring(e.endNodeIndex)),o.insertBefore(r,u)),u.parentNode.removeChild(u),d}n=s.createTextNode(i.data.substring(0,e.startNodeIndex)),r=s.createTextNode(c.data.substring(e.endNodeIndex));for(var f=t(i.data.substring(e.startNodeIndex),a),h=[],g=0,m=e.innerNodes.length;g<m;++g){var p=e.innerNodes[g],v=t(p.data,a);p.parentNode.replaceChild(v,p),h.push(v)}var x=t(c.data.substring(0,e.endNodeIndex),a);return(o=i.parentNode).insertBefore(n,i),o.insertBefore(f,i),o.removeChild(i),(o=c.parentNode).insertBefore(x,c),o.insertBefore(r,c),o.removeChild(c),x}}(t)),this},unwrap:g,replace:function(e,n){var r=m(e);return r.deleteContents(),n.length>0&&r.insertNode(t.dom.doc.createTextNode(n)),r},rangeFromMatch:m,indexOf:d}}var m,p=function(e,t){if(!t.get()){var n=g(e.getBody(),e);t.set(n)}return t.get()},v=function(e,t,n,r,o,a,d){var f,h,g,m=c(e);(m||(f=e,h=t,g=n,function(e,t,n,r){var o={method:e,lang:g.get()},c="";o["addToDictionary"===e?"word":"text"]=t,l.each(o,function(e,t){c&&(c+="&"),c+=t+"="+encodeURIComponent(e)}),u.send({url:new s(h).toAbsolute(i(f)),type:"post",content_type:"application/x-www-form-urlencoded",data:c,success:function(e){if(e=JSON.parse(e))e.error?r(e.error):n(e);else{var t=f.translate("Server response wasn't proper JSON.");r(t)}},error:function(){var e=f.translate("The spelling service was not found: (")+i(f)+f.translate(")");r(e)}})})).call(e.plugins.spellchecker,r,o,a,d)},x=function(e,t,n){e.dom.select("span.mce-spellchecker-word").length||N(e,t,n)},N=function(e,t,n){if(p(e,n).reset(),n.set(null),t.get())return t.set(!1),f(e),!0},k=function(e){var t=e.getAttribute("data-mce-index");return"number"==typeof t?""+t:t},y=function(e,t,n,r,o){var i,c;if("string"!=typeof o&&o.words?(c=!!o.dictionary,i=o.words):i=o,e.setProgressState(!1),function(e){for(var t in e)return!1;return!0}(i)){var l=e.translate("No misspellings found.");return e.notificationManager.open({text:l,type:"info"}),void t.set(!1)}r.set({suggestions:i,hasDictionarySupport:c}),p(e,n).find(a(e)).filter(function(e){return!!i[e.text]}).wrap(function(t){return e.dom.create("span",{"class":"mce-spellchecker-word","data-mce-bogus":1,"data-mce-word":t.text})}),t.set(!0),d(e)},S={spellcheck:function(e,t,n,r,o,i){N(e,n,r)||(e.setProgressState(!0),v(e,t,i,"spellcheck",p(e,r).text,function(t){y(e,n,r,o,t)},function(t){e.notificationManager.open({text:t,type:"error"}),e.setProgressState(!1),N(e,n,r)}),e.focus())},checkIfFinished:x,addToDictionary:function(e,t,n,r,o,i,c){e.setProgressState(!0),v(e,t,o,"addToDictionary",i,function(){e.setProgressState(!1),e.dom.remove(c,!0),x(e,n,r)},function(t){e.notificationManager.open({text:t,type:"error"}),e.setProgressState(!1)})},ignoreWord:function(e,t,n,r,o,i){e.selection.collapse(),i?l.each(e.dom.select("span.mce-spellchecker-word"),function(t){t.getAttribute("data-mce-word")===r&&e.dom.remove(t,!0)}):e.dom.remove(o,!0),x(e,t,n)},findSpansByIndex:function(e,t){var n,r=[];if((n=l.toArray(e.getBody().getElementsByTagName("span"))).length)for(var o=0;o<n.length;o++){var i=k(n[o]);null!==i&&i.length&&i===t.toString()&&r.push(n[o])}return r},getElmIndex:k,markErrors:y},w=function(e,t,n,r,i){return{getTextMatcher:function(){return r.get()},getWordCharPattern:function(){return a(e)},markErrors:function(o){S.markErrors(e,t,r,n,o)},getLanguage:function(){return o(e)}}},b=function(e,t,n,r,o,i){e.addCommand("mceSpellCheck",function(){S.spellcheck(e,t,n,r,o,i)})},T=function(e,t,n,i,c,a){var s,u,d,f,h=(d=e,s=l.map(r(d).split(","),function(e){return{name:(e=e.split("="))[0],value:e[1]}}),u=[],l.each(s,function(e){u.push({selectable:!0,text:e.name,data:e.value})}),u),g=function(){S.spellcheck(e,t,n,i,a,c)},m={tooltip:"Spellcheck",onclick:g,onPostRender:function(t){var r=t.control;e.on("SpellcheckStart SpellcheckEnd",function(){r.active(n.get())})}};h.length>1&&(m.type="splitbutton",m.menu=h,m.onshow=(f=e,function(e){var t=o(f);e.control.items().each(function(e){e.active(e.settings.data===t)})}),m.onselect=function(e){c.set(e.control.settings.data)}),e.addButton("spellchecker",m),e.addMenuItem("spellchecker",{text:"Spellcheck",context:"tools",onclick:g,selectable:!0,onPostRender:function(){var t=this;t.active(n.get()),e.on("SpellcheckStart SpellcheckEnd",function(){t.active(n.get())})}})},I=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),E=tinymce.util.Tools.resolve("tinymce.ui.Factory"),P=function(e,t,n,r,o,i){e.on("click",function(c){var a=c.target;if("mce-spellchecker-word"===a.className){c.preventDefault();var s=S.findSpansByIndex(e,S.getElmIndex(a));if(s.length>0){var u=e.dom.createRng();u.setStartBefore(s[0]),u.setEndAfter(s[s.length-1]),e.selection.setRng(u),function(e,t,n,r,o,i,c,a){var s=[],u=n.get().suggestions[c];l.each(u,function(t){s.push({text:t,onclick:function(){e.insertContent(e.dom.encode(t)),e.dom.remove(a),S.checkIfFinished(e,r,o)}})}),s.push({text:"-"}),n.get().hasDictionarySupport&&s.push({text:"Add to Dictionary",onclick:function(){S.addToDictionary(e,t,r,o,i,c,a)}}),s.push.apply(s,[{text:"Ignore",onclick:function(){S.ignoreWord(e,r,o,c,a)}},{text:"Ignore all",onclick:function(){S.ignoreWord(e,r,o,c,a,!0)}}]),(m=E.create("menu",{items:s,context:"contextmenu",onautohide:function(e){-1!==e.target.className.indexOf("spellchecker")&&e.preventDefault()},onhide:function(){m.remove(),m=null}})).renderTo(document.body);var d=I.DOM.getPos(e.getContentAreaContainer()),f=e.dom.getPos(a[0]),h=e.dom.getRoot();"BODY"===h.nodeName?(f.x-=h.ownerDocument.documentElement.scrollLeft||h.scrollLeft,f.y-=h.ownerDocument.documentElement.scrollTop||h.scrollTop):(f.x-=h.scrollLeft,f.y-=h.scrollTop),d.x+=f.x,d.y+=f.y,m.moveTo(d.x,d.y+a[0].offsetHeight)}(e,t,n,r,o,i,a.getAttribute("data-mce-word"),s)}}})};t.add("spellchecker",function(t,r){if(!1===n(t)){var i=e(!1),c=e(o(t)),a=e(null),l=e({});return T(t,r,i,a,c,l),P(t,r,l,i,a,c),b(t,r,i,a,l,c),w(t,i,l,a,r)}})}(); diff --git a/public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js.gz b/public/assets/tinymce/plugins/spellchecker/plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d2b11940de95be126ec9f14d40d8d7a657d1cf9d GIT binary patch literal 3952 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 K{pLo&CjbDlv$MMZ literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/spellchecker/plugin.js b/public/assets/tinymce/plugins/spellchecker/plugin.js index 86f87ba1f..1b716ada0 120000 --- a/public/assets/tinymce/plugins/spellchecker/plugin.js +++ b/public/assets/tinymce/plugins/spellchecker/plugin.js @@ -1 +1 @@ -plugin-c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e.js \ No newline at end of file +plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/spellchecker/plugin.js.gz b/public/assets/tinymce/plugins/spellchecker/plugin.js.gz index 31918ea5e..49167c28b 120000 --- a/public/assets/tinymce/plugins/spellchecker/plugin.js.gz +++ b/public/assets/tinymce/plugins/spellchecker/plugin.js.gz @@ -1 +1 @@ -plugin-c8817526489a5046ebc2355eaf0a9dd27175d9feeaf9d2e205291c81eab6ec1e.js.gz \ No newline at end of file +plugin-eb425870c28d2cb04df7f65c13c64b2a20336702c6afc44cba6d1e25f5df4a07.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js b/public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js new file mode 100644 index 000000000..9b9aab3d0 --- /dev/null +++ b/public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js @@ -0,0 +1 @@ +!function(){"use strict";var e,t,n,r,o,i,u=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(e){return function(){return e}},c={noop:function(){},noarg:function(e){return function(){return e()}},compose:function(e,t){return function(){return e(t.apply(null,arguments))}},constant:a,identity:function(e){return e},tripleEquals:function(e,t){return e===t},curry:function(e){for(var t=new Array(arguments.length-1),n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),r=0;r<n.length;r++)n[r]=arguments[r];var o=t.concat(n);return e.apply(null,o)}},not:function(e){return function(){return!e.apply(null,arguments)}},die:function(e){return function(){throw new Error(e)}},apply:function(e){return e()},call:function(e){e()},never:a(!1),always:a(!0)},l=c.never,s=c.always,f=function(){return d},d=(r={fold:function(e,t){return e()},is:l,isSome:l,isNone:s,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},or:n,orThunk:t,map:f,ap:f,each:function(){},bind:f,flatten:f,exists:l,forall:s,filter:f,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:c.constant("none()")},Object.freeze&&Object.freeze(r),r),m=function(e){var t=function(){return e},n=function(){return o},r=function(t){return t(e)},o={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:s,isNone:l,getOr:t,getOrThunk:t,getOrDie:t,or:n,orThunk:n,map:function(t){return m(t(e))},ap:function(t){return t.fold(f,function(t){return m(t(e))})},each:function(t){t(e)},bind:r,flatten:t,exists:r,forall:r,filter:function(t){return t(e)?o:d},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(l,function(t){return n(e,t)})},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return o},g={some:m,none:f,from:function(e){return null===e||e===undefined?d:m(e)}},p=(o=Array.prototype.indexOf)===undefined?function(e,t){return S(e,t)}:function(e,t){return o.call(e,t)},h=function(e,t){return p(e,t)>-1},v=function(e,t){for(var n=e.length,r=new Array(n),o=0;o<n;o++){var i=e[o];r[o]=t(i,o,e)}return r},b=function(e,t){for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)},w=function(e,t){for(var n=e.length-1;n>=0;n--)t(e[n],n,e)},y=function(e,t){for(var n=[],r=0,o=e.length;r<o;r++){var i=e[r];t(i,r,e)&&n.push(i)}return n},x=function(e,t){for(var n=0,r=e.length;n<r;n++)if(t(e[n],n,e))return g.some(n);return g.none()},S=function(e,t){for(var n=0,r=e.length;n<r;++n)if(e[n]===t)return n;return-1},C=Array.prototype.push,R=function(e){for(var t=[],n=0,r=e.length;n<r;++n){if(!Array.prototype.isPrototypeOf(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);C.apply(t,e[n])}return t},T=function(e,t){for(var n=0,r=e.length;n<r;++n)if(!0!==t(e[n],n,e))return!1;return!0},D=Array.prototype.slice,A={map:v,each:b,eachr:w,partition:function(e,t){for(var n=[],r=[],o=0,i=e.length;o<i;o++){var u=e[o];(t(u,o,e)?n:r).push(u)}return{pass:n,fail:r}},filter:y,groupBy:function(e,t){if(0===e.length)return[];for(var n=t(e[0]),r=[],o=[],i=0,u=e.length;i<u;i++){var a=e[i],c=t(a);c!==n&&(r.push(o),o=[]),n=c,o.push(a)}return 0!==o.length&&r.push(o),r},indexOf:function(e,t){var n=p(e,t);return-1===n?g.none():g.some(n)},foldr:function(e,t,n){return w(e,function(e){n=t(n,e)}),n},foldl:function(e,t,n){return b(e,function(e){n=t(n,e)}),n},find:function(e,t){for(var n=0,r=e.length;n<r;n++){var o=e[n];if(t(o,n,e))return g.some(o)}return g.none()},findIndex:x,flatten:R,bind:function(e,t){var n=v(e,t);return R(n)},forall:T,exists:function(e,t){return x(e,t).isSome()},contains:h,equal:function(e,t){return e.length===t.length&&T(e,function(e,n){return e===t[n]})},reverse:function(e){var t=D.call(e,0);return t.reverse(),t},chunk:function(e,t){for(var n=[],r=0;r<e.length;r+=t){var o=e.slice(r,r+t);n.push(o)}return n},difference:function(e,t){return y(e,function(e){return!h(t,e)})},mapToObject:function(e,t){for(var n={},r=0,o=e.length;r<o;r++){var i=e[r];n[String(i)]=t(i,r)}return n},pure:function(e){return[e]},sort:function(e,t){var n=D.call(e,0);return n.sort(t),n},range:function(e,t){for(var n=[],r=0;r<e;r++)n.push(t(r));return n},head:function(e){return 0===e.length?g.none():g.some(e[0])},last:function(e){return 0===e.length?g.none():g.some(e[e.length-1])}},k=(i=Object.keys)===undefined?function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}:i,N=function(e,t){for(var n=k(e),r=0,o=n.length;r<o;r++){var i=n[r];t(e[i],i,e)}},O=function(e,t){var n={};return N(e,function(r,o){var i=t(r,o,e);n[i.k]=i.v}),n},E=function(e,t){var n=[];return N(e,function(e,r){n.push(t(e,r))}),n},B=function(e){return E(e,function(e){return e})},P={bifilter:function(e,t){var n={},r={};return N(e,function(e,o){(t(e,o)?n:r)[o]=e}),{t:n,f:r}},each:N,map:function(e,t){return O(e,function(e,n,r){return{k:n,v:t(e,n,r)}})},mapToArray:E,tupleMap:O,find:function(e,t){for(var n=k(e),r=0,o=n.length;r<o;r++){var i=n[r],u=e[i];if(t(u,i,e))return g.some(u)}return g.none()},keys:k,values:B,size:function(e){return B(e).length}},I=function(e){return function(t){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&Array.prototype.isPrototypeOf(e)?"array":"object"===t&&String.prototype.isPrototypeOf(e)?"string":t}(t)===e}},W={isString:I("string"),isObject:I("object"),isArray:I("array"),isNull:I("null"),isBoolean:I("boolean"),isUndefined:I("undefined"),isFunction:I("function"),isNumber:I("number")},M=function(e){return e.slice(0).sort()},L={sort:M,reqMessage:function(e,t){throw new Error("All required keys ("+M(e).join(", ")+") were not specified. Specified keys were: "+M(t).join(", ")+".")},unsuppMessage:function(e){throw new Error("Unsupported keys for object: "+M(e).join(", "))},validateStrArr:function(e,t){if(!W.isArray(t))throw new Error("The "+e+" fields must be an array. Was: "+t+".");A.each(t,function(t){if(!W.isString(t))throw new Error("The value "+t+" in the "+e+" fields was not a string.")})},invalidTypeMessage:function(e,t){throw new Error("All values need to be of type: "+t+". Keys ("+M(e).join(", ")+") were not.")},checkDupes:function(e){var t=M(e);A.find(t,function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}},q={immutable:function(){var e=arguments;return function(){for(var t=new Array(arguments.length),n=0;n<t.length;n++)t[n]=arguments[n];if(e.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+e.length+']", got '+t.length+" arguments");var r={};return A.each(e,function(e,n){r[e]=c.constant(t[n])}),r}},immutableBag:function(e,t){var n=e.concat(t);if(0===n.length)throw new Error("You must specify at least one required or optional field.");return L.validateStrArr("required",e),L.validateStrArr("optional",t),L.checkDupes(n),function(r){var o=P.keys(r);A.forall(e,function(e){return A.contains(o,e)})||L.reqMessage(e,o);var i=A.filter(o,function(e){return!A.contains(n,e)});i.length>0&&L.unsuppMessage(i);var u={};return A.each(e,function(e){u[e]=c.constant(r[e])}),A.each(t,function(e){u[e]=c.constant(Object.prototype.hasOwnProperty.call(r,e)?g.some(r[e]):g.none())}),u}}},F=q.immutable("width","height"),z=q.immutable("rows","columns"),j=q.immutable("row","column"),_=q.immutable("x","y"),H=q.immutable("element","rowspan","colspan"),V=q.immutable("element","rowspan","colspan","isNew"),U={dimensions:F,grid:z,address:j,coords:_,extended:q.immutable("element","rowspan","colspan","row","column"),detail:H,detailnew:V,rowdata:q.immutable("element","cells","section"),elementnew:q.immutable("element","isNew"),rowdatanew:q.immutable("element","cells","section","isNew"),rowcells:q.immutable("cells","section"),rowdetails:q.immutable("details","section"),bounds:q.immutable("startRow","startCol","finishRow","finishCol")},G=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:c.constant(e)}},X={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||n.childNodes.length>1)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return G(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return G(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return G(n)},fromDom:G,fromPoint:function(e,t,n){return g.from(e.dom().elementFromPoint(t,n)).map(G)}},Y=8,K=9,$=1,J=3,Q=$,Z=K,ee=function(e){return e.nodeType!==Q&&e.nodeType!==Z||0===e.childElementCount},te={all:function(e,t){var n=t===undefined?document:t.dom();return ee(n)?[]:A.map(n.querySelectorAll(e),X.fromDom)},is:function(e,t){var n=e.dom();if(n.nodeType!==Q)return!1;if(n.matches!==undefined)return n.matches(t);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(t);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(t);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},one:function(e,t){var n=t===undefined?document:t.dom();return ee(n)?g.none():g.from(n.querySelector(e)).map(X.fromDom)}},ne=function(e,t){for(var n=[],r=function(e){return n.push(e),t(e)},o=t(e);(o=o.bind(r)).isSome(););return n},re="undefined"!=typeof window?window:Function("return this;")(),oe=function(e,t){for(var n=t!==undefined&&null!==t?t:re,r=0;r<e.length&&n!==undefined&&null!==n;++r)n=n[e[r]];return n},ie=function(e,t){var n=e.split(".");return oe(n,t)},ue=function(e,t){var n=ie(e,t);if(n===undefined||null===n)throw e+" not available on this browser";return n},ae=function(){return ue("Node")},ce=function(e,t,n){return 0!=(e.compareDocumentPosition(t)&n)},le=function(e,t){return ce(e,t,ae().DOCUMENT_POSITION_CONTAINED_BY)},se=function(e){var t,n=!1;return function(){return n||(n=!0,t=e.apply(null,arguments)),t}},fe=function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var r=e[n];if(r.test(t))return r}return undefined}(e,t);if(!n)return{major:0,minor:0};var r=function(e){return Number(t.replace(n,"$"+e))};return me(r(1),r(2))},de=function(){return me(0,0)},me=function(e,t){return{major:e,minor:t}},ge={nu:me,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?de():fe(e,n)},unknown:de},pe="Firefox",he=function(e,t){return function(){return t===e}},ve=function(e){var t=e.current;return{current:t,version:e.version,isEdge:he("Edge",t),isChrome:he("Chrome",t),isIE:he("IE",t),isOpera:he("Opera",t),isFirefox:he(pe,t),isSafari:he("Safari",t)}},be={unknown:function(){return ve({current:undefined,version:ge.unknown()})},nu:ve,edge:c.constant("Edge"),chrome:c.constant("Chrome"),ie:c.constant("IE"),opera:c.constant("Opera"),firefox:c.constant(pe),safari:c.constant("Safari")},we="Windows",ye="Android",xe="Solaris",Se="FreeBSD",Ce=function(e,t){return function(){return t===e}},Re=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Ce(we,t),isiOS:Ce("iOS",t),isAndroid:Ce(ye,t),isOSX:Ce("OSX",t),isLinux:Ce("Linux",t),isSolaris:Ce(xe,t),isFreeBSD:Ce(Se,t)}},Te={unknown:function(){return Re({current:undefined,version:ge.unknown()})},nu:Re,windows:c.constant(we),ios:c.constant("iOS"),android:c.constant(ye),linux:c.constant("Linux"),osx:c.constant("OSX"),solaris:c.constant(xe),freebsd:c.constant(Se)},De=function(e,t){var n=String(t).toLowerCase();return A.find(e,function(e){return e.search(n)})},Ae=function(e,t){return De(e,t).map(function(e){var n=ge.detect(e.versionRegexes,t);return{current:e.name,version:n}})},ke=function(e,t){return De(e,t).map(function(e){var n=ge.detect(e.versionRegexes,t);return{current:e.name,version:n}})},Ne=function(e,t){return t+e},Oe=function(e,t){return e+t},Ee=function(e,t){return e.substring(t)},Be=function(e,t){return e.substring(0,e.length-t)},Pe=function(e){return""===e?g.none():g.some(e.substr(0,1))},Ie=function(e){return""===e?g.none():g.some(e.substring(1))},We=function(e,t,n){return""===t||!(e.length<t.length)&&e.substr(n,n+t.length)===t},Me=function(e,t){return We(e,t,0)},Le=function(e,t){return We(e,t,e.length-t.length)},qe={supplant:function(e,t){return e.replace(/\${([^{}]*)}/g,function(e,n){var r,o=t[n];return"string"==(r=typeof o)||"number"===r?o:e})},startsWith:Me,removeLeading:function(e,t){return Me(e,t)?Ee(e,t.length):e},removeTrailing:function(e,t){return Le(e,t)?Be(e,t.length):e},ensureLeading:function(e,t){return Me(e,t)?e:Ne(e,t)},ensureTrailing:function(e,t){return Le(e,t)?e:Oe(e,t)},endsWith:Le,contains:function(e,t){return-1!==e.indexOf(t)},trim:function(e){return e.replace(/^\s+|\s+$/g,"")},lTrim:function(e){return e.replace(/^\s+/g,"")},rTrim:function(e){return e.replace(/\s+$/g,"")},capitalize:function(e){return Pe(e).bind(function(t){return Ie(e).map(function(e){return t.toUpperCase()+e})}).getOr(e)}},Fe=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ze=function(e){return function(t){return qe.contains(t,e)}},je=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return qe.contains(e,"edge/")&&qe.contains(e,"chrome")&&qe.contains(e,"safari")&&qe.contains(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,Fe],search:function(e){return qe.contains(e,"chrome")&&!qe.contains(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return qe.contains(e,"msie")||qe.contains(e,"trident")}},{name:"Opera",versionRegexes:[Fe,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:ze("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:ze("firefox")},{name:"Safari",versionRegexes:[Fe,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(qe.contains(e,"safari")||qe.contains(e,"mobile/"))&&qe.contains(e,"applewebkit")}}],_e=[{name:"Windows",search:ze("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return qe.contains(e,"iphone")||qe.contains(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:ze("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:ze("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:ze("linux"),versionRegexes:[]},{name:"Solaris",search:ze("sunos"),versionRegexes:[]},{name:"FreeBSD",search:ze("freebsd"),versionRegexes:[]}],He={browsers:c.constant(je),oses:c.constant(_e)},Ve=function(e){var t,n,r,o,i,u,a,l,s,f,d,m=He.browsers(),g=He.oses(),p=Ae(m,e).fold(be.unknown,be.nu),h=ke(g,e).fold(Te.unknown,Te.nu);return{browser:p,os:h,deviceType:(n=p,r=e,o=(t=h).isiOS()&&!0===/ipad/i.test(r),i=t.isiOS()&&!o,u=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,l=o||u||a&&!0===/mobile/i.test(r),s=t.isiOS()||t.isAndroid(),f=s&&!l,d=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(r),{isiPad:c.constant(o),isiPhone:c.constant(i),isTablet:c.constant(l),isPhone:c.constant(f),isTouch:c.constant(s),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:c.constant(d)})}},Ue={detect:se(function(){var e=navigator.userAgent;return Ve(e)})},Ge=function(e,t){return e.dom()===t.dom()},Xe=Ue.detect().browser.isIE()?function(e,t){return le(e.dom(),t.dom())}:function(e,t){var n=e.dom(),r=t.dom();return n!==r&&n.contains(r)},Ye={eq:Ge,isEqualNode:function(e,t){return e.dom().isEqualNode(t.dom())},member:function(e,t){return A.exists(t,c.curry(Ge,e))},contains:Xe,is:te.is},Ke=function(e){return X.fromDom(e.dom().ownerDocument)},$e=function(e){var t=e.dom();return g.from(t.parentNode).map(X.fromDom)},Je=function(e){var t=e.dom();return g.from(t.previousSibling).map(X.fromDom)},Qe=function(e){var t=e.dom();return g.from(t.nextSibling).map(X.fromDom)},Ze=function(e){var t=e.dom();return A.map(t.childNodes,X.fromDom)},et=function(e,t){var n=e.dom().childNodes;return g.from(n[t]).map(X.fromDom)},tt=q.immutable("element","offset"),nt={owner:Ke,defaultView:function(e){var t=e.dom().ownerDocument.defaultView;return X.fromDom(t)},documentElement:function(e){var t=Ke(e);return X.fromDom(t.dom().documentElement)},parent:$e,findIndex:function(e){return $e(e).bind(function(t){var n=Ze(t);return A.findIndex(n,function(t){return Ye.eq(e,t)})})},parents:function(e,t){for(var n=W.isFunction(t)?t:c.constant(!1),r=e.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=X.fromDom(i);if(o.push(u),!0===n(u))break;r=i}return o},siblings:function(e){return $e(e).map(Ze).map(function(t){return A.filter(t,function(t){return!Ye.eq(e,t)})}).getOr([])},prevSibling:Je,offsetParent:function(e){var t=e.dom();return g.from(t.offsetParent).map(X.fromDom)},prevSiblings:function(e){return A.reverse(ne(e,Je))},nextSibling:Qe,nextSiblings:function(e){return ne(e,Qe)},children:Ze,child:et,firstChild:function(e){return et(e,0)},lastChild:function(e){return et(e,e.dom().childNodes.length-1)},childNodesCount:function(e){return e.dom().childNodes.length},hasChildNodes:function(e){return e.dom().hasChildNodes()},leaf:function(e,t){var n=Ze(e);return n.length>0&&t<n.length?tt(n[t],0):tt(e,t)}},rt=function(e,t,n){return A.bind(nt.children(e),function(e){return te.is(e,t)?n(e)?[e]:[]:rt(e,t,n)})},ot={firstLayer:function(e,t){return rt(e,t,c.constant(!0))},filterFirstLayer:rt},it=function(e){return e.dom().nodeName.toLowerCase()},ut=function(e){return e.dom().nodeType},at=function(e){return function(t){return ut(t)===e}},ct=at($),lt=at(J),st=at(K),ft={name:it,type:ut,value:function(e){return e.dom().nodeValue},isElement:ct,isText:lt,isDocument:st,isComment:function(e){return ut(e)===Y||"#comment"===it(e)}},dt=function(e,t,n){if(!(W.isString(n)||W.isBoolean(n)||W.isNumber(n)))throw console.error("Invalid call to Attr.set. Key ",t,":: Value ",n,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,n+"")},mt=function(e,t,n){dt(e.dom(),t,n)},gt=function(e,t){var n=e.dom().getAttribute(t);return null===n?undefined:n},pt=function(e,t){var n=e.dom();return!(!n||!n.hasAttribute)&&n.hasAttribute(t)},ht={clone:function(e){return A.foldl(e.dom().attributes,function(e,t){return e[t.name]=t.value,e},{})},set:mt,setAll:function(e,t){var n=e.dom();P.each(t,function(e,t){dt(n,t,e)})},get:gt,has:pt,remove:function(e,t){e.dom().removeAttribute(t)},hasNone:function(e){var t=e.dom().attributes;return t===undefined||null===t||0===t.length},transfer:function(e,t,n){ft.isElement(e)&&ft.isElement(t)&&A.each(n,function(n){var r,o,i;o=t,pt(r=e,i=n)&&!pt(o,i)&&mt(o,i,gt(r,i))})}},vt=se(function(){return bt(X.fromDom(document))}),bt=function(e){var t=e.dom().body;if(null===t||t===undefined)throw"Body is not available yet";return X.fromDom(t)},wt={body:vt,getBody:bt,inBody:function(e){var t=ft.isText(e)?e.dom().parentNode:e.dom();return t!==undefined&&null!==t&&t.ownerDocument.body.contains(t)}},yt=function(e,t){var n=[];return A.each(nt.children(e),function(e){t(e)&&(n=n.concat([e])),n=n.concat(yt(e,t))}),n},xt={all:function(e){return yt(wt.body(),e)},ancestors:function(e,t,n){return A.filter(nt.parents(e,n),t)},siblings:function(e,t){return A.filter(nt.siblings(e),t)},children:function(e,t){return A.filter(nt.children(e),t)},descendants:yt},St={all:function(e){return te.all(e)},ancestors:function(e,t,n){return xt.ancestors(e,function(e){return te.is(e,t)},n)},siblings:function(e,t){return xt.siblings(e,function(e){return te.is(e,t)})},children:function(e,t){return xt.children(e,function(e){return te.is(e,t)})},descendants:function(e,t){return te.all(t,e)}};function Ct(e,t,n,r,o){return e(n,r)?g.some(n):W.isFunction(o)&&o(n)?g.none():t(n,r,o)}var Rt,Tt,Dt,At,kt,Nt=function(e,t,n){for(var r=e.dom(),o=W.isFunction(n)?n:c.constant(!1);r.parentNode;){r=r.parentNode;var i=X.fromDom(r);if(t(i))return g.some(i);if(o(i))break}return g.none()},Ot=function(e,t){return A.find(e.dom().childNodes,c.compose(t,X.fromDom)).map(X.fromDom)},Et=function(e,t){var n=function(e){for(var r=0;r<e.childNodes.length;r++){if(t(X.fromDom(e.childNodes[r])))return g.some(X.fromDom(e.childNodes[r]));var o=n(e.childNodes[r]);if(o.isSome())return o}return g.none()};return n(e.dom())},Bt={first:function(e){return Et(wt.body(),e)},ancestor:Nt,closest:function(e,t,n){return Ct(function(e){return t(e)},Nt,e,t,n)},sibling:function(e,t){var n=e.dom();return n.parentNode?Ot(X.fromDom(n.parentNode),function(n){return!Ye.eq(e,n)&&t(n)}):g.none()},child:Ot,descendant:Et},Pt=function(e,t,n){return Bt.ancestor(e,function(e){return te.is(e,t)},n)},It={first:function(e){return te.one(e)},ancestor:Pt,sibling:function(e,t){return Bt.sibling(e,function(e){return te.is(e,t)})},child:function(e,t){return Bt.child(e,function(e){return te.is(e,t)})},descendant:function(e,t){return te.one(t,e)},closest:function(e,t,n){return Ct(te.is,Pt,e,t,n)}},Wt=function(e,t,n){var r=n!==undefined?n:c.constant(!1);return r(t)?g.none():A.contains(e,ft.name(t))?g.some(t):It.ancestor(t,e.join(","),function(e){return te.is(e,"table")||r(e)})},Mt=function(e,t){return nt.parent(t).map(function(t){return St.children(t,e)})},Lt=c.curry(Mt,"th,td"),qt=c.curry(Mt,"tr"),Ft=function(e,t){return parseInt(ht.get(e,t),10)},zt={cell:function(e,t){return Wt(["td","th"],e,t)},firstCell:function(e){return It.descendant(e,"th,td")},cells:function(e){return ot.firstLayer(e,"th,td")},neighbourCells:Lt,table:function(e,t){return It.closest(e,"table",t)},row:function(e,t){return Wt(["tr"],e,t)},rows:function(e){return ot.firstLayer(e,"tr")},notCell:function(e,t){return Wt(["caption","tr","tbody","tfoot","thead"],e,t)},neighbourRows:qt,attr:Ft,grid:function(e,t,n){var r=Ft(e,t),o=Ft(e,n);return U.grid(r,o)}},jt=function(e){var t=zt.rows(e);return A.map(t,function(e){var t=e,n=nt.parent(t).bind(function(e){var t=ft.name(e);return"tfoot"===t||"thead"===t||"tbody"===t?t:"tbody"}),r=A.map(zt.cells(e),function(e){var t=ht.has(e,"rowspan")?parseInt(ht.get(e,"rowspan"),10):1,n=ht.has(e,"colspan")?parseInt(ht.get(e,"colspan"),10):1;return U.detail(e,t,n)});return U.rowdata(t,r,n)})},_t=function(e,t){return A.map(e,function(e){var n=A.map(zt.cells(e),function(e){var t=ht.has(e,"rowspan")?parseInt(ht.get(e,"rowspan"),10):1,n=ht.has(e,"colspan")?parseInt(ht.get(e,"colspan"),10):1;return U.detail(e,t,n)});return U.rowdata(e,n,t.section())})},Ht=function(e,t){return e+","+t},Vt=function(e,t){var n=A.bind(e.all(),function(e){return e.cells()});return A.filter(n,t)},Ut={generate:function(e){var t={},n=[],r=e.length,o=0;A.each(e,function(e,r){var i=[];A.each(e.cells(),function(e,n){for(var u=0;t[Ht(r,u)]!==undefined;)u++;for(var a=U.extended(e.element(),e.rowspan(),e.colspan(),r,u),c=0;c<e.colspan();c++)for(var l=0;l<e.rowspan();l++){var s=u+c,f=Ht(r+l,s);t[f]=a,o=Math.max(o,s+1)}i.push(a)}),n.push(U.rowdata(e.element(),i,e.section()))});var i=U.grid(r,o);return{grid:c.constant(i),access:c.constant(t),all:c.constant(n)}},getAt:function(e,t,n){var r=e.access()[Ht(t,n)];return r!==undefined?g.some(r):g.none()},findItem:function(e,t,n){var r=Vt(e,function(e){return n(t,e.element())});return r.length>0?g.some(r[0]):g.none()},filterItems:Vt,justCells:function(e){var t=A.map(e.all(),function(e){return e.cells()});return A.flatten(t)}},Gt={isSupported:function(e){return e.style!==undefined}},Xt=function(e,t,n){if(!W.isString(n))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",n,":: Element ",e),new Error("CSS value must be a string: "+n);Gt.isSupported(e)&&e.style.setProperty(t,n)},Yt=function(e,t){Gt.isSupported(e)&&e.style.removeProperty(t)},Kt=function(e,t,n){var r=e.dom();Xt(r,t,n)},$t=function(e,t){return Gt.isSupported(e)?e.style.getPropertyValue(t):""},Jt=function(e,t){var n=e.dom(),r=$t(n,t);return g.from(r).filter(function(e){return e.length>0})},Qt={copy:function(e,t){var n=e.dom(),r=t.dom();Gt.isSupported(n)&&Gt.isSupported(r)&&(r.style.cssText=n.style.cssText)},set:Kt,preserve:function(e,t){var n=ht.get(e,"style"),r=t(e);return(n===undefined?ht.remove:ht.set)(e,"style",n),r},setAll:function(e,t){var n=e.dom();P.each(t,function(e,t){Xt(n,t,e)})},setOptions:function(e,t){var n=e.dom();P.each(t,function(e,t){e.fold(function(){Yt(n,t)},function(e){Xt(n,t,e)})})},remove:function(e,t){var n=e.dom();Yt(n,t),ht.has(e,"style")&&""===qe.trim(ht.get(e,"style"))&&ht.remove(e,"style")},get:function(e,t){var n=e.dom(),r=window.getComputedStyle(n).getPropertyValue(t),o=""!==r||wt.inBody(e)?r:$t(n,t);return null===o?undefined:o},getRaw:Jt,getAllRaw:function(e){var t={},n=e.dom();if(Gt.isSupported(n))for(var r=0;r<n.style.length;r++){var o=n.style.item(r);t[o]=n.style[o]}return t},isValidValue:function(e,t,n){var r=X.fromTag(e);return Kt(r,t,n),Jt(r,t).isSome()},reflow:function(e){return e.dom().offsetWidth},transfer:function(e,t,n){ft.isElement(e)&&ft.isElement(t)&&A.each(n,function(n){var r,o;r=t,Jt(e,o=n).each(function(e){Jt(r,o).isNone()&&Kt(r,o,e)})})}},Zt=function(e,t){nt.parent(e).each(function(n){n.dom().insertBefore(t.dom(),e.dom())})},en=function(e,t){e.dom().appendChild(t.dom())},tn={before:Zt,after:function(e,t){nt.nextSibling(e).fold(function(){nt.parent(e).each(function(e){en(e,t)})},function(e){Zt(e,t)})},prepend:function(e,t){nt.firstChild(e).fold(function(){en(e,t)},function(n){e.dom().insertBefore(t.dom(),n.dom())})},append:en,appendAt:function(e,t,n){nt.child(e,n).fold(function(){en(e,t)},function(e){Zt(e,t)})},wrap:function(e,t){Zt(e,t),en(t,e)}},nn={before:function(e,t){A.each(t,function(t){tn.before(e,t)})},after:function(e,t){A.each(t,function(n,r){var o=0===r?e:t[r-1];tn.after(o,n)})},prepend:function(e,t){A.each(t.slice().reverse(),function(t){tn.prepend(e,t)})},append:function(e,t){A.each(t,function(t){tn.append(e,t)})}},rn=function(e){var t=e.dom();null!==t.parentNode&&t.parentNode.removeChild(t)},on={empty:function(e){e.dom().textContent="",A.each(nt.children(e),function(e){rn(e)})},remove:rn,unwrap:function(e){var t=nt.children(e);t.length>0&&nn.before(e,t),rn(e)}},un=q.immutable("minRow","minCol","maxRow","maxCol"),an=function(e,t){var n,r,o,i,u,a,c,l,s,f,d=function(e){return te.is(e.element(),t)},m=jt(e),g=Ut.generate(m),p=(r=d,o=(n=g).grid().columns(),i=n.grid().rows(),u=o,a=0,c=0,P.each(n.access(),function(e){if(r(e)){var t=e.row(),n=t+e.rowspan()-1,o=e.column(),l=o+e.colspan()-1;t<i?i=t:n>a&&(a=n),o<u?u=o:l>c&&(c=l)}}),un(i,u,a,c)),h="th:not("+t+"),td:not("+t+")",v=ot.filterFirstLayer(e,"th,td",function(e){return te.is(e,h)});return A.each(v,on.remove),function(e,t,n,r){for(var o,i,u,a=t.grid().columns(),c=t.grid().rows(),l=0;l<c;l++)for(var s=!1,f=0;f<a;f++)l<n.minRow()||l>n.maxRow()||f<n.minCol()||f>n.maxCol()||(Ut.getAt(t,l,f).filter(r).isNone()?(o=s,i=e[l].element(),u=X.fromTag("td"),tn.append(u,X.fromTag("br")),(o?tn.append:tn.prepend)(i,u)):s=!0)}(m,g,p,d),l=e,s=p,f=A.filter(ot.firstLayer(l,"tr"),function(e){return 0===e.dom().childElementCount}),A.each(f,on.remove),s.minCol()!==s.maxCol()&&s.minRow()!==s.maxRow()||A.each(ot.firstLayer(l,"th,td"),function(e){ht.remove(e,"rowspan"),ht.remove(e,"colspan")}),ht.remove(l,"width"),ht.remove(l,"height"),Qt.remove(l,"width"),Qt.remove(l,"height"),e},cn=function(e,t){return X.fromDom(e.dom().cloneNode(t))},ln=function(e){return cn(e,!0)},sn=function(e,t){var n=X.fromTag(t),r=ht.clone(e);return ht.setAll(n,r),n},fn=function(e){return cn(e,!1)},dn=ln,mn=function(e,t){var n=sn(e,t),r=nt.children(ln(e));return nn.append(n,r),n},gn=(Rt=ft.isText,Tt="text",Dt=function(e){return Rt(e)?g.from(e.dom().nodeValue):g.none()},At=Ue.detect().browser,{get:function(e){if(!Rt(e))throw new Error("Can only get "+Tt+" value of a "+Tt+" node");return kt(e).getOr("")},getOption:kt=At.isIE()&&10===At.version.major?function(e){try{return Dt(e)}catch(t){return g.none()}}:Dt,set:function(e,t){if(!Rt(e))throw new Error("Can only set raw "+Tt+" value of a "+Tt+" node");e.dom().nodeValue=t}}),pn={get:function(e){return gn.get(e)},getOption:function(e){return gn.getOption(e)},set:function(e,t){gn.set(e,t)}},hn=function(e){return"img"===ft.name(e)?1:pn.getOption(e).fold(function(){return nt.children(e).length},function(e){return e.length})},vn=["img","br"],bn=hn,wn=function(e){var t;return t=e,pn.getOption(t).filter(function(e){return 0!==e.trim().length||e.indexOf("\xa0")>-1}).isSome()||A.contains(vn,ft.name(e))},yn=function(e,t){var n=function(e){for(var r=nt.children(e),o=r.length-1;o>=0;o--){var i=r[o];if(t(i))return g.some(i);var u=n(i);if(u.isSome())return u}return g.none()};return n(e)},xn={first:function(e){return Bt.descendant(e,wn)},last:function(e){return yn(e,wn)}},Sn=function(){var e=X.fromTag("td");return tn.append(e,X.fromTag("br")),e},Cn=function(e,t,n){var r=mn(e,t);return P.each(n,function(e,t){null===e?ht.remove(r,t):ht.set(r,t,e)}),r},Rn=function(e){return e},Tn=function(e){return function(){return X.fromTag("tr",e.dom())}},Dn={cellOperations:function(e,t,n){return{row:Tn(t),cell:function(t){var r,o,i,u=nt.owner(t.element()),a=X.fromTag(ft.name(t.element()),u.dom()),c=n.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),l=c.length>0?(r=t.element(),o=a,i=c,xn.first(r).map(function(e){var t=i.join(","),n=St.ancestors(e,t,function(e){return Ye.eq(e,r)});return A.foldr(n,function(e,t){var n=fn(t);return tn.append(e,n),n},o)}).getOr(o)):a;return tn.append(l,X.fromTag("br")),Qt.copy(t.element(),a),Qt.remove(a,"height"),1!==t.colspan()&&Qt.remove(t.element(),"width"),e(t.element(),a),a},replace:Cn,gap:Sn}},paste:function(e){return{row:Tn(e),cell:Sn,replace:Rn,gap:Sn}}},An=function(e,t){var n=(t||document).createElement("div");return n.innerHTML=e,nt.children(X.fromDom(n))},kn=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"];function Nn(){return{up:c.constant({selector:It.ancestor,closest:It.closest,predicate:Bt.ancestor,all:nt.parents}),down:c.constant({selector:St.descendants,predicate:xt.descendants}),styles:c.constant({get:Qt.get,getRaw:Qt.getRaw,set:Qt.set,remove:Qt.remove}),attrs:c.constant({get:ht.get,set:ht.set,remove:ht.remove,copyTo:function(e,t){var n=ht.clone(e);ht.setAll(t,n)}}),insert:c.constant({before:tn.before,after:tn.after,afterAll:nn.after,append:tn.append,appendAll:nn.append,prepend:tn.prepend,wrap:tn.wrap}),remove:c.constant({unwrap:on.unwrap,remove:on.remove}),create:c.constant({nu:X.fromTag,clone:function(e){return X.fromDom(e.dom().cloneNode(!1))},text:X.fromText}),query:c.constant({comparePosition:function(e,t){return e.dom().compareDocumentPosition(t.dom())},prevSibling:nt.prevSibling,nextSibling:nt.nextSibling}),property:c.constant({children:nt.children,name:ft.name,parent:nt.parent,isText:ft.isText,isComment:ft.isComment,isElement:ft.isElement,getText:pn.get,setText:pn.set,isBoundary:function(e){return!!ft.isElement(e)&&("body"===ft.name(e)||A.contains(kn,ft.name(e)))},isEmptyTag:function(e){return!!ft.isElement(e)&&A.contains(["br","img","hr","input"],ft.name(e))}}),eq:Ye.eq,is:Ye.is}}q.immutable("left","right");var On=function(e,t,n,r){var o=t(e,n);return A.foldr(r,function(n,r){var o=t(e,r);return En(e,n,o)},o)},En=function(e,t,n){return t.bind(function(t){return n.filter(c.curry(e.eq,t))})},Bn=function(e,t,n){return n.length>0?On(e,t,(r=n)[0],r.slice(1)):g.none();var r},Pn=function(e,t){return c.curry(e.eq,t)},In=function(e,t,n,r){var o=r!==undefined?r:c.constant(!1),i=[t].concat(e.up().all(t)),u=[n].concat(e.up().all(n)),a=function(e){return A.findIndex(e,o).fold(function(){return e},function(t){return e.slice(0,t+1)})},l=a(i),s=a(u),f=A.find(l,function(t){return A.exists(s,Pn(e,t))});return{firstpath:c.constant(l),secondpath:c.constant(s),shared:c.constant(f)}},Wn=In,Mn=function(e,t,n){return Bn(e,t,n)},Ln=function(e,t,n,r){return Wn(e,t,n,r)},qn=Nn(),Fn=function(e,t){return Mn(qn,function(t,n){return e(n)},t)},zn=function(e,t,n){return Ln(qn,e,t,n)},jn=function(e,t){return t.column()>=e.startCol()&&t.column()+t.colspan()-1<=e.finishCol()&&t.row()>=e.startRow()&&t.row()+t.rowspan()-1<=e.finishRow()},_n=function(e,t){var n=t.column(),r=t.column()+t.colspan()-1,o=t.row(),i=t.row()+t.rowspan()-1;return n<=e.finishCol()&&r>=e.startCol()&&o<=e.finishRow()&&i>=e.startRow()},Hn=function(e,t){for(var n=!0,r=c.curry(jn,t),o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)n=n&&Ut.getAt(e,o,i).exists(r);return n?g.some(t):g.none()},Vn=function(e,t,n){var r=Ut.findItem(e,t,Ye.eq),o=Ut.findItem(e,n,Ye.eq);return r.bind(function(e){return o.map(function(t){return n=e,r=t,U.bounds(Math.min(n.row(),r.row()),Math.min(n.column(),r.column()),Math.max(n.row()+n.rowspan()-1,r.row()+r.rowspan()-1),Math.max(n.column()+n.colspan()-1,r.column()+r.colspan()-1));var n,r})})},Un=Vn,Gn=function(e,t,n){return Vn(e,t,n).bind(function(t){return Hn(e,t)})},Xn=function(e,t,n,r){return Ut.findItem(e,t,Ye.eq).bind(function(t){var o=n>0?t.row()+t.rowspan()-1:t.row(),i=r>0?t.column()+t.colspan()-1:t.column();return Ut.getAt(e,o+n,i+r).map(function(e){return e.element()})})},Yn=function(e,t,n){return Un(e,t,n).map(function(t){var n=Ut.filterItems(e,c.curry(_n,t));return A.map(n,function(e){return e.element()})})},Kn=function(e,t){return Ut.findItem(e,t,function(e,t){return Ye.contains(t,e)}).bind(function(e){return e.element()})},$n=function(e){var t=jt(e);return Ut.generate(t)},Jn=function(e,t,n){return zt.table(e).bind(function(r){var o=$n(r);return Xn(o,e,t,n)})},Qn=function(e,t,n){var r=$n(e);return Yn(r,t,n)},Zn=function(e,t,n,r,o){var i=$n(e),u=Ye.eq(e,n)?t:Kn(i,t),a=Ye.eq(e,o)?r:Kn(i,r);return Yn(i,u,a)},er=function(e,t,n){var r=$n(e);return Gn(r,t,n)},tr=function(e,t){return It.ancestor(e,"table")},nr=q.immutableBag(["boxes","start","finish"],[]),rr=function(e,t,n){var r=function(e){return function(t){return n(t)||Ye.eq(t,e)}};return Ye.eq(e,t)?g.some(nr({boxes:g.some([e]),start:e,finish:t})):tr(e).bind(function(o){return tr(t).bind(function(i){if(Ye.eq(o,i))return g.some(nr({boxes:Qn(o,e,t),start:e,finish:t}));if(Ye.contains(o,i)){var u=(a=St.ancestors(t,"td,th",r(o))).length>0?a[a.length-1]:t;return g.some(nr({boxes:Zn(o,e,o,t,i),start:e,finish:u}))}if(Ye.contains(i,o)){var a,c=(a=St.ancestors(e,"td,th",r(i))).length>0?a[a.length-1]:e;return g.some(nr({boxes:Zn(i,e,o,t,i),start:e,finish:c}))}return zn(e,t).shared().bind(function(u){return It.closest(u,"table",n).bind(function(n){var u=St.ancestors(t,"td,th",r(n)),a=u.length>0?u[u.length-1]:t,c=St.ancestors(e,"td,th",r(n)),l=c.length>0?c[c.length-1]:e;return g.some(nr({boxes:Zn(n,e,o,t,i),start:l,finish:a}))})})})})},or={identify:rr,retrieve:function(e,t){var n=St.descendants(e,t);return n.length>0?g.some(n):g.none()},shiftSelection:function(e,t,n,r,o){return(i=e,u=o,A.find(i,function(e){return te.is(e,u)})).bind(function(e){return Jn(e,t,n).bind(function(e){return t=e,n=r,It.ancestor(t,"table").bind(function(e){return It.descendant(e,n).bind(function(e){return rr(e,t).bind(function(e){return e.boxes().map(function(t){return{boxes:c.constant(t),start:c.constant(e.start()),finish:c.constant(e.finish())}})})})});var t,n})});var i,u},getEdges:function(e,t,n){return It.descendant(e,t).bind(function(t){return It.descendant(e,n).bind(function(e){return Fn(tr,[t,e]).map(function(n){return{first:c.constant(t),last:c.constant(e),table:c.constant(n)}})})})}},ir={retrieve:function(e,t){return or.retrieve(e,t)},retrieveBox:function(e,t,n){return or.getEdges(e,t,n).bind(function(t){var n=function(t){return Ye.eq(e,t)},r=It.ancestor(t.first(),"thead,tfoot,tbody,table",n),o=It.ancestor(t.last(),"thead,tfoot,tbody,table",n);return r.bind(function(e){return o.bind(function(n){return Ye.eq(e,n)?er(t.table(),t.first(),t.last()):g.none()})})})}},ur="data-mce-selected",ar="data-mce-first-selected",cr="data-mce-last-selected",lr={selected:c.constant(ur),selectedSelector:c.constant("td[data-mce-selected],th[data-mce-selected]"),attributeSelector:c.constant("[data-mce-selected]"),firstSelected:c.constant(ar),firstSelectedSelector:c.constant("td[data-mce-first-selected],th[data-mce-first-selected]"),lastSelected:c.constant(cr),lastSelectedSelector:c.constant("td[data-mce-last-selected],th[data-mce-last-selected]")},sr=function(e){if(!W.isArray(e))throw new Error("cases must be an array");if(0===e.length)throw new Error("there must be at least one case");var t=[],n={};return A.each(e,function(r,o){var i=P.keys(r);if(1!==i.length)throw new Error("one and only one name per case");var u=i[0],a=r[u];if(n[u]!==undefined)throw new Error("duplicate key detected:"+u);if("cata"===u)throw new Error("cannot have a case named cata (sorry)");if(!W.isArray(a))throw new Error("case arguments must be an array");t.push(u),n[u]=function(){var n=arguments.length;if(n!==a.length)throw new Error("Wrong number of arguments to case "+u+". Expected "+a.length+" ("+a+"), got "+n);for(var r=new Array(n),i=0;i<r.length;i++)r[i]=arguments[i];return{fold:function(){if(arguments.length!==e.length)throw new Error("Wrong number of arguments to fold. Expected "+e.length+", got "+arguments.length);return arguments[o].apply(null,r)},match:function(e){var n=P.keys(e);if(t.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+t.join(",")+"\nActual: "+n.join(","));if(!A.forall(t,function(e){return A.contains(n,e)}))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+t.join(", "));return e[u].apply(null,r)},log:function(e){console.log(e,{constructors:t,constructor:u,params:r})}}}}),n},fr=sr([{none:[]},{multiple:["elements"]},{single:["selection"]}]),dr={cata:function(e,t,n,r){return e.fold(t,n,r)},none:fr.none,multiple:fr.multiple,single:fr.single},mr=function(e,t){return dr.cata(t.get(),c.constant([]),c.identity,c.constant([e]))},gr=function(e,t){return dr.cata(t.get(),g.none,function(t,n){return 0===t.length?g.none():ir.retrieveBox(e,lr.firstSelectedSelector(),lr.lastSelectedSelector()).bind(function(e){return t.length>1?g.some({bounds:c.constant(e),cells:c.constant(t)}):g.none()})},g.none)},pr=function(e,t){var n=mr(e,t);return n.length>0&&A.forall(n,function(e){return ht.has(e,"rowspan")&&parseInt(ht.get(e,"rowspan"),10)>1||ht.has(e,"colspan")&&parseInt(ht.get(e,"colspan"),10)>1})?g.some(n):g.none()},hr=mr,vr=function(e){return{element:c.constant(e),mergable:g.none,unmergable:g.none,selection:c.constant([e])}},br=q.immutable("element","clipboard","generators"),wr={noMenu:vr,forMenu:function(e,t,n){return{element:c.constant(n),mergable:c.constant(gr(t,e)),unmergable:c.constant(pr(n,e)),selection:c.constant(hr(n,e))}},notCell:function(e){return vr(e)},paste:br,pasteRows:function(e,t,n,r,o){return{element:c.constant(n),mergable:g.none,unmergable:g.none,selection:c.constant(hr(n,e)),clipboard:c.constant(r),generators:c.constant(o)}}},yr={registerEvents:function(e,t,n,r){e.on("BeforeGetContent",function(n){!0===n.selection&&dr.cata(t.get(),c.noop,function(t){var r;n.preventDefault(),(r=t,zt.table(r[0]).map(dn).map(function(e){return[an(e,lr.attributeSelector())]})).each(function(t){n.content=A.map(t,function(t){return n=t,e.selection.serializer.serialize(n.dom(),{});var n}).join("")})},c.noop)}),e.on("BeforeSetContent",function(t){!0===t.selection&&!0===t.paste&&g.from(e.dom.getParent(e.selection.getStart(),"th,td")).each(function(o){var i=X.fromDom(o);zt.table(i).bind(function(o){var u=A.filter(An(t.content),function(e){return"meta"!==ft.name(e)});if(1===u.length&&"table"===ft.name(u[0])){t.preventDefault();var a=X.fromDom(e.getDoc()),c=Dn.paste(a),l=wr.paste(i,u[0],c);n.pasteCells(o,l).each(function(t){e.selection.setRng(t),e.focus(),r.clear(o)})}})})})}};function xr(e,t){var n=function(n){var r=t(n);if(r<=0||null===r){var o=Qt.get(n,e);return parseFloat(o)||0}return r},r=function(e,t){return A.foldl(t,function(t,n){var r=Qt.get(e,n),o=r===undefined?0:parseInt(r,10);return isNaN(o)?t:t+o},0)};return{set:function(t,n){if(!W.isNumber(n)&&!n.match(/^[0-9]+$/))throw e+".set accepts only positive integer values. Value was "+n;var r=t.dom();Gt.isSupported(r)&&(r.style[e]=n+"px")},get:n,getOuter:n,aggregate:r,max:function(e,t,n){var o=r(e,n);return t>o?t-o:0}}}var Sr=xr("height",function(e){return wt.inBody(e)?e.dom().getBoundingClientRect().height:e.dom().offsetHeight}),Cr=function(e){return Sr.get(e)},Rr=function(e){return Sr.getOuter(e)},Tr=xr("width",function(e){return e.dom().offsetWidth}),Dr=function(e){return Tr.get(e)},Ar=function(e){return Tr.getOuter(e)},kr=Ue.detect(),Nr=function(e,t,n){return r=Qt.get(e,t),o=n,i=parseFloat(r),isNaN(i)?o:i;var r,o,i},Or=function(e){return kr.browser.isIE()||kr.browser.isEdge()?(n=Nr(t=e,"padding-top",0),r=Nr(t,"padding-bottom",0),o=Nr(t,"border-top-width",0),i=Nr(t,"border-bottom-width",0),u=t.dom().getBoundingClientRect().height,"border-box"===Qt.get(t,"box-sizing")?u:u-n-r-(o+i)):Nr(e,"height",Cr(e));var t,n,r,o,i,u},Er=/(\d+(\.\d+)?)(\w|%)*/,Br=/(\d+(\.\d+)?)%/,Pr=/(\d+(\.\d+)?)px|em/,Ir=function(e,t){Qt.set(e,"height",t+"px")},Wr=function(e,t,n,r){var o,i,u,a,c,l=parseInt(e,10);return qe.endsWith(e,"%")&&"table"!==ft.name(t)?(o=t,i=l,u=n,a=r,c=zt.table(o).map(function(e){var t=u(e);return Math.floor(i/100*t)}).getOr(i),a(o,c),c):l},Mr=function(e){var t,n=(t=e,Qt.getRaw(t,"height").getOrThunk(function(){return Or(t)+"px"}));return n?Wr(n,e,Cr,Ir):Cr(e)},Lr=function(e,t){return ht.has(e,t)?parseInt(ht.get(e,t),10):1},qr=function(e){return Qt.getRaw(e,"width").fold(function(){return g.from(ht.get(e,"width"))},function(e){return g.some(e)})},Fr=function(e,t){return e/t.pixelWidth()*100},zr={percentageBasedSizeRegex:c.constant(Br),pixelBasedSizeRegex:c.constant(Pr),setPixelWidth:function(e,t){Qt.set(e,"width",t+"px")},setPercentageWidth:function(e,t){Qt.set(e,"width",t+"%")},setHeight:Ir,getPixelWidth:function(e,t){return qr(e).fold(function(){var t=Dr(e);return parseInt(t,10)},function(n){return function(e,t,n){if(Pr.test(t)){var r=Pr.exec(t);return parseInt(r[1],10)}if(Br.test(t)){var o=Br.exec(t),i=parseFloat(o[1]);return i/100*n.pixelWidth()}var u=Dr(e);return parseInt(u,10)}(e,n,t)})},getPercentageWidth:function(e,t){return qr(e).fold(function(){var n=Dr(e),r=parseInt(n,10);return Fr(r,t)},function(n){return function(e,t,n){if(Br.test(t)){var r=Br.exec(t);return parseFloat(r[1])}var o=Dr(e),i=parseInt(o,10);return Fr(i,n)}(e,n,t)})},getGenericWidth:function(e){return qr(e).bind(function(e){if(Er.test(e)){var t=Er.exec(e);return g.some({width:c.constant(t[1]),unit:c.constant(t[3])})}return g.none()})},setGenericWidth:function(e,t,n){Qt.set(e,"width",t+n)},getHeight:function(e){return n="rowspan",Mr(t=e)/Lr(t,n);var t,n},getRawWidth:qr},jr={halve:function(e,t){zr.getGenericWidth(e).each(function(n){var r=n.width()/2;zr.setGenericWidth(e,r,n.unit()),zr.setGenericWidth(t,r,n.unit())})}},_r=function(e,t){var n=t||X.fromDom(document.documentElement);return Bt.ancestor(e,c.curry(Ye.eq,n)).isSome()},Hr=function(e){var t=e.dom();return t===t.window?e:ft.isDocument(e)?t.defaultView||t.parentWindow:null},Vr=function(e,t){return{left:c.constant(e),top:c.constant(t),translate:function(n,r){return Vr(e+n,t+r)}}},Ur=function(e,t){return e!==undefined?e:t!==undefined?t:0},Gr=function(e){var t,n=e.dom(),r=n.ownerDocument,o=r.body,i=X.fromDom(r.documentElement);return o===n?Vr(o.offsetLeft,o.offsetTop):_r(e,i)?(t=n.getBoundingClientRect(),Vr(t.left,t.top)):Vr(0,0)},Xr=function(e){var t=e.dom().ownerDocument,n=t.body,r=Hr(X.fromDom(t)),o=t.documentElement,i=Ur(r.pageYOffset,o.scrollTop),u=Ur(r.pageXOffset,o.scrollLeft),a=Ur(o.clientTop,n.clientTop),c=Ur(o.clientLeft,n.clientLeft);return Gr(e).translate(u-c,i-a)},Yr=q.immutable("row","y"),Kr=q.immutable("col","x"),$r=function(e){return Xr(e).left()+Ar(e)},Jr=function(e){return Xr(e).left()},Qr=function(e,t){return Kr(e,Jr(t))},Zr=function(e,t){return Kr(e,$r(t))},eo=function(e){return Xr(e).top()},to=function(e,t,n){if(0===n.length)return[];var r=A.map(n.slice(1),function(t,n){return t.map(function(t){return e(n,t)})}),o=n[n.length-1].map(function(e){return t(n.length-1,e)});return r.concat([o])},no={delta:c.identity,positions:c.curry(to,function(e,t){return Yr(e,eo(t))},function(e,t){return Yr(e,eo(t)+Rr(t))}),edge:eo},ro={delta:c.identity,edge:Jr,positions:c.curry(to,Qr,Zr)},oo={height:no,rtl:{delta:function(e,t){return-e},edge:$r,positions:c.curry(to,Zr,Qr)},ltr:ro},io={ltr:oo.ltr,rtl:oo.rtl};function uo(e){var t=function(t){return e(t).isRtl()?io.rtl:io.ltr};return{delta:function(e,n){return t(n).delta(e,n)},edge:function(e){return t(e).edge(e)},positions:function(e,n){return t(n).positions(e,n)}}}var ao={getGridSize:function(e){var t=jt(e);return Ut.generate(t).grid()}},co=function(e){var t=e,n=function(){return t};return{get:n,set:function(e){t=e},clone:function(){return co(n())}}},lo=function(e,t){return so(e,t,{validate:W.isFunction,label:"function"})},so=function(e,t,n){if(0===t.length)throw new Error("You must specify at least one required field.");return L.validateStrArr("required",t),L.checkDupes(t),function(r){var o=P.keys(r);A.forall(t,function(e){return A.contains(o,e)})||L.reqMessage(t,o),e(t,o);var i=A.filter(t,function(e){return!n.validate(r[e],e)});return i.length>0&&L.invalidTypeMessage(i,n.label),r}},fo=c.noop,mo={exactly:c.curry(lo,function(e,t){var n=A.filter(t,function(t){return!A.contains(e,t)});n.length>0&&L.unsuppMessage(n)}),ensure:c.curry(lo,fo),ensureWith:c.curry(so,fo)},go=function(e){var t=ht.has(e,"colspan")?parseInt(ht.get(e,"colspan"),10):1,n=ht.has(e,"rowspan")?parseInt(ht.get(e,"rowspan"),10):1;return{element:c.constant(e),colspan:c.constant(t),rowspan:c.constant(n)}},po=mo.exactly(["cell","row","replace","gap"]),ho=function(e,t){po(e);var n=co(g.none()),r=t!==undefined?t:go,o=function(t){var n,o=r(t);return n=o,e.cell(n)},i=function(e){var t=o(e);return n.get().isNone()&&n.set(g.some(t)),u=g.some({item:e,replacement:t}),t},u=g.none();return{getOrInit:function(e,t){return u.fold(function(){return i(e)},function(n){return t(e,n.item)?n.replacement:i(e)})},cursor:n.get}},vo=function(e,t){return function(n){var r=co(g.none());po(n);var o=[],i=function(i){var u=n.replace(i,t,{scope:e});return o.push({item:i,sub:u}),r.get().isNone()&&r.set(g.some(u)),u};return{replaceOrInit:function(e,t){return(n=e,r=t,A.find(o,function(e){return r(e.item,n)})).fold(function(){return i(e)},function(n){return t(e,n.item)?n.sub:i(e)});var n,r},cursor:r.get}}},bo=function(e){po(e);var t=co(g.none());return{combine:function(n){return t.get().isNone()&&t.set(g.some(n)),function(){var t=e.cell({element:c.constant(n),colspan:c.constant(1),rowspan:c.constant(1)});return Qt.remove(t,"width"),Qt.remove(n,"width"),t}},cursor:t.get}},wo=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],yo=function(e,t){var n=e.property().name(t);return A.contains(wo,n)},xo=function(e,t){return A.contains(["br","img","hr","input"],e.property().name(t))},So=yo,Co=function(e,t){var n=e.property().name(t);return A.contains(["ol","ul"],n)},Ro=xo,To=Nn(),Do=function(e){return So(To,e)},Ao=function(e){return Co(To,e)},ko=function(e){return Ro(To,e)},No=function(e){var t,n=function(e){return"br"===ft.name(e)},r=function(e){return xn.last(e).bind(function(t){var r,o=(r=t,nt.nextSibling(r).map(function(e){return!!Do(e)||(ko(e)?"img"!==ft.name(e):void 0)}).getOr(!1));return nt.parent(t).map(function(r){return!0===o||(i=r,"li"===ft.name(i)||Bt.ancestor(i,Ao).isSome())||n(t)||Do(r)&&!Ye.eq(e,r)?[]:[X.fromTag("br")];var i})}).getOr([])},o=0===(t=A.bind(e,function(e){var t,o=nt.children(e);return t=o,A.forall(t,function(e){return n(e)||ft.isText(e)&&0===pn.get(e).trim().length})?[]:o.concat(r(e))})).length?[X.fromTag("br")]:t;on.empty(e[0]),nn.append(e[0],o)},Oo=function(e){return function(){for(var t=new Array(arguments.length),n=0;n<t.length;n++)t[n]=arguments[n];if(0===t.length)throw new Error("Can't merge zero objects");for(var r={},o=0;o<t.length;o++){var i=t[o];for(var u in i)i.hasOwnProperty(u)&&(r[u]=e(r[u],i[u]))}return r}},Eo=Oo(function(e,t){return W.isObject(e)&&W.isObject(t)?Eo(e,t):t}),Bo=Oo(function(e,t){return t}),Po={deepMerge:Eo,merge:Bo},Io=function(e){for(var t=[],n=function(e){t.push(e)},r=0;r<e.length;r++)e[r].each(n);return t},Wo=function(e,t){for(var n=0;n<e.length;n++){var r=t(e[n],n);if(r.isSome())return r}return g.none()},Mo=function(e,t){return U.rowcells(t,e.section())},Lo=function(e,t){return e.cells()[t]},qo={addCell:function(e,t,n){var r=e.cells(),o=r.slice(0,t),i=r.slice(t),u=o.concat([n]).concat(i);return Mo(e,u)},setCells:Mo,mutateCell:function(e,t,n){e.cells()[t]=n},getCell:Lo,getCellElement:function(e,t){return Lo(e,t).element()},mapCells:function(e,t){var n=e.cells(),r=A.map(n,t);return U.rowcells(r,e.section())},cellLength:function(e){return e.cells().length}},Fo=function(e,t){if(0===e.length)return 0;var n=e[0];return A.findIndex(e,function(e){return!t(n.element(),e.element())}).fold(function(){return e.length},function(e){return e})},zo=function(e,t,n,r){var o,i,u,a,l=(o=e,i=t,o[i]).cells().slice(n),s=Fo(l,r),f=(u=e,a=n,A.map(u,function(e){return qo.getCell(e,a)})).slice(t),d=Fo(f,r);return{colspan:c.constant(s),rowspan:c.constant(d)}},jo=function(e,t){var n=A.map(e,function(e,t){return A.map(e.cells(),function(e,t){return!1})});return A.map(e,function(r,o){var i=A.bind(r.cells(),function(r,i){if(!1===n[o][i]){var u=zo(e,o,i,t);return function(e,t,r,o){for(var i=e;i<e+r;i++)for(var u=t;u<t+o;u++)n[i][u]=!0}(o,i,u.rowspan(),u.colspan()),[U.detailnew(r.element(),u.rowspan(),u.colspan(),r.isNew())]}return[]});return U.rowdetails(i,r.section())})},_o=function(e,t,n){for(var r=[],o=0;o<e.grid().rows();o++){for(var i=[],u=0;u<e.grid().columns();u++){var a=Ut.getAt(e,o,u).map(function(e){return U.elementnew(e.element(),n)}).getOrThunk(function(){return U.elementnew(t.gap(),!0)});i.push(a)}var c=U.rowcells(i,e.all()[o].section());r.push(c)}return r},Ho=function(e,t,n,r){n===r?ht.remove(e,t):ht.set(e,t,n)},Vo=function(e,t){var n=[],r=[],o=function(t,o){var i;t.length>0?function(t,o){var i=It.child(e,o).getOrThunk(function(){var t=X.fromTag(o,nt.owner(e).dom());return tn.append(e,t),t});on.empty(i);var u=A.map(t,function(e){e.isNew()&&n.push(e.element());var t=e.element();return on.empty(t),A.each(e.cells(),function(e){e.isNew()&&r.push(e.element()),Ho(e.element(),"colspan",e.colspan(),1),Ho(e.element(),"rowspan",e.rowspan(),1),tn.append(t,e.element())}),t});nn.append(i,u)}(t,o):(i=o,It.child(e,i).bind(on.remove))},i=[],u=[],a=[];return A.each(t,function(e){switch(e.section()){case"thead":i.push(e);break;case"tbody":u.push(e);break;case"tfoot":a.push(e)}}),o(i,"thead"),o(u,"tbody"),o(a,"tfoot"),{newRows:c.constant(n),newCells:c.constant(r)}},Uo=function(e){return A.map(e,function(e){var t=fn(e.element());return A.each(e.cells(),function(e){var n=dn(e.element());Ho(n,"colspan",e.colspan(),1),Ho(n,"rowspan",e.rowspan(),1),tn.append(t,n)}),t})},Go=function(e,t){for(var n=[],r=0;r<e;r++)n.push(t(r));return n},Xo=function(e,t){for(var n=[],r=e;r<t;r++)n.push(r);return n},Yo=function(e,t){if(t<0||t>=e.length-1)return g.none();var n=e[t].fold(function(){var n=A.reverse(e.slice(0,t));return Wo(n,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return g.some({value:e,delta:0})}),r=e[t+1].fold(function(){var n=e.slice(t+1);return Wo(n,function(e,t){return e.map(function(e){return{value:e,delta:t+1}})})},function(e){return g.some({value:e,delta:1})});return n.bind(function(e){return r.map(function(t){var n=t.delta+e.delta;return Math.abs(t.value-e.value)/n})})},Ko=function(e,t,n){var r=e();return A.find(r,t).orThunk(function(){return g.from(r[0]).orThunk(n)}).map(function(e){return e.element()})},$o=function(e){var t=e.grid(),n=Xo(0,t.columns()),r=Xo(0,t.rows());return A.map(n,function(t){return Ko(function(){return A.bind(r,function(n){return Ut.getAt(e,n,t).filter(function(e){return e.column()===t}).fold(c.constant([]),function(e){return[e]})})},function(e){return 1===e.colspan()},function(){return Ut.getAt(e,0,t)})})},Jo=function(e){var t=e.grid(),n=Xo(0,t.rows()),r=Xo(0,t.columns());return A.map(n,function(t){return Ko(function(){return A.bind(r,function(n){return Ut.getAt(e,t,n).filter(function(e){return e.row()===t}).fold(c.constant([]),function(e){return[e]})})},function(e){return 1===e.rowspan()},function(){return Ut.getAt(e,t,0)})})},Qo=function(e,t,n,r,o){var i=X.fromTag("div");return Qt.setAll(i,{position:"absolute",left:t-r/2+"px",top:n+"px",height:o+"px",width:r+"px"}),ht.setAll(i,{"data-column":e,role:"presentation"}),i},Zo=function(e,t,n,r,o){var i=X.fromTag("div");return Qt.setAll(i,{position:"absolute",left:t+"px",top:n-o/2+"px",height:o+"px",width:r+"px"}),ht.setAll(i,{"data-row":e,role:"presentation"}),i},ei=function(e){var t=e.replace(/\./g,"-");return{resolve:function(e){return t+"-"+e}}},ti={resolve:ei("ephox-snooker").resolve},ni=function(e,t){var n=ht.get(e,t);return n===undefined||""===n?[]:n.split(" ")},ri=ni,oi=function(e,t,n){var r=ni(e,t).concat([n]);ht.set(e,t,r.join(" "))},ii=function(e,t,n){var r=A.filter(ni(e,t),function(e){return e!==n});r.length>0?ht.set(e,t,r.join(" ")):ht.remove(e,t)},ui=function(e){return ri(e,"class")},ai=function(e,t){return oi(e,"class",t)},ci=function(e,t){return ii(e,"class",t)},li=ui,si=ai,fi=ci,di=function(e,t){A.contains(ui(e),t)?ci(e,t):ai(e,t)},mi=function(e){return e.dom().classList!==undefined},gi=function(e,t){return mi(e)&&e.dom().classList.contains(t)},pi={add:function(e,t){mi(e)?e.dom().classList.add(t):si(e,t)},remove:function(e,t){var n;mi(e)?e.dom().classList.remove(t):fi(e,t),0===(mi(n=e)?n.dom().classList:li(n)).length&&ht.remove(n,"class")},toggle:function(e,t){return mi(e)?e.dom().classList.toggle(t):di(e,t)},toggler:function(e,t){var n,r,o,i,u,a,c=mi(e),l=e.dom().classList;return n=function(){c?l.remove(t):fi(e,t)},r=function(){c?l.add(t):si(e,t)},o=gi(e,t),i=o||!1,{on:u=function(){r(),i=!0},off:a=function(){n(),i=!1},toggle:function(){(i?a:u)()},isOn:function(){return i}}},has:gi},hi=ti.resolve("resizer-bar"),vi=ti.resolve("resizer-rows"),bi=ti.resolve("resizer-cols"),wi=function(e){var t=St.descendants(e.parent(),"."+hi);A.each(t,on.remove)},yi=function(e,t,n){var r=e.origin();A.each(t,function(t,o){t.each(function(t){var o=n(r,t);pi.add(o,hi),tn.append(e.parent(),o)})})},xi=function(e,t,n,r,o,i){var u,a,c,l,s=Xr(t),f=n.length>0?o.positions(n,t):[];u=e,a=f,c=s,l=Ar(t),yi(u,a,function(e,t){var n=Zo(t.row(),c.left()-e.left(),t.y()-e.top(),l,7);return pi.add(n,vi),n});var d,m,g,p,h=r.length>0?i.positions(r,t):[];d=e,m=h,g=s,p=Rr(t),yi(d,m,function(e,t){var n=Qo(t.col(),t.x()-e.left(),g.top()-e.top(),7,p);return pi.add(n,bi),n})},Si=function(e,t){var n=St.descendants(e.parent(),"."+hi);A.each(n,t)},Ci={refresh:function(e,t,n,r){wi(e);var o=jt(t),i=Ut.generate(o),u=Jo(i),a=$o(i);xi(e,t,u,a,n,r)},hide:function(e){Si(e,function(e){Qt.set(e,"display","none")})},show:function(e){Si(e,function(e){Qt.set(e,"display","block")})},destroy:wi,isRowBar:function(e){return pi.has(e,vi)},isColBar:function(e){return pi.has(e,bi)}},Ri=function(e,t){return A.map(e,function(e){var n,r=(n=e.details(),Wo(n,function(e){return nt.parent(e.element()).map(function(e){var t=nt.parent(e).isNone();return U.elementnew(e,t)})}).getOrThunk(function(){return U.elementnew(t.row(),!0)}));return U.rowdatanew(r.element(),e.details(),e.section(),r.isNew())})},Ti=function(e,t){var n=jo(e,Ye.eq);return Ri(n,t)},Di=function(e,t){var n=A.flatten(A.map(e.all(),function(e){return e.cells()}));return A.find(n,function(e){return Ye.eq(t,e.element())})},Ai=function(e,t,n,r,o){return function(i,u,a,l,s){var f=jt(u),d=Ut.generate(f);return t(d,a).map(function(t){var n=_o(d,l,!1),r=e(n,t,Ye.eq,o(l)),i=Ti(r.grid(),l);return{grid:c.constant(i),cursor:r.cursor}}).fold(function(){return g.none()},function(e){var t=Vo(u,e.grid());return n(u,e.grid(),s),r(u),Ci.refresh(i,u,oo.height,s),g.some({cursor:e.cursor,newRows:t.newRows,newCells:t.newCells})})}},ki=Ti,Ni=function(e,t){return zt.cell(t.element()).bind(function(t){return Di(e,t)})},Oi=function(e,t){var n=A.map(t.selection(),function(t){return zt.cell(t).bind(function(t){return Di(e,t)})}),r=Io(n);return r.length>0?g.some(r):g.none()},Ei=function(e,t){return zt.cell(t.element()).bind(function(n){return Di(e,n).map(function(e){return Po.merge(e,{generators:t.generators,clipboard:t.clipboard})})})},Bi=function(e,t){var n=A.map(t.selection(),function(t){return zt.cell(t).bind(function(t){return Di(e,t)})}),r=Io(n);return r.length>0?g.some(Po.merge({cells:r},{generators:t.generators,clipboard:t.clipboard})):g.none()},Pi=function(e,t){return t.mergable()},Ii=function(e,t){return t.unmergable()},Wi=function(e){return{is:function(t){return e===t},isValue:c.always,isError:c.never,getOr:c.constant(e),getOrThunk:c.constant(e),getOrDie:c.constant(e),or:function(t){return Wi(e)},orThunk:function(t){return Wi(e)},fold:function(t,n){return n(e)},map:function(t){return Wi(t(e))},each:function(t){t(e)},bind:function(t){return t(e)},exists:function(t){return t(e)},forall:function(t){return t(e)},toOption:function(){return g.some(e)}}},Mi=function(e){return{is:c.never,isValue:c.never,isError:c.always,getOr:c.identity,getOrThunk:function(e){return e()},getOrDie:function(){return c.die(e)()},or:function(e){return e},orThunk:function(e){return e()},fold:function(t,n){return t(e)},map:function(t){return Mi(e)},each:c.noop,bind:function(t){return Mi(e)},exists:c.never,forall:c.always,toOption:g.none}},Li={value:Wi,error:Mi},qi=function(e,t){return A.map(e,function(){return U.elementnew(t.cell(),!0)})},Fi=function(e,t,n){return e.concat(Go(t,function(t){return qo.setCells(e[e.length-1],qi(e[e.length-1].cells(),n))}))},zi=function(e,t,n){return A.map(e,function(e){return qo.setCells(e,e.cells().concat(qi(Xo(0,t),n)))})},ji=function(e,t,n){if(e.row()>=t.length||e.column()>qo.cellLength(t[0]))return Li.error("invalid start address out of table bounds, row: "+e.row()+", column: "+e.column());var r=t.slice(e.row()),o=r[0].cells().slice(e.column()),i=qo.cellLength(n[0]),u=n.length;return Li.value({rowDelta:c.constant(r.length-u),colDelta:c.constant(o.length-i)})},_i=function(e,t){var n=qo.cellLength(e[0]),r=qo.cellLength(t[0]);return{rowDelta:c.constant(0),colDelta:c.constant(n-r)}},Hi=function(e,t,n){var r=t.colDelta()<0?zi:c.identity;return(t.rowDelta()<0?Fi:c.identity)(r(e,Math.abs(t.colDelta()),n),Math.abs(t.rowDelta()),n)},Vi=function(e,t,n,r){if(0===e.length)return e;for(var o=t.startRow();o<=t.finishRow();o++)for(var i=t.startCol();i<=t.finishCol();i++)qo.mutateCell(e[o],i,U.elementnew(r(),!1));return e},Ui=function(e,t,n,r){for(var o=!0,i=0;i<e.length;i++)for(var u=0;u<qo.cellLength(e[0]);u++){var a=n(qo.getCellElement(e[i],u),t);!0===a&&!1===o?qo.mutateCell(e[i],u,U.elementnew(r(),!0)):!0===a&&(o=!1)}return e},Gi=function(e,t,n,r){if(t>0&&t<e.length){var o=e[t-1].cells(),i=(u=o,a=n,A.foldl(u,function(e,t){return A.exists(e,function(e){return a(e.element(),t.element())})?e:e.concat([t])},[]));A.each(i,function(o){for(var i=g.none(),u=t;u<e.length;u++)for(var a=0;a<qo.cellLength(e[0]);a++){var c=e[u].cells()[a];n(c.element(),o.element())&&(i.isNone()&&(i=g.some(r())),i.each(function(t){qo.mutateCell(e[u],a,U.elementnew(t,!0))}))}})}var u,a;return e},Xi=function(e,t,n,r,o){return ji(e,t,n).map(function(i){var u=Hi(t,i,r);return function(e,t,n,r,o){for(var i,u,a,l,s,f,d,m=e.row(),g=e.column(),p=m+n.length,h=g+qo.cellLength(n[0]),v=m;v<p;v++)for(var b=g;b<h;b++){i=t,u=v,a=b,l=o,s=void 0,f=void 0,s=qo.getCell(i[u],a),f=c.curry(l,s.element()),d=i[u],i.length>1&&qo.cellLength(d)>1&&(a>0&&f(qo.getCellElement(d,a-1))||a<d.length-1&&f(qo.getCellElement(d,a+1))||u>0&&f(qo.getCellElement(i[u-1],a))||u<i.length-1&&f(qo.getCellElement(i[u+1],a)))&&Ui(t,qo.getCellElement(t[v],b),o,r.cell);var w=qo.getCellElement(n[v-m],b-g),y=r.replace(w);qo.mutateCell(t[v],b,U.elementnew(y,!0))}return t}(e,u,n,r,o)})},Yi=function(e,t,n,r,o){Gi(t,e,o,r.cell);var i=_i(n,t),u=Hi(n,i,r),a=_i(t,u),c=Hi(t,a,r);return c.slice(0,e).concat(u).concat(c.slice(e,c.length))},Ki=function(e,t,n,r,o){var i=e.slice(0,t),u=e.slice(t),a=qo.mapCells(e[n],function(n,i){return t>0&&t<e.length&&r(qo.getCellElement(e[t-1],i),qo.getCellElement(e[t],i))?qo.getCell(e[t],i):U.elementnew(o(n.element(),r),!0)});return i.concat([a]).concat(u)},$i=function(e,t,n,r,o){return A.map(e,function(e){var i=t>0&&t<qo.cellLength(e)&&r(qo.getCellElement(e,t-1),qo.getCellElement(e,t))?qo.getCell(e,t):U.elementnew(o(qo.getCellElement(e,n),r),!0);return qo.addCell(e,t,i)})},Ji=function(e,t,n,r,o){var i=n+1;return A.map(e,function(e,u){var a=u===t?U.elementnew(o(qo.getCellElement(e,n),r),!0):qo.getCell(e,n);return qo.addCell(e,i,a)})},Qi=function(e,t,n,r,o){var i=t+1,u=e.slice(0,i),a=e.slice(i),c=qo.mapCells(e[t],function(e,t){return t===n?U.elementnew(o(e.element(),r),!0):e});return u.concat([c]).concat(a)},Zi=function(e,t,n){return e.slice(0,t).concat(e.slice(n+1))},eu=function(e,t,n){var r=A.map(e,function(e){var r=e.cells().slice(0,t).concat(e.cells().slice(n+1));return U.rowcells(r,e.section())});return A.filter(r,function(e){return e.cells().length>0})},tu=function(e,t,n,r){return A.map(e,function(e){return qo.mapCells(e,function(e){return o=e,A.exists(t,function(e){return n(o.element(),e.element())})?U.elementnew(r(e.element(),n),!0):e;var o})})},nu=function(e,t,n,r){return qo.getCellElement(e[t],n)!==undefined&&t>0&&r(qo.getCellElement(e[t-1],n),qo.getCellElement(e[t],n))},ru=function(e,t,n){return t>0&&n(qo.getCellElement(e,t-1),qo.getCellElement(e,t))},ou=function(e,t,n,r){var o=A.bind(e,function(r,o){return nu(e,o,t,n)||ru(r,t,n)?[]:[qo.getCell(r,t)]});return tu(e,o,n,r)},iu=function(e,t,n,r){var o=e[t],i=A.bind(o.cells(),function(r,i){return nu(e,t,i,n)||ru(o,i,n)?[]:[r]});return tu(e,i,n,r)},uu=function(e){return{fold:e}},au=function(){return uu(function(e,t,n,r,o){return e()})},cu=function(e){return uu(function(t,n,r,o,i){return n(e)})},lu=function(e,t){return uu(function(n,r,o,i,u){return o(e,t)})},su=function(e,t,n){return uu(function(r,o,i,u,a){return u(e,t,n)})},fu=function(e,t){return uu(function(n,r,o,i,u){return u(e,t)})},du=function(e,t,n,r){var o,i,u=e.slice(0),a=(i=t,0===(o=e).length?au():1===o.length?cu(0):0===i?lu(0,1):i===o.length-1?fu(i-1,i):i>0&&i<o.length-1?su(i-1,i,i+1):au()),l=function(e){return A.map(e,c.constant(0))},s=c.constant(l(u)),f=function(e,t){if(n>=0){var o=Math.max(r.minCellWidth(),u[t]-n);return l(u.slice(0,e)).concat([n,o-u[t]]).concat(l(u.slice(t+1)))}var i=Math.max(r.minCellWidth(),u[e]+n),a=u[e]-i;return l(u.slice(0,e)).concat([i-u[e],a]).concat(l(u.slice(t+1)))},d=f;return a.fold(s,function(e){return r.singleColumnWidth(u[e],n)},d,function(e,t,n){return f(t,n)},function(e,t){if(n>=0)return l(u.slice(0,t)).concat([n]);var o=Math.max(r.minCellWidth(),u[t]+n);return l(u.slice(0,t)).concat([o-u[t]])})},mu=function(e,t){return ht.has(e,t)&&parseInt(ht.get(e,t),10)>1},gu={hasColspan:function(e){return mu(e,"colspan")},hasRowspan:function(e){return mu(e,"rowspan")},minWidth:c.constant(10),minHeight:c.constant(10),getInt:function(e,t){return parseInt(Qt.get(e,t),10)}},pu=function(e,t,n){return Qt.getRaw(e,t).fold(function(){return n(e)+"px"},function(e){return e})},hu=function(e){return pu(e,"width",zr.getPixelWidth)},vu=function(e){return pu(e,"height",zr.getHeight)},bu=function(e,t,n,r,o){var i=$o(e),u=A.map(i,function(e){return e.map(t.edge)});return A.map(i,function(e,t){return e.filter(c.not(gu.hasColspan)).fold(function(){var e=Yo(u,t);return r(e)},function(e){return n(e,o)})})},wu=function(e){return e.map(function(e){return e+"px"}).getOr("")},yu=function(e,t,n,r){var o=Jo(e),i=A.map(o,function(e){return e.map(t.edge)});return A.map(o,function(e,t){return e.filter(c.not(gu.hasRowspan)).fold(function(){var e=Yo(i,t);return r(e)},function(e){return n(e)})})},xu={getRawWidths:function(e,t){return bu(e,t,hu,wu)},getPixelWidths:function(e,t,n){return bu(e,t,zr.getPixelWidth,function(e){return e.getOrThunk(n.minCellWidth)},n)},getPercentageWidths:function(e,t,n){return bu(e,t,zr.getPercentageWidth,function(e){return e.fold(function(){return n.minCellWidth()},function(e){return e/n.pixelWidth()*100})},n)},getPixelHeights:function(e,t){return yu(e,t,zr.getHeight,function(e){return e.getOrThunk(gu.minHeight)})},getRawHeights:function(e,t){return yu(e,t,vu,wu)}},Su=function(e,t,n){for(var r=0,o=e;o<t;o++)r+=n[o]!==undefined?n[o]:0;return r},Cu=function(e,t){var n=Ut.justCells(e);return A.map(n,function(e){var n=Su(e.column(),e.column()+e.colspan(),t);return{element:e.element,width:c.constant(n),colspan:e.colspan}})},Ru=function(e,t){var n=Ut.justCells(e);return A.map(n,function(e){var n=Su(e.row(),e.row()+e.rowspan(),t);return{element:e.element,height:c.constant(n),rowspan:e.rowspan}})},Tu=function(e,t){return A.map(e.all(),function(e,n){return{element:e.element,height:c.constant(t[n])}})},Du=function(e){var t=parseInt(e,10),n=c.identity;return{width:c.constant(t),pixelWidth:c.constant(t),getWidths:xu.getPixelWidths,getCellDelta:n,singleColumnWidth:function(e,t){return[Math.max(gu.minWidth(),e+t)-e]},minCellWidth:gu.minWidth,setElementWidth:zr.setPixelWidth,setTableWidth:function(e,t,n){var r=A.foldr(t,function(e,t){return e+t},0);zr.setPixelWidth(e,r)}}},Au=function(e,t){if(zr.percentageBasedSizeRegex().test(t)){var n=zr.percentageBasedSizeRegex().exec(t);return o=n[1],i=e,u=parseFloat(o),a=Dr(i),{width:c.constant(u),pixelWidth:c.constant(a),getWidths:xu.getPercentageWidths,getCellDelta:function(e){return e/a*100},singleColumnWidth:function(e,t){return[100-e]},minCellWidth:function(){return gu.minWidth()/a*100},setElementWidth:zr.setPercentageWidth,setTableWidth:function(e,t,n){var r=u+n;zr.setPercentageWidth(e,r)}}}if(zr.pixelBasedSizeRegex().test(t)){var r=zr.pixelBasedSizeRegex().exec(t);return Du(r[1])}var o,i,u,a,l=Dr(e);return Du(l)},ku=function(e){return zr.getRawWidth(e).fold(function(){var t=Dr(e);return Du(t)},function(t){return Au(e,t)})},Nu=function(e){return Ut.generate(e)},Ou=function(e){var t=jt(e);return Nu(t)},Eu={adjustWidth:function(e,t,n,r){var o=ku(e),i=o.getCellDelta(t),u=Ou(e),a=o.getWidths(u,r,o),c=du(a,n,i,o),l=A.map(c,function(e,t){return e+a[t]}),s=Cu(u,l);A.each(s,function(e){o.setElementWidth(e.element(),e.width())}),n===u.grid().columns()-1&&o.setTableWidth(e,l,i)},adjustHeight:function(e,t,n,r){var o=Ou(e),i=xu.getPixelHeights(o,r),u=A.map(i,function(e,r){return n===r?Math.max(t+e,gu.minHeight()):e}),a=Ru(o,u),c=Tu(o,u);A.each(c,function(e){zr.setHeight(e.element(),e.height())}),A.each(a,function(e){zr.setHeight(e.element(),e.height())});var l,s=(l=u,A.foldr(l,function(e,t){return e+t},0));zr.setHeight(e,s)},adjustWidthTo:function(e,t,n){var r=ku(e),o=Nu(t),i=r.getWidths(o,n,r),u=Cu(o,i);A.each(u,function(e){r.setElementWidth(e.element(),e.width())});var a=A.foldr(i,function(e,t){return t+e},0);u.length>0&&r.setElementWidth(e,a)}},Bu=function(e){0===zt.cells(e).length&&on.remove(e)},Pu=q.immutable("grid","cursor"),Iu=function(e,t,n){return Wu(e,t,n).orThunk(function(){return Wu(e,0,0)})},Wu=function(e,t,n){return g.from(e[t]).bind(function(e){return g.from(e.cells()[n]).bind(function(e){return g.from(e.element())})})},Mu=function(e,t,n){return Pu(e,Wu(e,t,n))},Lu=function(e){return A.foldl(e,function(e,t){return A.exists(e,function(e){return e.row()===t.row()})?e:e.concat([t])},[]).sort(function(e,t){return e.row()-t.row()})},qu=function(e){return A.foldl(e,function(e,t){return A.exists(e,function(e){return e.column()===t.column()})?e:e.concat([t])},[]).sort(function(e,t){return e.column()-t.column()})},Fu=function(e,t,n){var r=_t(e,n),o=Ut.generate(r);return _o(o,t,!0)},zu=Eu.adjustWidthTo,ju={insertRowBefore:Ai(function(e,t,n,r){var o=t.row(),i=t.row(),u=Ki(e,i,o,n,r.getOrInit);return Mu(u,i,t.column())},Ni,c.noop,c.noop,ho),insertRowsBefore:Ai(function(e,t,n,r){var o=t[0].row(),i=t[0].row(),u=Lu(t),a=A.foldl(u,function(e,t){return Ki(e,i,o,n,r.getOrInit)},e);return Mu(a,i,t[0].column())},Oi,c.noop,c.noop,ho),insertRowAfter:Ai(function(e,t,n,r){var o=t.row(),i=t.row()+t.rowspan(),u=Ki(e,i,o,n,r.getOrInit);return Mu(u,i,t.column())},Ni,c.noop,c.noop,ho),insertRowsAfter:Ai(function(e,t,n,r){var o=Lu(t),i=o[o.length-1].row(),u=o[o.length-1].row()+o[o.length-1].rowspan(),a=A.foldl(o,function(e,t){return Ki(e,u,i,n,r.getOrInit)},e);return Mu(a,u,t[0].column())},Oi,c.noop,c.noop,ho),insertColumnBefore:Ai(function(e,t,n,r){var o=t.column(),i=t.column(),u=$i(e,i,o,n,r.getOrInit);return Mu(u,t.row(),i)},Ni,zu,c.noop,ho),insertColumnsBefore:Ai(function(e,t,n,r){var o=qu(t),i=o[0].column(),u=o[0].column(),a=A.foldl(o,function(e,t){return $i(e,u,i,n,r.getOrInit)},e);return Mu(a,t[0].row(),u)},Oi,zu,c.noop,ho),insertColumnAfter:Ai(function(e,t,n,r){var o=t.column(),i=t.column()+t.colspan(),u=$i(e,i,o,n,r.getOrInit);return Mu(u,t.row(),i)},Ni,zu,c.noop,ho),insertColumnsAfter:Ai(function(e,t,n,r){var o=t[t.length-1].column(),i=t[t.length-1].column()+t[t.length-1].colspan(),u=qu(t),a=A.foldl(u,function(e,t){return $i(e,i,o,n,r.getOrInit)},e);return Mu(a,t[0].row(),i)},Oi,zu,c.noop,ho),splitCellIntoColumns:Ai(function(e,t,n,r){var o=Ji(e,t.row(),t.column(),n,r.getOrInit);return Mu(o,t.row(),t.column())},Ni,zu,c.noop,ho),splitCellIntoRows:Ai(function(e,t,n,r){var o=Qi(e,t.row(),t.column(),n,r.getOrInit);return Mu(o,t.row(),t.column())},Ni,c.noop,c.noop,ho),eraseColumns:Ai(function(e,t,n,r){var o=qu(t),i=eu(e,o[0].column(),o[o.length-1].column()),u=Iu(i,t[0].row(),t[0].column());return Pu(i,u)},Oi,zu,Bu,ho),eraseRows:Ai(function(e,t,n,r){var o=Lu(t),i=Zi(e,o[0].row(),o[o.length-1].row()),u=Iu(i,t[0].row(),t[0].column());return Pu(i,u)},Oi,c.noop,Bu,ho),makeColumnHeader:Ai(function(e,t,n,r){var o=ou(e,t.column(),n,r.replaceOrInit);return Mu(o,t.row(),t.column())},Ni,c.noop,c.noop,vo("row","th")),unmakeColumnHeader:Ai(function(e,t,n,r){var o=ou(e,t.column(),n,r.replaceOrInit);return Mu(o,t.row(),t.column())},Ni,c.noop,c.noop,vo(null,"td")),makeRowHeader:Ai(function(e,t,n,r){var o=iu(e,t.row(),n,r.replaceOrInit);return Mu(o,t.row(),t.column())},Ni,c.noop,c.noop,vo("col","th")),unmakeRowHeader:Ai(function(e,t,n,r){var o=iu(e,t.row(),n,r.replaceOrInit);return Mu(o,t.row(),t.column())},Ni,c.noop,c.noop,vo(null,"td")),mergeCells:Ai(function(e,t,n,r){var o=t.cells();No(o);var i=Vi(e,t.bounds(),n,c.constant(o[0]));return Pu(i,g.from(o[0]))},Pi,c.noop,c.noop,bo),unmergeCells:Ai(function(e,t,n,r){var o=A.foldr(t,function(e,t){return Ui(e,t,n,r.combine(t))},e);return Pu(o,g.from(t[0]))},Ii,zu,c.noop,bo),pasteCells:Ai(function(e,t,n,r){var o,i,u,a,c=(o=t.clipboard(),i=t.generators(),u=jt(o),a=Ut.generate(u),_o(a,i,!0)),l=U.address(t.row(),t.column());return Xi(l,e,c,t.generators(),n).fold(function(){return Pu(e,g.some(t.element()))},function(e){var n=Iu(e,t.row(),t.column());return Pu(e,n)})},Ei,zu,c.noop,ho),pasteRowsBefore:Ai(function(e,t,n,r){var o=e[t.cells[0].row()],i=t.cells[0].row(),u=Fu(t.clipboard(),t.generators(),o),a=Yi(i,e,u,t.generators(),n),c=Iu(a,t.cells[0].row(),t.cells[0].column());return Pu(a,c)},Bi,c.noop,c.noop,ho),pasteRowsAfter:Ai(function(e,t,n,r){var o=e[t.cells[0].row()],i=t.cells[t.cells.length-1].row()+t.cells[t.cells.length-1].rowspan(),u=Fu(t.clipboard(),t.generators(),o),a=Yi(i,e,u,t.generators(),n),c=Iu(a,t.cells[0].row(),t.cells[0].column());return Pu(a,c)},Bi,c.noop,c.noop,ho)},_u=function(e){return X.fromDom(e.getBody())},Hu={getBody:_u,getIsRoot:function(e){return function(t){return Ye.eq(t,_u(e))}},addSizeSuffix:function(e){return/^[0-9]+$/.test(e)&&(e+="px"),e},removePxSuffix:function(e){return e?e.replace(/px$/,""):""}},Vu=function(e){return"rtl"===Qt.get(e,"direction")?"rtl":"ltr"},Uu={onDirection:function(e,t){return function(n){return"rtl"===Vu(n)?t:e}},getDirection:Vu},Gu={isRtl:c.constant(!1)},Xu={isRtl:c.constant(!0)},Yu={directionAt:function(e){return"rtl"===Uu.getDirection(e)?Xu:Gu}},Ku=["tableprops","tabledelete","|","tableinsertrowbefore","tableinsertrowafter","tabledeleterow","|","tableinsertcolbefore","tableinsertcolafter","tabledeletecol"],$u={"border-collapse":"collapse",width:"100%"},Ju={border:"1"},Qu=function(e){return e.getParam("table_resize_bars",!0,"boolean")},Zu=function(e){return e.getParam("table_tab_navigation",!0,"boolean")},ea=function(e){return e.getParam("forced_root_block","p","string")},ta=function(e){return e.getParam("table_cell_advtab",!0,"boolean")},na=function(e){return e.getParam("table_row_advtab",!0,"boolean")},ra=function(e){return e.getParam("table_advtab",!0,"boolean")},oa=function(e){return e.getParam("table_style_by_css",!1,"boolean")},ia=function(e){return e.getParam("forced_block_attrs",{},"object")},ua=function(e){return e.getParam("table_cell_class_list",[],"array")},aa=function(e){return e.getParam("table_row_class_list",[],"array")},ca=function(e){return e.getParam("table_class_list",[],"array")},la=function(e){return!1===e.getParam("table_responsive_width")},sa=function(e){var t=e.getParam("table_clone_elements");return W.isString(t)?g.some(t.split(/[ ,]/)):Array.isArray(t)?g.some(t):g.none()},fa=function(e){var t=e.getParam("object_resizing",!0);return"table"===t||t},da=function(e,t){return e.fire("newrow",{node:t})},ma=function(e,t){return e.fire("newcell",{node:t})},ga=function(e,t,n){var r=jt(e),o=Ut.generate(r);return Oi(o,t).map(function(e){var t=_o(o,n,!1).slice(e[0].row(),e[e.length-1].row()+e[e.length-1].rowspan()),r=ki(t,n);return Uo(r)})},pa=tinymce.util.Tools.resolve("tinymce.util.Tools"),ha={applyAlign:function(e,t,n){n&&e.formatter.apply("align"+n,{},t)},applyVAlign:function(e,t,n){n&&e.formatter.apply("valign"+n,{},t)},unApplyAlign:function(e,t){pa.each("left center right".split(" "),function(n){e.formatter.remove("align"+n,{},t)})},unApplyVAlign:function(e,t){pa.each("top middle bottom".split(" "),function(n){e.formatter.remove("valign"+n,{},t)})},getTDTHOverallStyle:function(e,t,n){var r;return r=function(t,r){for(var o=0;o<r.length;o++){var i=e.getStyle(r[o],n);if(void 0===t&&(t=i),t!==i)return""}return t}(r,e.select("td,th",t))}},va=function(e,t){var n=e.dom,r=t.control.rootControl,o=r.toJSON(),i=n.parseStyle(o.style);"style"===t.control.name()?(r.find("#borderStyle").value(i["border-style"]||"")[0].fire("select"),r.find("#borderColor").value(i["border-color"]||"")[0].fire("change"),r.find("#backgroundColor").value(i["background-color"]||"")[0].fire("change"),r.find("#width").value(i.width||"").fire("change"),r.find("#height").value(i.height||"").fire("change")):(i["border-style"]=o.borderStyle,i["border-color"]=o.borderColor,i["background-color"]=o.backgroundColor,i.width=o.width?Hu.addSizeSuffix(o.width):"",i.height=o.height?Hu.addSizeSuffix(o.height):""),r.find("#style").value(n.serializeStyle(n.parseStyle(n.serializeStyle(i))))},ba={createStyleForm:function(e){var t=function(){var t=e.getParam("color_picker_callback");if(t)return function(n){return t.call(e,function(e){n.control.value(e).fire("change")},n.control.value())}};return{title:"Advanced",type:"form",defaults:{onchange:c.curry(va,e)},items:[{label:"Style",name:"style",type:"textbox"},{type:"form",padding:0,formItemDefaults:{layout:"grid",alignH:["start","right"]},defaults:{size:7},items:[{label:"Border style",type:"listbox",name:"borderStyle",width:90,onselect:c.curry(va,e),values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]},{label:"Border color",type:"colorbox",name:"borderColor",onaction:t()},{label:"Background color",type:"colorbox",name:"backgroundColor",onaction:t()}]}]}},buildListItems:function(e,t,n){var r=function(e,n){return n=n||[],pa.each(e,function(e){var o={text:e.text||e.title};e.menu?o.menu=r(e.menu):(o.value=e.value,t&&t(o)),n.push(o)}),n};return r(e,n||[])},updateStyleField:va,extractAdvancedStyles:function(e,t){var n=e.parseStyle(e.getAttrib(t,"style")),r={};return n["border-style"]&&(r.borderStyle=n["border-style"]),n["border-color"]&&(r.borderColor=n["border-color"]),n["background-color"]&&(r.backgroundColor=n["background-color"]),r.style=e.serializeStyle(n),r}},wa=function(e,t,n){var r,o=e.dom;function i(e,t,n){n&&o.setAttrib(e,t,n)}function u(e,t,n){n&&o.setStyle(e,t,n)}ba.updateStyleField(e,n),r=n.control.rootControl.toJSON(),e.undoManager.transact(function(){pa.each(t,function(n){var a,c;i(n,"scope",r.scope),1===t.length?i(n,"style",r.style):(a=n,c=r.style,a.style.cssText+=";"+c),i(n,"class",r["class"]),u(n,"width",Hu.addSizeSuffix(r.width)),u(n,"height",Hu.addSizeSuffix(r.height)),r.type&&n.nodeName.toLowerCase()!==r.type&&(n=o.rename(n,r.type)),1===t.length&&(ha.unApplyAlign(e,n),ha.unApplyVAlign(e,n)),r.align&&ha.applyAlign(e,n,r.align),r.valign&&ha.applyVAlign(e,n,r.valign)}),e.focus()})},ya=function(e){var t,n,r,o=[];if(o=e.dom.select("td[data-mce-selected],th[data-mce-selected]"),t=e.dom.getParent(e.selection.getStart(),"td,th"),!o.length&&t&&o.push(t),t=t||o[0]){var i,u,a,l;o.length>1?n={width:"",height:"",scope:"","class":"",align:"",style:"",type:t.nodeName.toLowerCase()}:(u=t,a=(i=e).dom,(l={width:a.getStyle(u,"width")||a.getAttrib(u,"width"),height:a.getStyle(u,"height")||a.getAttrib(u,"height"),scope:a.getAttrib(u,"scope"),"class":a.getAttrib(u,"class")}).type=u.nodeName.toLowerCase(),pa.each("left center right".split(" "),function(e){i.formatter.matchNode(u,"align"+e)&&(l.align=e)}),pa.each("top middle bottom".split(" "),function(e){i.formatter.matchNode(u,"valign"+e)&&(l.valign=e)}),ta(i)&&pa.extend(l,ba.extractAdvancedStyles(a,u)),n=l),ua(e).length>0&&(r={name:"class",type:"listbox",label:"Class",values:ba.buildListItems(ua(e),function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({block:"td",classes:[t.value]})})})});var s={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",layout:"grid",columns:2,labelGapCalc:!1,padding:0,defaults:{type:"textbox",maxWidth:50},items:[{label:"Width",name:"width",onchange:c.curry(ba.updateStyleField,e)},{label:"Height",name:"height",onchange:c.curry(ba.updateStyleField,e)},{label:"Cell type",name:"type",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"Cell",value:"td"},{text:"Header cell",value:"th"}]},{label:"Scope",name:"scope",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Row",value:"row"},{text:"Column",value:"col"},{text:"Row group",value:"rowgroup"},{text:"Column group",value:"colgroup"}]},{label:"H Align",name:"align",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"V Align",name:"valign",type:"listbox",text:"None",minWidth:90,maxWidth:null,values:[{text:"None",value:""},{text:"Top",value:"top"},{text:"Middle",value:"middle"},{text:"Bottom",value:"bottom"}]}]},r]};ta(e)?e.windowManager.open({title:"Cell properties",bodyType:"tabpanel",data:n,body:[{title:"General",type:"form",items:s},ba.createStyleForm(e)],onsubmit:c.curry(wa,e,o)}):e.windowManager.open({title:"Cell properties",data:n,body:s,onsubmit:c.curry(wa,e,o)})}},xa=function(e,t,n){var r=e.getParent(t,"table"),o=t.parentNode,i=e.select(n,r)[0];i||(i=e.create(n),r.firstChild?"CAPTION"===r.firstChild.nodeName?e.insertAfter(i,r.firstChild):r.insertBefore(i,r.firstChild):r.appendChild(i)),i.appendChild(t),o.hasChildNodes()||e.remove(o)};function Sa(e,t,n){var r,o=e.dom;function i(e,t,n){n&&o.setAttrib(e,t,n)}ba.updateStyleField(e,n),r=n.control.rootControl.toJSON(),e.undoManager.transact(function(){pa.each(t,function(n){var u,a,c;i(n,"scope",r.scope),i(n,"style",r.style),i(n,"class",r["class"]),u=n,a="height",(c=Hu.addSizeSuffix(r.height))&&o.setStyle(u,a,c),r.type!==n.parentNode.nodeName.toLowerCase()&&xa(e.dom,n,r.type),1===t.length&&ha.unApplyAlign(e,n),r.align&&ha.applyAlign(e,n,r.align)}),e.focus()})}var Ca=function(e){var t,n,r,o,i,u,a,l,s,f,d=e.dom,m=[];t=d.getParent(e.selection.getStart(),"table"),n=d.getParent(e.selection.getStart(),"td,th"),pa.each(t.rows,function(e){pa.each(e.cells,function(t){if(d.getAttrib(t,"data-mce-selected")||t===n)return m.push(e),!1})}),(r=m[0])&&(m.length>1?i={height:"",scope:"","class":"",align:"",type:r.parentNode.nodeName.toLowerCase()}:(l=r,s=(a=e).dom,(f={height:s.getStyle(l,"height")||s.getAttrib(l,"height"),scope:s.getAttrib(l,"scope"),"class":s.getAttrib(l,"class")}).type=l.parentNode.nodeName.toLowerCase(),pa.each("left center right".split(" "),function(e){a.formatter.matchNode(l,"align"+e)&&(f.align=e)}),na(a)&&pa.extend(f,ba.extractAdvancedStyles(s,l)),i=f),aa(e).length>0&&(o={name:"class",type:"listbox",label:"Class",values:ba.buildListItems(aa(e),function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({block:"tr",classes:[t.value]})})})}),u={type:"form",columns:2,padding:0,defaults:{type:"textbox"},items:[{type:"listbox",name:"type",label:"Row type",text:"Header",maxWidth:null,values:[{text:"Header",value:"thead"},{text:"Body",value:"tbody"},{text:"Footer",value:"tfoot"}]},{type:"listbox",name:"align",label:"Alignment",text:"None",maxWidth:null,values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},{label:"Height",name:"height"},o]},na(e)?e.windowManager.open({title:"Row properties",data:i,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},ba.createStyleForm(e)],onsubmit:c.curry(Sa,e,m)}):e.windowManager.open({title:"Row properties",data:i,body:u,onsubmit:c.curry(Sa,e,m)}))},Ra=tinymce.util.Tools.resolve("tinymce.Env"),Ta={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},percentages:!0},Da=function(e,t,n,r,o){void 0===o&&(o=Ta);var i=X.fromTag("table");Qt.setAll(i,o.styles),ht.setAll(i,o.attributes);var u=X.fromTag("tbody");tn.append(i,u);for(var a=[],c=0;c<e;c++){for(var l=X.fromTag("tr"),s=0;s<t;s++){var f=c<n||s<r?X.fromTag("th"):X.fromTag("td");s<r&&ht.set(f,"scope","row"),c<n&&ht.set(f,"scope","col"),tn.append(f,X.fromTag("br")),o.percentages&&Qt.set(f,"width",100/t+"%"),tn.append(l,f)}a.push(l)}return nn.append(u,a),i},Aa=function(e){return e.dom().innerHTML},ka=function(e){var t=X.fromTag("div"),n=X.fromDom(e.dom().cloneNode(!0));return tn.append(t,n),Aa(t)},Na=function(e,t){e.selection.select(t.dom(),!0),e.selection.collapse(!0)},Oa=function(e,t,n){var r,o,i=e.getParam("table_default_styles",$u,"object"),u={styles:i,attributes:(o=e,o.getParam("table_default_attributes",Ju,"object")),percentages:(r=i.width,W.isString(r)&&-1!==r.indexOf("%")&&!la(e))},a=Da(n,t,0,0,u);ht.set(a,"data-mce-id","__mce");var l=ka(a);return e.insertContent(l),It.descendant(Hu.getBody(e),'table[data-mce-id="__mce"]').map(function(t){var n,r,o,i;return la(e)&&Qt.set(t,"width",Qt.get(t,"width")),ht.remove(t,"data-mce-id"),n=e,r=t,A.each(St.descendants(r,"tr"),function(e){da(n,e.dom()),A.each(St.descendants(e,"th,td"),function(e){ma(n,e.dom())})}),o=e,i=t,It.descendant(i,"td,th").each(c.curry(Na,o)),t.dom()}).getOr(null)};function Ea(e,t,n,r){if("TD"===t.tagName||"TH"===t.tagName)e.setStyle(t,n,r);else if(t.children)for(var o=0;o<t.children.length;o++)Ea(e,t.children[o],n,r)}var Ba=function(e,t,n){var r,o,i=e.dom;ba.updateStyleField(e,n),!1===(o=n.control.rootControl.toJSON())["class"]&&delete o["class"],e.undoManager.transact(function(){t||(t=Oa(e,o.cols||1,o.rows||1)),function(e,t,n){var r=e.dom,o={},i={};if(o["class"]=n["class"],i.height=Hu.addSizeSuffix(n.height),r.getAttrib(t,"width")&&!oa(e)?o.width=Hu.removePxSuffix(n.width):i.width=Hu.addSizeSuffix(n.width),oa(e)?(i["border-width"]=Hu.addSizeSuffix(n.border),i["border-spacing"]=Hu.addSizeSuffix(n.cellspacing),pa.extend(o,{"data-mce-border-color":n.borderColor,"data-mce-cell-padding":n.cellpadding,"data-mce-border":n.border})):pa.extend(o,{border:n.border,cellpadding:n.cellpadding,cellspacing:n.cellspacing}),oa(e)&&t.children)for(var u=0;u<t.children.length;u++)Ea(r,t.children[u],{"border-width":Hu.addSizeSuffix(n.border),"border-color":n.borderColor,padding:Hu.addSizeSuffix(n.cellpadding)});n.style?pa.extend(i,r.parseStyle(n.style)):i=pa.extend({},r.parseStyle(r.getAttrib(t,"style")),i),o.style=r.serializeStyle(i),r.setAttribs(t,o)}(e,t,o),(r=i.select("caption",t)[0])&&!o.caption&&i.remove(r),!r&&o.caption&&((r=i.create("caption")).innerHTML=Ra.ie?"\xa0":'<br data-mce-bogus="1"/>',t.insertBefore(r,t.firstChild)),ha.unApplyAlign(e,t),o.align&&ha.applyAlign(e,t,o.align),e.focus(),e.addVisual()})},Pa=function(e,t){var n,r,o,i,u,a,l,s,f,d,m=e.dom,g={};!0===t?(n=m.getParent(e.selection.getStart(),"table"))&&(l=n,s=(a=e).dom,f={width:s.getStyle(l,"width")||s.getAttrib(l,"width"),height:s.getStyle(l,"height")||s.getAttrib(l,"height"),cellspacing:s.getStyle(l,"border-spacing")||s.getAttrib(l,"cellspacing"),cellpadding:s.getAttrib(l,"data-mce-cell-padding")||s.getAttrib(l,"cellpadding")||ha.getTDTHOverallStyle(a.dom,l,"padding"),border:s.getAttrib(l,"data-mce-border")||s.getAttrib(l,"border")||ha.getTDTHOverallStyle(a.dom,l,"border"),borderColor:s.getAttrib(l,"data-mce-border-color"),caption:!!s.select("caption",l)[0],"class":s.getAttrib(l,"class")},pa.each("left center right".split(" "),function(e){a.formatter.matchNode(l,"align"+e)&&(f.align=e)}),ra(a)&&pa.extend(f,ba.extractAdvancedStyles(s,l)),g=f):(r={label:"Cols",name:"cols"},o={label:"Rows",name:"rows"}),ca(e).length>0&&(g["class"]&&(g["class"]=g["class"].replace(/\s*mce\-item\-table\s*/g,"")),i={name:"class",type:"listbox",label:"Class",values:ba.buildListItems(ca(e),function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({block:"table",classes:[t.value]})})})}),u={type:"form",layout:"flex",direction:"column",labelGapCalc:"children",padding:0,items:[{type:"form",labelGapCalc:!1,padding:0,layout:"grid",columns:2,defaults:{type:"textbox",maxWidth:50},items:(d=e,d.getParam("table_appearance_options",!0,"boolean")?[r,o,{label:"Width",name:"width",onchange:c.curry(ba.updateStyleField,e)},{label:"Height",name:"height",onchange:c.curry(ba.updateStyleField,e)},{label:"Cell spacing",name:"cellspacing"},{label:"Cell padding",name:"cellpadding"},{label:"Border",name:"border"},{label:"Caption",name:"caption",type:"checkbox"}]:[r,o,{label:"Width",name:"width",onchange:c.curry(ba.updateStyleField,e)},{label:"Height",name:"height",onchange:c.curry(ba.updateStyleField,e)}])},{label:"Alignment",name:"align",type:"listbox",text:"None",values:[{text:"None",value:""},{text:"Left",value:"left"},{text:"Center",value:"center"},{text:"Right",value:"right"}]},i]},ra(e)?e.windowManager.open({title:"Table properties",data:g,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},ba.createStyleForm(e)],onsubmit:c.curry(Ba,e,n)}):e.windowManager.open({title:"Table properties",data:g,body:u,onsubmit:c.curry(Ba,e,n)})},Ia=pa.each,Wa={registerCommands:function(e,t,n,r,o){var i=Hu.getIsRoot(e),u=function(){return X.fromDom(e.dom.getParent(e.selection.getStart(),"th,td"))},a=function(e){return zt.table(e,i)},l=function(t){var o=u();a(o).each(function(i){var u=wr.forMenu(r,i,o);t(i,u).each(function(t){e.selection.setRng(t),e.focus(),n.clear(i)})})},s=function(t){var n=u();return a(n).bind(function(t){var o=X.fromDom(e.getDoc()),i=wr.forMenu(r,t,n),u=Dn.cellOperations(c.noop,o,g.none());return ga(t,i,u)})},f=function(t){o.get().each(function(o){var i=A.map(o,function(e){return dn(e)}),c=u();a(c).bind(function(o){var u=X.fromDom(e.getDoc()),a=Dn.paste(u),l=wr.pasteRows(r,o,c,i,a);t(o,l).each(function(t){e.selection.setRng(t),e.focus(),n.clear(o)})})})};Ia({mceTableSplitCells:function(){l(t.unmergeCells)},mceTableMergeCells:function(){l(t.mergeCells)},mceTableInsertRowBefore:function(){l(t.insertRowsBefore)},mceTableInsertRowAfter:function(){l(t.insertRowsAfter)},mceTableInsertColBefore:function(){l(t.insertColumnsBefore)},mceTableInsertColAfter:function(){l(t.insertColumnsAfter)},mceTableDeleteCol:function(){l(t.deleteColumn)},mceTableDeleteRow:function(){l(t.deleteRow)},mceTableCutRow:function(e){o.set(s()),l(t.deleteRow)},mceTableCopyRow:function(e){o.set(s())},mceTablePasteRowBefore:function(e){f(t.pasteRowsBefore)},mceTablePasteRowAfter:function(e){f(t.pasteRowsAfter)},mceTableDelete:function(){var t=X.fromDom(e.dom.getParent(e.selection.getStart(),"th,td"));zt.table(t,i).filter(c.not(i)).each(function(t){var n=X.fromText("");tn.after(t,n),on.remove(t);var r=e.dom.createRng();r.setStart(n.dom(),0),r.setEnd(n.dom(),0),e.selection.setRng(r)})}},function(t,n){e.addCommand(n,t)}),Ia({mceInsertTable:c.curry(Pa,e),mceTableProps:c.curry(Pa,e,!0),mceTableRowProps:c.curry(Ca,e),mceTableCellProps:c.curry(ya,e)},function(t,n){e.addCommand(n,function(e,n){t(n)})})}},Ma={only:function(e){var t=g.from(e.dom().documentElement).map(X.fromDom).getOr(e);return{parent:c.constant(t),view:c.constant(e),origin:c.constant(Vr(0,0))}},detached:function(e,t){var n=c.curry(Xr,t);return{parent:c.constant(t),view:c.constant(e),origin:n}},body:function(e,t){return{parent:c.constant(t),view:c.constant(e),origin:c.constant(Vr(0,0))}}};function La(e){var t=q.immutable.apply(null,e),n=[];return{bind:function(e){if(e===undefined)throw"Event bind error: undefined handler";n.push(e)},unbind:function(e){n=A.filter(n,function(t){return t!==e})},trigger:function(){var e=t.apply(null,arguments);A.each(n,function(t){t(e)})}}}var qa={create:function(e){return{registry:P.map(e,function(e){return{bind:e.bind,unbind:e.unbind}}),trigger:P.map(e,function(e){return e.trigger})}}},Fa={mode:mo.exactly(["compare","extract","mutate","sink"]),sink:mo.exactly(["element","start","stop","destroy"]),api:mo.exactly(["forceDrop","drop","move","delayDrop"])},za={resolve:ei("ephox-dragster").resolve},ja=function(e,t){return function(n){if(e(n)){var r,o,i,u,a,l,s,f=X.fromDom(n.target),d=function(){n.stopPropagation()},m=function(){n.preventDefault()},g=c.compose(m,d),p=(r=f,o=n.clientX,i=n.clientY,u=d,a=m,l=g,s=n,{target:c.constant(r),x:c.constant(o),y:c.constant(i),stop:u,prevent:a,kill:l,raw:c.constant(s)});t(p)}}},_a=function(e,t,n,r,o){var i=ja(n,r);return e.dom().addEventListener(t,i,o),{unbind:c.curry(Ha,e,t,i,o)}},Ha=function(e,t,n,r){e.dom().removeEventListener(t,n,r)},Va=function(e,t,n,r){return _a(e,t,n,r,!1)},Ua=function(e,t,n,r){return _a(e,t,n,r,!0)},Ga=c.constant(!0),Xa={bind:function(e,t,n){return Va(e,t,Ga,n)},capture:function(e,t,n){return Ua(e,t,Ga,n)}},Ya=Fa.mode({compare:function(e,t){return Vr(t.left()-e.left(),t.top()-e.top())},extract:function(e){return g.some(Vr(e.x(),e.y()))},sink:function(e,t){var n,r,o,i=(n=t,r=Po.merge({layerClass:za.resolve("blocker")},n),o=X.fromTag("div"),ht.set(o,"role","presentation"),Qt.setAll(o,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),pi.add(o,za.resolve("blocker")),pi.add(o,r.layerClass),{element:function(){return o},destroy:function(){on.remove(o)}}),u=Xa.bind(i.element(),"mousedown",e.forceDrop),a=Xa.bind(i.element(),"mouseup",e.drop),c=Xa.bind(i.element(),"mousemove",e.move),l=Xa.bind(i.element(),"mouseout",e.delayDrop);return Fa.sink({element:i.element,start:function(e){tn.append(e,i.element())},stop:function(){on.remove(i.element())},destroy:function(){i.destroy(),a.unbind(),c.unbind(),l.unbind(),u.unbind()}})},mutate:function(e,t){e.mutate(t.left(),t.top())}});function Ka(){var e=g.none(),t=qa.create({move:La(["info"])});return{onEvent:function(n,r){r.extract(n).each(function(n){var o,i,u;(o=r,i=n,u=e.map(function(e){return o.compare(e,i)}),e=g.some(i),u).each(function(e){t.trigger.move(e)})})},reset:function(){e=g.none()},events:t.registry}}function $a(){var e={onEvent:function(e,t){},reset:c.noop},t=Ka(),n=e;return{on:function(){n.reset(),n=t},off:function(){n.reset(),n=e},isOn:function(){return n===t},onEvent:function(e,t){n.onEvent(e,t)},events:t.events}}var Ja=function(e,t){var n=null;return{cancel:function(){null!==n&&(clearTimeout(n),n=null)},throttle:function(){var r=arguments;null!==n&&clearTimeout(n),n=setTimeout(function(){e.apply(null,r),n=null,r=null},t)}}},Qa=function(e,t,n){var r=!1,o=qa.create({start:La([]),stop:La([])}),i=$a(),u=function(){l.stop(),i.isOn()&&(i.off(),o.trigger.stop())},a=Ja(u,200);i.events.move.bind(function(n){t.mutate(e,n.info())});var c=function(e){return function(){var t=Array.prototype.slice.call(arguments,0);if(r)return e.apply(null,t)}},l=t.sink(Fa.api({forceDrop:u,drop:c(u),move:c(function(e,n){a.cancel(),i.onEvent(e,t)}),delayDrop:c(a.throttle)}),n);return{element:l.element,go:function(e){l.start(e),i.on(),o.trigger.start()},on:function(){r=!0},off:function(){r=!1},destroy:function(){l.destroy()},events:o.registry}},Za={transform:function(e,t){var n=t!==undefined?t:{},r=n.mode!==undefined?n.mode:Ya;return Qa(e,r,t)}};function ec(){var e,t=qa.create({drag:La(["xDelta","yDelta","target"])}),n=g.none(),r={mutate:function(t,n){e.trigger.drag(t,n)},events:(e=qa.create({drag:La(["xDelta","yDelta"])})).registry};return r.events.drag.bind(function(e){n.each(function(n){t.trigger.drag(e.xDelta(),e.yDelta(),n)})}),{assign:function(e){n=g.some(e)},get:function(){return n},mutate:r.mutate,events:t.registry}}var tc={any:function(e){return It.first(e).isSome()},ancestor:function(e,t,n){return It.ancestor(e,t,n).isSome()},sibling:function(e,t){return It.sibling(e,t).isSome()},child:function(e,t){return It.child(e,t).isSome()},descendant:function(e,t){return It.descendant(e,t).isSome()},closest:function(e,t,n){return It.closest(e,t,n).isSome()}},nc=ti.resolve("resizer-bar-dragging");function rc(e,t){var n=oo.height,r=function(e,t,n){var r=ec(),o=Za.transform(r,{}),i=g.none(),u=function(e,t){return g.from(ht.get(e,t))};r.events.drag.bind(function(e){u(e.target(),"data-row").each(function(t){var n=gu.getInt(e.target(),"top");Qt.set(e.target(),"top",n+e.yDelta()+"px")}),u(e.target(),"data-column").each(function(t){var n=gu.getInt(e.target(),"left");Qt.set(e.target(),"left",n+e.xDelta()+"px")})});var a=function(e,t){return gu.getInt(e,t)-parseInt(ht.get(e,"data-initial-"+t),10)};o.events.stop.bind(function(){r.get().each(function(r){i.each(function(o){u(r,"data-row").each(function(e){var t=a(r,"top");ht.remove(r,"data-initial-top"),m.trigger.adjustHeight(o,t,parseInt(e,10))}),u(r,"data-column").each(function(e){var t=a(r,"left");ht.remove(r,"data-initial-left"),m.trigger.adjustWidth(o,t,parseInt(e,10))}),Ci.refresh(e,o,n,t)})})});var l=function(t,n){m.trigger.startAdjust(),r.assign(t),ht.set(t,"data-initial-"+n,parseInt(Qt.get(t,n),10)),pi.add(t,nc),Qt.set(t,"opacity","0.2"),o.go(e.parent())},s=Xa.bind(e.parent(),"mousedown",function(e){Ci.isRowBar(e.target())&&l(e.target(),"top"),Ci.isColBar(e.target())&&l(e.target(),"left")}),f=function(t){return Ye.eq(t,e.view())},d=Xa.bind(e.view(),"mouseover",function(r){"table"===ft.name(r.target())||tc.ancestor(r.target(),"table",f)?(i="table"===ft.name(r.target())?g.some(r.target()):It.ancestor(r.target(),"table",f)).each(function(r){Ci.refresh(e,r,n,t)}):wt.inBody(r.target())&&Ci.destroy(e)}),m=qa.create({adjustHeight:La(["table","delta","row"]),adjustWidth:La(["table","delta","column"]),startAdjust:La([])});return{destroy:function(){s.unbind(),d.unbind(),o.destroy(),Ci.destroy(e)},refresh:function(r){Ci.refresh(e,r,n,t)},on:o.on,off:o.off,hideBars:c.curry(Ci.hide,e),showBars:c.curry(Ci.show,e),events:m.registry}}(e,t,n),o=qa.create({beforeResize:La(["table"]),afterResize:La(["table"]),startDrag:La([])});return r.events.adjustHeight.bind(function(e){o.trigger.beforeResize(e.table());var t=n.delta(e.delta(),e.table());Eu.adjustHeight(e.table(),t,e.row(),n),o.trigger.afterResize(e.table())}),r.events.startAdjust.bind(function(e){o.trigger.startDrag()}),r.events.adjustWidth.bind(function(e){o.trigger.beforeResize(e.table());var n=t.delta(e.delta(),e.table());Eu.adjustWidth(e.table(),n,e.column(),t),o.trigger.afterResize(e.table())}),{on:r.on,off:r.off,hideBars:r.hideBars,showBars:r.showBars,destroy:r.destroy,events:o.registry}}var oc={get:function(e,t){return e.inline?Ma.body(Hu.getBody(e),(n=X.fromTag("div"),Qt.setAll(n,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),tn.append(wt.body(),n),n)):Ma.only(X.fromDom(e.getDoc()));var n},remove:function(e,t){e.inline&&on.remove(t.parent())}};function ic(e){var t,n,r=g.none(),o=g.none(),i=g.none(),u=/(\d+(\.\d+)?)%/,a=function(e){return"TABLE"===e.nodeName};return e.on("init",function(){var t=uo(Yu.directionAt),n=oc.get(e);if(i=g.some(n),fa(e)&&Qu(e)){var u=rc(n,t);u.on(),u.events.startDrag.bind(function(t){r=g.some(e.selection.getRng())}),u.events.afterResize.bind(function(t){var n=t.table(),o=St.descendants(n,"td[data-mce-style],th[data-mce-style]");A.each(o,function(e){ht.remove(e,"data-mce-style")}),r.each(function(t){e.selection.setRng(t),e.focus()}),e.undoManager.add()}),o=g.some(u)}}),e.on("ObjectResizeStart",function(r){var o;a(r.target)&&(t=r.width,o=r.target,n=e.dom.getStyle(o,"width")||e.dom.getAttrib(o,"width"))}),e.on("ObjectResized",function(r){if(a(r.target)){var o=r.target;if(u.test(n)){var i=parseFloat(u.exec(n)[1]),c=r.width*i/t;e.dom.setStyle(o,"width",c+"%")}else{var l=[];pa.each(o.rows,function(t){pa.each(t.cells,function(t){var n=e.dom.getStyle(t,"width",!0);l.push({cell:t,width:n})})}),pa.each(l,function(t){e.dom.setStyle(t.cell,"width",t.width),e.dom.setAttrib(t.cell,"width",null)})}}}),{lazyResize:function(){return o},lazyWire:function(){return i.getOr(Ma.only(X.fromDom(e.getBody())))},destroy:function(){o.each(function(e){e.destroy()}),i.each(function(t){oc.remove(e,t)})}}}var uc=function(e){return{fold:e}},ac=function(e){return uc(function(t,n,r,o){return t(e)})},cc=function(e){return uc(function(t,n,r,o){return n(e)})},lc=function(e,t){return uc(function(n,r,o,i){return o(e,t)})},sc=function(e){return uc(function(t,n,r,o){return o(e)})},fc=function(e,t){return zt.table(e,t).bind(function(t){var n=zt.cells(t);return A.findIndex(n,function(t){return Ye.eq(e,t)}).map(function(e){return{index:c.constant(e),all:c.constant(n)}})})},dc=function(e,t){return fc(e,t).fold(function(){return ac(e)},function(t){return t.index()+1<t.all().length?lc(e,t.all()[t.index()+1]):sc(e)})},mc=function(e,t){return fc(e,t).fold(function(){return ac()},function(t){return t.index()-1>=0?lc(e,t.all()[t.index()-1]):cc(e)})},gc=sr([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),pc={before:gc.before,on:gc.on,after:gc.after,cata:function(e,t,n,r){return e.fold(t,n,r)},getStart:function(e){return e.fold(c.identity,c.identity,c.identity)}},hc=sr([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),vc=q.immutable("start","soffset","finish","foffset"),bc={domRange:hc.domRange,relative:hc.relative,exact:hc.exact,exactFromRange:function(e){return hc.exact(e.start(),e.soffset(),e.finish(),e.foffset())},range:vc,getWin:function(e){var t=e.match({domRange:function(e){return X.fromDom(e.startContainer)},relative:function(e,t){return pc.getStart(e)},exact:function(e,t,n,r){return e}});return nt.defaultView(t)}},wc=function(e,t,n,r){var o=nt.owner(e).dom().createRange();return o.setStart(e.dom(),t),o.setEnd(n.dom(),r),o},yc=function(e,t,n,r){var o=wc(e,t,n,r),i=Ye.eq(e,n)&&t===r;return o.collapsed&&!i},xc=function(e,t){var n=(t||document).createDocumentFragment();return A.each(e,function(e){n.appendChild(e.dom())}),X.fromDom(n)},Sc=function(e,t){e.selectNodeContents(t.dom())},Cc=function(e){e.deleteContents()},Rc=function(e){return{left:c.constant(e.left),top:c.constant(e.top),right:c.constant(e.right),bottom:c.constant(e.bottom),width:c.constant(e.width),height:c.constant(e.height)}},Tc={create:function(e){return e.document.createRange()},replaceWith:function(e,t){Cc(e),e.insertNode(t.dom())},selectNodeContents:function(e,t){var n=e.document.createRange();return Sc(n,t),n},selectNodeContentsUsing:Sc,relativeToNative:function(e,t,n){var r,o,i=e.document.createRange();return r=i,t.fold(function(e){r.setStartBefore(e.dom())},function(e,t){r.setStart(e.dom(),t)},function(e){r.setStartAfter(e.dom())}),o=i,n.fold(function(e){o.setEndBefore(e.dom())},function(e,t){o.setEnd(e.dom(),t)},function(e){o.setEndAfter(e.dom())}),i},exactToNative:function(e,t,n,r,o){var i=e.document.createRange();return i.setStart(t.dom(),n),i.setEnd(r.dom(),o),i},deleteContents:Cc,cloneFragment:function(e){var t=e.cloneContents();return X.fromDom(t)},getFirstRect:function(e){var t=e.getClientRects(),n=t.length>0?t[0]:e.getBoundingClientRect();return n.width>0||n.height>0?g.some(n).map(Rc):g.none()},getBounds:function(e){var t=e.getBoundingClientRect();return t.width>0||t.height>0?g.some(t).map(Rc):g.none()},isWithin:function(e,t){return t.compareBoundaryPoints(e.END_TO_START,e)<1&&t.compareBoundaryPoints(e.START_TO_END,e)>-1},toString:function(e){return e.toString()}},Dc=sr([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),Ac=function(e,t,n){return t(X.fromDom(n.startContainer),n.startOffset,X.fromDom(n.endContainer),n.endOffset)},kc=function(e,t){var n,r,o,i=(n=e,t.match({domRange:function(e){return{ltr:c.constant(e),rtl:g.none}},relative:function(e,t){return{ltr:se(function(){return Tc.relativeToNative(n,e,t)}),rtl:se(function(){return g.some(Tc.relativeToNative(n,t,e))})}},exact:function(e,t,r,o){return{ltr:se(function(){return Tc.exactToNative(n,e,t,r,o)}),rtl:se(function(){return g.some(Tc.exactToNative(n,r,o,e,t))})}}}));return(o=(r=i).ltr()).collapsed?r.rtl().filter(function(e){return!1===e.collapsed}).map(function(e){return Dc.rtl(X.fromDom(e.endContainer),e.endOffset,X.fromDom(e.startContainer),e.startOffset)}).getOrThunk(function(){return Ac(0,Dc.ltr,o)}):Ac(0,Dc.ltr,o)},Nc={ltr:Dc.ltr,rtl:Dc.rtl,diagnose:kc,asLtrRange:function(e,t){return kc(e,t).match({ltr:function(t,n,r,o){var i=e.document.createRange();return i.setStart(t.dom(),n),i.setEnd(r.dom(),o),i},rtl:function(t,n,r,o){var i=e.document.createRange();return i.setStart(r.dom(),o),i.setEnd(t.dom(),n),i}})}},Oc=function(e,t,n){return t>=e.left&&t<=e.right&&n>=e.top&&n<=e.bottom},Ec=function(e,t,n,r,o){if(0===o)return 0;if(t===r)return o-1;for(var i=r,u=1;u<o;u++){var a=e(u),c=Math.abs(t-a.left);if(n>a.bottom);else{if(n<a.top||c>i)return u-1;i=c}}return 0},Bc={locate:function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getClientRects();return Wo(i,function(e){return Oc(e,n,r)?g.some(e):g.none()}).map(function(o){return i=e,u=t,a=n,c=r,l=o,s=function(e){var t=i.dom().createRange();return t.setStart(u.dom(),e),t.collapse(!0),t},f=pn.get(u).length,d=Ec(function(e){return s(e).getBoundingClientRect()},a,c,l.right,f),s(d);var i,u,a,c,l,s,f,d})}},Pc=function(e,t,n,r){var o=e.dom().createRange(),i=nt.children(t);return Wo(i,function(t){return o.selectNode(t.dom()),Oc(o.getBoundingClientRect(),n,r)?Ic(e,t,n,r):g.none()})},Ic=function(e,t,n,r){return(ft.isText(t)?Bc.locate:Pc)(e,t,n,r)},Wc=function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,n)),a=Math.max(i.top,Math.min(i.bottom,r));return Ic(e,t,u,a)},Mc=function(e,t){return t-e.left<e.right-t},Lc=function(e,t,n){var r=e.dom().createRange();return r.selectNode(t.dom()),r.collapse(n),r},qc=function(e,t,n){var r=e.dom().createRange();r.selectNode(t.dom());var o=r.getBoundingClientRect(),i=Mc(o,n);return(!0===i?xn.first:xn.last)(t).map(function(t){return Lc(e,t,i)})},Fc=function(e,t,n){var r=t.dom().getBoundingClientRect(),o=Mc(r,n);return g.some(Lc(e,t,o))},zc=function(e,t,n){return(0===nt.children(t).length?Fc:qc)(e,t,n)},jc=document.caretPositionFromPoint?function(e,t,n){return g.from(e.dom().caretPositionFromPoint(t,n)).bind(function(t){if(null===t.offsetNode)return g.none();var n=e.dom().createRange();return n.setStart(t.offsetNode,t.offset),n.collapse(),g.some(n)})}:document.caretRangeFromPoint?function(e,t,n){return g.from(e.dom().caretRangeFromPoint(t,n))}:function(e,t,n){return X.fromPoint(e,t,n).bind(function(r){var o=function(){return zc(e,r,t)};return 0===nt.children(r).length?o():function(e,t,n,r){var o=e.dom().createRange();o.selectNode(t.dom());var i=o.getBoundingClientRect(),u=Math.max(i.left,Math.min(i.right,n)),a=Math.max(i.top,Math.min(i.bottom,r));return Wc(e,t,u,a)}(e,r,t,n).orThunk(o)})},_c=function(e,t,n){var r=X.fromDom(e.document);return jc(r,t,n).map(function(e){return bc.range(X.fromDom(e.startContainer),e.startOffset,X.fromDom(e.endContainer),e.endOffset)})},Hc=function(e,t,n){var r,o,i,u,a,c,l=Nc.asLtrRange(e,t),s=X.fromDom(l.commonAncestorContainer);return ft.isElement(s)?(r=e,o=s,i=l,u=n,a=Tc.create(r),c=(te.is(o,u)?[o]:[]).concat(St.descendants(o,u)),A.filter(c,function(e){return Tc.selectNodeContentsUsing(a,e),Tc.isWithin(i,a)})):[]},Vc=function(e,t){var n=ft.name(e);return"input"===n?pc.after(e):A.contains(["br","img"],n)?0===t?pc.before(e):pc.after(e):pc.on(e,t)},Uc=function(e,t){var n=e.fold(pc.before,Vc,pc.after),r=t.fold(pc.before,Vc,pc.after);return bc.relative(n,r)},Gc=function(e,t,n,r){var o=Vc(e,t),i=Vc(n,r);return bc.relative(o,i)},Xc=function(e){return e.match({domRange:function(e){var t=X.fromDom(e.startContainer),n=X.fromDom(e.endContainer);return Gc(t,e.startOffset,n,e.endOffset)},relative:Uc,exact:Gc})},Yc=Uc,Kc=Gc,$c=function(e,t){g.from(e.getSelection()).each(function(e){e.removeAllRanges(),e.addRange(t)})},Jc=function(e,t,n,r,o){var i=Tc.exactToNative(e,t,n,r,o);$c(e,i)},Qc=function(e,t){return Nc.diagnose(e,t).match({ltr:function(t,n,r,o){Jc(e,t,n,r,o)},rtl:function(t,n,r,o){var i=e.getSelection();i.setBaseAndExtent?i.setBaseAndExtent(t.dom(),n,r.dom(),o):i.extend?(i.collapse(t.dom(),n),i.extend(r.dom(),o)):Jc(e,r,o,t,n)}})},Zc=function(e){var t=X.fromDom(e.anchorNode),n=X.fromDom(e.focusNode);return yc(t,e.anchorOffset,n,e.focusOffset)?g.some(bc.range(X.fromDom(e.anchorNode),e.anchorOffset,X.fromDom(e.focusNode),e.focusOffset)):function(e){if(e.rangeCount>0){var t=e.getRangeAt(0),n=e.getRangeAt(e.rangeCount-1);return g.some(bc.range(X.fromDom(t.startContainer),t.startOffset,X.fromDom(n.endContainer),n.endOffset))}return g.none()}(e)},el=function(e){var t=e.getSelection();return t.rangeCount>0?Zc(t):g.none()},tl={setExact:function(e,t,n,r,o){var i=Kc(t,n,r,o);Qc(e,i)},getExact:el,get:function(e){return el(e).map(function(e){return bc.exact(e.start(),e.soffset(),e.finish(),e.foffset())})},setRelative:function(e,t,n){var r=Yc(t,n);Qc(e,r)},toNative:function(e){var t=bc.getWin(e).dom(),n=function(e,n,r,o){return Tc.exactToNative(t,e,n,r,o)},r=Xc(e);return Nc.diagnose(t,r).match({ltr:n,rtl:n})},setToElement:function(e,t){var n=Tc.selectNodeContents(e,t);$c(e,n)},clear:function(e){e.getSelection().removeAllRanges()},clone:function(e,t){var n=Nc.asLtrRange(e,t);return Tc.cloneFragment(n)},replace:function(e,t,n){var r=Nc.asLtrRange(e,t),o=xc(n,e.document);Tc.replaceWith(r,o)},deleteAt:function(e,t){var n=Nc.asLtrRange(e,t);Tc.deleteContents(n)},forElement:function(e,t){var n=Tc.selectNodeContents(e,t);return bc.range(X.fromDom(n.startContainer),n.startOffset,X.fromDom(n.endContainer),n.endOffset)},getFirstRect:function(e,t){var n=Nc.asLtrRange(e,t);return Tc.getFirstRect(n)},getBounds:function(e,t){var n=Nc.asLtrRange(e,t);return Tc.getBounds(n)},getAtPoint:function(e,t,n){return _c(e,t,n)},findWithin:function(e,t,n){return Hc(e,t,n)},getAsString:function(e,t){var n=Nc.asLtrRange(e,t);return Tc.toString(n)},isCollapsed:function(e,t,n,r){return Ye.eq(e,n)&&t===r}},nl=tinymce.util.Tools.resolve("tinymce.util.VK"),rl=function(e,t,n,r){return ul(e,t,dc(n),r)},ol=function(e,t,n,r){return ul(e,t,mc(n),r)},il=function(e,t){var n=bc.exact(t,0,t,0);return tl.toNative(n)},ul=function(e,t,n,r,o){return n.fold(g.none,g.none,function(e,t){return xn.first(t).map(function(e){return il(0,e)})},function(n){return zt.table(n,t).bind(function(t){var o,i,u=wr.noMenu(n);return e.undoManager.transact(function(){r.insertRowsAfter(t,u)}),o=t,i=St.descendants(o,"tr"),A.last(i).bind(function(e){return It.descendant(e,"td,th").map(function(e){return il(0,e)})})})})},al=["table","li","dl"],cl={handle:function(e,t,n,r){if(e.keyCode===nl.TAB){var o=Hu.getBody(t),i=function(e){var t=ft.name(e);return Ye.eq(e,o)||A.contains(al,t)},u=t.selection.getRng();if(u.collapsed){var a=X.fromDom(u.startContainer);zt.cell(a,i).each(function(o){e.preventDefault(),(e.shiftKey?ol:rl)(t,i,o,n,r).each(function(e){t.selection.setRng(e)})})}}}},ll={response:q.immutable("selection","kill")},sl=function(e){return function(t){return t===e}},fl=sl(38),dl=sl(40),ml={ltr:{isBackward:sl(37),isForward:sl(39)},rtl:{isBackward:sl(39),isForward:sl(37)},isUp:fl,isDown:dl,isNavigation:function(e){return e>=37&&e<=40}},gl={convertToRange:function(e,t){var n=Nc.asLtrRange(e,t);return{start:c.constant(X.fromDom(n.startContainer)),soffset:c.constant(n.startOffset),finish:c.constant(X.fromDom(n.endContainer)),foffset:c.constant(n.endOffset)}},makeSitus:function(e,t,n,r){return{start:c.constant(pc.on(e,t)),finish:c.constant(pc.on(n,r))}}},pl=Ue.detect().browser.isSafari(),hl=function(e){var t=e!==undefined?e.dom():document,n=t.body.scrollLeft||t.documentElement.scrollLeft,r=t.body.scrollTop||t.documentElement.scrollTop;return Vr(n,r)},vl=function(e,t,n){(n!==undefined?n.dom():document).defaultView.scrollTo(e,t)},bl=function(e,t){pl&&W.isFunction(e.dom().scrollIntoViewIfNeeded)?e.dom().scrollIntoViewIfNeeded(!1):e.dom().scrollIntoView(t)},wl={get:hl,to:vl,by:function(e,t,n){(n!==undefined?n.dom():document).defaultView.scrollBy(e,t)},preserve:function(e,t){var n=hl(e);t();var r=hl(e);n.top()===r.top()&&n.left()===r.left()||vl(n.left(),n.top(),e)},capture:function(e){var t=g.none(),n=function(){t=g.some(hl(e))};return n(),{save:n,restore:function(){t.each(function(t){vl(t.left(),t.top(),e)})}}},intoView:bl,intoViewIfNeeded:function(e,t){var n=t.dom().getBoundingClientRect(),r=e.dom().getBoundingClientRect();r.top<n.top?bl(e,!0):r.bottom>n.bottom&&bl(e,!1)},setToElement:function(e,t){var n=Xr(t),r=X.fromDom(e.document);vl(n.left(),n.top(),r)},scrollBarWidth:function(){var e=X.fromHtml('<div style="width: 100px; height: 100px; overflow: scroll; position: absolute; top: -9999px;"></div>');tn.after(wt.body(),e);var t=e.dom().offsetWidth-e.dom().clientWidth;return on.remove(e),t}};function yl(e){return{elementFromPoint:function(t,n){return g.from(e.document.elementFromPoint(t,n)).map(X.fromDom)},getRect:function(e){return e.dom().getBoundingClientRect()},getRangedRect:function(t,n,r,o){var i=bc.exact(t,n,r,o);return tl.getFirstRect(e,i).map(function(e){return P.map(e,c.apply)})},getSelection:function(){return tl.get(e).map(function(t){return gl.convertToRange(e,t)})},fromSitus:function(t){var n=bc.relative(t.start(),t.finish());return gl.convertToRange(e,n)},situsFromPoint:function(t,n){return tl.getAtPoint(e,t,n).map(function(e){return{start:c.constant(pc.on(e.start(),e.soffset())),finish:c.constant(pc.on(e.finish(),e.foffset()))}})},clearSelection:function(){tl.clear(e)},setSelection:function(t){tl.setExact(e,t.start(),t.soffset(),t.finish(),t.foffset())},setRelativeSelection:function(t,n){tl.setRelative(e,t,n)},selectContents:function(t){tl.setToElement(e,t)},getInnerHeight:function(){return e.innerHeight},getScrollY:function(){return wl.get(X.fromDom(e.document)).top()},scrollBy:function(t,n){wl.by(t,n,X.fromDom(e.document))}}}var xl=function(e,t,n,r,o){return Ye.eq(n,r)?g.none():or.identify(n,r,t).bind(function(t){var r=t.boxes().getOr([]);return r.length>0?(o(e,r,t.start(),t.finish()),g.some(ll.response(g.some(gl.makeSitus(n,0,n,bn(n))),!0))):g.none()})},Sl={sync:function(e,t,n,r,o,i,u){return Ye.eq(n,o)&&r===i?g.none():It.closest(n,"td,th",t).bind(function(n){return It.closest(o,"td,th",t).bind(function(r){return xl(e,t,n,r,u)})})},detect:xl,update:function(e,t,n,r,o){return or.shiftSelection(r,e,t,o.firstSelectedSelector(),o.lastSelectedSelector()).map(function(e){return o.clear(n),o.selectRange(n,e.boxes(),e.start(),e.finish()),e.boxes()})}},Cl=q.immutableBag(["left","top","right","bottom"],[]),Rl={nu:Cl,moveUp:function(e,t){return Cl({left:e.left(),top:e.top()-t,right:e.right(),bottom:e.bottom()-t})},moveDown:function(e,t){return Cl({left:e.left(),top:e.top()+t,right:e.right(),bottom:e.bottom()+t})},moveBottomTo:function(e,t){var n=e.bottom()-e.top();return Cl({left:e.left(),top:t-n,right:e.right(),bottom:t})},moveTopTo:function(e,t){var n=e.bottom()-e.top();return Cl({left:e.left(),top:t,right:e.right(),bottom:t+n})},getTop:function(e){return e.top()},getBottom:function(e){return e.bottom()},translate:function(e,t,n){return Cl({left:e.left()+t,top:e.top()+n,right:e.right()+t,bottom:e.bottom()+n})},toString:function(e){return"("+e.left()+", "+e.top()+") -> ("+e.right()+", "+e.bottom()+")"}},Tl=function(e){return Rl.nu({left:e.left,top:e.top,right:e.right,bottom:e.bottom})},Dl=function(e,t){return g.some(e.getRect(t))},Al=function(e,t,n){return ft.isElement(t)?Dl(e,t).map(Tl):ft.isText(t)?(r=e,o=t,i=n,i>=0&&i<bn(o)?r.getRangedRect(o,i,o,i+1):i>0?r.getRangedRect(o,i-1,o,i):g.none()).map(Tl):g.none();var r,o,i},kl=function(e,t){return ft.isElement(t)?Dl(e,t).map(Tl):ft.isText(t)?e.getRangedRect(t,0,t,bn(t)).map(Tl):g.none()},Nl=q.immutable("item","mode"),Ol=function(e,t,n,r){var o=r!==undefined?r:El;return e.property().parent(t).map(function(e){return Nl(e,o)})},El=function(e,t,n,r){var o=r!==undefined?r:Bl;return n.sibling(e,t).map(function(e){return Nl(e,o)})},Bl=function(e,t,n,r){var o=r!==undefined?r:Bl,i=e.property().children(t);return n.first(i).map(function(e){return Nl(e,o)})},Pl=[{current:Ol,next:El,fallback:g.none()},{current:El,next:Bl,fallback:g.some(Ol)},{current:Bl,next:Bl,fallback:g.some(El)}],Il=function(e,t,n,r,o){return o=o!==undefined?o:Pl,A.find(o,function(e){return e.current===n}).bind(function(n){return n.current(e,t,r,n.next).orThunk(function(){return n.fallback.bind(function(n){return Il(e,t,n,r)})})})},Wl={backtrack:Ol,sidestep:El,advance:Bl,go:Il},Ml={left:function(){return{sibling:function(e,t){return e.query().prevSibling(t)},first:function(e){return e.length>0?g.some(e[e.length-1]):g.none()}}},right:function(){return{sibling:function(e,t){return e.query().nextSibling(t)},first:function(e){return e.length>0?g.some(e[0]):g.none()}}}},Ll=function(e,t,n,r,o,i){return Wl.go(e,t,r,o).bind(function(t){return i(t.item())?g.none():n(t.item())?g.some(t.item()):Ll(e,t.item(),n,t.mode(),o,i)})},ql=function(e,t,n,r){return Ll(e,t,n,Wl.sidestep,Ml.left(),r)},Fl=function(e,t,n,r){return Ll(e,t,n,Wl.sidestep,Ml.right(),r)},zl=function(e,t){return 0===e.property().children(t).length},jl=function(e,t,n,r){return ql(e,t,n,r)},_l=function(e,t,n,r){return Fl(e,t,n,r)},Hl={before:function(e,t,n){return jl(e,t,c.curry(zl,e),n)},after:function(e,t,n){return _l(e,t,c.curry(zl,e),n)},seekLeft:jl,seekRight:_l,walkers:function(){return{left:Ml.left,right:Ml.right}},walk:function(e,t,n,r,o){return Wl.go(e,t,n,r,o)},backtrack:Wl.backtrack,sidestep:Wl.sidestep,advance:Wl.advance},Vl=Nn(),Ul={gather:function(e,t,n){return Hl.gather(Vl,e,t,n)},before:function(e,t){return Hl.before(Vl,e,t)},after:function(e,t){return Hl.after(Vl,e,t)},seekLeft:function(e,t,n){return Hl.seekLeft(Vl,e,t,n)},seekRight:function(e,t,n){return Hl.seekRight(Vl,e,t,n)},walkers:function(){return Hl.walkers()},walk:function(e,t,n,r){return Hl.walk(Vl,e,t,n,r)}},Gl=sr([{none:[]},{retry:["caret"]}]),Xl=function(e,t,n){return Bt.closest(t,Do).fold(c.constant(!1),function(t){return kl(e,t).exists(function(e){return r=e,(t=n).left()<r.left()||Math.abs(r.right()-t.left())<1||t.left()>r.right();var t,r})})},Yl={point:Rl.getTop,adjuster:function(e,t,n,r,o){var i=Rl.moveUp(o,5);return Math.abs(n.top()-r.top())<1?Gl.retry(i):n.bottom()<o.top()?Gl.retry(i):n.bottom()===o.top()?Gl.retry(Rl.moveUp(o,1)):Xl(e,t,o)?Gl.retry(Rl.translate(i,5,0)):Gl.none()},move:Rl.moveUp,gather:Ul.before},Kl={point:Rl.getBottom,adjuster:function(e,t,n,r,o){var i=Rl.moveDown(o,5);return Math.abs(n.bottom()-r.bottom())<1?Gl.retry(i):n.top()>o.bottom()?Gl.retry(i):n.top()===o.bottom()?Gl.retry(Rl.moveDown(o,1)):Xl(e,t,o)?Gl.retry(Rl.translate(i,5,0)):Gl.none()},move:Rl.moveDown,gather:Ul.after},$l=function(e,t,n,r,o){return 0===o?g.some(r):(c=e,l=r.left(),s=t.point(r),c.elementFromPoint(l,s).filter(function(e){return"table"===ft.name(e)}).isSome()?(u=r,a=o-1,$l(e,i=t,n,i.move(u,5),a)):e.situsFromPoint(r.left(),t.point(r)).bind(function(i){return i.start().fold(g.none,function(i,u){return kl(e,i,u).bind(function(u){return t.adjuster(e,i,u,n,r).fold(g.none,function(r){return $l(e,t,n,r,o-1)})}).orThunk(function(){return g.some(r)})},g.none)}));var i,u,a,c,l,s},Jl=function(e,t,n){var r,o,i,u=e.move(n,5),a=$l(t,e,n,u,100).getOr(u);return(r=e,o=a,i=t,r.point(o)>i.getInnerHeight()?g.some(r.point(o)-i.getInnerHeight()):r.point(o)<0?g.some(-r.point(o)):g.none()).fold(function(){return t.situsFromPoint(a.left(),e.point(a))},function(n){return t.scrollBy(0,n),t.situsFromPoint(a.left(),e.point(a)-n)})},Ql={tryUp:c.curry(Jl,Yl),tryDown:c.curry(Jl,Kl),ieTryUp:function(e,t){return e.situsFromPoint(t.left(),t.top()-5)},ieTryDown:function(e,t){return e.situsFromPoint(t.left(),t.bottom()+5)},getJumpSize:c.constant(5)},Zl=sr([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}]),es=function(e){return It.closest(e,"tr")},ts={verify:function(e,t,n,r,o,i,u){return It.closest(r,"td,th",u).bind(function(n){return It.closest(t,"td,th",u).map(function(t){return Ye.eq(n,t)?Ye.eq(r,n)&&bn(n)===o?i(t):Zl.none("in same cell"):Fn(es,[n,t]).fold(function(){return o=t,u=n,a=(r=e).getRect(o),(c=r.getRect(u)).right>a.left&&c.left<a.right?Zl.success():i(t);var r,o,u,a,c},function(e){return i(t)})})}).getOr(Zl.none("default"))},cata:function(e,t,n,r,o){return e.fold(t,n,r,o)},adt:Zl},ns={point:q.immutable("element","offset"),delta:q.immutable("element","deltaOffset"),range:q.immutable("element","start","finish"),points:q.immutable("begin","end"),text:q.immutable("element","text")},rs=(q.immutable("ancestor","descendants","element","index"),q.immutable("parent","children","element","index")),os=function(e,t){return A.findIndex(e,c.curry(Ye.eq,t))},is=function(e){return nt.parent(e).bind(function(t){var n=nt.children(t);return os(n,e).map(function(r){return rs(t,n,e,r)})})},us=function(e){return"br"===ft.name(e)},as=function(e,t,n){return t(e,n).bind(function(e){return ft.isText(e)&&0===pn.get(e).trim().length?as(e,t,n):g.some(e)})},cs=function(e,t,n,r){return(o=t,i=n,nt.child(o,i).filter(us).orThunk(function(){return nt.child(o,i-1).filter(us)})).bind(function(t){return r.traverse(t).fold(function(){return as(t,r.gather,e).map(r.relative)},function(e){return is(e).map(function(e){return pc.on(e.parent(),e.index())})})});var o,i},ls=function(e,t,n,r){var o,i,u;return(us(t)?(o=e,i=t,(u=r).traverse(i).orThunk(function(){return as(i,u.gather,o)}).map(u.relative)):cs(e,t,n,r)).map(function(e){return{start:c.constant(e),finish:c.constant(e)}})},ss=function(e){return ts.cata(e,function(e){return g.none()},function(){return g.none()},function(e){return g.some(ns.point(e,0))},function(e){return g.some(ns.point(e,bn(e)))})},fs=Ue.detect(),ds=function(e,t,n,r,o,i){return 0===i?g.none():ps(e,t,n,r,o).bind(function(u){var a=e.fromSitus(u),c=ts.verify(e,n,r,a.finish(),a.foffset(),o.failure,t);return ts.cata(c,function(){return g.none()},function(){return g.some(u)},function(u){return Ye.eq(n,u)&&0===r?ms(e,n,r,Rl.moveUp,o):ds(e,t,u,0,o,i-1)},function(u){return Ye.eq(n,u)&&r===bn(u)?ms(e,n,r,Rl.moveDown,o):ds(e,t,u,bn(u),o,i-1)})})},ms=function(e,t,n,r,o){return Al(e,t,n).bind(function(t){return gs(e,o,r(t,Ql.getJumpSize()))})},gs=function(e,t,n){return fs.browser.isChrome()||fs.browser.isSafari()||fs.browser.isFirefox()||fs.browser.isEdge()?t.otherRetry(e,n):fs.browser.isIE()?t.ieRetry(e,n):g.none()},ps=function(e,t,n,r,o){return Al(e,n,r).bind(function(t){return gs(e,o,t)})},hs=function(e,t,n){return(r=e,o=t,i=n,r.getSelection().bind(function(e){return ls(o,e.finish(),e.foffset(),i).fold(function(){return g.some(ns.point(e.finish(),e.foffset()))},function(t){var n=r.fromSitus(t),u=ts.verify(r,e.finish(),e.foffset(),n.finish(),n.foffset(),i.failure,o);return ss(u)})})).bind(function(r){return ds(e,t,r.element(),r.offset(),n,20).map(e.fromSitus)});var r,o,i},vs=function(e,t,n){return Bt.ancestor(e,t,n).isSome()},bs=Ue.detect(),ws=function(e,t,n,r,o){return It.closest(r,"td,th",t).bind(function(r){return It.closest(r,"table",t).bind(function(i){return u=i,vs(o,function(e){return nt.parent(e).exists(function(e){return Ye.eq(e,u)})})?hs(e,t,n).bind(function(e){return It.closest(e.finish(),"td,th",t).map(function(t){return{start:c.constant(r),finish:c.constant(t),range:c.constant(e)}})}):g.none();var u})})},ys=function(e,t,n,r,o,i){return bs.browser.isIE()?g.none():i(r,t).orThunk(function(){return ws(e,t,n,r,o).map(function(e){var t=e.range();return ll.response(g.some(gl.makeSitus(t.start(),t.soffset(),t.finish(),t.foffset())),!0)})})},xs=function(e,t,n,r,o,i,u){return ws(e,n,r,o,i).bind(function(e){return Sl.detect(t,n,e.start(),e.finish(),u)})},Ss=function(e,t){return It.closest(e,"tr",t).bind(function(e){return It.closest(e,"table",t).bind(function(n){var r=St.descendants(n,"tr");return Ye.eq(e,r[0])?Ul.seekLeft(n,function(e){return xn.last(e).isSome()},t).map(function(e){var t=bn(e);return ll.response(g.some(gl.makeSitus(e,t,e,t)),!0)}):g.none()})})},Cs=function(e,t){return It.closest(e,"tr",t).bind(function(e){return It.closest(e,"table",t).bind(function(n){var r=St.descendants(n,"tr");return Ye.eq(e,r[r.length-1])?Ul.seekRight(n,function(e){return xn.first(e).isSome()},t).map(function(e){return ll.response(g.some(gl.makeSitus(e,0,e,0)),!0)}):g.none()})})},Rs=function(e,t){return It.closest(e,"td,th",t)},Ts={down:{traverse:nt.nextSibling,gather:Ul.after,relative:pc.before,otherRetry:Ql.tryDown,ieRetry:Ql.ieTryDown,failure:ts.adt.failedDown},up:{traverse:nt.prevSibling,gather:Ul.before,relative:pc.before,otherRetry:Ql.tryUp,ieRetry:Ql.ieTryUp,failure:ts.adt.failedUp}},Ds=q.immutable("rows","cols"),As={mouse:function(e,t,n,r){var o,i,u,a,c,l,s=yl(e),f=(o=s,i=t,u=n,a=r,c=g.none(),l=function(){c=g.none()},{mousedown:function(e){a.clear(i),c=Rs(e.target(),u)},mouseover:function(e){c.each(function(t){a.clear(i),Rs(e.target(),u).each(function(e){or.identify(t,e,u).each(function(n){var r=n.boxes().getOr([]);(r.length>1||1===r.length&&!Ye.eq(t,e))&&(a.selectRange(i,r,n.start(),n.finish()),o.selectContents(e))})})})},mouseup:function(){c.each(l)}});return{mousedown:f.mousedown,mouseover:f.mouseover,mouseup:f.mouseup}},keyboard:function(e,t,n,r){var o=yl(e),i=function(){return r.clear(t),g.none()};return{keydown:function(e,u,a,l,s,f){var d=e.raw().which,m=!0===e.raw().shiftKey;return or.retrieve(t,r.selectedSelector()).fold(function(){return ml.isDown(d)&&m?c.curry(xs,o,t,n,Ts.down,l,u,r.selectRange):ml.isUp(d)&&m?c.curry(xs,o,t,n,Ts.up,l,u,r.selectRange):ml.isDown(d)?c.curry(ys,o,n,Ts.down,l,u,Cs):ml.isUp(d)?c.curry(ys,o,n,Ts.up,l,u,Ss):g.none},function(e){var n=function(n){return function(){return Wo(n,function(n){return Sl.update(n.rows(),n.cols(),t,e,r)}).fold(function(){return or.getEdges(t,r.firstSelectedSelector(),r.lastSelectedSelector()).map(function(e){var n=ml.isDown(d)||f.isForward(d)?pc.after:pc.before;return o.setRelativeSelection(pc.on(e.first(),0),n(e.table())),r.clear(t),ll.response(g.none(),!0)})},function(e){return g.some(ll.response(g.none(),!0))})}};return ml.isDown(d)&&m?n([Ds(1,0)]):ml.isUp(d)&&m?n([Ds(-1,0)]):f.isBackward(d)&&m?n([Ds(0,-1),Ds(-1,0)]):f.isForward(d)&&m?n([Ds(0,1),Ds(1,0)]):ml.isNavigation(d)&&!1===m?i:g.none})()},keyup:function(e,o,i,u,a){return or.retrieve(t,r.selectedSelector()).fold(function(){var c=e.raw().which;return 0==(!0===e.raw().shiftKey)?g.none():ml.isNavigation(c)?Sl.sync(t,n,o,i,u,a,r.selectRange):g.none()},g.none)}}}},ks=function(e,t){A.each(t,function(t){pi.remove(e,t)})},Ns=function(e){return function(t){pi.add(t,e)}},Os=function(e){return function(t){ks(t,e)}},Es={byClass:function(e){var t=Ns(e.selected()),n=Os([e.selected(),e.lastSelected(),e.firstSelected()]),r=function(t){var r=St.descendants(t,e.selectedSelector());A.each(r,n)};return{clear:r,selectRange:function(n,o,i,u){r(n),A.each(o,t),pi.add(i,e.firstSelected()),pi.add(u,e.lastSelected())},selectedSelector:e.selectedSelector,firstSelectedSelector:e.firstSelectedSelector,lastSelectedSelector:e.lastSelectedSelector}},byAttr:function(e){var t=function(t){ht.remove(t,e.selected()),ht.remove(t,e.firstSelected()),ht.remove(t,e.lastSelected())},n=function(t){ht.set(t,e.selected(),"1")},r=function(n){var r=St.descendants(n,e.selectedSelector());A.each(r,t)};return{clear:r,selectRange:function(t,o,i,u){r(t),A.each(o,n),ht.set(i,e.firstSelected(),"1"),ht.set(u,e.lastSelected(),"1")},selectedSelector:e.selectedSelector,firstSelectedSelector:e.firstSelectedSelector,lastSelectedSelector:e.lastSelectedSelector}}};function Bs(e,t){var n=q.immutableBag(["mousedown","mouseover","mouseup","keyup","keydown"],[]),r=g.none(),o=Es.byAttr(lr);return e.on("init",function(i){var u=e.getWin(),a=Hu.getBody(e),l=Hu.getIsRoot(e),s=As.mouse(u,a,l,o),f=As.keyboard(u,a,l,o),d=function(t,n){!0===t.raw().shiftKey&&(n.kill()&&t.kill(),n.selection().each(function(t){var n=bc.relative(t.start(),t.finish()),r=Nc.asLtrRange(u,n);e.selection.setRng(r)}))},m=function(t){var n=v(t);if(n.raw().shiftKey&&ml.isNavigation(n.raw().which)){var r=e.selection.getRng(),o=X.fromDom(r.startContainer),i=X.fromDom(r.endContainer);f.keyup(n,o,r.startOffset,i,r.endOffset).each(function(e){d(n,e)})}},p=function(e){return!(ht.has(e,"data-mce-bogus")||"br"===ft.name(e)||ft.isText(e)&&0===pn.get(e).length)},h=function(n){var r,o,i,u=v(n);t().each(function(e){e.hideBars()}),40===n.which&&(r=X.fromDom(e.getBody()),o=nt.lastChild(r),i=function(e){return nt.prevSibling(e).bind(function(e){return p(e)?g.some(e):i(e)})},o.bind(function(e){return p(e)?g.some(e):i(e)})).each(function(t){"table"===ft.name(t)&&(ea(e)?e.dom.add(e.getBody(),ea(e),ia(e),"<br/>"):e.dom.add(e.getBody(),"br"))});var a=e.selection.getRng(),c=X.fromDom(e.selection.getStart()),l=X.fromDom(a.startContainer),s=X.fromDom(a.endContainer),m=Yu.directionAt(c).isRtl()?ml.rtl:ml.ltr;f.keydown(u,l,a.startOffset,s,a.endOffset,m).each(function(e){d(u,e)}),t().each(function(e){e.showBars()})},v=function(e){var t=X.fromDom(e.target),n=function(){e.stopPropagation()},r=function(){e.preventDefault()},o=c.compose(r,n);return{target:c.constant(t),x:c.constant(e.x),y:c.constant(e.y),stop:n,prevent:r,kill:o,raw:c.constant(e)}},b=function(e){return 0===e.button},w=function(e){b(e)&&s.mousedown(v(e))},y=function(e){var t;((t=e).buttons===undefined||0!=(1&t.buttons))&&s.mouseover(v(e))},x=function(e){b&&s.mouseup(v(e))};e.on("mousedown",w),e.on("mouseover",y),e.on("mouseup",x),e.on("keyup",m),e.on("keydown",h),e.on("nodechange",function(){var t=e.selection,n=X.fromDom(t.getStart()),r=X.fromDom(t.getEnd()),i=zt.table(n),u=zt.table(r);i.bind(function(e){return u.bind(function(t){return Ye.eq(e,t)?g.some(!0):g.none()})}).fold(function(){o.clear(a)},c.noop)}),r=g.some(n({mousedown:w,mouseover:y,mouseup:x,keyup:m,keydown:h}))}),{clear:o.clear,destroy:function(){r.each(function(e){})}}}var Ps=pa.each,Is={addButtons:function(e){var t=[];function n(t){return function(){e.execCommand(t)}}Ps("inserttable tableprops deletetable | cell row column".split(" "),function(n){"|"===n?t.push({text:"-"}):t.push(e.menuItems[n])}),e.addButton("table",{type:"menubutton",title:"Table",menu:t}),e.addButton("tableprops",{title:"Table properties",onclick:c.curry(Pa,e,!0),icon:"table"}),e.addButton("tabledelete",{title:"Delete table",onclick:n("mceTableDelete")}),e.addButton("tablecellprops",{title:"Cell properties",onclick:n("mceTableCellProps")}),e.addButton("tablemergecells",{title:"Merge cells",onclick:n("mceTableMergeCells")}),e.addButton("tablesplitcells",{title:"Split cell",onclick:n("mceTableSplitCells")}),e.addButton("tableinsertrowbefore",{title:"Insert row before",onclick:n("mceTableInsertRowBefore")}),e.addButton("tableinsertrowafter",{title:"Insert row after",onclick:n("mceTableInsertRowAfter")}),e.addButton("tabledeleterow",{title:"Delete row",onclick:n("mceTableDeleteRow")}),e.addButton("tablerowprops",{title:"Row properties",onclick:n("mceTableRowProps")}),e.addButton("tablecutrow",{title:"Cut row",onclick:n("mceTableCutRow")}),e.addButton("tablecopyrow",{title:"Copy row",onclick:n("mceTableCopyRow")}),e.addButton("tablepasterowbefore",{title:"Paste row before",onclick:n("mceTablePasteRowBefore")}),e.addButton("tablepasterowafter",{title:"Paste row after",onclick:n("mceTablePasteRowAfter")}),e.addButton("tableinsertcolbefore",{title:"Insert column before",onclick:n("mceTableInsertColBefore")}),e.addButton("tableinsertcolafter",{title:"Insert column after",onclick:n("mceTableInsertColAfter")}),e.addButton("tabledeletecol",{title:"Delete column",onclick:n("mceTableDeleteCol")})},addToolbars:function(e){var t,n=""===(t=e.getParam("table_toolbar",Ku))||!1===t?[]:W.isString(t)?t.split(/[ ,]/):W.isArray(t)?t:[];n.length>0&&e.addContextToolbar(function(t){return e.dom.is(t,"table")&&e.getBody().contains(t)},n.join(" "))}},Ws={addMenuItems:function(e,t){var n=g.none(),r=[],o=[],i=[],u=[],a=function(e){e.disabled(!0)},l=function(e){e.disabled(!1)},s=function(){var e=this;r.push(e),n.fold(function(){a(e)},function(t){l(e)})},f=function(){var e=this;o.push(e),n.fold(function(){a(e)},function(t){l(e)})};e.on("init",function(){e.on("nodechange",function(c){var s=g.from(e.dom.getParent(e.selection.getStart(),"th,td"));(n=s.bind(function(e){var n=X.fromDom(e);return zt.table(n).map(function(e){return wr.forMenu(t,e,n)})})).fold(function(){A.each(r,a),A.each(o,a),A.each(i,a),A.each(u,a)},function(e){A.each(r,l),A.each(o,l),A.each(i,function(t){t.disabled(e.mergable().isNone())}),A.each(u,function(t){t.disabled(e.unmergable().isNone())})})})});var d=function(e,t,n,r){var o,i,u,a,c,l=r.getEl().getElementsByTagName("table")[0],s=r.isRtl()||"tl-tr"===r.parent().rel;for(l.nextSibling.innerHTML=t+1+" x "+(n+1),s&&(t=9-t),i=0;i<10;i++)for(o=0;o<10;o++)a=l.rows[i].childNodes[o].firstChild,c=(s?o>=t:o<=t)&&i<=n,e.dom.toggleClass(a,"mce-active",c),c&&(u=a);return u.parentNode},m=!1===e.getParam("table_grid",!0,"boolean")?{text:"Table",icon:"table",context:"table",onclick:c.curry(Pa,e)}:{text:"Table",icon:"table",context:"table",ariaHideMenu:!0,onclick:function(t){t.aria&&(this.parent().hideAll(),t.stopImmediatePropagation(),Pa(e))},onshow:function(){d(e,0,0,this.menu.items()[0])},onhide:function(){var t=this.menu.items()[0].getEl().getElementsByTagName("a");e.dom.removeClass(t,"mce-active"),e.dom.addClass(t[0],"mce-active")},menu:[{type:"container",html:function(){var e="";e='<table role="grid" class="mce-grid mce-grid-border" aria-readonly="true">';for(var t=0;t<10;t++){e+="<tr>";for(var n=0;n<10;n++)e+='<td role="gridcell" tabindex="-1"><a id="mcegrid'+(10*t+n)+'" href="#" data-mce-x="'+n+'" data-mce-y="'+t+'"></a></td>';e+="</tr>"}return e+="</table>",e+='<div class="mce-text-center" role="presentation">1 x 1</div>'}(),onPostRender:function(){this.lastX=this.lastY=0},onmousemove:function(t){var n,r,o=t.target;"A"===o.tagName.toUpperCase()&&(n=parseInt(o.getAttribute("data-mce-x"),10),r=parseInt(o.getAttribute("data-mce-y"),10),(this.isRtl()||"tl-tr"===this.parent().rel)&&(n=9-n),n===this.lastX&&r===this.lastY||(d(e,n,r,t.control),this.lastX=n,this.lastY=r))},onclick:function(t){var n=this;"A"===t.target.tagName.toUpperCase()&&(t.preventDefault(),t.stopPropagation(),n.parent().cancel(),e.undoManager.transact(function(){Oa(e,n.lastX+1,n.lastY+1)}),e.addVisual())}}]};function p(t){return function(){e.execCommand(t)}}var h={text:"Table properties",context:"table",onPostRender:s,onclick:c.curry(Pa,e,!0)},v={text:"Delete table",context:"table",onPostRender:s,cmd:"mceTableDelete"},b={text:"Row",context:"table",menu:[{text:"Insert row before",onclick:p("mceTableInsertRowBefore"),onPostRender:f},{text:"Insert row after",onclick:p("mceTableInsertRowAfter"),onPostRender:f},{text:"Delete row",onclick:p("mceTableDeleteRow"),onPostRender:f},{text:"Row properties",onclick:p("mceTableRowProps"),onPostRender:f},{text:"-"},{text:"Cut row",onclick:p("mceTableCutRow"),onPostRender:f},{text:"Copy row",onclick:p("mceTableCopyRow"),onPostRender:f},{text:"Paste row before",onclick:p("mceTablePasteRowBefore"),onPostRender:f},{text:"Paste row after",onclick:p("mceTablePasteRowAfter"),onPostRender:f}]},w={text:"Column",context:"table",menu:[{text:"Insert column before",onclick:p("mceTableInsertColBefore"),onPostRender:f},{text:"Insert column after",onclick:p("mceTableInsertColAfter"),onPostRender:f},{text:"Delete column",onclick:p("mceTableDeleteCol"),onPostRender:f}]},y={separator:"before",text:"Cell",context:"table",menu:[{text:"Cell properties",onclick:p("mceTableCellProps"),onPostRender:f},{text:"Merge cells",onclick:p("mceTableMergeCells"),onPostRender:function(){var e=this;i.push(e),n.fold(function(){a(e)},function(t){e.disabled(t.mergable().isNone())})}},{text:"Split cell",onclick:p("mceTableSplitCells"),onPostRender:function(){var e=this;u.push(e),n.fold(function(){a(e)},function(t){e.disabled(t.unmergable().isNone())})}}]};e.addMenuItem("inserttable",m),e.addMenuItem("tableprops",h),e.addMenuItem("deletetable",v),e.addMenuItem("row",b),e.addMenuItem("column",w),e.addMenuItem("cell",y)}},Ms=function(e,t){return{insertTable:function(t,n){return Oa(e,t,n)},setClipboardRows:function(e){return n=e,r=t,o=A.map(n,X.fromDom),void r.set(g.from(o));var n,r,o},getClipboardRows:function(){return t.get().fold(function(){},function(e){return A.map(e,function(e){return e.dom()})})}}};u.add("table",function(e){var t,n,r,o,i,u,a=ic(e),l=Bs(e,a.lazyResize),s=(t=e,n=a.lazyWire,r=function(e){return"table"===ft.name(Hu.getBody(e))},o=sa(t),{deleteRow:(i=function(e,n,r,i){return function(u,a){var c=St.descendants(u,"td[data-mce-style],th[data-mce-style]");A.each(c,function(e){ht.remove(e,"data-mce-style")});var l=i(),s=X.fromDom(t.getDoc()),f=uo(Yu.directionAt),d=Dn.cellOperations(r,s,o);return n(u)?e(l,u,a,d,f).bind(function(e){return A.each(e.newRows(),function(e){da(t,e.dom())}),A.each(e.newCells(),function(e){ma(t,e.dom())}),e.cursor().map(function(e){var n=t.dom.createRng();return n.setStart(e.dom(),0),n.setEnd(e.dom(),0),n})}):g.none()}})(ju.eraseRows,function(e){var n=ao.getGridSize(e);return!1===r(t)||n.rows()>1},c.noop,n),deleteColumn:i(ju.eraseColumns,function(e){var n=ao.getGridSize(e);return!1===r(t)||n.columns()>1},c.noop,n),insertRowsBefore:i(ju.insertRowsBefore,c.always,c.noop,n),insertRowsAfter:i(ju.insertRowsAfter,c.always,c.noop,n),insertColumnsBefore:i(ju.insertColumnsBefore,c.always,jr.halve,n),insertColumnsAfter:i(ju.insertColumnsAfter,c.always,jr.halve,n),mergeCells:i(ju.mergeCells,c.always,c.noop,n),unmergeCells:i(ju.unmergeCells,c.always,c.noop,n),pasteRowsBefore:i(ju.pasteRowsBefore,c.always,c.noop,n),pasteRowsAfter:i(ju.pasteRowsAfter,c.always,c.noop,n),pasteCells:i(ju.pasteCells,c.always,c.noop,n)}),f=(u=e,{get:function(){var e=Hu.getBody(u);return ir.retrieve(e,lr.selectedSelector()).fold(function(){return u.selection.getStart()===undefined?dr.none():dr.single(u.selection)},function(e){return dr.multiple(e)})}}),d=co(g.none());return Wa.registerCommands(e,s,l,f,d),yr.registerEvents(e,f,s,l),Ws.addMenuItems(e,f),Is.addButtons(e),Is.addToolbars(e),e.on("PreInit",function(){e.serializer.addTempAttr(lr.firstSelected()),e.serializer.addTempAttr(lr.lastSelected())}),Zu(e)&&e.on("keydown",function(t){cl.handle(t,e,s,a.lazyWire)}),e.on("remove",function(){a.destroy(),l.destroy()}),Ms(e,d)})}(); diff --git a/public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js.gz b/public/assets/tinymce/plugins/table/plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..5cbab07de8988860297927dddc5791b302cfd8c3 GIT binary patch literal 37645 zcmV(;K-<3`iwFS6YM5FA1Ju0>ciT9UDEwDs-HeAE!-_q7@3(iUuzeEe*`36BIO%k| zy*ac*+e{=tAwfT4>%V_hg$Dr=l$G9@-MObv#}x5kp#T)B3ia4Ht@%V2f=BVqu&(k! zCCg$WhvSQ^9OO(g&Ppa&!Rk~N{CYmgN3|?wqeCHP)u_xXF}uj4p(%SatIrDlD&yH% zUJhfHrMCY(zA1BAmwe!SQoqTUOEyVwxDboPDP1xyvhplhua79kUc`JMs@!S9<jO{J zlr0vs>xkF08H112^PI~nR(<hGW?Uv2E2i+akk=tl@+AYDEoS+XZ*?}S!k^C5G?mb0 zU6y_)r=pAy*D~e#<=|miX4jDgV>HY8nLOX#jTujO$NWLNWX!j=VtK^3caKwBcEpdz z-4UA)@f9D6S()yP%Lm+aUqbi%sB}9ok7;d)RE_{alT1cDHlNE~WD3L~7jmuX+sMQ7 z09{Or{EjZ<c_}UjIIJgS3B$~>8Fd$&FIXsSlFepbA-(1KMP4RZv;hduW|!G@g+F$n zWR^}wRLUxNQf2Hk?XIXP0Gvi;3izH)d)5Mes;H6~{PSMSb9#6!c%D@3ESCpm!qf0N zqte6kntx4X+BY<+^tgqz4vKDXhdDka15<y1ILW62!3P|G84aN?DCh8x{v?}cus<37 zlV_82f3Kbt90trzXPJ~a$0}DvC2^Rr^bp;Euwo_w!BC{ON*)}<NMQrVqUwE40DXd% zY|_E_(J|~l@gBAyKT9SfvuUFtr#^5L2Pa?hi5#7ldHy}$-1L4%B`o@w%{@reh78du z#sja#684RK-AuH^mB>VUEdWuqRX9~C9IDZw8G4aaW|7SFB9Y#5Xr^8Iv&Pk|b-SNO z2w%Kp;bK4#Kpnw^_BX{D^40-VQG=$%P};>H&0;9cVkqrm2;*%}BvUj0VepEIzGRk2 z5WRX3v(O;aro=JyudUo&T%F=!1rrkuxALuFJX|iv&2l(PZ?G(xGhBtZD@rjB5hEmb zFwL+Xakgtd%})!SPxq$DT#>Ow8i|y^8!bv9g}h$C27!842dA;uBuH!Ct3iedkr?5Y zS2fsq8mzORUq5Z{F4;w^MsuR%`n-T`&>Sv2hNZtV77zGXz%fFbsz~!A0jCrElgg+7 z&H@Ihzf{7i>HWeEbe-En??I^!z9@&Y4p<ai2bXt3w+$!gPXH0$-u9bb_clE`#uE|7 zVZU8I5OgZq;lO!_BPpS$%}qX9)YW-Z*g^3nyZW&~6{nE{T&(*!8_`;8j@q*k*EI6| z`u%ThaqJ&^N7`aK=ekpz<o(WK!x6D}X_#pN1oeF920paWS-903^L(J-h~xIrG=xSY zO*jUH%;$sQ7T+2UF0%>_COOFXAj59ipx}#ICQzKm<9*FP0HwiR4gP_C9{w<XHg+}u zJDo|`*wuL2*jcj29XwUDVv@6m=?&7`3q=@D=ueqkvPD(`0|`JRE7uzQ1Dl2w4P4?u z(d?gE?H^bnHSL`}o|Lg#bF~@s%_6HRAp56T0b~|Ph$ghx?5q^^;?Z>r0vPZPk|4ta znqzg`fQGo(IgSl{@J|6i)(w!wgL+&TATt26I0lAZMp-<b0519FW>hLLMNAzaLpxzY zz02%$A>xJZbaS(50<=NXycX~ZK1HPLDu&VUJ+na)yLA8)a2S+c56)R}3BTP%j>9JU z0I;g2v%aP$tD6#I^dmIjMse7<0LMfRM2Hv&i?)Us;J02Nrjjdr_`cJuSpabtF5(97 zG?M6mJ~T&m@L0H_Un9kv5JN4v%nDv5=juf6VSV*Tk^0zaKJ>8Xpp_UPzyY4oB{JWY z&(tas^w^wYJ9Z#)q^n0UL#c}xq17}V2zx{0w^C{6K<(?OWaSoMikl_r5cp|vdYYFx zpY({G*R9o|iO4z9D&jwYU>pj?mG(k;vs~vS;zx>CffGm_u%!#=qAo+C6mdC~C}nVo z1klSzSQ}U=T-{~H&+;{pt7J)qJ_%fR(;M&}c{UAkM=o9JY-l1$Aem*A{1a^(rr;Ra ztgmTQq*^fenqOCatd&`GE_sA=XpqPG=sc?qE;$@<i@cP`|7>nbHQwgfmdm7IuX|6V zukZyu&%9@zx#Bp8#1@Qr#Dg?6aW|GBeeEv55(IPImBb&=1uUCl^z}F`Mi+`=JqdPr zbR6t3hedW{Cl-Hcy7wp~-8~6z29T^^D&M3xCq-K<@J0l<=^0jz!=mpCbt)o@3B9r# ziDw}lgmfgo_T?dWqaL&f5e`hBsVGNXBvQX!+Fh#zhbK(di&_2(IzCuU?$?}PJX>Lc z74ffWo?FDf4iJA_xXD*`k<IG7N*=MQ_#RZ9Jc4Kaalp!pl{&hB_ADo!!ALF|t|9(b zYD1YKKO{~Ext^(^pp7*|a=y8F2TvI94T-%QCVn$T*jBcysLC*rO8^^TgVFt(-oPQH z1h^NGsS<-QtqCr?)Zf9EYChqef&pK>hJoQ58X&%SB*ZMwIKDekkM#P3As1L+X$KWO z)u_V~gGSx=`~(&|^^Q-dt#}nyil}2~Cswo<>b*o66NvUJI2*sc%Bw2t(BUp?J(~@n zc3qVDbb!lc0OIQ_Tn=AE!J{D?3}X;x2bXZ35wl$_@(FCod^#GuH;<|zRzcqT72w)y zO^TzMSM_4ig(?8k2dWAqF+Ia>8K@~y{d>?s->|-mX(n@+RhX_WH@orcNKYhy))g-f z&+`Gv>;o9gY+4QGbtMNUxfLu%gI}`>KP_o6<A)<89B^8@o5FlYpSOJ<qP?iP!ec_V zziow@fm)e}JX8pA8ss6Y?H`y~wejICU{VSk5^O@;A7(IvU+$iAn!d?-KKc5%UgTAP z;ljp%6r^)5Qe4iBKalo(-Q3iC+}18|atfC#7X;#s(35CfiOHlcVV(p)D9>S<1n^o0 zof9!X!HuRdnhcI$tlrp;6;hY%8_<IJyq4L?EO)gzbl1_SxK}98<x1r_N9BSYxzWwH zH1jBb>lzyk7u;DrfBm%-{A{4e0?woD1g91jOAVaL;K>ziO58ZZqrYyMZnyq=3?n~- zRrS{`(?4L*b^uEn$KoEPdWm=Va9|BnN2e-Dv_^3ZmZ-txqwFkrTIc3|0N7?NWAeVy z4u2E1+J}nZTn{oi0Llt4;B0G17E*=<ekhx%`NsXJ$MACG6NYGLnhoLjWZh!Z(-2^W z;%3dG>Z;+Fj3n@e7(@7tYoBDKFe~$LWMrX;)LZfG?aNU^qKQKptD_z_5pp|FF(4o~ z9VuaQTxk6Lw6nSSa^%ri;P}T%L$GpI<D0rQr#Qzrr(G%+sH{2U<`DLIUL`7^Dr`@) zDb#ynSQPwDy@bW{H2pTR3n&_17E^gXWW)2kI6KFK_`6>Yi=~3%iI~-M4(peF>6F`I zDE;i0UO^ci<<I@s`7Fon0EO870#0%2f}UdbasA3{2nTt735`CaH`4;@Re-)KdCJbp zVw!ws*>qaMEG1t+N){#1sLvo<gJeDhUf~D6(i-J7m#E=+t{-4CB_A2ofhC^xbvwyt zGsI+-8y-ZLVe6hYW^lUe6*b$vdu^%EZ`p+gzd@sE)zmM&x+emdtX4f(rKNmFc%sLB z0lRw$Csk3MtJmro-@`HYEbU=xTk7~Oy?QOCcwxrz?1pm|+aYms*gm}pZ>D1IUQ3a{ z_9?x=3xVfyJ`0l0NZ#H~#e~RpJerg_P^~8l&47#IVn`H~j|$H7^7-Mbmub#6IBv%M z^I|qd;Hn7d4hN!UejC!Us|SM+0rNV_)qt><!Bpgm9XZb~a^y*XBbfpD74V8fCqzh9 zRU+1X)eHf87P$~8c^wCS*mGp88h0K$y_$Yt8?D_DRz^62Jw1k5dPYxgfOC+2ioUZE zR)GT?W;Fs{M#1*fG^4wxcm$GR^bF_uxAgzAU()|z_tIVVbNX-WZF-OWp8mq}o{LXJ z9`by^7`z3x$^HHN?XA*i5I!|h_F)UiC6jr2<KJgDn2`RplEz6Q)d=jxJ?cmIj*gRu z1Uw&otMl^uJ&bQ6Mfnhqx|n?$X-u_lEWI;dbxW($9ZjP`r=oc#;kd0f+&yNMOS(|= z4e+~qrQR5LdYZMX*$yuAldpwbtCL{W1`_doJy1IJu!{~6d4yCRxVu?4`3n0klLc(2 zO1G%!{+;Ll<ym!fU$l5zlZzL*H0jRtq9w%YJF(DJrcwdHLNWK=v}q%eiV-THQRinB z#$#9gSLUfBFmD+3!6h^jmwW0@Vq|D!>y#?(yr{;*IEtC*2UfZhw7H3N8oBO0nUr}; z?F*&B%6z=FRmME!N2p>wcHl1ZG`tC_#jF5I?J%bTrh=|n>u{SQSDJWSX71bq4Od4J z*JK;zArcrb;6TJf5A8J&6@wGCnuZR5Sst)fsB?9Ek(}p4<50StjWj|Ie!j@c{IOnO zZ$wpS0eBNB=PVCj8c%36@Ohw-j}P`gyn6Eb@bjC4_b(1#9K8O#fAIS7;fvQ#9)EuH z8+20TUE2!~rR;56z-)`(-U6C7c9=|i?1oV950pKO?B2T=klu1vdb?3_lDUT|M>4Na zo{8<1wZW;Guce*F4X$h5%(E||Om^73;P`i`rLVviQtF@xuP+ur6mZQ9@8R`kY<YU* zsiR%sl%l_*E@T>-VW_ji&}wNOo*xZSt|3B9oxu^p>tvoIH`%?1Q24RBj*%2E#bsXZ zXL!Xj4r$z{NO4Yck|R+a^p%TCo=o#4TflCA3S!x*0LJ{hX9aZ!CAC8DBCuTWSggwu zX5MgJ`ez~;-UFfPEg$J8IJ=%q&+_CP_5nVS_*VeuRHDTOzEzL<{fj5`?!^=R`v4@J zj9$@`eyazB?-#jx^*%ez%7SXDN3041H~~}}d~}C-kw+GIyQ=IU&hn9N8j+p|rtBhT zIS$7)eWGE-Y@&wbmgu1YeExeF9?(%5n)_M}5u{-~Jf~~{guYTkbX(}5qCp1C^RGm^ zfp5Qt9}oGo6a`4*SMcM#m_a=#d5_DX%=1U@9}n674=;yz|A6J7p-lGk=u%H!aqu30 z4&kq!VGTXLz1Ecu-hZM>@K;xQS@8Ob-qDkOtH+A(uXIyAVtn;JSL@<%<+^zHqwC^b z&Mx)1ocXzgSu2G1ipChTOpnhgxrWL!8j)LFjSN;x<-bQPz>?5obxN+F8#J~%sl49b zBa`qrOrh_fG+Ox>zDXKYc~(yF(hV{3uxCX*RtGL|KJ5j>Q^2R9gOOb)@A9+!DzBRB zayuQsr)NMo&0KK09s2q|^xfAz-<4ZHdJlRE^DU4fp7a%ts`{id6S8EF)~L6`?ENY> zc@vU%hIp})cdur3H_*o}o^UVzL|X)b8vokI-%tl2ByLz`tkv7bD0yiZIOA4@8Y^?m zS3Sf3Rq;G{?7m!Gr9qA9dC9)P=0|PbEaS4zbiyzN_y4$e6CM5M&GPtf@$&vzOJ_^W z1v1}_8MwLiO3^S`GuI-%y)~CkFtBn@By<N$Y7?M{@;rG39CAJv7x~LPn|cP2E?lqF zg5G;Vf6a)XGu`;G1V**D^-JCQQKxmztGZn8(|Phb*H(<G)q3B|lY^$&RE_y%-dM7P z8gK7zAd{nwk!U{vZiA+s&V>EvAJx_^{C^K-Ylvs#>~OtCrhd6beYgKfwkTva>$(4Z zgE|l;lLhX1Ur=eAK3U5eDLyO~h9Ga@nu$kbd#qGjPxJKt=x=+PDE)E&kHKDaw6pym z$6N6qBl9%++kN&uU-RDiTi)owr80Q<lBY*ENc<Ab!TGc@IYJPSEBfPp==1mPA2W4G zgs|g&FK0vS=Kc_fLhJoRb5fmxN^?M+0u)qorC=E1DD(&nw;39P`p6&m!zg^3|G+pJ zcsGJ2r)7r44P40ahG3dkMczBBSfRW~f`vZ-EPi7M6sq+awi-I(xKL^)ybb8noIoLt zwg-I{obNf_1reibyR`yJ2m_iM?qA$q*SfaTxe*6?fSxSsfv5(izt8KTFzQ)`9VE`h zNioAEedh{2W}lmlW?6Y>Xux0s%NIhCW<CEHaM_C_iw|P5*IpaN;v5eBz`%+{HbpFl z;JKR~L9G>tH^u7Xz0+fdWMv%(Tbje}!I&<+8(So8xJ$PhT=n!RU;?h39>cI|QN`(U zrdj-UpG_MpzB#R`nu}^>D=X)@+e1kP!FI>&Iq*eVvE|7WUvd;ca_`+|6evChwMoW_ zk!5VgDt5}IY@R;PN2cp2W@q>tyM*UO`Y?~?aMmdIkrOLjf$%=!b<EDwuX%K4D;zcz z4yl4+)ph^L0)S1<*)+c>CZrQjBAzbL^cOg_NT%ng8HH^SA$dkU%6(kS_Y0+PDnVvT zrBg$oJLbsBr1<XN$fQ=Ia6}3ombEMW??9zlDsFG<+uO{1S<{E++g0=J+gq<kcA8eu zY{sT39~q5DM0Sr2uxO5bUr{5c(;KMpCi4VBL4x-i++gnO0$(4Zs#ChJXZX5P`IIV) z8WxxHwsHk{X9QZ%*U+LSAV2w7<d<&Ssj?mU01Hv8#(?qZ7?1GmqBzT>C`UES_rtSB z_b~W~{1md*&w2$X(%RG9(9@EA%F_>46pYO>9icWVio>2hv)o)uG2Kna?Z>;LfyLLl zE<p8ni9RfrsFncAZ!qxuTk<SNy%}0|qwY9aHIR{0F|x3*c}})&!Ilq4%Gewjyb0-U zt|Ry$d8b)+{1ZZuNHqLgvR{JSqrJkgH*~Ni^U|oVp|^Wsb&-b$eNQ4ssQTt~XV|$R zVL$&+M<r~0QCIJa6BJ9jy}kXB-gtf`dwcqQjh@scpLDKfy}P|!rYqKs)2am-Ka$5? zfTZlRq!6d4RgTskT&6cPQOPf;e?HCXnWSylI}(3hM^2k@XDQ&cn;SBHZyM<M7x!M+ zX{^83>HxY_izB(0J3beIC3!C_Yblieo=38!)S`|e9&%XxEg$9IjMJippz5_XM)Sm{ zO*eZU`9v4z($WHS$r<bWuF_fe<bz{>xz}T3W3KF0fMcmaT|w6%!gwb!I$bzC#V2K+ zeI1u+v1~jhE484jejMV$`n@fgx+Fx~Qpo`BHhkP^f%ORO5pZwn-IV+c$1yF+H)?X% z-;-{$?jCTy5ggz{>#xF5Bk?m4K4+UJZ*%u&un%haHYejv*q{JN@_VkHlU$+(zmjAf z5>z8da_~^z6sv1>$v_jOK!2Owl5Ij*Wzo~Yl6eL!tJ=0KUGOF{3%iE>?(S>u*w0BD z<zP=rqFsQ1M9N63<4f6hHTqC(XRZk-U>YyIL&}nzoRm@5gs=CG@?+p?lTzvqaT5!m zeKa>Ov+KUoQ8#dR?@k;W$G)dc>k{3?!;t|r;?O4JHSprTUVX{xJ6j>wx@4JLQ)^Sp z#s+^P(@aM9Vm70PpMj;MhhG3|Fnp2?3dzV)xt7X*A-Mybk5~!qPz*_*NaXy`AZUh9 z=4?nR{IxIU9lGBDnj@gU-QEuW*F@DrjcB25wWi&5fVaDmWBkp5FUFtRF~I)T*SS27 z!!}nhl$AFHUO=nfhf<a!AR}a_Js85rhDkE`s7%N~h{0caxC1i9a_zsNZE;ddV{&c` z%d27zGW{?f<GqNqwa`*&i&Ta4?)av%VI}GM_G~praOQQ~>^5z=uxAgA1f9@U_GLV5 zqYZw0t4!K#*W_RAzM!N199Ga|<{QemhXVR-T6QoqO)D1WV2>nSsvM)3gm`4I#%@S2 z4${Y5;-7~-mR4p2Z@PxGSZRtbp~mA6FqWK2q<6_eYDIagQv<RpY>hcnp&<JCqh_FE z=fbpWRw9*InY1KWmKm>3^RAcdDN0F=G2Z5;_d>!8Z9(ktF3oiWE5;&~F!>S6yhV!6 zaT^PCY%SnvP7komq7r^9f$Ku1zMy4%ZDn(`M%Km;EsIZNKkGX>5!35&W8n$omR$?a z;UlOuD5{o)%{6eTVZQPb79aMUTu=ZGY@VC|!Qu222q}U%Ln4L8fdQ@IpOO}P(PO=Y z^0m(ZBMgp~9PxK8?{MNX)75{Bsd<ig%8e;MT63eHgMD$W&P(m_cO~0~h>a7hj4l<N zKvj@S$@nC%(9SLCJ!UmS$BiUb(G3?}*aX-`CWB2)O)^Y#xuZK<x@aLGBCjSnpJvE& zU&BfJzJIiE@{@nSI^(>OBU>kYrQPrmOCras2Y=;``Ht@H#K)D3hPyj+Q53$0R)|se zIAc>~u&-GnM&7A5ni2Y1?pgo+#1m))EKT9rHzI+>_Dfvp?<6~v?6G7ICHpGb>+UIM z1SMAr^1i^)k<=HN#;&vjB2ejxKiaFKArWP)JUENC_okMOuz-Z2t}o|-OnVn7nm%-x zXkrg3_!(fg5k9)Y$P;;oQJjk!WgyvM)s??0jm_1$IJVv;5Q^5ISJc!Y#dxPgiIB!> zG`8|$8(-rlsE<`RJu<9yXoo)OqesbW;IwC`2=284ht(R|3AEjzwPx<kHcjqkchGj$ zuA;pI7pZPZ?47JF$(G#B$>=3%R*@3_4y3a&lP5sB-t-DLj~Z&U9x-~c3d>L#A@T70 zM)qK)fk2n9O}=_NqS7BDT)lJ)2SRjfjpad|1D4HNSh8Qc7*{*YGdd0s94!K(0>@Ii zhwi=CsbX2tEY;9T87D8Cc|?;F?GQO!DX0!fM~7EyrPf)$>LEk+Opau)M&`Y9b{NL@ zrA&>2_Z5gY@|;P$`uWy+jj<!2_Iw(?Tjej{%jXg$4=Q83sJ!@&qCh_Di9PZwurEXS z8h&+n%+v~2YLPsAioZb3qFEP&9tAGiP0waQ1%;5KMw<7UaP)0E5p}swZC`@C>-(X) zu)>%1B5P)a-~}di)#yq)FuXBX4?uD{2ZnclHRdMSLOXRq3-|{~C;mMZLK05%Y-+!5 z2m21e_$C?3Bgs>#JmSI|;i;ZVp`MzU86QU2iUL=l?MH~q|1L*3U`N%Xb=)i<5g`BS zE?-|c>+<TfuWX-stV(*&12#Vh8>#Xv(7(`6HdSB%c(h{L47U0ZtYZ-9a4wA3U%b~{ z<V_(i_GA}E(KNJvi=l>%QzJEO(5k%ZtTL)8(5`-fzEZ2HKKHUCIKG^9O&R~+9y!MO zfO9C<!YAS2x$Lu^g!PXWlpn*KmDU$3&NmL*tSTfqpfrLAZKw}G+Rkzi`7#+2`!Q6m za?G)z_%QZf$gR6HihGa*O}Y7e%aqWtfi-j`kDjA+UdPA&EkM1sWh3Ea>4%YVY=uts zO%L){BRz%mtY-zUAfZ1tf!-$%oY&(CFqfv!8I;Z*I30{<#xbKx>#YepO%brI8LMId z^7J^(VCb(hc@FFEDiW;P+Krcm4KxOFs(N<j+JUrSxijlH9|~Cx4KjE8M9Tbo>TEJW zKVR2l9s|kF+&9DxkjAWs4#GO2ZlV}bjs;d^_uS2_i?z$}(G`-+=RJLYlwoFw4(J9A z&N?iu%Di#u-Z}O^iR%<US|uMP`%<d|H555QQ;Q$n2r7=5QfoYu6wt*)3<;}=D|tQh zZmZDeHmt|>)VS-ZY4_j1S6W)*_WpyaT4=A8v^MgHj{boGFW}sJhFT&!L{h@&G2wS@ zfGH(q{MIHqD_SdEV$%UM|D}&FH4@4v-1h2I_j(9m=ZkyhgJ%u6gd5~chr=cNd8HB< z$k;v7mbUNN%GglF;Ix~Sip2UY@`7S<y`~97YX~SzwO*Am1u<0PnpC94OS%7B>xqAn zc;i>)<we+gvpJxs^^gE*_zd3zaPM5|c}vdmM3QmS5Vc|D^1q;z{^Tm9p_>EZ@v1-5 zRj%U&HwxR|q&~dd$#TCKFT<*D|9iR{)|~koYnz*7#s4iIp$T@>!75a+xN}}B?fdFw zq0AStzkM-Z)G+_=u`#TR(2|A&XE?;0^V{1?STv;k#a&P)t!1p0&%(J85d_Y=>@xY8 zRLC%q_@n2Dcl@h6D>nAEHfCwM3LC9u(IpsL6;)IcL#64L@aTk2Evk=5`98KT<XkeL zG!=*0nZtYkVn_z;b9{2+M3(vKOkA$I-BVZTzhX#`f7*4#7&aUNhvs)Y5R-`D7O{;) zzPb5}36{51*Au_DDOe*?<n0bQ#>dm9Q5?vEe3ZjnS=%UPRaWGQkcRJpvc&=zE4uY| zjH)D0Z%(MU<ady=PP?J=xMwgF8Iwh4pRRx$1LHSwvfbCeOZysV9fH>VZew#0`mE{L zo1c6Yp16Z2g^ncW`YFIp@kal{*ZI6Zs>`wyCQz3$qtAdH*`VLA8jKkx`AAi^9|=uZ zw<%{f2+<Dt>g0($Dz|r!$Iv5nfdOJy%!TPv2a$`N@Te{Lbo&Ot#ft9Qja6mS7WO({ zVT)!ivpj1f_m`&Jdc{*Pg!Cq#FIrhR%!-k)$oB;YMo|JaW_RCim0at%^chrgR`b@Z z8=(De#?rAP;ohV&)hl{D`(|(Rf~x>D@Svj7fOw+cWLFfAhGjg&6*;!c6Jx!c_ABum zVFr;lPru;4W@qUKJRg+=8O_ngIV#gBnjiD@ELP%8JklYSP!fV8LBAx`O3dn1uq@p{ zfsJV<fLmFGwIb<ITnRhn&;#z@RBkzv-1aVovsIsj;#n%T95HZvcPt+idqpY}{!<3b zSC(Q(`3LnL0Fumpn!u|`I>TU`fbB?QC`RM#p*&BxkP$__13XNfUqg10k`m0fooRG+ zs}!W?o?t>KxPW!3m#QZ}OBFxV9LjnMVZC=SJ!xKQOe>*xLZYteph`D(LD=0HpFYUO zr%*71BVMg4w9B6Tga+ML`q!x{gJng(RGI!2(Lw<E6E^USom!T<Y>vCVNTd}8AwQZO zJL{=-PWvJ0ZJSMBGpFpN1n!GPV$YT*4Q+{Ws^U0-0qw-gXwJ^qf=zMIIjhnIjIjxe z<|!*@S~1)k?AN&x^8)19;AW@pTvZlBK!z%dpv}$7qSX{=tm<C6P-!i;3z)}wHVQ27 zwN+0o-2&)P#Y1bow87EdhN`{|R?U}e!oxya*H)UWXq3@5vKF&o7Mcn6LMd^oAhmLq z2vS3ob*Nv5Jyc>01{J~`LJ`ted<v}!r#zi;HV=QW;+pb$RC<OzHH^1ir{<GqJdNHt z1{v%Sjtx9RhU{_B#_b*1Y_tMESxYomA@Wd$jQ81%FLo&P1NGVsFSbuXE@#)6oM$lH zI>hjyN@akNAk7<!wPnZnmH0Ph**er>j*{n+uQGiowfDg0<}U7*hb=!4FUGYjudTm2 zU29G-nvrw0V+XrT9+Od2APVbULxWa>GP}HUcpY4)5=s7oryYzM=(v&uJskAbQ{_~< zI}oT+<<=(jJhV=S#T;F$o%@2l-DKf+-Qhl)Ycz+iutr!bv>V8<T=4XWzRHl&9<vjk zo^y5?;I<m$ubg=x$yJ(^9rAG|q1wQ7d)qiY5C6Ezc7~J_rjhKBI@(Lg3(gvBV1gC? z111M8mQAE(lfOk^{uZ&lZH><{8%D2*h0<MfZEaC^%n0gLW&{BC6<=|+{it<0c*$1; zqrc|5#*)4FGDs=!q1Lf#XU$=$JEtp<_I=)?yPI<_ufv;;B&;Mf9qh2tFp;pX)l4M9 z=PKGOd)Jqd?2xaQ;m;jmIcy}}C40=(r7bz~cC}B<z4{H_eIDY{W&S0vbgT@4N8#Ey z4#b^Cp$(i@1A@IVcPrEyBw)w5@ejbj34-H3%jdY+Frp=fmQ?XLPX)QLobTd4f5(6R z4gdMy_|N~rfBrxCX953X#Kz;8a>!X_I!0n}SSyicz;8`p$tm6fxv@})5SbRvRXzqv z@r=i0h;$eWk<!<yV=k1=n$R1QJ7&D@D&%x_ipGUP03(-mYtFjs^)2QLTwJ?IXPL{l zWDei5OOl}#1vWREYHoYW{p9U#GZgD6Fha7=*%=6R?>T1Eg8dmX6gF!s*K6xNx6R)* z&EaSd6S6hpby`CoH)f|x>Kv0FB$;24#_KzFvxe9ZlL$>v@jJ|_0^@NGPm8nWW*&aj zCA}2_XgfvJ&8GCgvkNaWD~X^r{xicRtxXK{t#<c%zkU0!%_#0#{U<Xq`TDH}U~m`& znhu6LJZ`N2UN?l|re3(0Wj7`oqHE7$?Qa?@3DkQ`iwRziItEO1_10LA0x6qfaHU}X z?_F|UIsILE1xxf@xSsir$Ha%cC8^3NbJZ_+BA((cQB<R7uxlAQL%WD>UrLotP0zii zmQpj^ONXNGdcm^X4X>^2kU*{{&6@W~t--SDDXo?=$|dy^Zy30JV}&~PWR!5aj(TTw zQH|)QlxpxB|KiD_M&-hyRWQJoswY#&3U1I$Z7{DHuM<mgSg$+4Dw$`40tTT3V0wZ_ z_!tGt^uDEoBAQ@`t9@a6BPd!GuIqrtm9MD&>A8UUdR%0H^(}-Co3Z9~NDCte8-3^* zzeT$(jMq#f2|4aE_)h<DTy0!cJ1%%?uh>gmv*stRTXc%4Ve6EkRID2t9W8z|G?p|C z1L?7rUp>~6BGEoUouD65c*Pf-zK-x{Vw#gar$@{v2OPD_y#lK9ZwVcu=z#niIUp}R z<=!kmrJ&vF^di3Vpv{{#I$Ynn$(+PxP~WQ(>X^DuR9YGl(;3X3@IEU}*&E%58@}Jz z+tIkBQmQ}d?XdBj+dEKYz`*eMXy=%fTB{8E#|ptJ#O0E`=}|tkKE7lx`qAYZJ(O)H z)*?NU$HpBYAJq%ID?xgPJY9OkLuEYfNloqg;9{KqKDjMlh8%Qlk`^Y>=!DV+XJ{8v z!Jj(Tnl0XwkJS3WSAaI-Rbh-xh$&oT^1KxS0S<J*r|p6Y3eI77PyNscXokwu7o5H7 zo##j9#ge@YO^LAxY+fzdH=g1N&Yt#6_A4HJa~+!93~v;G8yCR$UXWf=a|6|vo{vbY zNB#)|@ao|2Di(z)*^;hy`2p0k(co1@Qd8UZr1i6}x1_7NZW>dqCHoxa44aRWu|XIT zjMk=A<V70%oMj(7K$q>|iWX>_n}t83C41f<0(S%R5t`lkg)4hZ>9ih0|I+QBl2e)v z3R9PW85d1m{Q`5qVLC{wgU(TEi_Ow+NF8@<nH$yG$3BVogB%&tCn_Lvjj;O#To*Lf zO&#M;n;W;ss+p%4I9jp~Bb9(4QnqFwl5stUrTQB)r=(d0_R*AQSEl6__bx|tKU<~y z)@x;#6Ze)=^Np?2Ezo`zuxpj^#Rr~#<m_4R&iiOy^qwZqo6F%(E67E7cEV8+M9Sfi z3GRZV*(D{_32&#QDHt~Z*yXmxS+Q02M!0h>&=i(_>&4Fpi=XydQJd+5xn?5cIH+qj z)@R&UEmLLA)&b_19`e`5aIn&E?MQlY@ACIQ%<hG5a=*Aq8Qj}Nq~|~PV(q&eDYmH- z7sDR;_qam|K5@*WV;$z-_K|>l+yUn|ZmrgS?=H+H1tK*9KB4iV*^|jHc$<ipoA$Lp zV;*{4x}TscJv7=V*MaF-1CuP%KD&R%`^LCqEEzA|+vG>t8S<{;Dz8kU6Pwutm{-iM zTlPV;p7%aJ-`=XxYhS%i5EAQ{SAqnIu$U;U=p?G*h$a*q1)xeml8O^qcIUit_mgGU z7{8#a1ocfkC)(+-?Wf=BMH2k*SoPtgWh!EmPdUnb9U6L{Oc|;+NVyd^d~bG?H912Q zIqn1HcLj<7tQQ?{Y5-^10;hoGr86h9Ne7_Z0jO93P`(PFq8FeE0%UfkT8tybJ4Wrv zs6*~4wbdPUjtOpX+>2nvhu6)J>Z97lF`%Ot7ueR*s7{V1>!O3V(J?dV$d<99v?@49 znch&u$>Q`nDN6=jmPOuUujp%#JOw=O7*TVVtEtY5Q>pTCwDk$TOKeo6IhkQ-Iigr) zt5Cxb`U(8cJ!iYq4|&Rz%=aWSG^w{)+i7aW7s^ttxBf$jW-RLSFw+z2o7<}ibu%t0 zjuaU#v*z7G^^Wc$^t_LC&_MePWS(vkG1hFa8+Uu$az%vQ^-=T`+Li1GXz+0h3(dWV zx}x&2Ko?P7+9~aB*78I!=8Ofb^q$pi7-C>Ubp>rWXMR2sSA9r<Mh0)atYqshFc|L& zIBstl>PwPXE36r*sTnD)nI%WS{rim&DR;D4M=<D6xfZ;@L(uJ$;&Lz?pMlnZ;B0;~ z0d<)U(HmuZKFPP0RvHr*X6|e1#wnb*h1j!GHiHQ@zuZZ$F`%P<Z&CnxVf^Lvr~}6_ z(A>b=q0(PdoRMH(;Wjjk_W{_lvQ>B|fIdciFk59qwJAd1os@prouBn^?SIuTLf)+^ z+gawE1hpXxiAe@0YbPu1&}Pxhd$VZ5!Y&=J5;uh=cB)mAn7y3wm3bl^4!KEt37^M% zxuW;;_??VTm3asLKppB}k(ch*>$E_vVV0IhHQn8F_`9((+1|8X%;+)(^8*i*VGYdS zaH}Su0AVsim2n-yC3o`KAs7S{I`hbE5LE)iu~?zjnU$<(R-7cPf$5Pp)Ey3~eap|& zcEVU1Jd8Z+Md->Lumlj`0Q34bd0@A)CgW=aztH}Xa>0^kkz-|H^Vo8fr+3E1gVMsa zwH22~g`2pxIJTNd;riRtdTtMFW7Qg6IVSAf8;#9rJ2a!{q}?^ExB*riyGfx+%GEAg zv8C0N=*69@I2{f6{Lg_;pK0Kyw9CzP{nqdg{%|7eY({=wO@Uf|Hmj_>Bde@R1{=yr zDF^7Hc2dHbcb=;h-AxAX!R2|*2Q?;ZG=SQa-X1^$1?oGUJ=YrrX5hBz<zSV!5j_+B zHH>kkgZDsR=qIHv#&|fAIX{ycZ>F+&m7sEJxl{p#PRq0^qoW%<EL9-sc|DWG0vMSi z6G^lh;(L{Y65dvZkA~MEhfd)f#J!&MDyOvLlF??<r%p>cpPBs{yfDv9e+piyCs<xR z;{3E6O~{X$?9pO3f*%U$laUfG<h56VF_wVeT(eKbNrctwZfLJ2dPLE1a=^Ml=d*GY zJa*9%xg3Q~#%P6PVU6Q=jj(g0Q?>g1sEVQBv8_vwG15b$E7G8HeO~rRS$NB*H&alp z7VtaY+`P;2{HNX9+koGBu%YL8{?qO<4$6J!B@BUGgp@Kjxe06N;cT9lXT-+qS+9Bf zja~jpYe`||v9d1|?_^diPDECsS%+5RQ3gtO3EPK@S2-pcD;eOF9(xS50x)w2X6N-8 z1tq~7Ivy%sltkp>@Mz9;=`s|yqDiDiAxyNz&q=8s-uY26+Vb^XBlt0_8#tN8u3HK` zXM<@!3_4mGU6Vj|RshiDlZ#HAUq!(%C`~j}UQ*9;<Nh-AJgQXK-I0ZGbF)j8xDX50 zv8Nl8-3EU9v5Kz@b<u2%Sq(0^f|FP}<$VhEql_yO(-9Sbh#aGe!go1C!$dmk(2=JT z#lyXak>sndhXqe%K^bq#<}uP9V;I6wU41NLeUc4T^dK5K8acYCd>=xk)Top$D)k#$ zTbrA%aX9&jYOgv6N_hKTX(O!LKpO#;^KPtFL_D@QF9I4=#aCOmiHB%jqEQ%fml)1- zV3;>t8;hl4?~#eN=}@(*$FaqzalYdl*;yB375>4suYr+1787Mq`Isvd0b|W(>1C;Z z6%0FMlX$GlDQ-X{*etLp{JECzC>t5W!+TO!>S7I~9aP#b8@)zjV|G;rEsw2U95*`U z_<WG=*yxz{LPD8y(RLoYVThj2M20)|_I77!bAqz6H*^~XBbBYgS^@CZ93G^&C_NYO zoy49oC7vh-hN60%y@t>4$wY36B}Q;IY`SO4?nOJWQE6fM>SW8&{r^;nLGIm;n>@3K z<^lS5Er7cvnQlSWOCU-Wu(r;C0VbpUYNP`nV9Z(IBXxe$9@l!;j~>pYly40eSH>%w zlfizC)@Ph$XJ<eG(bB5~2L3AOfDD-OtZC#=Voz?1WCv&{mcK7kn0aGZ8sY^!k8LNS zE!iyrf44s?V5PrPz8tEb#CKJGPA`Fm><6z`-j~)J;oXV~G-|4Ks9;vMt!zzC>6kqZ zc7E7={o#rV&DXz{uJ;OiUH0AMIZKwT1UQJ1&ZfYmCA2(?cuyq7*qUfB*+CGHuVpLG z#qF*43blynn#R-Dz&)hEWi7HP&d|0Liy^Fi*mti<MQz@n2r0#!ii9pY5#=;5vBkE= z?+%K;UZHB{l-Fi0-?1*79<GpVYW&dqtL>`zj!F39y*jD4`F6P-iLD}zlh<_BXIAJw zIZlpSd25#JNtxb{{+Mn>e~jSYcrT9rxV-&K{I~n;QM=?X_t~5FyT#RQKEKaiv`Le) zOmzW}W<UN~_L*cg-l(aiOSwyzzU3p6Q4hQR3&m<sr-^gwNb)n3fc_bp?W0Nv&I)_b zi9QSX+PPCDV~Eq40B)kVzq_;ZH`&;xV?Z7_OeSyw#mQ{RUX{T_)3lbXy)Mp{F+*4V z9G=(wYrqEV0PiaaSxd*!Z0}d%`d}Ub*>SS3Hr30XBf-iOG8Df`>bO-)_AR($8lZD) z3g2h3rg@V_MA7x*ptq69r%6oG(;ndS`@jekSNV)6P!#_S@V{i=fpJ~r<pefIc9uWN zDv%n16{D<9E}Q!Z2n4n6ukwa;)$)z~M$)%<^<K4W7h72v)@}M1-BQu><VA^xQSZmi zQZGa9U235|E~6H|fYU2gu)@FvLLffTn<nSD<`dveew9xg2aSd|INCj?&Y|I>Rzs0K zvJHJgEudAyQP3vh-n=dqdl?>0O&?V8(oAUc)u_J{aa?^0$hrLrcd5(MlKhm`Md70k z3Lk}0sLw4#$5Nq8!BI4Dh!z|LT66e=e}+O`F=>yyHSUh`1OR=a0c{-TpJ+hyxOJO- zL#x(Po*>vDnHK&{;L*PwBVcVmH?`1vKvkFv>=3R-sP{)Gj96+_CO~bGu*Uaamc)MA zOI7V5p+5QzxaBWEFwV1C=ic!<F(xjI!N@9Fojtl#i}n8B$KNT5g5MAW8IBM;D3Amy zNVfuA$bAm$oaF6oH~f4jJ<vE9P1l%zDO++LyK!-zmv`rFk|b=Z*hG7|GQ&5H1<1X6 ziI6Z=o3ij%nHv+7X_o9`n3&(7348m(SS(t%$`p-f=7k`1HK`wAkXx`7wn|cAeCRtj zJcI5$@uJ*=C<BMcv+z;f1Zd)Z0DSTirJGzY{C4lW2+B(V@CwaDzl7m4^W#t~;^Z^V z81Sx<RQ`Y=z7McTw+7G_6XPy`oBN1~tC7BcS}~z5;L%K&fG^YMW#ncUP}aAtQNS2K z011TIJ<ESPAcz6<YEp{X3_%BG%9ej>mE$<k=H>$qeL_QlCb0DFGs^2uDItbCKN@p3 zB4l<+MD_NB729YI_ghQPSW=ji>tW1(X_ZXK4GmLG-V1U#pGxHxeG16ldZ>7*pYN=> zWN&+x-Y+<*KbI=N!SAao-P4tF(f>7=ar~GRp~!+t?WV7hv?}aai^kgG(>hLswfC~m z1UZlNc|&5?5pT?%deb&XO(nWLYU~_LW(RRhmmiqra3-_FxtmyMpC!^#5&@H<$G{XZ zmkWitJ8EpbQy7jJW>`*gfia5%U#HTa%P<sgOPED8)Pj~;Hs^wsa+c_hf;qe~yEyiG zucz1FOXwIcvt*f+09OIM<FgPW_(R>pBm8mnOSNz!2ZyGNqM*H#GZ0}5YMd0*oz>WM z0Os!W#Um=G*Bbnu81y47RJw0Fxc**k9o4hanq-1vD?BR;V$72tvi;SuY%uSWNW<Zm zyW)woXi#dPsukG*+AZ6DeT_Gfh$u$y67L_wd%6;|HE$@ACmvvKrUy35PV!kYG%bh3 zANB5P*?T$so2ZpxfVy<O_DwKKeW5xyE%MoP)Hnsd92v0Q%kp6f9hs^a^qajLP0sVl z*T?lD$J{QgYcJi{XsmsStU}q{-o6~cw_fE{1&0MR668ybQErtEI+Rtf@vh?*aA2GB zV~?^F&TZVwQK4d}ViGa)G2op?gm{cF0OUfX`XXWut1rLGCUSOdcjZj5aA@UKN&mbs z`A9Iw+ykoSRlQgkcsS7_cva@!XN7r->I_>_Q3-Ifp*8;J!c%*3t$!pS_ITx;q5evX zmD62xA`>q}Iu|32ehmAb&+v#=N4WNh$4kO&fgugf+uLn{WKdnTq_8cGz(L+mEjI5= zFp+i)0g;n)bBLvasi45*DOLoKExZJObfx9QZB+4FtS=EVM@ELi_?Jm;9Q_G%sKu2_ zs-qnl8>)0rzCh_JNM7nbwM#*SI3TE!rk_G^#(U`6+`v$1wF|7XN|Xr=3G-p~P`0it z<l=q2z#KU`y~@$Ci@?I%8`;mJ*8{t$CSn2SakG<k3QvWvf>reinz6I8gX_}8b&a^T zR9$~z1r8(QSfy>7MTmd__dqx!Uy%5}h;$r?Lbi2_GDt5K(wFSS-`>sgmOh&GFehRT zlD#V)Iow<uUD8DtnzMHlNP6Y>TuTQw_HJ-v?>c1J38WDU9>$xOxac%Gq+WxU;=d~> zMJFDGNi(6p{!fTU!LCJ5P-^38k3p!E;(FXYP%kM2C%Y1Tmw#)xorgXJeZCjzwP5@I zCGd_ca*qklcOtzK>`*Az-N!*G=e>vyiBDh;gXR0S{A;lMoh^SYg7SReY8p`EIsf~& zsZCxou1u->ax0e@*b=EpEBtM*-`~c@V?nV7qObUOkEX}FB2O+vF&*qQ_X`*?Vti*l z9IGB7TLA$dDAJOmt~lc?;KQ!2r~r&N+94=Z4p{&qUY~9>5q<WKj+3KStQ{p~7VSjG zDtK%pZ9a-_LJkxs{Ya-)^F%%;D_BcT$aC`>Zf@fD7A6*(A5UyakP9Py(xunZIydcg zhLp&$;3JCu8s%t(z?zVL_?zM(9EdxDQ5o}B>6pKE>`7r=?u_{Z!{v|p)>bT!xN8l| zkH>e)0{a>Ns~n)AP(Jvcmtr7Jz5t=ChOQOv4Nc2fG+z@YPIr-FTy9&p9u#n}#Rc+* z2bbK&@UQ7Q9qo;C`ojwNr*Y{*&iaW+4@4Bs>;uzvKycB7IX`8*_k?7on3$qR{e58Z z8<N~};H6=>$rC{)Q+e_Tgy$C`80SqJp?fl(;xp8qSBdAG;N|&Id934@HOq3zeigmG z>^O_LJB!xTBZnDe+TNoR6|U?i<9pRZ)G3FE%2*-2#34)evZsm7aB(D$m+Twh4Gy4A z>LoV~gUQW;Doz_;f_$L$Pf4M9ts;jX$L6_c?n#C62t&bIW#@PWlT^!08QpX~?t+;r zr9IVqDa@k{1``_POSN<yCt?Ofv7HvgJ;cl?t#ZsU>~zpvw$O}kU(yUGtI~-Ws<UKI z+w;<PsxYRrT8Kg7G7d%u37jFQW^=RNxCvEyLy4@6`iO$ScX7u>{49+GWz_`&epKM} z>rt!q!7%{IQxTzsHaktD8tP^#XA04E=)2#<NKZ3-F(b-s*V+{OI&B=GZvuR1734#w zl)p>#BuQ!~lImue3Z*G(r2XBc7vHYco#WA>&%d(U9cCXUJ1I1T<3N59n_5cxE>x@v zXI*-;LLX@2VC3WCLB3UzFGZ6_Nsj9Wa!ZVBjDrE4Bi-KESyJ}n+DVdBH}MQ&c4YEZ z!RZ1}JMoyqEf~_Y*ZC#cR~pT8JINJwh`z^VE6dequ_99{&}?;H<$lC!b!;`GhkBSa zs&4ApaMv{U8=Wr7jRI2lhGh6)#*7GX1Dtcq;`AA5cunDJ@PU}Z7X$IPIiV1kN$OA; z%mPI@iqMs$K@Vns#U>NycxBH+yOUFxemB^26IatjviT@_5;QZ7XXjGDtX(Ja{9d3K z{T)rp1JQ>Wb^108mS8qwCU9vgDp@G@Bi{c3+AJGp1FVKp?d4_(q6S7C>kc&>8}Zh@ zvbqM-yR<>OL)+f_K-v8O%!;>Atg6jRKepSgXRoi_lx4eap!0U3EJ8}djACr_B~3{J zjJ{ybj2O$^CI&fav}ms!p+{UNH@A<|>avi8k7h;QkYk+^l9R&lPh-j{JXU2SFei1e zjD+eWvwRm`D8UGHhxns5A~*iXj2s@b8`w`|Oz*2C;O&0ftphKE*#{90w-wGFC@})5 zw_sYHioqqJ_RqA{5@wjMoPWOFtaClrOZKdv<)qC^tSj-Xdg&t$8cA`<KHbp)G=3o6 z4obK6ZvhTQKG?avl|NZ7W_veoF|n4Nk;gqoHxF%A5GRgV1NX0@6D-zpFk!lVL)O7b z&eYA8+}c%k*((grT1|H7j<ZClw|4vBHqc_swf{+AJ^q9D2R-Ns79`aL-&U^vdIpZ! z2?!V?`rLM|{>JyYjtC_B61YXN&$y~oOrrO!G)dOTsl!yGBX+G&N$g(mx=%9zAnSb+ zxS|?P0B2UeQ(Q!UL?q{OUIZXF99>A~>+l#TQ>;uNXTnCIU~f3~md{?m!6iTLT`9XH zSy+m*WC0GPfp16O>Mz;P>!DJkt-)i1+kY}DDU`!1R8pX>e=r^`ZN3AK5)E)vuqd%2 z_LHMy@?tc<wJ~!Gc4O|xlOb$Ez%FWz$yQ2km-qip_NHVgrQ8^pHbM~Um$K3;wUID8 zcRN;*8`Oji@fu3Z@?=PP1G&ufH8fhw|Nc)Lg9HDzFvI!LG2q?cssZFha50-pr~7}5 z?w_&Ywgnz$6rj8a8#ru1#jPB#W@M4tnt2fo^Tjz@*>fSj=H(D`Tv6GQ@giNBh0(oj zbgn3GZz;VXM@1zcRf}06qu~H;gv%o31rtSIM)yJ~KOBY3*x~(4?SVER<LjcYmnH$Q z>Mp1rKv#7<bQ-Ck=R=7vi!51Pgc!22pnK_AR#iCAtOzTygj0=roAgvH+7)L-S{JM; z(yU;oMLH?iwB6LXw5SWRLyY$(3I|D6Xz=Gj@SCX4@WGcw<y|>1*;x;i^Fn7yZMAly z<)JlALAtt@{)*b}b(=y>3|(0jHdszyqRVk#7v`QWPEPd_AO${D2c`!vFk20hS%KGx z)_?EZz16dGD#h7ZU)uRTNK_kyWNOBvUX{rm3CmLI5_3DXJ8kxyL(3<7v+l6HD<D;; zja`wRX%rQB#j>%>Zh+j?o}m%NjojFQ%BQDE<`!{PwA)2ad=nLWSyIOlMVda~0qdgz ziP3phC1*hE&WltQhV-BvPlX<-+b0<&uDS>p;;{y$C*e|L9?%gxL`2&m$IKlR2(qK$ z)_D<+tsvP5olACI^yd5(WpP$u;LJddKRk70*D+HE?IiAUyeMdH1R%l{pB%`9KANwJ zz_G@RQG!W!mwqbA<SBJRs0qht4OzMb<YuMQJcR{U!D4$zjjoFb`w7wh-$i6%iB7c9 z=yt9jfQ`DQpJd(%K>T~-CZI;gVJ0y=g%YZ!Or<b8PaQH`I53tP#wox!PtVyIz_>`? z85psB2*$U9ym)5>(Ul9}nF7s%`0s4d1@T0IxMc6c$KTp(N9FL{r_=TnR^@rX5&g0- zb`b(i18E<+R)GSqD1H{?l9k@WzvC;~utX(P;EnTQ>L2;<i<WAjaY>jKa2{u92!PV9 z^5w41TX|*IYEKpcssliWEX8$lS-@6*CoUglWrzh?6xv1$7QvE&<<IV_33CB7;$4xh z(r$Nk89?_UGJ4m_+L*QES~riBN#W|~K6?D;ynL_59AzBTwQ7OnhjgrJTak{nrE>;m zv8}>(2j?iZ92GXs%wc#5e?gVJAJF+-q1Wr<qUV~yWRw4qT=Z>0n)j#KX{!eSNkF#0 zm+WDY_D7s(?hy1<4yzQXr?`)5ylrv!(P^WZ1-g;-1s?t^pmc`0^H6z03AdHciHK$~ z?#;sjW<g7nv&P5`Ubvb&*sazcN<A!>D;x~XZE1JKeMCi~5nmf_+j+_G#t6r|k4GSp z8N!GV#<#XYx~KFm8mL?Y#f&ZzO+DzT(L>TJdem|DzT)87>z=LnT`G$!H#1ak7{|wj z4Ss!4thm&2B1W_l?zX?W&bM$%Ux>&JRoD(LTDn1Ip8WZta{u$aAwC9g#E35ZF~pM- z)Wj}a_~8UW!Qip_*#ugB^e=@!JDeL8qo`c|@UYw&cvJMHEHGhYu-1#-T1~hatoLh3 z^0_IhB;<8K3K*5fy+*6%Y<8JlSC}&eja1+TN0l!HT_{^-!wty~6+ABT)@xCQAox|; zVrp&TiW+`cIWP4HmCxP0%wB7$attD`;?+<=4{$+*8mdy2cA&ppSv>WZOVQ3Q8E~Nn zs`ILE(##ArQ)GUd8PZc`rpWrmIP()ayds_al4dI4GBKJK2wX&ylZ2D|i97o5pEJ2? z&R(e*rwP+0|9!J$s;X%+$kDT6absse?K!~rOW;<OcK+9b<%G#sAf0_%mjmnLZHUZh z=4Q#B7JacXa-;ltCc@E+zKM~s#EJ5w=Gx{MVDw+ut1eC!a!dBT_p2dBGW0#x*u`it z;iF1}OrN2_eJMizFS*H)BAvvbHuDO6r7_5fBt;7{7D2@*SB7!g6=XnBnFreZb|7kr z;S|a4cc9|Mu>oe~qactf8N`qc)Th)-n@Gb3oKY7+xyipFQoPG(S;IK(fD!T`=44q| zTVZqD08gta!aRYGwTD`B!D%L|CY$U|xiIC0GO!4rbv`7@#<5HT7#%k$3p=0M2}8iQ z=@RyNpWIJ!Cbf#<2RnP;3y09?&nd>fsq@sW6QcnqbFQkI?r=f5B~2%>vVtfA<`X?O zS-G`_{72`c0W>$paDaSq%nIi1eN-R02ERZaKZHPUAl%r|aaD6Su4-cogyu1UNq6mI zc+?nT*&Jp^#WAZ<D>^2N;%sx1%$3Amdk|PJFo+#sPE5-Pz}&UgEHI{LJ<}o4V@leg z7_Co!BwZ3!pmCYd#$_tlRo!RNr8E8nsa56~Wk^q;+RGD5U5_LhHXi|%G0F-jBEDyi zWw<e>Y_RN<)XtP-FeO=VN-{Gglazv<8r#V1c+8`To5s}v6|h@4-X2k59FH*Y9pI{~ zNo!AFeGC$ze*)3;Emg33ttfL=<foOQ=9eOvuEzQSJqKQjxfxDEeOZ(mah092DVwL7 z=(4l4A+T(b&bJILW#{SHR*2kQr1SB`gT?s5nTnJ2Y<%+Ie0+k4N4v&4y?|wP!e+3% zs#ICxvs3d>rH;X3L3l%*q4nZpm1`R`O{t1?P~6?z^x>Mu_%6zD&7TIgAV}VrOzHME zdoZ;Jb#K)zs#^DT2C(3<pHZa;#U1@Y?JZRsmedEFux=fBbaBj1U@<af;;7EY%d}gQ zA6;zEq3-rs%&ybYUddg?V}C8GF8#H5t=6J7#YO{Ty-Fx;Qg|&sLzwdxY(@H6>1`OT zLQbm?=KC{N##2?T&CFSw6KkWATP~)yPo^|yCMO7TPQMf@Zc<&N7XTw~3|=$DoH1Wk zw&PCti=ttAeHyvBSq8~BQcTP|5-h`#c+WMzRqqlH^}@3=E{#Q_^}IFYF*|l}vt;*H zl7~JuBy2x5uoh*Edj`lPW+@96w1$Ry@z%IP&A1ujxM60s(L4=9u~k2>nq0oM+iMw& zcJcbWtx;ay`w@^5Z#+B<VnHU<OZIjZh;nP!S#~>&RORL;YT{a}P#%X*R!Mi(tuf@C z<>ESc)^@>6ngxS_Jbqsx;556XNwBHy&9^9(ZeI7^Y=;+`<LnUZy=B$DwHvSDA>gTQ z={~(=Yj_I$gr;Xq*8Mr{RtsCrM1?A#wZ7$mdfcf*uP4D?i>LD~qSfT8yBMWh<10qd zLxgzj-kihcM+&flobg_AM#;>}x;IfRcFcd6j4YX`dlSZX{o7nJ$LmNXf8uc9mbFgF zMt*e8UdB5+$7WutM(U!f=>N2$)&>I6<6+=Jf*hBIM9?EaQntTc=x^6`NRdQ}7}R@Y zbs)AzT}La(z77XA33co>b*^Y#%^Vta)M2%X+uB+MG@HO`&#T_$;r3vy3YyZWNeg)T zr(mcp4AXj*lTAaHkt#>Xk&-P2%((Sg%<3pkND?z|CN<Pguwt<{gJ-rICxugCdw1`& zj*9JFJm3r53B?1atkPwy08*D=_h?A5!i?He1R!2hH(4-w<ezqJhxt$Gj#<Apw`hrZ zOK~UY7=WyXmA&1ZZ_t~=fH}5KOl)J-<{W8iqJeI##Fk>^m-6E+PKn{*X}h@Vlf^dH zW7&#N0?U7D(}buCtST5@KxcH=CjmwQM4h9iV#<0J>8Y{~XJO0+pqH_49JUVbx5Bu0 zyE2%^<vg$N3^*D}Tp&%t0(MqoR6e}iCNHi4vgWlH!-Q;L-f5?=-s(1T37T*z4119Z zV1L1T9bvFl03g2Tb2zj^dFu}aBbxM57dL*Y?7i5;K`86TUJt$VAn{z(PV__-&9I3k z3au_yv@+3nRWpSTyv?Xr<uVm2m#HELMVQS|7it(Hs^cwJ^jXZ?jPYE^=&T+!>mm+E z@XXWS@W!_>tStSA9G=^_wFtVb(_WB61==K4`?zC7e|Ft}H2*AAEKfC7@x#~=KY$&* z4OU^NSQ9(OTB@dqTqba472X9W>O?%R0hc-yt6gxti3@e3_5uwf$T0-r9+^TuGZ_7K z&F}h+!XNM3pe=eC-lz9@H(0R)G#06C)`Qz?7hF~IP87jvu++@NhlMFz=Q|f_4wvkG zy}}=JhXDtI;R8tHU2c)nsuyPoUnD!@#$R#24qiWekfSekWp0R8=BC#6W3_XY!kWh| z*Tc%LaT~(M3M;G=!qy3CWBWioCwupg1X-ym&6Set@U;rq^UjIH8y9EW2|;^Uue@aJ z7#sx>=&brKhN2+#FMC`EOhWyD?2M<Ko18%GU>%A3*FeFUPB2g<SG7+dDiaAnT{m&o z;hlmD{K)b-YIhhWC*P9sc79BJf!)lBQwKvAXdzIQsW83{#lq07cz+lUXl%{ufr|L? z>|AobB{7Z0xZO7eTfv+Bhjo{OhRS^r&!gB6KF!nBm0NMCF}x>g3n}fdmvIEx<Hr=@ zzB`?D-*jey>1+{ee@=sRG*fZj*PLyr+nv>bwS>DC>?gt#-a0DQne}>$kAtnvyy{u( z#-ndfV43#TYt7x`+KnY{Lp69|)S=D{!zTqfA9d82BY({>^U$Lg8r`8kjj;PV_&wLq z5E+t#5Pk6if4){9ds3rk1k&Qr95gK0*IKb)R?VVrf=S<gKxLUKQ)>}8NaSwWB%Rg~ zS_xyKbhPd!LOSW&z!^qX!H^gGHS{pESA)L9NA?iz>hjcRxd|tZ_G07})QMw&H#F2q zv-mL26>6iILPjS}x{r+mjSYvcYQ_L~%`(i$JDNKcV!#qpxs@}Q-M}QnAe#V2-=SuS zE>RBElR?PDLx|cQy0MRobJOF}I^}17qAkg}Xwx6f(wZ4UJX=YK4J9^xv&y2EP<|+S zcD!0^BBdot!E%~)r4)I9;C)iMS%kDgp{%_^boMJVq8>R4W{8fK+KE9L_y*n;EZHM} z@1YJ!TRB!y-njT!uMXO<Z)!ifHZEC=l}A>x!<fD3m4tsas<ajE!Bl5QxmL1Yd%H48 z(C}`)*9qEYN;5a<e4WakT{VVf>ILEr!fFSF;h5^M;!GJS<bTFU!SQibPd&B?BS5~4 zdW1)6xNSRFvTy$kKwZCP`{U1mYuawR-7MMDzN?<kHldk&xHPx8pGAbKc)Y%3-|O^A zJ@WQ8`vNCR!K<7MeN=M3<Y5u@kyPV+P}rwB{iPuFIqmt84ddDb#==9QV9j{&cq~j# zME&O+&K(OzwFVq$c4k3oe$?s9THPq$VII>1^wP;c_X^KM0Guq`8rTn3!v63SQ>*<5 z2DhXeWayuO%{xJQsVTTP5{^}*L1^IZR_C1tzd^fLf%aNmwyZ*X{Uc~sEb=;w*Gkic z`=d_pt$}nqaSG$#>pno%SiavZ#+^YDuHD~vV)Ndb*mO6DLS;YnYb@X(7Pq9MmH0<v z^lqSzq-)UY02nOT>b$mqe_M}!+*^}=xP&T%dh&WlPW=U!LXURUKz}9^Gu@*z6}@N{ zf!ZN_dw`I$&k88s{^OwNZfZEfs(cMpm`#+^)v>p8eEQUwBiHGRIx5^r@yX1%;cg0N zt30Y3!0tkgA*R0<1}gQT02%#r@MuhFnC976jjQJr^LZ6$g4i{Gw!E<6e`dxmgh@X` z$?h<9^S=N{n2L#lR>ulOFl%=MQ`F9?{)Zt)W#Dm<^FIfShZc0eQa*gEsl5^)#;-+W zlU96G`(Jqx5PYsRK6xd0OIHgRss#PDTA-Z>lc@Y|i0;rYeke?Xk&YFw(+s%~2?LST z5WR58Awtt+OI`tsjlmERqKtEzJ{cPyHab|oXr-ddr`Iw2EQrfQOHVdSKa8}yMiiJ+ zGk{M8$n-gzu+}$t?+q(SYbHg5Bjp8rNjZ|F5OH_$mus7lC+$<j=77JO2Lkz3tu0IZ zjuk`Uy#vHOts@_~tzi>Ze=9JiB=U`IoWS(Fpp&@Wv-2V}MwnOfn+%*#c9eJWC94Oi z|905xmF1RG`Ip1Xl6?-!)~%%FlnNS`-g9;3iocW3HCZ22?}P{@J`AW^jXU_~n*0+{ zYem}P_x0&%aTVyK$-!;XKyGeE`Bq9PO<8V2$h^7g?O~AbIboF+SNHC-;V@2yL-_i~ z(AbBioH>b#DKJ8*voXYbRGJKDvK%hi2f&8lk4<rMXD$-|3m<EEw<pO+4Ku^rem>Sq z_6((b%#Gz<R-j)B`xGoeZNYC)Vu5`aniTWt52RnUU&IJEpX%gU4Uqg&r$;K)1m;kv zOx}qpkRZwsackZvb{`ht2@#IY>+Dozws4v&uA|ihtk_Tw@H)@~9?i$>9t_mvm4-L7 zY*FPfEA~;}qYig>cK!nM^fOdfwc!=~e%oVIfhy;$%;u5$;%60Z=JQEb0va}UFlDuv z<;qg$_ci-~e?Rl=qBv90zuMj8*<IZLW+wUca|yfbvkJ_i@{Clnq}16<CbRWGK^pNn zn_j@L4jg>VK41p>x+vG|qNll7vw0=2;op<%&l8NFwXy4UQml(k!sO>nN}Sr8B^#<t z1lULYBj}{iO`m5)C5P<j81ufA*)@d;`vHXZb~0HPl)esTp$;}w<iNmcUjR8NF7nSh z-OZ9!Svclm=lg=^pEZ+GH4*nPcfxyGr<gmzax*G!-2I~gJH8*s3FVxCnkx5%Q_&3= zaC#RcY68`s#f{-ON9fEssOi1El}k3w(q6lzGLMElza&a^!^JdDD8B9d?j|ZLnA7Gg z>(KyzQNaOv^uGrM$_IUcYDhcG(e2W>^E7OL?<1{^Ioj_`1oblgTBt0<h7HF=DhT%? zOJ%{Y=aYO?%VIV<g#A@DLAbhQa1@_s=}op+%&s5KiZkB1f8rQP4z}JL<II#Jsu>M4 ztUKJ|xB*cSL$5#nNDmk7E^7WT3`Kmi$kdJ25F<tn@WMNX$sm(LCz7ET<J0}3zEf%g z-F)-o%8yF17|e_5lsvhm6!RbY=tcLdu<{QdA3i_0$kFltJyON+wV$<fa)YOPUbz^& zz6>N=q3uOIM<u%ds_Y=jzYsSQ@M1E>m}VO({Ly=D=y<;=zY~m80tlEg%9u@j-$mAw zw`nToO!;1O;2~xsJofh0GbQ_w;^+4VuSs0vBQpL_@QD$f3-NeJe~0>3M|DE!gyOxZ zRFR5?|4T6g)N&YWH}>Mla1^SCV~lkf<K|L3T#aLhVVJyL_Qeb@5<9(2=zY7F$$7@l za<7+c^7X7lvAo-pEn2%bO}R}U>Oz)U^)}IFwM`rKBGd@ux3|%hijjj()<J+Rr{S^S zu&|Dg2BtxW68gLM9IwF~VIk55$jUPVb7~?Zg{rF(tnUoI^40(*Ml1{1Yv1*<^43_V zw1`O_KLOe|DRW9y3a_8S?hRyz4J5K_4llyP=S4C3nwOs^u%8hfL)vaK?iC~ku*9?3 ztaZc5?YdWk%G<NJWbG=rCygbXEF{LPeK@_q%v+dk^?CunktPk9&ZS-@Aor;5Z1T^G zjIx?xBEc#-y3y%l)gEKG0~5V9b%!#)k|zQ!$Zy;)EMVH;_)c~(qRIRP^!C_(bCz9; zS|<7qpGe~K<Y-8N3@{TXt>fdR110kB$-j4?dPECy;K7636T+imbxDL4C;nrH0e?hf zz#lauEMosSC>S)=8I49mRf5tcGi73i!0Y!F{j!CR;bh30(y98{6lc}BTdaOMt!qjU zXj{`yTl@@Y=|xj~rheMucg6IqDJ|)jEqnpvmbS2<U$*d|mTsv~KW#BO``bbaO=ydr z!-1G{TX?R1E@28=Go|Q+o+<j#nJPs+VTLj#L{ow#+l{3zcXZVv#(sCl@E`gc6tgKt zYkfhBD$L>qlS}iI-`)a$ZkU3uyQfGMX7UmK!8kIs9hc*L1gv$vC+JU#{*Cwm^jN4Z zoazwx3=U<~TE<MLNf2bMwRFtt83BQO%VKJ27G_^ga4}!W5=LxxKNa?+r*cSRuHuXX ztABzyG&NO4CiBLAnzv65Ow#6_9ciZqK;Ax1oJKT7X{Uy2)H!2RLw|nLU`;$82mthO zYn=xwFY{#&XOEWW$ig%!&<lruCCfOCB<-Zvq)Kns(|A?YPO?#Zvb4i>%0sMD!zKZn z&Zpv4#<MeECt+@R1=H*5o6TaBterJCW0Nrk9vD*g+aY2FA7ZxaB>CG@H58rHc!On$ z;Z7#0{>?J=cLX9kCPLgwhvVVa1emxc3NtH@^b<xKYI3f!&PiVCgI`xOUO|C+`ozci z#O;o0cThTe4O<;B^io{H8p<j-{(yfqRU!^dM41!I$aTZmA2L)rhY4{c4K*3f%a6@l z{5YLdo10Lcc}+|a*12d^`smhDg_MgMgo8<4DHEgXER;bM4MZ_*4)6|oIXXP}5k;p5 z@oihZ%csY{mIvNqvRmC+u_-E$s*O6RL<2Z@F*vT`?PInfEQ%zqW0mOzdjeWUS4lTc zoRqP!(MI-os%^H1Hr75oskF<(p;;vONT{Gf5_yK2l*^u}T_#bTO68!cQaQ0`W<HiR z0#0p{{NCPX4mE4u8@T*NhI{U`G6i}Ntx~n6Vmq)_v58C`)A~#6p24vnm1$v>6pnZa ze<tUzp=<o67BNZ1K2r-bMOQ2KqcZHOk6id)xo|!sGhnFE0doW-0s~~vfU_P24<s}< z!Xqx70TIX=<4-gnjo{2thq(!{@3VKBBiL7knsb8>`Nw)h-FhbDI@t^gy>vROGb@z5 zuo*krbSs({-H^&Lp|s2d88VEz&to0)Q(e|psmBo;uJ?471Nc_IPs|JE$xtJDmM!+P z*#zF|Otmg6ZP?#Xw~Cq8Cfv#2{oXcqon9KY+UMZeJiAgx?*C_}!)pJksJNODP0~BE zL*RTPVZwCsT+?{fi=p^G+znn14-j_KlX`9~5SMGU{<y&V+fmY$e2eAZC*_~!W2M8C zE3<*Y#4A7dc-;5uc-1nJ`tgr|$z!}7Mjut1hRug(Td=R!lP<%n7Prv=xuk{LRJ~}m zZ&ia{bTwzh&j)n6nK3Jx@Xs9cOCXQ-HPT84Y9g8qyy~YT7SUR>ViEpwhw{-M%Edo_ zEQg}OE>PsA;1!W(Tc#*=Q~XGgY*VZ$I0-eZJYJ4vrV?FT7QiuH8kP}OBae(yfHsg$ ztzP6nJ~0j6p&|y^$s*%9EOO)}5>7=p6xH$>>A7dVHbIe!3N<LBmI4JpIYw!_KA9Jd zw0)T|<r<y*7?>_d)rxL`wZF=G^FTCwkkogQm;o>~k>l}*V-zz>aa(9pfQfPoN^hR) z5t0aj3YkjoBc<LO?mv8U_~PI-sw~|Cd*s8Es2fo-U7+lwO|3X7b*VDn2o$Sy6Z8`` zR;=*eNDR=2&g=LKhXA}K%AH#C3|MJ|nfKX$P1^aN5o5^SCoIT>WS4%S1VoxFwWm)s zNmqy*o)kwA7%2qP6FDoUhqK$<yuyHw$gWx`q$Pv|Wso(5jg}OFDBAB8B$yY|P%G%? zC|<~Px{hR^w+Uabww5F8WYUF|$5~q4i86WdI5d!WroJMgBiA6KPSL=OR&{O?eKM6S znF0SeM@a?vym=#^6zR>HVhItr^6nW1!DN<}==qgd!Q|9_rD}wXnJZ*e&iG~>A){5= z7BX7JEg@reH_U%V-pGQYz|5C7PF;C}XHn(}0;m0gK*dz@hSQj3Z9zc%Lj-~BpC$;D zD+B?cHXgU$@aK2)<I5Jm-_mR=rdN+1`8v%7JM8LkHDh8bS#}mP<2roC^tvgdM7g%? zDG+zJC1uVfb}9&}W~MZ(M9R>@pv6!9OYwt2QDw=*G1}PN$zb7hbQqT+$Y!n0U)AgL zSMQM#n%~J^t$;GASM-WuE7r3uc)~A$j2vd^O{Fx@KVt5c5rwNIHgnCsnh*n3f;rC~ zXW_s>=6+ic4LQt=3AK|~QXgw$H>IS$g0B30kYdz;W0Hfr9jQdpW9cQ!9yj5akB-?S z-5F0F<l~8(Pk!e0f}X4uRI47yab+&>Pt(Z*4oAj=a?h;`2W;a0hBFb`m6RI~Q$d|t zK8eJ`m_aY0LX;2Pd}gQ2>Gh;U^}le!I#ipRZ*3o15daf*Uv3Tm;`K9Qr}0wf-=5i6 zx=l85jCO}9G#_TG(j68YHpKJ8S1*_BYshq{og@?!$T~)^CNUq74?3^V*t?qm9=Te8 zgB<=}w@n&cCP#||QuT|bNz5%aD_NOw9`xQWup(f5rH=t+7zexYUfo!;;W46jP~q+i z)C@Dx+f`F@$bNRZi@iMroRYq!XO5v)2}k$#E@{+(g5*~Rrx8x@=H|vMQ&~x}^l?V{ zmv-R4+U5bx9CnR-v_F4_$DwwSPro8pVB>m^jI$X~XAI;QV^aAhcU$zlwsy;KdjFM% zcjR=R>fVq4+LJFzF~2svTt=qHdI3wjfVGjZeG${<H`yBf0pSwM(YVFL3utAVE1BBI z?pmE9qV#Hvd)npbs={y^drjwVQ(`G_&M``(kEz14-8uq-rrNJFhS!LC$=Z-&c*wdk z;gigZi9bAitZZ*!i6H-YdpkUQ?!AfgMle$C#`&zu2WaXrGRn)?H%@8_Tq`B@X<I}V zN*K8W+dW#nhfr$ml}5=v5_ZUHnKZVd;pV2YO&$pQY7K!^-rhzsJ-{&ta%a4~-GwI< zc;G3HS)UpLB?Vw@fy=|oRlMb~pT+x31A(=P=}4*ENU6&8uaTDY8iuVZh*i-hHrRu2 zXAfOy<C~(X(*B65!Bkg{-H`gqaj1!^5j#di)gqgqHD|CoNr0+?5>1r2AWRZw+<4yI zaKb%Xq^1`3w5>U7tcAbzPuA|M=>=0-d7stXhAC%GH?2+`&=YSUOO3J3&A@I@2{O97 zp;o)0baz92%x-*?Co3>MT!kkygq|tT#dv+e6%Vx6U<LJ2z6}*=Sup5pQwbKcSF7wX zCn#dWW#QFw+Zc<LjmoK_)T~R|JA#Dz!rp>TvW2q6m$4G`H(&#*cbl7qq23r0yhJsQ zEsCfYt;Vyx#15~KzRN~MzBl~iD%%+*e|>OL4xGhvR#z!7qW6FLE6kIpw8M#Wly>e_ zveDm=o~}o?BTbQ`*?}jRmXAeMXESwM{3d8~*;VpT;tC`(XGmWtD~jBUcsgHS-9wjq zDfg5cr{>btS8do!*Oqdkb?N$}`Ve=2`E6T-rQ3(oRCi?7f2(4cdW1W4O3&%8w{5!{ zWrQWDZmTj)PWnEp$x-)%O~GB?GBugA-S7CGCJ}%cwE>cijjFq~X1KNPQat_lsFTVc zRwtdMr!jK3_TCU}+_gkcsi!fy_D!Qfv4xbidWooMsiMvtX2JQ9Hjj;u+8@>50Na0T zqxAmAHti^Qb^i?g)=<^;k5Fn&{%J}rA^_{_wf<?B+kKbVeb?SUa=9I0*6L~3u?d7i z_zlbHv!HFz_8QweLSp+bdoyl`o>}P*9c<M!B+992UbRg(eIre`BSR{5ANEjIhMDL2 z<SQvNG4lVv7S@iPo*bRzx_8<CQyR(w?|JW5K~m_xu6pn6zfB4G2-SuBP9@|@I74bk z+wYRS$WnduuwOIG;eG}ag~#7~p7Cjw^v4rddIjb5tRjndNn}fpv<};(<ag4Igo0k8 z@O(n%pcs+H$#)=)*>D}j<17+!D}kELV|H00-F}sGOzwd(Bgc|7jopN6zS>H@Bi}uT zuLPbSs2PS?RRQO!w3}<YZgQt*5f5Y_RzSDB%pZ%1N<irWOFFhXeXL}Sg9W<FA#IJc z7dr-qP)>sOn`ap%ZL3uh3=clic}4AE+v!~q2z{yokF$x!^`t#4VQ?KDR)#~MFa#Jw zVupjXK?x|2$Aoes!Mq4yLjL@`=*aQ$a{MBTZh(`Zjq={a3aZ>dvzY1H4dQ{0j=I6C zCbCDXL9qIZRzSK|n|7eMP)ik=p|>FwciI7Kw(5&sc&||76(4m2SvgG~ldcB}+pVUi z09tkG!wAClp}?uUUrVp13CbE(l<1_dl~`Q&H*4y>(d(^^F{qBpw^k&OK*JWc+U>%q zN;;lTf1W^&Eh)qlXMUQ2A`a{tMUS+y9~sr5zHA{|8lo*tyijSf<|?q%X@wgND2q~B zA~;+t@prVs;Rz4{=Urf*mddoq&k9ZQxju0y&mYhhy<^qtBox}y>kT;?*$KhW3|<-C zDVSoI48O*{*BUpkUw*Bew^l;vyR=}i_oW)ws|>?n%&r4YZ#GP+x=)z`twLr=M|V}K zce@&lirL2fxlslQt?26)MSj`IvtFDP+<p16j4&)Kf;Y`2tcrXZ^kOjx_*6Qf?tk#J z9G!xY=?Hm<|3k*$=-Xdr4R)Qtw%Q?@uE2A=X*fDIqw({I=PG4&>f}R+<vCvTJ-Gll z2UvTcvV#w7jREk*(-|<CV{Xi4(CxX?Gf!<sIUWkPjgG>U97e)m&wRqGvVcf;AX#}v z%cZi>i2YurN(HhcjsG|6g&Bx@qFKE1I(gHZqD~<yr&HYw4%PVhutfWG4Re1FAROyT z1QmM<Ak8rxz+8;-t85}+U?A{|Ij)Hz8)_W{JgKyz7}cZTU(whM|N6~zbOnn1q5K^y zwEkqnX$}Ju*Vrms6n-O$cJa7W_0*p^IRQc|kc6oO#hLHK1=A&bk{8i1U!04p?P-~v zAzwU<%?<sMed!5=;9A|`0)xNKl}n>vbcjC(QVy(y#O$-qLO>O<SRj4MRL~T3<eU37 z7G;jBRl9~_g)_?QHD8D-kLGNOd3K{RJ!N!_Gb^C-C-NCr&%XgjIR%z%4vg3tu&^A2 zCxXSxVIH$9FK2nouHD}SOcOu~vW5mH$=KIoHcMt8XL;MZLfyEG7PKlpXDjj*eaXmf zblkel20~2R6E!#}WD$Q0@Z9KiYRK4gJPA}8<~Gj)nSV@|>db5Rsxs<*%=)t<ezq5W zjKUFpShFtPY(L9VKV}j81PiZ4M!cZaA5{;}GD=E=N`kt~`zn8MD=*n^S^6{^;RcLu z^rj1kXaYiuW|gO~khXLEz<|*Z3wl9+F;<V-u1PQ)H$^P@h>n?8q<p_tvD#=K_p05~ zh^La3=^LTA>Ihw&K@LUjS@Jz=>|#i}h8uCIB1d<u7xW#vK${IzzztzZR(Mgb?kHGe zs3O=6Y?4B0*-ncqbSTClC&QfuYARqst0&i}#`<I_6B|sXfol>v3qt9Xm!oD#uwG3z zm#)+-@T4Y6<`y>08Lns)1V3d;?kb$X^FY+<DxZo=J|u}q6Fn5V`m3Xp0&E7VH(60n z5zKsqe^GGjuPJItT^iDAw=pb3TnLdJzHQ5hn0rgAF)ztk;l_7Y)Fy}=zg_^3#Yn%z zAjSGngU3npIBOnj`?yqj^Q3>OD(e>Y+U^{)VX#fZuKbeOqur*P2gb#yf`Hux@DpHa zj)nz46?hm~HcW7$PKleV5>pW9eTa$$pWo+BkjHT((h?~?C93R6mnKG<E-1|k>|2wM zzKFZZ5u6)yz>iFV0n#zxUh~#;Gg=@UIEX4ivk=9DEE~7qdkuQJ!zDbM&Xu+UIHwd* zil!tDniB79r214vE}1wz?JI@Dyr>R%U@Kx84Qv|(h>!Gpl{uvuo_bKs*w5kkF38mx zuqUV}_k?IHMeF#@&4^SPhs7MX6nadkrpPz~t19KJBUF~DWfsRxKizIHH;Ml3PM6Dd zmgaNlmH>Y!;0_!oZ~Ht$Hg<s`J4;$^X<XCCnnO^}OVn-QjQd){8Sy(9(q@G7fwup! zpJC!KAf#Pyl{tm7^ye(9+240|;&GvoPOGt{jzSsD>`{=|M!3D2%p8++Rm4UkV5rDk z3qZL*m9C07rDBd)bYuDsVED?|vMdfR5pzH?r6PY%@!q<KZY+TY)(PovGC`FXQG!Y2 zi<y8`S|@}aZ{Y#gXy`1o%0^~okOg@sYuU^a+%w@(Tf{y}^||^$3+JSMz@6ajk`%2+ zTRRJvL6Gv!8p>-oi*RTG`yE&yG7viT1IIMmMta%nWP(HiSXtz3{JeJbD)}ul=gwPX zh)SA;h9u_`LvwsejNHDW#8;Gq2$+a#^PrexqRy~6EF~{NzG)o}T617fh@I+GuzKtu zd#?3S{8rrH$p)}6OCDQx)1&b2ksy6wfI(9!mWWF;k4l-rZh%YigLt7(tIvf0zq)U2 zZrj)r{Jy_J;bawH)MBKWd+SapK`L3c6DRQ_e#A*Mt`r195@HZw08kPm@xRY`^b_bN zWmmR#_f}npYV^BLpFZ!CbJQ&#!qkssBd?qf>(iaelDo88`e?{!(gp-o$3^=FN5tz6 z&<}UN3DLaJN>x$mYE0v{I4@D{>7{y~;jN_aoa)syBQ0yN5q<49F$RUfc9zXyf4ma7 zwzgZdL|J37LLi5;q$>;w${{<O-Se~|_Vto1DGcy8nSHTp6%|S}A+Ns-F+%cNI@VV- zYQ!C(a(xW~$ql9O%St310~oJ|U(CkHmkp^(GQA)p?2u&hlJ!v}IyLQ3FrbXn2OmVW zV*sD>#gblrIIvW~f8yArtMm>|Uug8(-sn1Alz$)1I8eGf%+So!Eh=DY(sFmSBhwro z)M~Hs@$Bt25|Tbu5Sp<LwL_?g3ZI4+$fab&OPg=ZfSca@=)0I{tYjxfqs%{Ux=KEr zX8oDCGmu9Ro&r}G%z?9Q`KNG-m+S(r7ltju2$Y>2vcOhJ;^mpSZ|DhiACY?^Ay|}w zUTI_M-tkqUpShak^f(d4S3*Iim|E<iMmvRW39rZA_&?AqcYIk#xpZh_-bwRqrr6;d z?Y%rjQVbO(X=6b!5N74@nhC0mdZ_i4dCymIPa)ZhjGd2BG|XI_HDfMRZ00p;|80mh z0ZuPEj&|6XiQM0JnRz1`d;V;!bAjf$$=W_tNLH(8V!u4zUOiXKfucr2(c}hIZe*+9 z*!y>Cm{y|dW;WsAq!T0pLXL})O`;?4rlL&LO2X)^C$ALI>Kaxx$*u@V4`tUHj(KW+ z))uGju0Y78Pd4oc(wj99qeNrY$O?$7VwwYhSsI;UjAbb7Z?6baoo`r%-y|6_v&azn zz_~mNN8o-<ucy6DxPhoD^M0ZIdaNioYqt!QW*^h=wKJr)Jw9C<)bYiPTsok2>9C?) z{ufC%T}3BI)43MqC()^t#<X06?976!q0my$ycZe})=gTkKXO`I5cj!D2AcmtOIA4; z)ru=C=`@=RZ(KCW4;lq*jSFneSp76W){NCp&FwS_%6<F|Nn|og8!!okP%bK<Li6M2 zfbI|pxV}44HI#N5X=Y_hGg}mQW=2@Kr-hh%#$XVC&j86375!8Wf_o^{G@`egj^{$4 zQvtSv$)S!j@)~!@LsRJp2BI=vpq-ksv)(3)H!Cv7|K5<8wfX4~o?l1*J>7}^dkp`^ z$MOIE+G{{GdVBKd$0s9-`mG$hS4PDERY&;xT5pOXCl+<|>tbx>6hQW`&Y12ZzQ0i1 z5$w~2^pc|N4$>F~2yVn_2McDd7tR%XJfwjUE;PgCS_6<Kp2#76(+p7iZH%g<(|4mz zdX7_-a08;DSz0d|8WoMS`q4EEGW1n$M;c&f1x5&;XvDMXN4h{-hh4YimMlmL&S&<L zyz+SYZ&)X2zbtg|4pRN5#uTnuM$hA5%2X~Y6X#6^Q?|_V^(Se*ZNA0ciA>!|0EAdG zP=;Ts00C&hnLU)cu&`5lFF1d66=Tk5iYG{8|9kOucc3EM_2(=yawuJ)Q`sHUre_}x zl%;vyizs1*=<YlbC9JU2W_yhLABLDOStEXjjVGN%IF+<^R(+Skg#u^lJh1MxQ=U`0 zn(~Bk>#;->MUyd_qyDv&Z?spng5Td4jqhtA%`O5MPUe0I=oRWABa&MJFBGZ`E&<>V zeQ!FWz+d=el6ROMi87?5UXkU(5*TV#s<Jj<`Mk(Jxn(6=mYJU;wcAQnp4n`jQM~=+ zacep5MPOXZ5VVU!7*FR!HYvwWDBSfkbjS4@W-$A~6Avg$?#P?BXS9-*P8OPq6h;Us zfdyQ!_$8F|D$SzYpQycKXW}T{**^rn173dRUvXSgpImlk)%y@n+DvZf?6c>yVLH3} zN6B7b3cEOkOikf3OWGznla%(v7<6Fp2%uhU3lAW|FoZIGp(oC%4VZ8a^px!9GLwWP zG7azt5OUlEe$x+;p;>fLMW6H9mF8a=-FY)9an)=LG-1^NyDhvwQ7U&O7YhjNHJQ|( zjT-dggatKu2~^s3t^#+zDY^wL8343sujmh~MJ6m(Z0}ZXiK>V{^e(}UTxV{Y?+3Jt z#W`%Fp5awCR=<Uw;}xPR{w;V)P(nZW&!>%Q?%6L@73mmh$Oyl9bo$Lx;-9LR66s)v z*O{Q~?A64V_k>)ZA~X99IlO3m^k7bb4sD1Pl`HgKi+N_OFLSbdaP1!YFtjq9UxhRl zS>^nUG7C}w-DF89+Zt4_Z_xCFy#z7l0$W|;s*DwRZOkvF{R(q8J@d;3%2r|-9_}X7 zB|t|jtXHA8Erwq^u=K(lkzu;M{Y9}7x0zR;8Flyf%BE4x{IUG|DbTj8kvCY_6ZN}t zqOlo&ePP*2!3n&{0?{SV{Y^$eXjOa(sDJ9dJ-N0{mNhXHi}$@HQxF@;lX^cUyAY?i zL%Rv`E^*5nb}i@dg6=0SizSWZe3B%O<lLN3(peqg=xw&f#E)#Hc<WslLSQG?y7xtQ z)r0p_#LhxRlOR_@vxmbCo`jN?_{LSo{)RaqQTcj&*CJ2)Ces)4ZT(_+F^Ay`)(zMs zm~GsB(r}yf9g<$h8rb@2IenMSO*?6-a8N=EZfh958jh~+>V~oPl@5)pDh$RgB$^6r zplxKgX#)$h0V-lkg_NwES|iJ98q~d5lhaI4)EIUBz1W*-n7eo|z}Ou>#ZOTm_&U%0 zy`cLgSu<jdmMuQC)9EqhNu5Xv9#~2MGgH|NDZ?}z?cLw2un^Ezv-Cs@zRv7KT&lx1 zG^cgLb!ND3FkI&wu4wVv7J=l7oigB|LDOdWsxBxd%J|8P$G^XQ`TLu<C$Ha%JU-l~ zfC_=iR12#^E2w<5yT1a2#{q5ps78Gy9pqz4?UY^fP?81cpsxG``sO4{0@~3ovMp+R z5515jFR3g0O&Q~xW7mVfxfX2t$1GWEvxvm*W(tJ%!{rxn(R{Y64KxTfZgUS&{?^cB z>aJs?8@36-0lcjwjQJY_H5aolgNM?w7__yMa<C82h}u4ER{hqv*Q_!o4qx4%s7ABq z0+^q!0la7El;dU$qeR*#CYbh5w+M22TaPp9%O)UQXvqz<h&5!U$ZhD;F@)Y;Evk>6 z%{a-TJ-AD_G!F9HD-bW>{l^oKMYyXxRWU8n%c^ek$;V8j?T=m4he-=(e3U$&1YqoN z$dLaZcqnkXf5Sj_r)nU3@D;)F%P_t;N|>etgm{=pdTo2V!eXH5;1`xMskRbNGOw|E zaS>63JZ1E?N13XSgjOZ>?!Jy<S0s&CB>M-8!<s_XaCVV|93ivhdD>l#Q;gWMn=-M9 zomEGvq8BMX6b@M(rZ~m>`|L=io7-BzI7O1JRGhfIm3V|;QfGaeRVT@_m)WQ-np)F= zGWcITcy4u)%Q`B2&LA%{4!f(Br@8g6_3oY#0Rb!sPFO(+R79E7wu`NPYKwL3QfI(r zAweUTiNST8InkkS?3^U)a1fGk5YyyI=EDgsa%h3qeTDIjMaiHfE@II}Q@L-PZC!<y zA<%pkX3xCGf=0Y1u8}3xayP!Sta?4i2sa|CLkr+zdS;kI>!4QRSr+tgh%UNu!4WXJ z`1ldvC5F3KS*)wB#QRTN@n%5uE@Ht~X_nqb1zjY;e-{<}&1X}QBeGQuu9IDhZyZcd zZ?fDJ47#`y&jVt#PP$DTN_4Udu=Qh>tchS2g51V?c8!5t%D^Q4{KU?K`-!@U(0&%l z^9+-%>bI9-Ar;5B6&vbJ;76IZT^x18AcAr|Kl1jGv%Gj3nzfu#a3(d*q_J|fN{k|V zuaS@XD}?b0Q@b}viB6wplRp)tLKlBziFt;APVQbw)hdd)h*&-jJSsguPk&=F<MD{C z5wkDKl7a*>&5P$0>#q4G9$31V5cE{`du+NA>JRdgSCAA7&E~-2Ox%@I$Dg%qw<WK6 z6*6sP;)!cY+eUYLG@=-iOMhj`xK}N|f6$FS=sJog|KFmZ_ZAA`CF4HTl8&T!2jch8 z)pC8!rKnEz{6{7OOoS-mb09BiLmo`!iU(26H0STKaEwazZYD3Xu_0(V4qR(3szjc4 zR#zv|63Yyy)<`dubhwUM%z}%dUy~NlTPbrI0Q({BfEpyoqArIffcX~j@mc+0a`plF zj0zsMe(2Gf(lBYC-^@n_LFWOnS42+f@Llov5eC4(po(X}Aph(axhmr{?Ib=bs`;Wr z<A&;ZE_EJAYMoH@PS}e!I>T_pVpPm7N0`L;m_yplmF5I%+b!p)MUmbu@3KImViIua zE?~AobrDkn<2Bz8EZ~y7XvBoVw_!rzXXaYq)PBw!7g4*Hn&QL!lKBH8ujAN<ff)vp zgd_;rYAWAmWWi|PhRTI{!}Gt(B(ME#hIirDEP;|AvgF%LeA(Y~jb>3Pq3kE3IQHqD zS+jgnmb6A42$8Q3-@EU#H4eA~R@~G$_%f3bczz1dL2y|WC;9*$^ZU%|d=r1@F8zR5 zzej1CpH$N)7}l;k9u^tCP#CTeeGe%P-Z3Cs{TMpztBjLp+QgIZ`LU^)QovpOElbt| zP+DbIbwf{i4|vGhg+3_ASu*5s6AN^xrUV|vMtO0vJy@?F|H!@0<3WT39^@2Wx$bDs z5pWVLopjM2dC}P=cB9?>KDFkVcsICa-De2wbdYq-wXoK%OadZW8<I53Xs`G9H#iVm z4BM5-9SR$~ia-OWKV%wm4}Ma&<x;iFOV@wKLQW;Jm*GeFbM&aB!2!agT%%7(ex(V^ z$s!8whUx>gb?2lNeP2{sSqbNFyQ?|290NqsiQL@v<d@7mVGiEtU>Y{ws0cAsayf77 zCw&iU>sj)?wN!y|7x~bmPvpc!nl4BTap;P58s0I71j>Qg0Y?==icG1C3mk`s+NqP< zOhz(S)EfzLwMsAIEoD8-N%zo6LMJ_)C{7O^>(AWaFva+HN#z3yp$8s?-I|u_Q{+6n zFK((jI_Zdq39&i9XPU=ELnMzz$Ey6Dsf<0h12xP8C#h956{(R<mE1dQ$1t!5K>xDx zK?zIf+s{9YfcPuJ@h}!86-_e|W1yk`=E^f&xhTD~s78;NP@zM2T!qpxSiMpxV8EWz zOZRBrnMhVf`7)-S@KQNS{xJ}H7?fR<(VmdDY?do#-;Avanz0cJgfa4}n&JRfR!Edh zk@cH?)Hv9g1*@hzpq~dk45wW<Az4mT#6z3?fDfb2o3L>cWSD@oOpN<US)dO}2^>iV zZz~5_@_;6hA|LbRDIgr=aR35O9x0~4vXm#*VEASY*d-0*b$ows@kl8-YoqAdV|2}S zx>|Fj1o#GVE&3?#Kw2RJk5_o2E#`v=J_29&tKy>jAzvQX<)kTN4st`=;ETjCu%wn- zjlTM2N%4&4H2}iIH4Ia&VD~Xt4~A4}%eCI{mYfqcXc)<@OxiN~&;N?Wlz#mKW3QF0 zoVqL8M``x)CT*q@tn@E9nD%Mi=z?z~t>3TsO~2y52yeZcPcBOM@8kNWnoRN6i}bqS z$VgsN>L~foe{FB)hsi(oV5*leEjZ+B3@BIov|<}Dsf=b|sd3jlY_X7JnPU{{C;<f% zYoQLE_YW%jy0hNIm6)X;bF><4gJ^xY0>j|@ro&&c0}A^vFOzp@KGl(gYkZFO<A8XI z_Dy<`HU&WLm6y(TJoBZDO$!;xR0ADM#%<QXwZdq>XcEy2kY{}*p@P-oE$YES4dCN} ziEYHPh3j%4ZHlU1_yBj3v2DqxdzONc^ZsKrFSoZb4bW3vD&>mY@LAQ>*w3?z7kNGf z9CEz=d-TOV1_1U|A?ui%l3j|f0B_Zk>r$LACx65G9xdhiD1K6N?Y}Ko$gUi8k%||| ze^(p;hw`}6ukGzh2FIZ?{&|0YT}G;0$Tk#xaTwjogi(|ZKb0*9?vzsq4R6H2=x1}+ zrZD#kgU58e=%}5?pSv7{@ewk#o+#w5PtHsITOE==TEzxshEdW4jfHRuhqN`v=ST&8 zv4@FlSu%W7$sgO>{B8dsoY5~0zK|htu<t|~vfw9}NE>z^9YibS-oEQ*W%SkIw7A~l z+$8LwG1=PR+ne7WY)PX=^(VUTUX=CCWQ)5$*wP+sTj@E_m5VMv*g|{Dt=(_nf6!)h zboe!NfAp0VyVQ87<;qP`?JFZqn)9wnWriC}W!lPBd!wOp*mgr(mX;Ndv^>`;jb5ye zp(;e`QTpwq`o|6VNi_bz!mStmE~s`^qL-=LLr*AS5y(<BVF+Z0D?)Kah?rARA2SYb z!zTR}+w5_y;qC{54J)t#O7HEbS-Xzl_Vivgo8H#~-%d+JIxPh;Vkb}c6-5PsjyD`9 z&t0;0N;MU53<<rjK55OG7dIfsVQC{tExelzGv&b7IpYCOrH*PT@fEphm~AtHB(sHN zK5Go}Eisa>cM69~{i|A<fn{oQXg;iGq_LKKb|}yVW)otZ;mf~KnC}dNghhV!)V*N< z^y0jj(VWI{%ie;Z?fH^!jK8^b+PYoKQ!=k1ZD9Bbo79c;6uDTEnOlehWP0Zo#ZS^f z?d*ePCZO$HqndSszMG&lyk$97+(0CY;Bsiv5$3T6Ge1WjHKy#0v1<YH2Bn|ND)UG_ zDb9R<y)``j4cQ9lWm`dPD#bYt*X|8^Q-|vtX~Au&=d_UQCey5w+fr~Ai^-aksvG9M zj2N&HoLGuj{WmgwHvhM7D9!=$%fk=xnqYf$Pb+rZ!1|1pP`D>gTG&X#9HahD21KW& z?d$U>y^PLeY#EMkBXeG0;uWM5fWyW>Y_H)AtHtEBq(Ecu=6>VA(=uWg2onbs9%2~- zbhncZ57Nvf(rymQU=Hh$zZncc4BMv<vh#pJcJv^RsN`)O@J!INlARx{ok6!-g~rwc z0&DSijTRhhr;@MhTRYyRYkob~w&>KxTT9Ic<4vbkTMq9)_(<Rw>_ZuB416CR3(b3t z;rJ*T?dSnUVhjJ`{zviF?$H)~Rs+cIy7N&yLLV5ftm1V!t`^P;%<SEn_h*eWeq4qE zSV=d0Nux!G_r*yWGA(sX4Z8UFajCSR^XP3EPaI=8X@}5JjLzaH+1uVO4$o0Kbli*` z!VcBih-i0!BP;;pdp_^(lMk*&+Gb40e2DP%N_-5g_mk$I_h!M;*K>TohNG{<i_&#a z#I!gRjeDApV)3#JD*hXXhixWLN+SuC*>8XeP~jxPBH0%u3H|WApFDiDN2O(3Wk-wK zJj$a_8HL=MtmSyjJ(bkCc*x+d%H-@0qv0S!__7ogrbc>Fii@-?&(rLqbuzlz6Itz% zQ;n{`%hIm+C|vOgRQw>Gt)+_Uq;}R{PhORRU9|nFXY#Qe83n+rFwIb@deU#98sjvL zsgx&h;aDvoOo)`ml2sBG@8K!MHW-HYBkpcnpv!+g$1O}bqaJR~Wj%RTuEcYcj3Q<l zjDNQ_Kw&=qbCEX$+)aM{MnWGsgpv8Bcc(O6sF2s0DkFDneeCFe;wP~mIw{=S&z{tt zJC~LC(FZbCSb_H?g*1~sC7z%uQs;o_YXG%y%q~fLR!$-NTB(A`k95BBPmDjs5z}KD z9Z&nuH9D#v6>z}x6cE69t7jf%C{I75xgrR#{a*oOy+__Gev~0Md?o%^Gx(ntV2j_^ zRD5bz{I1ll_kmaN53a6)as9;!IZ*x6%bw$^NJFjKJpYIS;K?5){igJ8liy2mla?Rz zru6_YT{d|N63W%4qBl0QTgM6*NK@7d=B~px{fD{r_UWnX4`uS_O8i_VFHk7?4rR7! zcNN}+?_g}I5dB;V#YB6y+ioC@__%?0o9)^xJkyo+?uI9%s@PL92eG~#)v+4}4-H$$ zk5L>rq<&r9F+%1_d|R>`BHns3p~ULVa&k5z!(?_O{3S@eJu)0;Cmz?aiuPdgHSEVe zcZ-jbO3H7GwrhRwGE#a`msGLD3x`G)uAP4xb?JANBsxCaM-2!6aiqVqtWz}n6#WVy zH77CFYZ7(<#~>sA4S>uR2|{J&0^z~^r=~FUWTXsuSIY5WCdc2R2my8z$d5^-iSomm zYXm-{i&VdYJ@h`{-(N~;!|znl3`<mqe_|4#34B!)3&j}I{Rnxb-l?mw5<m2Ig_)#J z*cjwpLtCS{yhi^VZV)Z{sMa-npJ{i772GNO4O@ggS(`){U?sj>OQVr@n~r)JPofN9 zxYSA<(I(xPc9=}2hq7+K)oWZahp{$M+oHo7A4iL%5ouBbTk|EZy-09=1t%R?z_Exl zM(vm@$&DJL!%=hVQwoI@_DM=w9J>!w(GqLX4X138Zf6V24_m<&*JP!=w_}6FzBD2$ zSSit#Ye-dn79<;>PSIAp?`F0V-<Rvm>Jv`n5mmH{3Cw}*@)lx$Z%;`Y7uw~Anbed{ zppm;;$4AB371Tyngj7{&cUTFvSnBhkrUrLSq0PYtViI-zQ%}{Y=dznL_M6>wM#s5_ zhQ1H!X_phG{#0U&`sKU1jxqXu3Ah)NVl7F|WflJb#YO&>Y6nQ@-nf0;<L*Dv@&UUD z%h1+!qD3bEWEs)-i`o1QhDNg<GyL?M^I(o<dE2I!IeF)|i!6gb`5C=Pi!z_Wa?U8# z@yL|X{B$WiuX&sJEr(15b22wtiLOoVuJfk2SZ<OkTdf-{3SK-&bllnX16n90wC>_# z{@IWL97)3o3l?Y!{F}tBqoUes0b^~^n&Zh+m~|`8p!tU&$fA^oJx%aF#af(H$0Ewu z0gwJ(V8DNh36V+<<&515Q!YM+Nyvi%t^uGDU+t#Q`5Ixr=>D&K%ySW`NY(Ok>y=3D zKjq!^2FbGC13OF>(ZuPrgFRV^s#Q;|Bi<Rr@}hJVFh-yjeSE2^as;SARTVNq28xIU z4d1%e&-2RyO`P&-3N<J(bf7!@hVa<5N#s;f!JRq9oU)h0K6P6PbO!x9?N}0pft7W# z_F)rXFIzufXUD3`H9tg<N#PJg;k{y&j;NXkBjfqqh-=jU^p&*cl>&O4d=ZrVLo9sb zqlc0EoQt##hwR9Qo_@J2h9of~MpH#fM0#n%B)g`Vnb3D>D|?=p6cq@}ZP;O1NnF)l zkk62!R2J=8VUg7Y-fOGTDh^8|$VL+oT}uI8LV@;hlN-tVsl#Zro;&v6>~@XQfYK@J zSns(C%V)=}CvkAuh6I(ANJ?(pq9v(yoiI6uBwB2iR;=4NSRHhvR#z+U|Akp!Jjq%; z_QMtJxlfy(v&OvjUX!jJBdYVKuQW1IANe)-Hb{S0wUTbgDQ)S)YM$d~cGtLQZBsij zZP$y$_FN6?ytVN5kW!T~C&t>ef}>BshVUya9XL{B1dtjd0MvuRgTH8O8*{an*~7N0 zzXuEZ<4}jZkaxd1p0#prhUKf{$+VSTv3r8=<Hp`lBYln^2R#ypWcNwcRKFZSvt7q7 zos@p}WlNXTQr-x(#r}zSQbm+S^6)Q%=<=eqtS(Ql8sd@e@10_0jM*!GS~S2C-ww*3 zOwq~txEt4aC0`Rui8y)U)Oz-W>J+(E!5r*-^NtV~v|&fs;O8o|dPhyx^gVS#Pe_S& z?S6wALic_wJh+@8iyTjk<i@&K9Xf)Wi`9f?Qkmk)o}j*K##F1t>$>thH0Gg}z}r}9 z8Jn>gOZ>+kBUTFqsAoXx1+UvRvaxWMrE?c;-K>QRFEPKyuA^6<od>!wTfayOSchMa z<j_cAah>uI;0-^%YW;WH&)%3LwHD{+JcjRC<9p9KMGp_&xSn=*!I)~f;n_GJTygz` z6cO1Yg<tX;=Z)z<)5;37aidafvOfAGYcw)X;)UM&7iw{iHww=akrz6?H>CnzcDfx} z;4mnNHvy7;z}^l4G{_4F09tzldSdni``mYCX;7hd{LT{ASH24%1Gcys*1FI^5@qtx zL&O7Mj{-U$+k6bevHm~2bB(1RRa?k<i_ji=($s}50yb~lo*;VByK%1{ws8v6ti;<E zV>;hdlRHJ5PXO&%y4t=Z*n}i7(Haa@F!>1u%_N5sk`BNkEu0eashUvUmu_stLcl1_ z-APzl?19YwL9+nDuRjMU^3LGh9OF{9uFVNzJx+MkqQhH@+36Q;FiM)R#HtCIgo}$L z;?N;Vpwj>et-TXU+dCn%QsCa{JX?-_Je3xK1rp+~TRUCWf@JtI*_G2M8@ex8{q%bo zI*!@)r+8%-fh@w9VRLAI8fnYZ{rmfU>DGaNZ*PC0b9iC$swj1A91AkXP?)u{Y#Ws= zr12(>wV{Q~Q*CPt<?_qe#N4)bcdUQg+c(y~O_yW&3*h8qzC5qd>nvoi!-rpZf)F)w z>$_O!<5tsxZhJ>g@I<lTxaTQ7mN&4&H&;b=C1%MNtk&m3<qvpZj8swkQ{?1LuY!8H z#-{<&b_Vx_T<D@H9M0@m$(3$fj%fjSV@$hN!W<j>=;8^reK%jzaxo9KlVj>;%a&Xk z?cq*adkjxa+5MYVVMmv>mVt4Gg5cpcysvGfUfCo7+XzP$B}j>6q^y>+Xp!tIDBUHl z1UV`e;)D!_n+F>V^MdT{1NLpKog;CRR4^TbE}c;E19N@L$DpB1gc!WTN`yr*<`g8m zPnJY(Om?l2X@pvl(egn64y)+waU1Q!bUyR}jX&+mZ@7NtF6va+6TqX3UQM%8c15md z4`y6RsVaqtogEhn%wj~|aE%v^CPzLDHUNC`wd5Ss&h59Nm_=SRU=iy5$!GB~fH0cq z6Ai1LuHJ>Tf>=xaAzEI2?2{NWPJicS2`YL?Ys8Colh?3LR+&>s){XT)wyN$Ec$?3c zr*L6>VYXkiIyF{4#W$o%UbfMhT?WLvecL28-`FJ|Vms??7a$ucpwsX`RYok-6={Ue zp+y>DZTiH@lcRVO^Z?KawK|>CvlvcMe_IUJqn&Hav?jxu3NJF6<bEV2d<bfid+`<= z()kh-GkMO(-c*w$%-%^{n)_w2a`*FK@l}5m&V=f~z-XToJIMohgAIq=J@Ak_bI6@_ z$d%6a>N#YZrusfSXt|32%ZF__M?Pw8uZMvrij`8<PS-k;<Q9e<K!nQwrF!h2;w1Zf z(vBIrqOytCX6h?cqP<)NCqlCZH-%y;|9;lKu4~d7w8=@!1YpD@S&g(klqpis6i<7p zeF-&pJ=6^JZZ*bm3h4CQ$zMqDTC&PO7U_-djG`YFXn_HnJel;6NI{}G84hwC$*9tU zdG}wE%6^h!6ION@6a$XQxW+Yu7(a#c)s2^TF(w!woY*+AfC|xA@ePLD%anAL<OVhO zJSSgZQtT^I3!03C=k?{H#aw;^B_)tmYjlmw*r0HFh(V+=%{2yQ879%Dpi(MzD5Zh> z2gN4kT?Jrq9kET8IYAkL@CtH1oTeYu#FAuMHsN_#XflW2Rsilosz~ckYv6(2p$!*h zSj;g8CdW3Qm&;n6pl_m}e@BPs&DTdG8RKA36^|-5dC|S_m$~s8?Ft+NH^!@P>ZAi0 zZJn=f?5SDeX8r^k3zK4Fj)7yiG#J4I{!?}hLo;GBxS6F$9e8d<YUK);c_Dg15G?{= zq_WMjC+78rpo22eq#Gz9rv&h?ntGnfTkbxKzIZeMB1uLGLog_t6?^%Phv-SD-Nbm~ z+gL2!k|m}~uIH0V$dTX)MKn1943OURW!vK12lY%8pD((uu2$m4sd7#ixHbHLbWM^3 zu^jH$K@@dphr>O!iRFxPf4}!d672&Hmmg!(D?VhZ*IRdRT?ddF*ErzU%6biNRJu^> zRa`n{_$uD268TEbtiQRRD^-H2Y_ltT5<Hn}tqb8qpX{9L(e%GyHia0Gj)_r)$}Ig? zgP}J=sACb-^_l#N3bkNJ3tQAV;E<HNEXG~Wpkh6zOd>knZe)plZY*KXQj2(QCF?d5 zN)mIm;*`%!!^shRX+4|aP1JchU$u!$Ybu@rn*x~Y5rc|{5<dH2=q7tVoU4a9UQg@U zEX7O~Fv_bIsT_>pMSH$Q|DvNuyTuXvxcHt-(6*ZTW=p1UAGh<e=%UfqD0YM#qk9ey z+{sj}WDYgj9j)StEXv2Tyjnc#@>zRUec;TtdSQ{0wcmBic|I9oRlXe~(G^_@MQ^zR zenD4RPivY#c40NxlHMyt4qxgjD~s%-wxoQO3JQE8iVSmG^Ax;Y^QM@-AJgAka?+|_ zykuEU<8p<Of0?+cy~&>9KKtfs^@(*}Q8RzHvmCG{<s~)!KF6{xS?KALzMs-(f2VZb zy-wd?8Cxg%`lQe6`eeuhsA92_>G&CaAb3-sJpDgYq31Z!*``5Ah~*taepxpJ1-A=~ zz(4^V4d8;xf=~h726}{cJ-C3no4^99tb>Yd(K%B*U39_u!ME__vU<LBdxC;+SMV|1 z*F0@$=lTHf3d=X0KULav{Az^W>6-z<hp+lyclHcjfD{8D%;<766ra}R1E3gs^Fy&5 zW)mR8D4PKp`WgVT#QI@ahMq?pcyT(#xSi)|<9VcjJQ(5o5Xs=kuhJ%+$-#f`xY<bj zu!w<OA^~Z4eD-02q0VG{(GHD-`04rjY)gFjI;O8DO_MI^;{=|;N;`pWZ_^@4-*el^ zdHIM2<_wCKthfo8$Jkag2_|?WDn6_6A2o3Q`1m0K`JSKV=jvJWhHTIhhX!71Ab8=Q z0{>ayKWRUMXwlMnAnCFaW$-J-<4Ojxvbw9HJ!s@}8xK-M#&_u;_j9SzVF!AvKc}|? zuNVcF5Tq$H9<@#Ed>;~2$ePB>e8HhziEawVaS&BWJER(AWHQ6OXi1Mne1_EOHw`Sg zq1dS8z#@&K`rDu-c&R0hGrtS#H>dcqhtiEpt8r;HcH$Ws5I}0Gxn#`>N>|vSWo3;N zY`CcWO)Z<<X|hpY%{~QBN><&<hz{+e<=gb~1#;@@I-Tu(08nidUweN)>dM`Ygd~l& z97gdJr7|mRGXfcg>Fx6$lWu2!XS8*@HQI@)oqgc*wzmP7e6vd-S@#Z#!+rQ?XD7x! zYAC3&poW4pDM{OQR(xQ~YK$t~p4A^%Vo4$p%*W9l*GEY=sSgtrF%*Xhhr^zYyZZ7H zUNck^M5#dRx0_}tNgIhQ78%TAk)#@`7IH~A3W~{OLcl)CyKIW-2q;gCpHl;aP>tea zNis_^*QQ8C#&}Hs?W1Gk)#MX;NSh-4u9)Ts+!L6G>d^%ntc4p5h`<~b%A8I}_Sg~6 z|7<qPr$yT34)ZTwrOd?w({fec*o@DV>{0dvb&KRYImWjUf(kXj5hep}(^q{12&N+x zV&W;Xn4eFvb51c9S~?^@Bg8s2R?KvqN!}z=0vzCzyIDC5SvVRU<jGfu%tAFaMk}NP z-^y@+g!;yUE%jsfyl$q@-xhB8Zj-0ex+<5+sB0Ga=;$k*<gWwB?hvv&%<z}*B%{Nw zIU4Ej6@0Jodj;R&Gt6OXO@Ih?<XOl{KN;=rkB$!0tzt@3!Wv)gMEiUH-tAQJ&R3(Y zt0uolM*lY2(qc|%^wmy<-*nLui#jMeI{Z3?|94ZEFiq`ioSRCUAWLvdjz)s!hQS=I z9YOfq&EN!aBY4sjAQU#6VhJDZ!~NfvK^j*m8?Ii}7*!A!(>T%U5KvIQ`AedI{+jF| zWD(m=eyaodHCpf`ofK{zj7~=ESj?aVSm50pXz<e%lUku99{BU71?sBfjCZI<D1c!_ zmnXeh09*Te`0#J8yOeeLu6b~!dj|ns@+`jDtxyn`n3ev*M(Aec_xI6MnkaTe&cNQr z!rG)tSliU_ogHEW8F&<F0^S_8SHV5%h5@L%p_CBl3caih4S-8hq;3j8{u2Ew*wpZs zoqhT1*PVS$;Qm~+i?qatZS}#@EX^M(A;I-tB{oWR_^=^Lwt%q>N*YkQD*JRr2pjs# zX46Suwtx~$*%vZegDw=(qOvud^?VIy-MeHfG3>6#d(6X3bf_~Q(>(Vw&7mGbT=Lw< zC5JlM9qFF~9(g|Gkwe`Kx#GEpD-N{|Gr;pO1H8Gj@FDe>-F{aePzbJ9#?0VD04>1( z&e!n28(_`P>dwQg?gnt{v$k_DYwOvMC8p^CoRy+7d!$w<w}@n7Yd0t;>6?2ceW6u& z1$%S9U@!PoT8v)tNsOMwjCKJ|WTmI-6Bo|?;=+f_bn*E!4YEG?M$ogNn0ZG$E>$GX zXItWYHTY@?(MRHX@R`uV`Jh;V<jwF4ZQc?$^|{|%`;O;JJL-=&Oi!kYt%G@%=VXR} zDLi~3wJ-&JlXO58oe+a;MX8O&bq(ZeL*^usVXtMJ2qL5?BtT#UD^>zo5D(7KYXEp6 zV?&2SSj)r|03N95Raeg=iV`~eV^U;nyFvCQDbNsqEnnwt@fVqIps)&PD=vOtpaFUE zkT@fbVF)QX+Z6SecT@F{O`@Wo)T$U#C1n4{MtnV6q6M1cpK0QeBBFl)Dz0BN(&j~O z+DK#fWZN)Mn~@R$lt~e}+G{$m$90CvyNhH|N3QZ3%~&2+l#%2m;5H)f+Ncq&<zhyj zk$F^-5Me4V!ZrnR-ubx7Z(g&ttfSFR$q<WErW&aSRVP%^t3T`2r*MBQT3`h%V=2PE z%GXNyS%&#<Wq)Mns?x;UWsdvQY86L+EXJ@gErLMnF)vPuJ@^**Fml?|vMLfHptaZi zy)qp>+E*G&H2hLYwh((v3Ox)LeD+9;jRu36#6SFS^ML(Q4B}qiq|4UZl3wV3Ln;in zldBmH>U=Qm|7gZnX?dLwdKe6Dm;2k#^kd5H%-_EG@+)K4w@Z92=8_0=R@W<B+s;~( zTNZ3(&CdMosl6hPlm(!|J14QAdXg<{r$hQ|6_&YjF3L}GBUpGPy|w|x@w8D!%J2)* z+`@ZqHS?R0L)95@p~bwEF&tKiv9ekllAC16Da`(|K>d;A2=RGnMJX=CG#1N7e|~Z; zlha+`=UBXN?Pr@l#Nt_N6fWp`A`6tZB+8Ys#j6Hr*n!9#AhbwJxTX!Y%4c(Fv^cb9 zU01np-5QJE7G%%TGySk>r>q=v(kzmHx57Myj6<;@KP1ka)3G#nKz}9k8=5@FEt%rx R148{@{{svXFfIiW0swGy8%+QJ literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/table/plugin.js b/public/assets/tinymce/plugins/table/plugin.js index 01786bd44..245749374 120000 --- a/public/assets/tinymce/plugins/table/plugin.js +++ b/public/assets/tinymce/plugins/table/plugin.js @@ -1 +1 @@ -plugin-26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5.js \ No newline at end of file +plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/table/plugin.js.gz b/public/assets/tinymce/plugins/table/plugin.js.gz index 5ca2c0da0..6435189b0 120000 --- a/public/assets/tinymce/plugins/table/plugin.js.gz +++ b/public/assets/tinymce/plugins/table/plugin.js.gz @@ -1 +1 @@ -plugin-26d44ba3cb7b19bcdc85ccb1c192562150b4aa14bdc57e90802aa384377e1fa5.js.gz \ No newline at end of file +plugin-304e1b73b030535eb69634f9961df619b504a04a91099a51ae8c21711dc8ae04.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js b/public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js new file mode 100644 index 000000000..263dcf744 --- /dev/null +++ b/public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return function(){return e}},n=(t(!1),t(!0),function(e){for(var t=new Array(arguments.length-1),n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),a=0;a<n.length;a++)n[a]=arguments[a];var r=t.concat(n);return e.apply(null,r)}}),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),r=tinymce.util.Tools.resolve("tinymce.util.XHR"),l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),c=function(e){return e.getParam("template_cdate_classes","cdate")},o=function(e){return e.getParam("template_mdate_classes","mdate")},i=function(e){return e.getParam("template_selected_content_classes","selcontent")},s=function(e){return e.getParam("template_preview_replace_values")},u=function(e){return e.getParam("template_replace_values")},p=function(e){return e.templates},m=function(e){return e.getParam("template_cdate_format",e.getLang("template.cdate_format"))},d=function(e){return e.getParam("template_mdate_format",e.getLang("template.mdate_format"))},f=function(e){return e.getParam("template_popup_width",600)},g=function(e){return Math.min(l.DOM.getViewPort().h,e.getParam("template_popup_height",500))},h=function(e,t){if((e=""+e).length<t)for(var n=0;n<t-e.length;n++)e="0"+e;return e},y=function(e,t,n){var a="Sun Mon Tue Wed Thu Fri Sat Sun".split(" "),r="Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sunday".split(" "),l="Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),c="January February March April May June July August September October November December".split(" ");return n=n||new Date,t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace("%D","%m/%d/%Y")).replace("%r","%I:%M:%S %p")).replace("%Y",""+n.getFullYear())).replace("%y",""+n.getYear())).replace("%m",h(n.getMonth()+1,2))).replace("%d",h(n.getDate(),2))).replace("%H",""+h(n.getHours(),2))).replace("%M",""+h(n.getMinutes(),2))).replace("%S",""+h(n.getSeconds(),2))).replace("%I",""+((n.getHours()+11)%12+1))).replace("%p",n.getHours()<12?"AM":"PM")).replace("%B",""+e.translate(c[n.getMonth()]))).replace("%b",""+e.translate(l[n.getMonth()]))).replace("%A",""+e.translate(r[n.getDay()]))).replace("%a",""+e.translate(a[n.getDay()]))).replace("%%","%")},v=function(e,t,n){return a.each(n,function(e,n){"function"==typeof e&&(e=e(n)),t=t.replace(new RegExp("\\{\\$"+n+"\\}","g"),e)}),t},M=function(e,t){var n=e.dom,r=u(e);a.each(n.select("*",t),function(e){a.each(r,function(t,a){n.hasClass(e,a)&&"function"==typeof r[a]&&r[a](e)})})},_=function(e,t){return new RegExp("\\b"+t+"\\b","g").test(e.className)},b=function(e,t){return function(){var n=p(e);"function"!=typeof n?"string"==typeof n?r.send({url:n,success:function(e){t(JSON.parse(e))}}):t(n):n(t)}},T=v,x=M,P=function(e,t,n){var r,l,s=e.dom,p=e.selection.getContent();n=v(0,n,u(e)),r=s.create("div",null,n),(l=s.select(".mceTmpl",r))&&l.length>0&&(r=s.create("div",null)).appendChild(l[0].cloneNode(!0)),a.each(s.select("*",r),function(t){_(t,c(e).replace(/\s+/g,"|"))&&(t.innerHTML=y(e,m(e))),_(t,o(e).replace(/\s+/g,"|"))&&(t.innerHTML=y(e,d(e))),_(t,i(e).replace(/\s+/g,"|"))&&(t.innerHTML=p)}),M(e,r),e.execCommand("mceInsertContent",!1,r.innerHTML),e.addVisual()},S=function(e){e.addCommand("mceInsertTemplate",n(P,e))},w=function(e){e.on("PreProcess",function(t){var n=e.dom,r=d(e);a.each(n.select("div",t.node),function(t){n.hasClass(t,"mceTmpl")&&(a.each(n.select("*",t),function(t){n.hasClass(t,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))&&(t.innerHTML=y(e,r))}),x(e,t))})})},D=function(e,t,n){if(-1===n.indexOf("<html>")){var r="";a.each(e.contentCSS,function(t){r+='<link type="text/css" rel="stylesheet" href="'+e.documentBaseURI.toAbsolute(t)+'">'});var l=e.settings.body_class||"";-1!==l.indexOf("=")&&(l=(l=e.getParam("body_class","","hash"))[e.id]||""),n="<!DOCTYPE html><html><head>"+r+'</head><body class="'+l+'">'+n+"</body></html>"}n=T(e,n,s(e));var c=t.find("iframe")[0].getEl().contentWindow.document;c.open(),c.write(n),c.close()},H=function(e,t){var n,l,c=[];if(t&&0!==t.length)a.each(t,function(e){c.push({selected:!c.length,text:e.title,value:{url:e.url,content:e.content,description:e.description}})}),(n=e.windowManager.open({title:"Insert template",layout:"flex",direction:"column",align:"stretch",padding:15,spacing:10,items:[{type:"form",flex:0,padding:0,items:[{type:"container",label:"Templates",items:{type:"listbox",label:"Templates",name:"template",values:c,onselect:function(t){var a=t.control.value();a.url?r.send({url:a.url,success:function(t){D(e,n,l=t)}}):(l=a.content,D(e,n,l)),n.find("#description")[0].text(t.control.value().description)}}}]},{type:"label",name:"description",label:"Description",text:"\xa0"},{type:"iframe",flex:1,border:1}],onsubmit:function(){P(e,!1,l)},minWidth:f(e),minHeight:g(e)})).find("listbox")[0].fire("select");else{var o=e.translate("No templates defined.");e.notificationManager.open({text:o,type:"info"})}},C=function(e){return function(t){H(e,t)}},A=function(e){e.addButton("template",{title:"Insert template",onclick:b(e.settings,C(e))}),e.addMenuItem("template",{text:"Template",onclick:b(e.settings,C(e)),icon:"template",context:"insert"})};e.add("template",function(e){A(e),S(e),w(e)})}(); diff --git a/public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js.gz b/public/assets/tinymce/plugins/template/plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..7286d509f781e5fa78e3d30bf840388ad2f89de6 GIT binary patch literal 2096 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 aN@wV%Azog}(G(*4AO8bfQ+_+K6aWB8wd;!j literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/plugins/template/plugin.js b/public/assets/tinymce/plugins/template/plugin.js index 1cf50e619..f27660d4e 120000 --- a/public/assets/tinymce/plugins/template/plugin.js +++ b/public/assets/tinymce/plugins/template/plugin.js @@ -1 +1 @@ -plugin-1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313.js \ No newline at end of file +plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js \ No newline at end of file diff --git a/public/assets/tinymce/plugins/template/plugin.js.gz b/public/assets/tinymce/plugins/template/plugin.js.gz index 2f9253030..da2b5d9da 120000 --- a/public/assets/tinymce/plugins/template/plugin.js.gz +++ b/public/assets/tinymce/plugins/template/plugin.js.gz @@ -1 +1 @@ -plugin-1ed890eff4ab2fa9adaccfc7a06ac0c4bdba42d12647aab980c81c1fd1469313.js.gz \ No newline at end of file +plugin-f01e6e7d673a50d761d16327c07df99ea79620d2b3d10d8320cb5ca8b49ccf2d.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css b/public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css new file mode 100644 index 000000000..1efdb0871 --- /dev/null +++ b/public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css @@ -0,0 +1 @@ +.mce-container,.mce-container *,.mce-widget,.mce-widget *,.mce-reset{margin:0;padding:0;border:0;outline:0;vertical-align:top;background:transparent;text-decoration:none;color:#595959;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;text-shadow:none;float:none;position:static;width:auto;height:auto;white-space:nowrap;cursor:inherit;-webkit-tap-highlight-color:transparent;line-height:normal;font-weight:normal;text-align:left;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;direction:ltr;max-width:none}.mce-widget button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.mce-container *[unselectable]{-moz-user-select:none;-webkit-user-select:none;-o-user-select:none;user-select:none}.word-wrap{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto}.mce-fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.mce-fade.mce-in{opacity:1}.mce-tinymce{visibility:inherit !important;position:relative}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%;z-index:100}div.mce-fullscreen{position:fixed;top:0;left:0;width:100%;height:auto}.mce-tinymce{display:block;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2)}.mce-statusbar>.mce-container-body{display:flex;padding-right:16px}.mce-statusbar>.mce-container-body .mce-path{flex:1}.mce-wordcount{font-size:inherit;text-transform:uppercase;padding:8px 0}div.mce-edit-area{background:#FFF;filter:none}.mce-statusbar{position:relative}.mce-statusbar .mce-container-body{position:relative;font-size:11px}.mce-fullscreen .mce-resizehandle{display:none}.mce-statusbar .mce-flow-layout-item{margin:0}.mce-charmap{border-collapse:collapse}.mce-charmap td{cursor:default;border:1px solid #c5c5c5;width:20px;height:20px;line-height:20px;text-align:center;vertical-align:middle;padding:2px}.mce-charmap td div{text-align:center}.mce-charmap td:hover{background:white}.mce-grid td.mce-grid-cell div{border:1px solid #c5c5c5;width:15px;height:15px;margin:0;cursor:pointer}.mce-grid td.mce-grid-cell div:focus{border-color:#91bbe9}.mce-grid td.mce-grid-cell div[disabled]{cursor:not-allowed}.mce-grid{border-spacing:2px;border-collapse:separate}.mce-grid a{display:block;border:1px solid transparent}.mce-grid a:hover,.mce-grid a:focus{border-color:#91bbe9}.mce-grid-border{margin:0 4px 0 4px}.mce-grid-border a{border-color:#c5c5c5;width:13px;height:13px}.mce-grid-border a:hover,.mce-grid-border a.mce-active{border-color:#91bbe9;background:#bdd6f2}.mce-text-center{text-align:center}div.mce-tinymce-inline{width:100%}.mce-colorbtn-trans div{text-align:center;vertical-align:middle;font-weight:bold;font-size:20px;line-height:16px;color:#8b8b8b}.mce-monospace{font-family:"Courier New",Courier,monospace}.mce-toolbar-grp .mce-flow-layout-item{margin-bottom:0}.mce-container b{font-weight:bold}.mce-container p{margin-bottom:5px}.mce-container a{cursor:pointer;color:#2276d2}.mce-container a:hover{text-decoration:underline}.mce-container ul{margin-left:15px}.mce-container .mce-table-striped{border-collapse:collapse;margin:10px}.mce-container .mce-table-striped thead>tr{background-color:#fafafa}.mce-container .mce-table-striped thead>tr th{font-weight:bold}.mce-container .mce-table-striped td,.mce-container .mce-table-striped th{padding:5px}.mce-container .mce-table-striped tr:nth-child(even){background-color:#fafafa}.mce-container .mce-table-striped tbody>tr:hover{background-color:#e1e1e1}.mce-branding{font-size:inherit;text-transform:uppercase;white-space:pre;padding:8px 0}.mce-branding a{font-size:inherit;color:inherit}.mce-top-part{position:relative}.mce-top-part::before{content:'';position:absolute;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2);top:0;right:0;bottom:0;left:0;pointer-events:none}.mce-rtl .mce-wordcount{left:0;right:auto}.mce-rtl .mce-statusbar>.mce-container-body>*:last-child{padding-right:0;padding-left:10px}.mce-rtl .mce-path{text-align:right;padding-right:16px}.mce-croprect-container{position:absolute;top:0;left:0}.mce-croprect-handle{position:absolute;top:0;left:0;width:20px;height:20px;border:2px solid white}.mce-croprect-handle-nw{border-width:2px 0 0 2px;margin:-2px 0 0 -2px;cursor:nw-resize;top:100px;left:100px}.mce-croprect-handle-ne{border-width:2px 2px 0 0;margin:-2px 0 0 -20px;cursor:ne-resize;top:100px;left:200px}.mce-croprect-handle-sw{border-width:0 0 2px 2px;margin:-20px 2px 0 -2px;cursor:sw-resize;top:200px;left:100px}.mce-croprect-handle-se{border-width:0 2px 2px 0;margin:-20px 0 0 -20px;cursor:se-resize;top:200px;left:200px}.mce-croprect-handle-move{position:absolute;cursor:move;border:0}.mce-croprect-block{opacity:.5;filter:alpha(opacity=50);zoom:1;position:absolute;background:black}.mce-croprect-handle:focus{border-color:#2276d2}.mce-croprect-handle-move:focus{outline:1px solid #2276d2}.mce-imagepanel{overflow:auto;background:black}.mce-imagepanel-bg{position:absolute;background:url("data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==")}.mce-imagepanel img{position:absolute}.mce-imagetool.mce-btn .mce-ico{display:block;width:20px;height:20px;text-align:center;line-height:20px;font-size:20px;padding:5px}.mce-arrow-up{margin-top:12px}.mce-arrow-down{margin-top:-12px}.mce-arrow:before,.mce-arrow:after{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.mce-arrow.mce-arrow-up:before{top:-9px;border-bottom-color:#c5c5c5;border-width:0 9px 9px;margin-left:-9px}.mce-arrow.mce-arrow-down:before{bottom:-9px;border-top-color:#c5c5c5;border-width:9px 9px 0;margin-left:-9px}.mce-arrow.mce-arrow-up:after{top:-8px;border-bottom-color:#fff;border-width:0 8px 8px;margin-left:-8px}.mce-arrow.mce-arrow-down:after{bottom:-8px;border-top-color:#fff;border-width:8px 8px 0;margin-left:-8px}.mce-arrow.mce-arrow-left:before,.mce-arrow.mce-arrow-left:after{margin:0}.mce-arrow.mce-arrow-left:before{left:8px}.mce-arrow.mce-arrow-left:after{left:9px}.mce-arrow.mce-arrow-right:before,.mce-arrow.mce-arrow-right:after{left:auto;margin:0}.mce-arrow.mce-arrow-right:before{right:8px}.mce-arrow.mce-arrow-right:after{right:9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:before{left:-9px;top:50%;border-right-color:#c5c5c5;border-width:9px 9px 9px 0;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left:after{left:-8px;top:50%;border-right-color:#fff;border-width:8px 8px 8px 0;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-left{margin-left:12px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:before{right:-9px;top:50%;border-left-color:#c5c5c5;border-width:9px 0 9px 9px;margin-top:-9px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right:after{right:-8px;top:50%;border-left-color:#fff;border-width:8px 0 8px 8px;margin-top:-8px}.mce-arrow.mce-arrow-center.mce-arrow.mce-arrow-right{margin-left:-14px}.mce-edit-aria-container>.mce-container-body{display:flex}.mce-edit-aria-container>.mce-container-body .mce-edit-area{flex:1}.mce-edit-aria-container>.mce-container-body .mce-sidebar>.mce-container-body{display:flex;align-items:stretch;height:100%}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel{min-width:250px;max-width:250px;position:relative}.mce-edit-aria-container>.mce-container-body .mce-sidebar-panel>.mce-container-body{position:absolute;width:100%;height:100%;overflow:auto;top:0;left:0}.mce-sidebar-toolbar{border:0 solid #c5c5c5;border-left-width:1px}.mce-sidebar-toolbar .mce-btn{border-left:0;border-right:0}.mce-sidebar-toolbar .mce-btn.mce-active,.mce-sidebar-toolbar .mce-btn.mce-active:hover{background-color:#555c66}.mce-sidebar-toolbar .mce-btn.mce-active button,.mce-sidebar-toolbar .mce-btn.mce-active:hover button,.mce-sidebar-toolbar .mce-btn.mce-active button i,.mce-sidebar-toolbar .mce-btn.mce-active:hover button i{color:white;text-shadow:1px 1px none}.mce-sidebar-panel{border:0 solid #c5c5c5;border-left-width:1px}.mce-container,.mce-container-body{display:block}.mce-autoscroll{overflow:hidden}.mce-scrollbar{position:absolute;width:7px;height:100%;top:2px;right:2px;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-scrollbar-h{top:auto;right:auto;left:2px;bottom:2px;width:100%;height:7px}.mce-scrollbar-thumb{position:absolute;background-color:#000;border:1px solid #888;border-color:rgba(85,85,85,0.6);width:5px;height:100%}.mce-scrollbar-h .mce-scrollbar-thumb{width:100%;height:5px}.mce-scrollbar:hover,.mce-scrollbar.mce-active{background-color:#AAA;opacity:.6;filter:alpha(opacity=60);zoom:1}.mce-scroll{position:relative}.mce-panel{border:0 solid #f3f3f3;border:0 solid #c5c5c5;background-color:#fff}.mce-floatpanel{position:absolute;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2)}.mce-floatpanel.mce-fixed{position:fixed}.mce-floatpanel .mce-arrow,.mce-floatpanel .mce-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.mce-floatpanel .mce-arrow{border-width:11px}.mce-floatpanel .mce-arrow:after{border-width:10px;content:""}.mce-floatpanel.mce-popover{filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2);top:0;left:0;background:#FFF;border:1px solid #c5c5c5;border:1px solid rgba(0,0,0,0.25)}.mce-floatpanel.mce-popover.mce-bottom{margin-top:10px;*margin-top:0}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#c5c5c5;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.mce-floatpanel.mce-popover.mce-bottom>.mce-arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#FFF}.mce-floatpanel.mce-popover.mce-bottom.mce-start{margin-left:-22px}.mce-floatpanel.mce-popover.mce-bottom.mce-start>.mce-arrow{left:20px}.mce-floatpanel.mce-popover.mce-bottom.mce-end{margin-left:22px}.mce-floatpanel.mce-popover.mce-bottom.mce-end>.mce-arrow{right:10px;left:auto}.mce-fullscreen{border:0;padding:0;margin:0;overflow:hidden;height:100%}div.mce-fullscreen{position:fixed;top:0;left:0}#mce-modal-block{opacity:0;filter:alpha(opacity=0);zoom:1;position:fixed;left:0;top:0;width:100%;height:100%;background:#FFF}#mce-modal-block.mce-in{opacity:.5;filter:alpha(opacity=50);zoom:1}.mce-window-move{cursor:move}.mce-window{-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;background:#FFF;position:fixed;top:0;left:0;opacity:0;transform:scale(0.1);transition:transform 100ms ease-in,opacity 150ms ease-in}.mce-window.mce-in{transform:scale(1);opacity:1}.mce-window-head{padding:9px 15px;border-bottom:1px solid #c5c5c5;position:relative}.mce-window-head .mce-close{position:absolute;right:0;top:0;height:38px;width:38px;text-align:center;cursor:pointer}.mce-window-head .mce-close i{color:#9b9b9b}.mce-close:hover i{color:#bdbdbd}.mce-window-head .mce-title{line-height:20px;font-size:20px;font-weight:bold;text-rendering:optimizelegibility;padding-right:20px}.mce-window .mce-container-body{display:block}.mce-foot{display:block;background-color:#FFF;border-top:1px solid #c5c5c5}.mce-window-head .mce-dragh{position:absolute;top:0;left:0;cursor:move;width:90%;height:100%}.mce-window iframe{width:100%;height:100%}.mce-window-body .mce-listbox{border-color:#e2e4e7}.mce-window .mce-btn:hover{border-color:#c5c5c5}.mce-window .mce-btn:focus{border-color:#2276d2}.mce-window-body .mce-btn,.mce-foot .mce-btn{border-color:#c5c5c5}.mce-foot .mce-btn.mce-primary{border-color:transparent}.mce-rtl .mce-window-head .mce-close{position:absolute;right:auto;left:0}.mce-rtl .mce-window-head .mce-dragh{left:auto;right:0}.mce-rtl .mce-window-head .mce-title{direction:rtl;text-align:right;padding-right:0;padding-left:20px}.mce-tooltip{position:absolute;padding:5px;opacity:.8;filter:alpha(opacity=80);zoom:1;margin-top:1px}.mce-tooltip-inner{font-size:11px;background-color:#000;color:white;max-width:200px;padding:5px 8px 4px 8px;text-align:center;white-space:normal}.mce-tooltip-inner{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-tooltip-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #000}.mce-tooltip-arrow-n{border-bottom-color:#000}.mce-tooltip-arrow-s{border-top-color:#000}.mce-tooltip-arrow-e{border-left-color:#000}.mce-tooltip-arrow-w{border-right-color:#000}.mce-tooltip-nw,.mce-tooltip-sw{margin-left:-14px}.mce-tooltip-ne,.mce-tooltip-se{margin-left:14px}.mce-tooltip-n .mce-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-nw .mce-tooltip-arrow{top:0;left:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-ne .mce-tooltip-arrow{top:0;right:10px;border-bottom-style:solid;border-top:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-s .mce-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-sw .mce-tooltip-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-se .mce-tooltip-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:none;border-left-color:transparent;border-right-color:transparent}.mce-tooltip-e .mce-tooltip-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:none;border-top-color:transparent;border-bottom-color:transparent}.mce-tooltip-w .mce-tooltip-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}.mce-progress{display:inline-block;position:relative;height:20px}.mce-progress .mce-bar-container{display:inline-block;width:100px;height:100%;margin-right:8px;border:1px solid #ccc;overflow:hidden}.mce-progress .mce-text{display:inline-block;margin-top:auto;margin-bottom:auto;font-size:14px;width:40px;color:#595959}.mce-bar{display:block;width:0;height:100%;background-color:#dfdfdf;-webkit-transition:width .2s ease;transition:width .2s ease}.mce-notification{position:absolute;background-color:#fff;padding:5px;margin-top:5px;border-width:1px;border-style:solid;border-color:#c5c5c5;transition:transform 100ms ease-in,opacity 150ms ease-in;opacity:0;box-sizing:border-box}.mce-notification.mce-in{opacity:1}.mce-notification-success{background-color:#dff0d8;border-color:#d6e9c6}.mce-notification-info{background-color:#d9edf7;border-color:#779ECB}.mce-notification-warning{background-color:#fcf8e3;border-color:#faebcc}.mce-notification-error{background-color:#f2dede;border-color:#ebccd1}.mce-notification.mce-has-close{padding-right:15px}.mce-notification .mce-ico{margin-top:5px}.mce-notification-inner{word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word;-ms-hyphens:auto;-moz-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;display:inline-block;font-size:14px;margin:5px 8px 4px 8px;text-align:center;white-space:normal;color:#31708f}.mce-notification-inner a{text-decoration:underline;cursor:pointer}.mce-notification .mce-progress{margin-right:8px}.mce-notification .mce-progress .mce-text{margin-top:5px}.mce-notification *,.mce-notification .mce-progress .mce-text{color:#595959}.mce-notification .mce-progress .mce-bar-container{border-color:#c5c5c5}.mce-notification .mce-progress .mce-bar-container .mce-bar{background-color:#595959}.mce-notification-success *,.mce-notification-success .mce-progress .mce-text{color:#3c763d}.mce-notification-success .mce-progress .mce-bar-container{border-color:#d6e9c6}.mce-notification-success .mce-progress .mce-bar-container .mce-bar{background-color:#3c763d}.mce-notification-info *,.mce-notification-info .mce-progress .mce-text{color:#31708f}.mce-notification-info .mce-progress .mce-bar-container{border-color:#779ECB}.mce-notification-info .mce-progress .mce-bar-container .mce-bar{background-color:#31708f}.mce-notification-warning *,.mce-notification-warning .mce-progress .mce-text{color:#8a6d3b}.mce-notification-warning .mce-progress .mce-bar-container{border-color:#faebcc}.mce-notification-warning .mce-progress .mce-bar-container .mce-bar{background-color:#8a6d3b}.mce-notification-error *,.mce-notification-error .mce-progress .mce-text{color:#a94442}.mce-notification-error .mce-progress .mce-bar-container{border-color:#ebccd1}.mce-notification-error .mce-progress .mce-bar-container .mce-bar{background-color:#a94442}.mce-notification .mce-close{position:absolute;top:6px;right:8px;font-size:20px;font-weight:bold;line-height:20px;color:#9b9b9b;cursor:pointer}.mce-abs-layout{position:relative}body .mce-abs-layout-item,.mce-abs-end{position:absolute}.mce-abs-end{width:1px;height:1px}.mce-container-body.mce-abs-layout{overflow:hidden}.mce-btn{border:1px solid #b3b3b3;border-color:transparent transparent transparent transparent;position:relative;text-shadow:0 1px 1px rgba(255,255,255,0.75);background:white;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn:hover,.mce-btn:active{background:white;color:#595959;border-color:#e2e4e7}.mce-btn:focus{background:white;color:#595959;border-color:#e2e4e7}.mce-btn.mce-disabled button,.mce-btn.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-btn.mce-active,.mce-btn.mce-active:hover,.mce-btn.mce-active:focus,.mce-btn.mce-active:active{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background:#555c66;color:white;border-color:transparent}.mce-btn.mce-active button,.mce-btn.mce-active:hover button,.mce-btn.mce-active i,.mce-btn.mce-active:hover i{color:white}.mce-btn:hover .mce-caret{border-top-color:#b5bcc2}.mce-btn.mce-active .mce-caret,.mce-btn.mce-active:hover .mce-caret{border-top-color:white}.mce-btn button{padding:4px 6px;font-size:14px;line-height:20px;*line-height:16px;cursor:pointer;color:#595959;text-align:center;overflow:visible;-webkit-appearance:none}.mce-btn button::-moz-focus-inner{border:0;padding:0}.mce-btn i{text-shadow:1px 1px none}.mce-primary.mce-btn-has-text{min-width:50px}.mce-primary{color:white;border:1px solid transparent;border-color:transparent;background-color:#2276d2}.mce-primary:hover,.mce-primary:focus{background-color:#1e6abc;border-color:transparent}.mce-primary.mce-disabled button,.mce-primary.mce-disabled:hover button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-primary.mce-active,.mce-primary.mce-active:hover,.mce-primary:not(.mce-disabled):active{background-color:#1e6abc;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-primary button,.mce-primary button i{color:white;text-shadow:1px 1px none}.mce-btn .mce-txt{font-size:inherit;line-height:inherit;color:inherit}.mce-btn-large button{padding:9px 14px;font-size:16px;line-height:normal}.mce-btn-large i{margin-top:2px}.mce-btn-small button{padding:1px 5px;font-size:12px;*padding-bottom:2px}.mce-btn-small i{line-height:20px;vertical-align:top;*line-height:18px}.mce-btn .mce-caret{margin-top:8px;margin-left:0}.mce-btn-small .mce-caret{margin-top:8px;margin-left:0}.mce-caret{display:inline-block;*display:inline;*zoom:1;width:0;height:0;vertical-align:top;border-top:4px solid #b5bcc2;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.mce-disabled .mce-caret{border-top-color:#aaa}.mce-caret.mce-up{border-bottom:4px solid #b5bcc2;border-top:0}.mce-btn-flat{border:0;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-btn-flat:hover,.mce-btn-flat.mce-active,.mce-btn-flat:focus,.mce-btn-flat:active{border:0;background:#e6e6e6;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-btn-has-text .mce-ico{padding-right:5px}.mce-rtl .mce-btn button{direction:rtl}.mce-toolbar .mce-btn-group{margin:0;padding:2px 0}.mce-btn-group .mce-btn{border-width:1px;margin:0;margin-left:2px}.mce-btn-group:not(:first-child){border-left:1px solid #d9d9d9;padding-left:0;margin-left:2px}.mce-btn-group{margin-left:2px}.mce-btn-group .mce-btn.mce-flow-layout-item{margin:0}.mce-rtl .mce-btn-group .mce-btn{margin-left:0;margin-right:2px}.mce-rtl .mce-btn-group .mce-first{margin-right:0}.mce-rtl .mce-btn-group:not(:first-child){border-left:none;border-right:1px solid #d9d9d9;padding-right:4px;margin-right:4px}.mce-checkbox{cursor:pointer}i.mce-i-checkbox{margin:0 3px 0 0;border:1px solid #c5c5c5;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:white;text-indent:-10em;overflow:hidden}.mce-checked i.mce-i-checkbox{color:#595959;font-size:16px;line-height:16px;text-indent:0}.mce-checkbox:focus i.mce-i-checkbox,.mce-checkbox.mce-focus i.mce-i-checkbox{border:1px solid #2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-checkbox.mce-disabled .mce-label,.mce-checkbox.mce-disabled i.mce-i-checkbox{color:#bdbdbd}.mce-checkbox .mce-label{vertical-align:middle}.mce-rtl .mce-checkbox{direction:rtl;text-align:right}.mce-rtl i.mce-i-checkbox{margin:0 0 0 3px}.mce-combobox{position:relative;display:inline-block;*display:inline;*zoom:1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;*height:32px}.mce-combobox input{border:1px solid #c5c5c5;border-right-color:#c5c5c5;height:28px}.mce-combobox.mce-disabled input{color:#bdbdbd}.mce-combobox .mce-btn{border:1px solid #c5c5c5;border-left:0;margin:0}.mce-combobox button{padding-right:8px;padding-left:8px}.mce-combobox.mce-disabled .mce-btn button{cursor:default;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-combobox .mce-status{position:absolute;right:2px;top:50%;line-height:16px;margin-top:-8px;font-size:12px;width:15px;height:15px;text-align:center;cursor:pointer}.mce-combobox.mce-has-status input{padding-right:20px}.mce-combobox.mce-has-open .mce-status{right:37px}.mce-combobox .mce-status.mce-i-warning{color:#c09853}.mce-combobox .mce-status.mce-i-checkmark{color:#468847}.mce-menu.mce-combobox-menu{border-top:0;margin-top:0;max-height:200px}.mce-menu.mce-combobox-menu .mce-menu-item{padding:4px 6px 4px 4px;font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-sep{padding:0}.mce-menu.mce-combobox-menu .mce-text,.mce-menu.mce-combobox-menu .mce-text b{font-size:11px}.mce-menu.mce-combobox-menu .mce-menu-item-link,.mce-menu.mce-combobox-menu .mce-menu-item-link b{font-size:11px}.mce-colorbox i{border:1px solid #c5c5c5;width:14px;height:14px}.mce-colorbutton .mce-ico{position:relative}.mce-colorbutton-grid{margin:4px}.mce-colorbutton .mce-preview{padding-right:3px;display:block;position:absolute;left:50%;top:50%;margin-left:-17px;margin-top:7px;background:gray;width:13px;height:2px;overflow:hidden}.mce-colorbutton.mce-btn-small .mce-preview{margin-left:-16px;padding-right:0;width:16px}.mce-rtl .mce-colorbutton{direction:rtl}.mce-rtl .mce-colorbutton .mce-preview{margin-left:0;padding-right:0;padding-left:3px}.mce-rtl .mce-colorbutton.mce-btn-small .mce-preview{margin-left:0;padding-right:0;padding-left:2px}.mce-rtl .mce-colorbutton .mce-open{padding-left:4px;padding-right:4px;border-left:0}.mce-colorpicker{position:relative;width:250px;height:220px}.mce-colorpicker-sv{position:absolute;top:0;left:0;width:90%;height:100%;border:1px solid #c5c5c5;cursor:crosshair;overflow:hidden}.mce-colorpicker-h-chunk{width:100%}.mce-colorpicker-overlay1,.mce-colorpicker-overlay2{width:100%;height:100%;position:absolute;top:0;left:0}.mce-colorpicker-overlay1{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr='#ffffff', endColorstr='#00ffffff');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=1,startColorstr='#ffffff', endColorstr='#00ffffff')";background:linear-gradient(to right, #fff, rgba(255,255,255,0))}.mce-colorpicker-overlay2{filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#00000000', endColorstr='#000000');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#00000000', endColorstr='#000000')";background:linear-gradient(to bottom, transparent, #000)}.mce-colorpicker-selector1{background:none;position:absolute;width:12px;height:12px;margin:-8px 0 0 -8px;border:1px solid black;border-radius:50%}.mce-colorpicker-selector2{position:absolute;width:10px;height:10px;border:1px solid white;border-radius:50%}.mce-colorpicker-h{position:absolute;top:0;right:0;width:6.5%;height:100%;border:1px solid #c5c5c5;cursor:crosshair}.mce-colorpicker-h-marker{margin-top:-4px;position:absolute;top:0;left:-1px;width:100%;border:1px solid black;background:white;height:4px;z-index:100}.mce-path{display:inline-block;*display:inline;*zoom:1;padding:8px;white-space:normal;font-size:inherit}.mce-path .mce-txt{display:inline-block;padding-right:3px}.mce-path .mce-path-body{display:inline-block}.mce-path-item{display:inline-block;*display:inline;*zoom:1;cursor:pointer;color:#595959;font-size:inherit;text-transform:uppercase}.mce-path-item:hover{text-decoration:underline}.mce-path-item:focus{background:#555c66;color:white}.mce-path .mce-divider{display:inline;font-size:inherit}.mce-disabled .mce-path-item{color:#aaa}.mce-rtl .mce-path{direction:rtl}.mce-fieldset{border:0 solid #9E9E9E}.mce-fieldset>.mce-container-body{margin-top:-15px}.mce-fieldset-title{margin-left:5px;padding:0 5px 0 5px}.mce-fit-layout{display:inline-block;*display:inline;*zoom:1}.mce-fit-layout-item{position:absolute}.mce-flow-layout-item{display:inline-block;*display:inline;*zoom:1}.mce-flow-layout-item{margin:2px 0 2px 2px}.mce-flow-layout-item.mce-last{margin-right:2px}.mce-flow-layout{white-space:normal}.mce-tinymce-inline .mce-flow-layout{white-space:nowrap}.mce-rtl .mce-flow-layout{text-align:right;direction:rtl}.mce-rtl .mce-flow-layout-item{margin:2px 2px 2px 0}.mce-rtl .mce-flow-layout-item.mce-last{margin-left:2px}.mce-iframe{border:0 solid #c5c5c5;width:100%;height:100%}.mce-infobox{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden;border:1px solid red}.mce-infobox div{display:block;margin:5px}.mce-infobox div button{position:absolute;top:50%;right:4px;cursor:pointer;margin-top:-8px;display:none}.mce-infobox div button:focus{outline:2px solid #e2e4e7}.mce-infobox.mce-has-help div{margin-right:25px}.mce-infobox.mce-has-help button{display:block}.mce-infobox.mce-success{background:#dff0d8;border-color:#d6e9c6}.mce-infobox.mce-success div{color:#3c763d}.mce-infobox.mce-warning{background:#fcf8e3;border-color:#faebcc}.mce-infobox.mce-warning div{color:#8a6d3b}.mce-infobox.mce-error{background:#f2dede;border-color:#ebccd1}.mce-infobox.mce-error div{color:#a94442}.mce-rtl .mce-infobox div{text-align:right;direction:rtl}.mce-label{display:inline-block;*display:inline;*zoom:1;text-shadow:0 1px 1px rgba(255,255,255,0.75);overflow:hidden}.mce-label.mce-autoscroll{overflow:auto}.mce-label.mce-disabled{color:#aaa}.mce-label.mce-multiline{white-space:pre-wrap}.mce-label.mce-success{color:#468847}.mce-label.mce-warning{color:#c09853}.mce-label.mce-error{color:#b94a48}.mce-rtl .mce-label{text-align:right;direction:rtl}.mce-menubar{border:1px solid #e2e4e7}.mce-menubar .mce-menubtn{border-color:transparent;background:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:none}.mce-menubar .mce-menubtn button span{color:#595959}.mce-menubar .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-active .mce-caret,.mce-menubar .mce-menubtn:hover .mce-caret{border-top-color:#b5bcc2}.mce-menubar .mce-menubtn:hover,.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus{border-color:#e2e4e7;background:white;filter:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-menubar .mce-menubtn.mce-active{border-bottom:none;z-index:65537}div.mce-menubtn.mce-opened{border-bottom-color:white;z-index:65537}.mce-menubtn button{color:#595959}.mce-menubtn.mce-btn-small span{font-size:12px}.mce-menubtn.mce-fixed-width span{display:inline-block;overflow-x:hidden;text-overflow:ellipsis;width:90px}.mce-menubtn.mce-fixed-width.mce-btn-small span{width:70px}.mce-menubtn .mce-caret{*margin-top:6px}.mce-rtl .mce-menubtn button{direction:rtl;text-align:right}.mce-rtl .mce-menubtn.mce-fixed-width span{direction:rtl;text-align:right}.mce-menu-item{display:block;padding:6px 4px 6px 4px;clear:both;font-weight:normal;line-height:20px;color:#595959;white-space:nowrap;cursor:pointer;line-height:normal;border-left:4px solid transparent;margin-bottom:1px}.mce-menu-item .mce-text,.mce-menu-item .mce-text b{line-height:1;vertical-align:initial}.mce-menu-item .mce-caret{margin-top:4px;margin-right:6px;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:4px solid #595959}.mce-menu-item .mce-menu-shortcut{display:inline-block;padding:0 10px 0 20px;color:#aaa}.mce-menu-item .mce-ico{padding-right:4px}.mce-menu-item:hover,.mce-menu-item:focus{background:#ededee}.mce-menu-item:hover .mce-menu-shortcut,.mce-menu-item:focus .mce-menu-shortcut{color:#aaa}.mce-menu-item:hover .mce-text,.mce-menu-item:focus .mce-text,.mce-menu-item:hover .mce-ico,.mce-menu-item:focus .mce-ico{color:#595959}.mce-menu-item.mce-selected{background:#ededee}.mce-menu-item.mce-selected .mce-text,.mce-menu-item.mce-selected .mce-ico{color:#595959}.mce-menu-item.mce-active.mce-menu-item-normal{background:#555c66}.mce-menu-item.mce-active.mce-menu-item-normal .mce-text,.mce-menu-item.mce-active.mce-menu-item-normal .mce-ico{color:white}.mce-menu-item.mce-active.mce-menu-item-checkbox .mce-ico{visibility:visible}.mce-menu-item.mce-disabled,.mce-menu-item.mce-disabled:hover{background:white}.mce-menu-item.mce-disabled:focus,.mce-menu-item.mce-disabled:hover:focus{background:#ededee}.mce-menu-item.mce-disabled .mce-text,.mce-menu-item.mce-disabled:hover .mce-text,.mce-menu-item.mce-disabled .mce-ico,.mce-menu-item.mce-disabled:hover .mce-ico{color:#aaa}.mce-menu-item.mce-menu-item-preview.mce-active{border-left:5px solid #555c66;background:white}.mce-menu-item.mce-menu-item-preview.mce-active .mce-text,.mce-menu-item.mce-menu-item-preview.mce-active .mce-ico{color:#595959}.mce-menu-item.mce-menu-item-preview.mce-active:hover{background:#ededee}.mce-menu-item-link{color:#093;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mce-menu-item-link b{color:#093}.mce-menu-item-ellipsis{display:block;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mce-menu-item:hover *,.mce-menu-item.mce-selected *,.mce-menu-item:focus *{color:#595959}div.mce-menu .mce-menu-item-sep,.mce-menu-item-sep:hover{border:0;padding:0;height:1px;margin:9px 1px;overflow:hidden;background:transparent;border-bottom:1px solid rgba(0,0,0,0.1);cursor:default;filter:none}div.mce-menu .mce-menu-item b{font-weight:bold}.mce-menu-item-indent-1{padding-left:20px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-2{padding-left:35px}.mce-menu-item-indent-3{padding-left:40px}.mce-menu-item-indent-4{padding-left:45px}.mce-menu-item-indent-5{padding-left:50px}.mce-menu-item-indent-6{padding-left:55px}.mce-menu.mce-rtl{direction:rtl}.mce-rtl .mce-menu-item{text-align:right;direction:rtl;padding:6px 12px 6px 15px}.mce-rtl .mce-menu-item .mce-caret{margin-left:6px;margin-right:0;border-right:4px solid #595959;border-left:0}.mce-rtl .mce-menu-item.mce-selected .mce-caret,.mce-rtl .mce-menu-item:focus .mce-caret,.mce-rtl .mce-menu-item:hover .mce-caret{border-left-color:transparent;border-right-color:#595959}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-throbber{position:absolute;top:0;left:0;width:100%;height:100%;opacity:.6;filter:alpha(opacity=60);zoom:1;background:#fff url("img/loader.gif") no-repeat center center}.mce-throbber-inline{position:static;height:50px}.mce-menu .mce-throbber-inline{height:25px;background-size:contain}.mce-menu{position:absolute;left:0;top:0;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background:transparent;z-index:1000;padding:5px 0 5px 0;margin:-1px 0 0;min-width:180px;background:white;border:1px solid #c5c9cf;border:1px solid #e2e4e7;z-index:1002;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.2);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.2);box-shadow:0 1px 2px rgba(0,0,0,0.2);max-height:500px;overflow:auto;overflow-x:hidden}.mce-menu.mce-animate{opacity:.01;transform:rotateY(10deg) rotateX(-10deg);transform-origin:left top}.mce-menu.mce-menu-align .mce-menu-shortcut,.mce-menu.mce-menu-align .mce-caret{position:absolute;right:0}.mce-menu i{display:none}.mce-menu-has-icons i{display:inline-block}.mce-menu.mce-in.mce-animate{opacity:1;transform:rotateY(0) rotateX(0);transition:opacity .075s ease,transform .1s ease}.mce-menu-sub-tr-tl{margin:-6px 0 0 -1px}.mce-menu-sub-br-bl{margin:6px 0 0 -1px}.mce-menu-sub-tl-tr{margin:-6px 0 0 1px}.mce-menu-sub-bl-br{margin:6px 0 0 1px}.mce-rtl .mce-menu-item .mce-ico{padding-right:0;padding-left:4px}.mce-rtl.mce-menu-align .mce-caret,.mce-rtl .mce-menu-shortcut{right:auto;left:0}.mce-listbox button{text-align:left;padding-right:20px;position:relative}.mce-listbox .mce-caret{position:absolute;margin-top:-2px;right:8px;top:50%}.mce-rtl .mce-listbox .mce-caret{right:auto;left:8px}.mce-rtl .mce-listbox button{padding-right:10px;padding-left:20px}.mce-container-body .mce-resizehandle{position:absolute;right:0;bottom:0;width:16px;height:16px;visibility:visible;cursor:s-resize;margin:0}.mce-container-body .mce-resizehandle-both{cursor:se-resize}i.mce-i-resize{color:#595959}.mce-selectbox{background:#fff;border:1px solid #c5c5c5}.mce-slider{border:1px solid #c5c5c5;background:#fff;width:100px;height:10px;position:relative;display:block}.mce-slider.mce-vertical{width:10px;height:100px}.mce-slider-handle{border:1px solid #c5c5c5;background:#e6e6e6;display:block;width:13px;height:13px;position:absolute;top:0;left:0;margin-left:-1px;margin-top:-2px}.mce-slider-handle:focus{border-color:#2276d2}.mce-spacer{visibility:hidden}.mce-splitbtn:hover .mce-open{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open{border-left:1px solid transparent;padding-right:4px;padding-left:4px}.mce-splitbtn .mce-open:focus{border-left:1px solid #e2e4e7}.mce-splitbtn .mce-open:hover,.mce-splitbtn .mce-open:active{border-left:1px solid #e2e4e7}.mce-splitbtn.mce-active:hover .mce-open{border-left:1px solid white}.mce-splitbtn.mce-opened{border-color:#e2e4e7}.mce-splitbtn.mce-btn-small .mce-open{padding:0 3px 0 3px}.mce-rtl .mce-splitbtn{direction:rtl;text-align:right}.mce-rtl .mce-splitbtn button{padding-right:4px;padding-left:4px}.mce-rtl .mce-splitbtn .mce-open{border-left:0}.mce-stack-layout-item{display:block}.mce-tabs{display:block;border-bottom:1px solid #c5c5c5}.mce-tabs,.mce-tabs+.mce-container-body{background:#fff}.mce-tab{display:inline-block;*display:inline;*zoom:1;border:1px solid #c5c5c5;border-width:0 1px 0 0;background:#fff;padding:8px 15px;text-shadow:0 1px 1px rgba(255,255,255,0.75);height:13px;cursor:pointer}.mce-tab:hover{background:#FDFDFD}.mce-tab.mce-active{background:#FDFDFD;border-bottom-color:transparent;margin-bottom:-1px;height:14px}.mce-tab:focus{color:#2276d2}.mce-rtl .mce-tabs{text-align:right;direction:rtl}.mce-rtl .mce-tab{border-width:0 0 0 1px}.mce-textbox{background:#fff;border:1px solid #c5c5c5;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:inline-block;-webkit-transition:border linear .2s, box-shadow linear .2s;transition:border linear .2s, box-shadow linear .2s;height:28px;resize:none;padding:0 4px 0 4px;white-space:pre-wrap;*white-space:pre;color:#595959}.mce-textbox:focus,.mce-textbox.mce-focus{border-color:#2276d2;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.mce-placeholder .mce-textbox{color:#aaa}.mce-textbox.mce-multiline{padding:4px;height:auto}.mce-textbox.mce-disabled{color:#bdbdbd}.mce-rtl .mce-textbox{text-align:right;direction:rtl}.mce-dropzone{border:3px dashed gray;text-align:center}.mce-dropzone span{text-transform:uppercase;display:inline-block;vertical-align:middle}.mce-dropzone:after{content:"";height:100%;display:inline-block;vertical-align:middle}.mce-dropzone.mce-disabled{opacity:.4;filter:alpha(opacity=40);zoom:1}.mce-dropzone.mce-disabled.mce-dragenter{cursor:not-allowed}.mce-browsebutton{position:relative;overflow:hidden}.mce-browsebutton button{position:relative;z-index:1}.mce-browsebutton input{opacity:0;filter:alpha(opacity=0);zoom:1;position:absolute;top:0;left:0;width:100%;height:100%;z-index:0}@font-face{font-family:'tinymce';src:url("fonts/tinymce.eot");src:url("fonts/tinymce.eot?#iefix") format("embedded-opentype"),url("fonts/tinymce.woff") format("woff"),url("fonts/tinymce.ttf") format("truetype"),url("fonts/tinymce.svg#tinymce") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'tinymce-small';src:url("fonts/tinymce-small.eot");src:url("fonts/tinymce-small.eot?#iefix") format("embedded-opentype"),url("fonts/tinymce-small.woff") format("woff"),url("fonts/tinymce-small.ttf") format("truetype"),url("fonts/tinymce-small.svg#tinymce") format("svg");font-weight:normal;font-style:normal}.mce-ico{font-family:'tinymce',Arial;font-style:normal;font-weight:normal;font-variant:normal;font-size:16px;line-height:16px;speak:none;vertical-align:text-top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline-block;background:transparent center center;background-size:cover;width:16px;height:16px;color:#595959}.mce-btn-small .mce-ico{font-family:'tinymce-small',Arial}.mce-i-save:before{content:"\e000"}.mce-i-newdocument:before{content:"\e001"}.mce-i-fullpage:before{content:"\e002"}.mce-i-alignleft:before{content:"\e003"}.mce-i-aligncenter:before{content:"\e004"}.mce-i-alignright:before{content:"\e005"}.mce-i-alignjustify:before{content:"\e006"}.mce-i-alignnone:before{content:"\e003"}.mce-i-cut:before{content:"\e007"}.mce-i-paste:before{content:"\e008"}.mce-i-searchreplace:before{content:"\e009"}.mce-i-bullist:before{content:"\e00a"}.mce-i-numlist:before{content:"\e00b"}.mce-i-indent:before{content:"\e00c"}.mce-i-outdent:before{content:"\e00d"}.mce-i-blockquote:before{content:"\e00e"}.mce-i-undo:before{content:"\e00f"}.mce-i-redo:before{content:"\e010"}.mce-i-link:before{content:"\e011"}.mce-i-unlink:before{content:"\e012"}.mce-i-anchor:before{content:"\e013"}.mce-i-image:before{content:"\e014"}.mce-i-media:before{content:"\e015"}.mce-i-help:before{content:"\e016"}.mce-i-code:before{content:"\e017"}.mce-i-insertdatetime:before{content:"\e018"}.mce-i-preview:before{content:"\e019"}.mce-i-forecolor:before{content:"\e01a"}.mce-i-backcolor:before{content:"\e01a"}.mce-i-table:before{content:"\e01b"}.mce-i-hr:before{content:"\e01c"}.mce-i-removeformat:before{content:"\e01d"}.mce-i-subscript:before{content:"\e01e"}.mce-i-superscript:before{content:"\e01f"}.mce-i-charmap:before{content:"\e020"}.mce-i-emoticons:before{content:"\e021"}.mce-i-print:before{content:"\e022"}.mce-i-fullscreen:before{content:"\e023"}.mce-i-spellchecker:before{content:"\e024"}.mce-i-nonbreaking:before{content:"\e025"}.mce-i-template:before{content:"\e026"}.mce-i-pagebreak:before{content:"\e027"}.mce-i-restoredraft:before{content:"\e028"}.mce-i-bold:before{content:"\e02a"}.mce-i-italic:before{content:"\e02b"}.mce-i-underline:before{content:"\e02c"}.mce-i-strikethrough:before{content:"\e02d"}.mce-i-visualchars:before{content:"\e02e"}.mce-i-visualblocks:before{content:"\e02e"}.mce-i-ltr:before{content:"\e02f"}.mce-i-rtl:before{content:"\e030"}.mce-i-copy:before{content:"\e031"}.mce-i-resize:before{content:"\e032"}.mce-i-browse:before{content:"\e034"}.mce-i-pastetext:before{content:"\e035"}.mce-i-rotateleft:before{content:"\eaa8"}.mce-i-rotateright:before{content:"\eaa9"}.mce-i-crop:before{content:"\ee78"}.mce-i-editimage:before{content:"\e915"}.mce-i-options:before{content:"\ec6a"}.mce-i-flipv:before{content:"\eaaa"}.mce-i-fliph:before{content:"\eaac"}.mce-i-zoomin:before{content:"\eb35"}.mce-i-zoomout:before{content:"\eb36"}.mce-i-sun:before{content:"\eccc"}.mce-i-moon:before{content:"\eccd"}.mce-i-arrowleft:before{content:"\edc0"}.mce-i-arrowright:before{content:"\e93c"}.mce-i-drop:before{content:"\e935"}.mce-i-contrast:before{content:"\ecd4"}.mce-i-sharpen:before{content:"\eba7"}.mce-i-resize2:before{content:"\edf9"}.mce-i-orientation:before{content:"\e601"}.mce-i-invert:before{content:"\e602"}.mce-i-gamma:before{content:"\e600"}.mce-i-remove:before{content:"\ed6a"}.mce-i-tablerowprops:before{content:"\e604"}.mce-i-tablecellprops:before{content:"\e605"}.mce-i-table2:before{content:"\e606"}.mce-i-tablemergecells:before{content:"\e607"}.mce-i-tableinsertcolbefore:before{content:"\e608"}.mce-i-tableinsertcolafter:before{content:"\e609"}.mce-i-tableinsertrowbefore:before{content:"\e60a"}.mce-i-tableinsertrowafter:before{content:"\e60b"}.mce-i-tablesplitcells:before{content:"\e60d"}.mce-i-tabledelete:before{content:"\e60e"}.mce-i-tableleftheader:before{content:"\e62a"}.mce-i-tabletopheader:before{content:"\e62b"}.mce-i-tabledeleterow:before{content:"\e800"}.mce-i-tabledeletecol:before{content:"\e801"}.mce-i-codesample:before{content:"\e603"}.mce-i-fill:before{content:"\e902"}.mce-i-borderwidth:before{content:"\e903"}.mce-i-line:before{content:"\e904"}.mce-i-count:before{content:"\e905"}.mce-i-translate:before{content:"\e907"}.mce-i-drag:before{content:"\e908"}.mce-i-home:before{content:"\e90b"}.mce-i-upload:before{content:"\e914"}.mce-i-bubble:before{content:"\e91c"}.mce-i-user:before{content:"\e91d"}.mce-i-lock:before{content:"\e926"}.mce-i-unlock:before{content:"\e927"}.mce-i-settings:before{content:"\e928"}.mce-i-remove2:before{content:"\e92a"}.mce-i-menu:before{content:"\e92d"}.mce-i-warning:before{content:"\e930"}.mce-i-question:before{content:"\e931"}.mce-i-pluscircle:before{content:"\e932"}.mce-i-info:before{content:"\e933"}.mce-i-notice:before{content:"\e934"}.mce-i-arrowup:before{content:"\e93b"}.mce-i-arrowdown:before{content:"\e93d"}.mce-i-arrowup2:before{content:"\e93f"}.mce-i-arrowdown2:before{content:"\e940"}.mce-i-menu2:before{content:"\e941"}.mce-i-newtab:before{content:"\e961"}.mce-i-a11y:before{content:"\e900"}.mce-i-plus:before{content:"\e93a"}.mce-i-insert:before{content:"\e93a"}.mce-i-minus:before{content:"\e939"}.mce-i-books:before{content:"\e911"}.mce-i-reload:before{content:"\e906"}.mce-i-toc:before{content:"\e901"}.mce-i-checkmark:before{content:"\e033"}.mce-i-checkbox:before,.mce-i-selected:before{content:"\e033"}.mce-i-insert{font-size:14px}.mce-i-selected{visibility:hidden}i.mce-i-backcolor{text-shadow:none;background:#BBB}.mce-rtl .mce-filepicker input{direction:ltr} diff --git a/public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css.gz b/public/assets/tinymce/skins/lightgray/skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5bbc0f1571ee812c6c9349dbe5684245c26e7b52 GIT binary patch literal 8250 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/skins/lightgray/skin.min.css b/public/assets/tinymce/skins/lightgray/skin.min.css index 7f5aee6df..c8de1c2cf 120000 --- a/public/assets/tinymce/skins/lightgray/skin.min.css +++ b/public/assets/tinymce/skins/lightgray/skin.min.css @@ -1 +1 @@ -skin.min-9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e.css \ No newline at end of file +skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css \ No newline at end of file diff --git a/public/assets/tinymce/skins/lightgray/skin.min.css.gz b/public/assets/tinymce/skins/lightgray/skin.min.css.gz index 037d03b10..a405ca8f8 120000 --- a/public/assets/tinymce/skins/lightgray/skin.min.css.gz +++ b/public/assets/tinymce/skins/lightgray/skin.min.css.gz @@ -1 +1 @@ -skin.min-9df1ac473f4fc37f951a73e97883a7fd53cae6e12c50db26c43f4070bcde668e.css.gz \ No newline at end of file +skin.min-8ca83e53ac9511bd83891a15f807fd184b02050fa6a601688dd34e0dee6dc79d.css.gz \ No newline at end of file diff --git a/public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js b/public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js new file mode 100644 index 000000000..e4899551a --- /dev/null +++ b/public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js @@ -0,0 +1 @@ +!function(){"use strict";var t,e,n,i,r,o,s=tinymce.util.Tools.resolve("tinymce.ThemeManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),l=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),u=tinymce.util.Tools.resolve("tinymce.util.Delay"),c=function(t){return t.reduce(function(t,e){return Array.isArray(e)?t.concat(c(e)):t.concat(e)},[])},d={flatten:c},f=function(t,e){for(var n=0;n<e.length;n++){var i=(0,e[n])(t);if(i)return i}return null},h=function(t,e){return{id:t,rect:e}},m=function(t){return{x:t.left,y:t.top,w:t.width,h:t.height}},g=function(t){return{left:t.x,top:t.y,width:t.w,height:t.h,right:t.x+t.w,bottom:t.y+t.h}},p=function(t){var e=l.DOM.getViewPort();return{x:t.x+e.x,y:t.y+e.y,w:t.w,h:t.h}},v=function(t){var e=t.getBoundingClientRect();return p({x:e.left,y:e.top,w:Math.max(t.clientWidth,t.offsetWidth),h:Math.max(t.clientHeight,t.offsetHeight)})},y=function(t,e){return v(e)},b=function(t){return v(t.getContentAreaContainer()||t.getBody())},x=function(t){var e=t.selection.getBoundingClientRect();return e?p(m(e)):null},w=function(t,e){return function(n){for(var i=0;i<e.length;i++)if(e[i].predicate(t))return h(e[i].id,y(n,t));return null}},_=function(t,e){return function(n){for(var i=0;i<t.length;i++)for(var r=0;r<e.length;r++)if(e[r].predicate(t[i]))return h(e[r].id,y(n,t[i]));return null}},R=tinymce.util.Tools.resolve("tinymce.util.Tools"),C=function(t,e){return{id:t,predicate:e}},k=function(t){return R.map(t,function(t){return C(t.id,t.predicate)})},E=function(t){return function(e){return e.selection.isCollapsed()?null:h(t,x(e))}},H=function(t,e){return function(n){var i,r=n.schema.getTextBlockElements();for(i=0;i<t.length;i++)if("TABLE"===t[i].nodeName)return null;for(i=0;i<t.length;i++)if(t[i].nodeName in r)return n.dom.isEmpty(t[i])?h(e,x(n)):null;return null}},S=function(t){t.fire("SkinLoaded")},M=function(t){return t.fire("BeforeRenderUI")},T=tinymce.util.Tools.resolve("tinymce.EditorManager"),W=function(t){return function(e){return typeof e===t}},P=function(t){return Array.isArray(t)},N=function(t){return W("string")(t)},O=function(t){return W("number")(t)},D=function(t){return W("boolean")(t)},A=function(t){return W("function")(t)},B=(W("object"),P),L=function(t,e){if(e(t))return!0;throw new Error("Default value doesn't match requested type.")},z=function(t){return function(e,n,i){var r=e.settings;return L(i,t),n in r&&t(r[n])?r[n]:i}},I={getStringOr:z(N),getBoolOr:z(D),getNumberOr:z(O),getHandlerOr:z(A),getToolbarItemsOr:(t=B,function(e,n,i){var r,o,s,a,l,u=n in e.settings?e.settings[n]:i;return L(i,t),o=i,B(r=u)?r:N(r)?"string"==typeof(a=r)?(l=/[ ,]/,a.split(l).filter(function(t){return t.length>0})):a:D(r)?(s=o,!1===r?[]:s):o})},F=tinymce.util.Tools.resolve("tinymce.geom.Rect"),V=function(t,e){return{rect:t,position:e}},U=function(t,e){return{x:e.x,y:e.y,w:t.w,h:t.h}},q=function(t,e,n,i,r){var o,s,a,l={x:i.x,y:i.y,w:i.w+(i.w<r.w+n.w?r.w:0),h:i.h+(i.h<r.h+n.h?r.h:0)};return o=F.findBestRelativePosition(r,n,l,t),n=F.clamp(n,l),o?(s=F.relativePosition(r,n,o),a=U(r,s),V(a,o)):(n=F.intersect(l,n))?(o=F.findBestRelativePosition(r,n,l,e))?(s=F.relativePosition(r,n,o),a=U(r,s),V(a,o)):(a=U(r,n),V(a,o)):null},j=function(t,e,n){return q(["cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr"],t,e,n)},$=function(t,e,n){return q(["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr","cr-cl","cl-cr"],["bc-tc","bl-tl","br-tr","cr-cl"],t,e,n)},Y=function(t,e,n,i){var r;return"function"==typeof t?(r=t({elementRect:g(e),contentAreaRect:g(n),panelRect:g(i)}),m(r)):i},X=function(t){return t.panelRect},J=function(t){return I.getToolbarItemsOr(t,"selection_toolbar",["bold","italic","|","quicklink","h2","h3","blockquote"])},G=function(t){return I.getToolbarItemsOr(t,"insert_toolbar",["quickimage","quicktable"])},K=function(t){return I.getHandlerOr(t,"inline_toolbar_position_handler",X)},Z=function(t){var e,n,i,r,o=t.settings;return o.skin_url?(i=t,r=o.skin_url,i.documentBaseURI.toAbsolute(r)):(e=o.skin,n=T.baseURL+"/skins/",e?n+e:n+"lightgray")},Q=function(t){return!1===t.settings.skin},tt=function(t,e){var n=Z(t),i=function(){var n,i,r;i=e,r=function(){n._skinLoaded=!0,S(n),i()},(n=t).initialized?r():n.on("init",r)};Q(t)?i():(l.DOM.styleSheetLoader.load(n+"/skin.min.css",i),t.contentCSS.push(n+"/content.inline.min.css"))},et=function(t){var e,n,i,r,o=t.contextToolbars;return d.flatten([o||[],(e=t,n="img",i="image",r="alignleft aligncenter alignright",{predicate:function(t){return e.dom.is(t,n)},id:i,items:r})])},nt=function(t,e){var n,i,r,o,s;return s=(o=t).selection.getNode(),i=o.dom.getParents(s),r=k(e),(n=f(t,[w(i[0],r),E("text"),H(i,"insert"),_(i,r)]))&&n.rect?n:null},it=function(t,e){return function(){var n,i,r;t.removed||(r=t,document.activeElement!==r.getBody())||(n=et(t),(i=nt(t,n))?e.show(t,i.id,i.rect,n):e.hide())}},rt=function(t,e){var n,i,r,o,s,c=u.throttle(it(t,e),0),d=u.throttle((n=t,i=e,r=it(t,e),function(){n.removed||i.inForm()||r()}),0),f=(o=t,s=e,function(){var t=et(o),e=nt(o,t);e&&s.reposition(o,e.id,e.rect)});t.on("blur hide ObjectResizeStart",e.hide),t.on("click",c),t.on("nodeChange mouseup",d),t.on("ResizeEditor keyup",c),t.on("ResizeWindow",f),l.DOM.bind(a.container,"scroll",f),t.on("remove",function(){l.DOM.unbind(a.container,"scroll",f),e.remove()}),t.shortcuts.add("Alt+F10,F10","",e.focus)},ot=function(t,e){return tt(t,function(){var n,i;rt(t,e),i=e,(n=t).shortcuts.remove("meta+k"),n.shortcuts.add("meta+k","",function(){var t=et(n),e=f(n,[E("quicklink")]);e&&i.show(n,e.id,e.rect,t)})}),{}},st=function(t,e){return t.inline?ot(t,e):function(t){throw new Error(t)}("inlite theme only supports inline mode.")},at=function(t){return function(){return t}},lt={noop:function(){},noarg:function(t){return function(){return t()}},compose:function(t,e){return function(){return t(e.apply(null,arguments))}},constant:at,identity:function(t){return t},tripleEquals:function(t,e){return t===e},curry:function(t){for(var e=new Array(arguments.length-1),n=1;n<arguments.length;n++)e[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];var r=e.concat(n);return t.apply(null,r)}},not:function(t){return function(){return!t.apply(null,arguments)}},die:function(t){return function(){throw new Error(t)}},apply:function(t){return t()},call:function(t){t()},never:at(!1),always:at(!0)},ut=lt.never,ct=lt.always,dt=function(){return ft},ft=(r={fold:function(t,e){return t()},is:ut,isSome:ut,isNone:ct,getOr:i=function(t){return t},getOrThunk:n=function(t){return t()},getOrDie:function(t){throw new Error(t||"error: getOrDie called on none.")},or:i,orThunk:n,map:dt,ap:dt,each:function(){},bind:dt,flatten:dt,exists:ut,forall:ct,filter:dt,equals:e=function(t){return t.isNone()},equals_:e,toArray:function(){return[]},toString:lt.constant("none()")},Object.freeze&&Object.freeze(r),r),ht=function(t){var e=function(){return t},n=function(){return r},i=function(e){return e(t)},r={fold:function(e,n){return n(t)},is:function(e){return t===e},isSome:ct,isNone:ut,getOr:e,getOrThunk:e,getOrDie:e,or:n,orThunk:n,map:function(e){return ht(e(t))},ap:function(e){return e.fold(dt,function(e){return ht(e(t))})},each:function(e){e(t)},bind:i,flatten:e,exists:i,forall:i,filter:function(e){return e(t)?r:ft},equals:function(e){return e.is(t)},equals_:function(e,n){return e.fold(ut,function(e){return n(t,e)})},toArray:function(){return[t]},toString:function(){return"some("+t+")"}};return r},mt={some:ht,none:dt,from:function(t){return null===t||t===undefined?ft:ht(t)}},gt=(o=Array.prototype.indexOf)===undefined?function(t,e){return _t(t,e)}:function(t,e){return o.call(t,e)},pt=function(t,e){return gt(t,e)>-1},vt=function(t,e){for(var n=t.length,i=new Array(n),r=0;r<n;r++){var o=t[r];i[r]=e(o,r,t)}return i},yt=function(t,e){for(var n=0,i=t.length;n<i;n++)e(t[n],n,t)},bt=function(t,e){for(var n=t.length-1;n>=0;n--)e(t[n],n,t)},xt=function(t,e){for(var n=[],i=0,r=t.length;i<r;i++){var o=t[i];e(o,i,t)&&n.push(o)}return n},wt=function(t,e){for(var n=0,i=t.length;n<i;n++)if(e(t[n],n,t))return mt.some(n);return mt.none()},_t=function(t,e){for(var n=0,i=t.length;n<i;++n)if(t[n]===e)return n;return-1},Rt=Array.prototype.push,Ct=function(t){for(var e=[],n=0,i=t.length;n<i;++n){if(!Array.prototype.isPrototypeOf(t[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+t);Rt.apply(e,t[n])}return e},kt=function(t,e){for(var n=0,i=t.length;n<i;++n)if(!0!==e(t[n],n,t))return!1;return!0},Et=Array.prototype.slice,Ht={map:vt,each:yt,eachr:bt,partition:function(t,e){for(var n=[],i=[],r=0,o=t.length;r<o;r++){var s=t[r];(e(s,r,t)?n:i).push(s)}return{pass:n,fail:i}},filter:xt,groupBy:function(t,e){if(0===t.length)return[];for(var n=e(t[0]),i=[],r=[],o=0,s=t.length;o<s;o++){var a=t[o],l=e(a);l!==n&&(i.push(r),r=[]),n=l,r.push(a)}return 0!==r.length&&i.push(r),i},indexOf:function(t,e){var n=gt(t,e);return-1===n?mt.none():mt.some(n)},foldr:function(t,e,n){return bt(t,function(t){n=e(n,t)}),n},foldl:function(t,e,n){return yt(t,function(t){n=e(n,t)}),n},find:function(t,e){for(var n=0,i=t.length;n<i;n++){var r=t[n];if(e(r,n,t))return mt.some(r)}return mt.none()},findIndex:wt,flatten:Ct,bind:function(t,e){var n=vt(t,e);return Ct(n)},forall:kt,exists:function(t,e){return wt(t,e).isSome()},contains:pt,equal:function(t,e){return t.length===e.length&&kt(t,function(t,n){return t===e[n]})},reverse:function(t){var e=Et.call(t,0);return e.reverse(),e},chunk:function(t,e){for(var n=[],i=0;i<t.length;i+=e){var r=t.slice(i,i+e);n.push(r)}return n},difference:function(t,e){return xt(t,function(t){return!pt(e,t)})},mapToObject:function(t,e){for(var n={},i=0,r=t.length;i<r;i++){var o=t[i];n[String(o)]=e(o,i)}return n},pure:function(t){return[t]},sort:function(t,e){var n=Et.call(t,0);return n.sort(e),n},range:function(t,e){for(var n=[],i=0;i<t;i++)n.push(e(i));return n},head:function(t){return 0===t.length?mt.none():mt.some(t[0])},last:function(t){return 0===t.length?mt.none():mt.some(t[t.length-1])}},St=0,Mt={id:function(){return"mceu_"+St++},create:function(t,e,n){var i=document.createElement(t);return l.DOM.setAttribs(i,e),"string"==typeof n?i.innerHTML=n:R.each(n,function(t){t.nodeType&&i.appendChild(t)}),i},createFragment:function(t){return l.DOM.createFragment(t)},getWindowSize:function(){return l.DOM.getViewPort()},getSize:function(t){var e,n;if(t.getBoundingClientRect){var i=t.getBoundingClientRect();e=Math.max(i.width||i.right-i.left,t.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,t.offsetHeight)}else e=t.offsetWidth,n=t.offsetHeight;return{width:e,height:n}},getPos:function(t,e){return l.DOM.getPos(t,e||Mt.getContainer())},getContainer:function(){return a.container?a.container:document.body},getViewPort:function(t){return l.DOM.getViewPort(t)},get:function(t){return document.getElementById(t)},addClass:function(t,e){return l.DOM.addClass(t,e)},removeClass:function(t,e){return l.DOM.removeClass(t,e)},hasClass:function(t,e){return l.DOM.hasClass(t,e)},toggleClass:function(t,e,n){return l.DOM.toggleClass(t,e,n)},css:function(t,e,n){return l.DOM.setStyle(t,e,n)},getRuntimeStyle:function(t,e){return l.DOM.getStyle(t,e,!0)},on:function(t,e,n,i){return l.DOM.bind(t,e,n,i)},off:function(t,e,n){return l.DOM.unbind(t,e,n)},fire:function(t,e,n){return l.DOM.fire(t,e,n)},innerHtml:function(t,e){l.DOM.setHTML(t,e)}},Tt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),Wt=tinymce.util.Tools.resolve("tinymce.util.Class"),Pt=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Nt=function(t){var e;if(t)return"number"==typeof t?{top:t=t||0,left:t,bottom:t,right:t}:(1===(e=(t=t.split(" ")).length)?t[1]=t[2]=t[3]=t[0]:2===e?(t[2]=t[0],t[3]=t[1]):3===e&&(t[3]=t[1]),{top:parseInt(t[0],10)||0,right:parseInt(t[1],10)||0,bottom:parseInt(t[2],10)||0,left:parseInt(t[3],10)||0})},Ot=function(t,e){function n(e){var n=parseFloat(function(e){var n=t.ownerDocument.defaultView;if(n){var i=n.getComputedStyle(t,null);return i?(e=e.replace(/[A-Z]/g,function(t){return"-"+t}),i.getPropertyValue(e)):null}return t.currentStyle[e]}(e));return isNaN(n)?0:n}return{top:n(e+"TopWidth"),right:n(e+"RightWidth"),bottom:n(e+"BottomWidth"),left:n(e+"LeftWidth")}};function Dt(){}function At(t){this.cls=[],this.cls._map={},this.onchange=t||Dt,this.prefix=""}R.extend(At.prototype,{add:function(t){return t&&!this.contains(t)&&(this.cls._map[t]=!0,this.cls.push(t),this._change()),this},remove:function(t){if(this.contains(t)){var e=void 0;for(e=0;e<this.cls.length&&this.cls[e]!==t;e++);this.cls.splice(e,1),delete this.cls._map[t],this._change()}return this},toggle:function(t,e){var n=this.contains(t);return n!==e&&(n?this.remove(t):this.add(t),this._change()),this},contains:function(t){return!!this.cls._map[t]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),At.prototype.toString=function(){var t;if(this.clsValue)return this.clsValue;t="";for(var e=0;e<this.cls.length;e++)e>0&&(t+=" "),t+=this.prefix+this.cls[e];return t};var Bt,Lt,zt,It=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Ft=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Vt=/^\s*|\s*$/g,Ut=Wt.extend({init:function(t){var e=this.match;function n(t,n,r){var o;function s(t){t&&n.push(t)}return s(function(t){if(t)return t=t.toLowerCase(),function(e){return"*"===t||e.type===t}}((o=It.exec(t.replace(Vt,"")))[1])),s(function(t){if(t)return function(e){return e._name===t}}(o[2])),s(function(t){if(t)return t=t.split("."),function(e){for(var n=t.length;n--;)if(!e.classes.contains(t[n]))return!1;return!0}}(o[3])),s(function(t,e,n){if(t)return function(i){var r=i[t]?i[t]():"";return e?"="===e?r===n:"*="===e?r.indexOf(n)>=0:"~="===e?(" "+r+" ").indexOf(" "+n+" ")>=0:"!="===e?r!==n:"^="===e?0===r.indexOf(n):"$="===e&&r.substr(r.length-n.length)===n:!!n}}(o[4],o[5],o[6])),s(function(t){var n;if(t)return(t=/(?:not\((.+)\))|(.+)/i.exec(t))[1]?(n=i(t[1],[]),function(t){return!e(t,n)}):(t=t[2],function(e,n,i){return"first"===t?0===n:"last"===t?n===i-1:"even"===t?n%2==0:"odd"===t?n%2==1:!!e[t]&&e[t]()})}(o[7])),n.pseudo=!!o[7],n.direct=r,n}function i(t,e){var r,o,s,a=[];do{if(Ft.exec(""),(o=Ft.exec(t))&&(t=o[3],a.push(o[1]),o[2])){r=o[3];break}}while(o);for(r&&i(r,e),t=[],s=0;s<a.length;s++)">"!==a[s]&&t.push(n(a[s],[],">"===a[s-1]));return e.push(t),e}this._selectors=i(t,[])},match:function(t,e){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(e=e||this._selectors).length;n<i;n++){for(m=t,h=0,r=(o=(s=e[n]).length)-1;r>=0;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;);for(a=0,l=u.length;a<l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(t){var e,n,i=[],r=this._selectors;function o(t,e,n){var r,s,a,l,u,c=e[n];for(r=0,s=t.length;r<s;r++){for(u=t[r],a=0,l=c.length;a<l;a++)if(!c[a](u,r,s)){a=l+1;break}if(a===l)n===e.length-1?i.push(u):u.items&&o(u.items(),e,n+1);else if(c.direct)return;u.items&&o(u.items(),e,n)}}if(t.items){for(e=0,n=r.length;e<n;e++)o(t.items(),r[e],0);n>1&&(i=function(t){for(var e,n=[],i=t.length;i--;)(e=t[i]).__checked||(n.push(e),e.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(i))}return Bt||(Bt=Ut.Collection),new Bt(i)}}),qt=Array.prototype.push,jt=Array.prototype.slice;zt={length:0,init:function(t){t&&this.add(t)},add:function(t){return R.isArray(t)?qt.apply(this,t):t instanceof Lt?this.add(t.toArray()):qt.call(this,t),this},set:function(t){var e,n=this,i=n.length;for(n.length=0,n.add(t),e=n.length;e<i;e++)delete n[e];return n},filter:function(t){var e,n,i,r,o=[];for("string"==typeof t?(t=new Ut(t),r=function(e){return t.match(e)}):r=t,e=0,n=this.length;e<n;e++)r(i=this[e])&&o.push(i);return new Lt(o)},slice:function(){return new Lt(jt.apply(this,arguments))},eq:function(t){return-1===t?this.slice(t):this.slice(t,+t+1)},each:function(t){return R.each(this,t),this},toArray:function(){return R.toArray(this)},indexOf:function(t){for(var e=this.length;e--&&this[e]!==t;);return e},reverse:function(){return new Lt(R.toArray(this).reverse())},hasClass:function(t){return!!this[0]&&this[0].classes.contains(t)},prop:function(t,e){var n;return e!==undefined?(this.each(function(n){n[t]&&n[t](e)}),this):(n=this[0])&&n[t]?n[t]():void 0},exec:function(t){var e=R.toArray(arguments).slice(1);return this.each(function(n){n[t]&&n[t].apply(n,e)}),this},remove:function(){for(var t=this.length;t--;)this[t].remove();return this},addClass:function(t){return this.each(function(e){e.classes.add(t)})},removeClass:function(t){return this.each(function(e){e.classes.remove(t)})}},R.each("fire on off show hide append prepend before after reflow".split(" "),function(t){zt[t]=function(){var e=R.toArray(arguments);return this.each(function(n){t in n&&n[t].apply(n,e)}),this}}),R.each("text name disabled active selected checked visible parent value data".split(" "),function(t){zt[t]=function(e){return this.prop(t,e)}}),Lt=Wt.extend(zt),Ut.Collection=Lt;var $t=Lt,Yt=function(t){this.create=t.create};Yt.create=function(t,e){return new Yt({create:function(n,i){var r,o=function(t){n.set(i,t.value)};return n.on("change:"+i,function(n){t.set(e,n.value)}),t.on("change:"+e,o),(r=n._bindings)||(r=n._bindings=[],n.on("destroy",function(){for(var t=r.length;t--;)r[t]()})),r.push(function(){t.off("change:"+e,o)}),t.get(e)}})};var Xt=tinymce.util.Tools.resolve("tinymce.util.Observable");function Jt(t){return t.nodeType>0}var Gt,Kt,Zt=Wt.extend({Mixins:[Xt],init:function(t){var e,n;for(e in t=t||{})(n=t[e])instanceof Yt&&(t[e]=n.create(this,e));this.data=t},set:function(t,e){var n,i,r=this.data[t];if(e instanceof Yt&&(e=e.create(this,t)),"object"==typeof t){for(n in t)this.set(n,t[n]);return this}return function o(t,e){var n,i;if(t===e)return!0;if(null===t||null===e)return t===e;if("object"!=typeof t||"object"!=typeof e)return t===e;if(R.isArray(e)){if(t.length!==e.length)return!1;for(n=t.length;n--;)if(!o(t[n],e[n]))return!1}if(Jt(t)||Jt(e))return t===e;for(n in i={},e){if(!o(t[n],e[n]))return!1;i[n]=!0}for(n in t)if(!i[n]&&!o(t[n],e[n]))return!1;return!0}(r,e)||(this.data[t]=e,i={target:this,name:t,value:e,oldValue:r},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(t){return this.data[t]},has:function(t){return t in this.data},bind:function(t){return Yt.create(this,t)},destroy:function(){this.fire("destroy")}}),Qt={},te={add:function(t){var e=t.parent();if(e){if(!e._layout||e._layout.isNative())return;Qt[e._id]||(Qt[e._id]=e),Gt||(Gt=!0,u.requestAnimationFrame(function(){var t,e;for(t in Gt=!1,Qt)(e=Qt[t]).state.get("rendered")&&e.reflow();Qt={}},document.body))}},remove:function(t){Qt[t._id]&&delete Qt[t._id]}},ee=function(t){return t?t.getRoot().uiContainer:null},ne={getUiContainerDelta:function(t){var e=ee(t);if(e&&"static"!==l.DOM.getStyle(e,"position",!0)){var n=l.DOM.getPos(e),i=e.scrollLeft-n.x,r=e.scrollTop-n.y;return mt.some({x:i,y:r})}return mt.none()},setUiContainer:function(t,e){var n=l.DOM.select(t.settings.ui_container)[0];e.getRoot().uiContainer=n},getUiContainer:ee,inheritUiContainer:function(t,e){return e.uiContainer=ee(t)}},ie="onmousewheel"in document,re=!1,oe=0,se={Statics:{classPrefix:"mce-"},isRtl:function(){return Kt.rtl},classPrefix:"mce-",init:function(t){var e,n,i=this;function r(t){var e;for(t=t.split(" "),e=0;e<t.length;e++)i.classes.add(t[e])}i.settings=t=R.extend({},i.Defaults,t),i._id=t.id||"mceu_"+oe++,i._aria={role:t.role},i._elmCache={},i.$=Tt,i.state=new Zt({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Zt(t.data),i.classes=new At(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,(e=t.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&e!==n&&r(n),r(e)),R.each("title text name visible disabled active value".split(" "),function(e){e in t&&i[e](t[e])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=t,i.borderBox=Nt(t.border),i.paddingBox=Nt(t.padding),i.marginBox=Nt(t.margin),t.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var t=ne.getUiContainer(this);return t||Mt.getContainer()},getParentCtrl:function(t){for(var e,n=this.getRoot().controlIdLookup;t&&n&&!(e=n[t.id]);)t=t.parentNode;return e},initLayoutRect:function(){var t,e,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();t=c.borderBox=c.borderBox||Ot(f,"border"),c.paddingBox=c.paddingBox||Ot(f,"padding"),c.marginBox=c.marginBox||Ot(f,"margin"),u=Mt.getSize(f),a=d.minWidth,l=d.minHeight,r=a||u.width,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=t.left+t.right,m=t.top+t.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=e={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,innerW:n-h,innerH:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},e},layoutRect:function(t){var e,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),t?(i=a.deltaW,r=a.deltaH,t.x!==undefined&&(a.x=t.x),t.y!==undefined&&(a.y=t.y),t.minW!==undefined&&(a.minW=t.minW),t.minH!==undefined&&(a.minH=t.minH),(n=t.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=t.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=t.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>a.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=t.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),t.contentW!==undefined&&(a.contentW=t.contentW),t.contentH!==undefined&&(a.contentH=t.contentH),(e=s._lastLayoutRect).x===a.x&&e.y===a.y&&e.w===a.w&&e.h===a.h||((o=Kt.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),e.x=a.x,e.y=a.y,e.w=a.w,e.h=a.h),s):a},repaint:function(){var t,e,n,i,r,o,s,a,l,u,c=this;l=document.createRange?function(t){return t}:Math.round,t=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(t.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(t.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),t.width=(u>=0?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),t.height=(u>=0?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((e=n.style).width=(u>=0?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((e=e||n.style).height=(u>=0?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var t=this;t.parent()._lastRect=null,Mt.css(t.getEl(),{width:"",height:""}),t._layoutRect=t._lastRepaintRect=t._lastLayoutRect=null,t.initLayoutRect()},on:function(t,e){var n,i,r,o=this;return ae(o).on(t,"string"!=typeof(n=e)?n:function(t){return i||o.parentsAndSelf().each(function(t){var e=t.settings.callbacks;if(e&&(i=e[n]))return r=t,!1}),i?i.call(r,t):(t.action=n,void this.fire("execute",t))}),o},off:function(t,e){return ae(this).off(t,e),this},fire:function(t,e,n){if((e=e||{}).control||(e.control=this),e=ae(this).fire(t,e),!1!==n&&this.parent)for(var i=this.parent();i&&!e.isPropagationStopped();)i.fire(t,e,!1),i=i.parent();return e},hasEventListeners:function(t){return ae(this).has(t)},parents:function(t){var e,n=new $t;for(e=this.parent();e;e=e.parent())n.add(e);return t&&(n=n.filter(t)),n},parentsAndSelf:function(t){return new $t(this).add(this.parents(t))},next:function(){var t=this.parent().items();return t[t.indexOf(this)+1]},prev:function(){var t=this.parent().items();return t[t.indexOf(this)-1]},innerHtml:function(t){return this.$el.html(t),this},getEl:function(t){var e=t?this._id+"-"+t:this._id;return this._elmCache[e]||(this._elmCache[e]=Tt("#"+e)[0]),this._elmCache[e]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(t){}return this},blur:function(){return this.getEl().blur(),this},aria:function(t,e){var n=this,i=n.getEl(n.ariaTarget);return void 0===e?n._aria[t]:(n._aria[t]=e,n.state.get("rendered")&&i.setAttribute("role"===t?t:"aria-"+t,e),n)},encode:function(t,e){return!1!==e&&(t=this.translate(t)),(t||"").replace(/[&<>"]/g,function(t){return"&#"+t.charCodeAt(0)+";"})},translate:function(t){return Kt.translate?Kt.translate(t):t},before:function(t){var e=this.parent();return e&&e.insert(t,e.items().indexOf(this),!0),this},after:function(t){var e=this.parent();return e&&e.insert(t,e.items().indexOf(this)),this},remove:function(){var t,e,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(e=o.length;e--;)o[e].remove()}r&&r.items&&(t=[],r.items().each(function(e){e!==n&&t.push(e)}),r.items().set(t),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&Tt(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(t){return Tt(t).before(this.renderHtml()),this.postRender(),this},renderTo:function(t){return Tt(t||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var t,e,n,i,r,o=this,s=o.settings;for(i in o.$el=Tt(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}le(o),s.style&&(t=o.getEl())&&(t.setAttribute("style",s.style),t.style.cssText=s.style),o.settings.border&&(e=o.borderBox,o.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),a.controlIdLookup[o._id]=o,o._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindStates(),o.state.on("change:visible",function(t){var e,n=t.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(e=o.parent())&&(e._lastRect=null),o.fire(n?"show":"hide"),te.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(t){var e,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(t,e){var n,i,r=t;for(n=i=0;r&&r!==e&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return e=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===t?(e-=o-i,n-=s-r):"center"===t&&(e-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=e,l.scrollTop=n,this},getRoot:function(){for(var t,e=this,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var i=n.length;i--;)n[i].rootControl=t;return t},reflow:function(){te.remove(this);var t=this.parent();return t&&t._layout&&!t._layout.isNative()&&t.reflow(),this}};function ae(t){return t._eventDispatcher||(t._eventDispatcher=new Pt({scope:t,toggleEvent:function(e,n){n&&Pt.isNative(e)&&(t._nativeEvents||(t._nativeEvents={}),t._nativeEvents[e]=!0,t.state.get("rendered")&&le(t))}})),t._eventDispatcher}function le(t){var e,n,i,r,o,s;function a(e){var n=t.getParentCtrl(e.target);n&&n.fire(e.type,e)}function l(){var t=r._lastHoverCtrl;t&&(t.fire("mouseleave",{target:t.getEl()}),t.parents().each(function(t){t.fire("mouseleave",{target:t.getEl()})}),r._lastHoverCtrl=null)}function u(e){var n,i,o,s=t.getParentCtrl(e.target),a=r._lastHoverCtrl,l=0;if(s!==a){if(r._lastHoverCtrl=s,(i=s.parents().toArray().reverse()).push(s),a){for((o=a.parents().toArray().reverse()).push(a),l=0;l<o.length&&i[l]===o[l];l++);for(n=o.length-1;n>=l;n--)(a=o[n]).fire("mouseleave",{target:a.getEl()})}for(n=l;n<i.length;n++)(s=i[n]).fire("mouseenter",{target:s.getEl()})}}function c(e){e.preventDefault(),"mousewheel"===e.type?(e.deltaY=-.025*e.wheelDelta,e.wheelDeltaX&&(e.deltaX=-.025*e.wheelDeltaX)):(e.deltaX=0,e.deltaY=e.detail),e=t.fire("wheel",e)}if(o=t._nativeEvents){for((i=t.parents().toArray()).unshift(t),e=0,n=i.length;!r&&e<n;e++)r=i[e]._eventsRoot;for(r||(r=i[i.length-1]||t),t._eventsRoot=r,n=e,e=0;e<n;e++)i[e]._eventsRoot=r;var d=r._delegates;for(s in d||(d=r._delegates={}),o){if(!o)return!1;"wheel"!==s||re?("mouseenter"===s||"mouseleave"===s?r._hasMouseEnter||(Tt(r.getEl()).on("mouseleave",l).on("mouseover",u),r._hasMouseEnter=1):d[s]||(Tt(r.getEl()).on(s,a),d[s]=!0),o[s]=!1):ie?Tt(t.getEl()).on("mousewheel",c):Tt(t.getEl()).on("DOMMouseScroll",c)}}}R.each("text title visible disabled active value".split(" "),function(t){se[t]=function(e){return 0===arguments.length?this.state.get(t):(void 0!==e&&this.state.set(t,e),this)}});var ue=Kt=Wt.extend(se),ce=function(t){return"static"===Mt.getRuntimeStyle(t,"position")},de=function(t){return t.state.get("fixed")};function fe(t,e,n){var i,r,o,s,a,l,u,c,d,f;return d=he(),o=(r=Mt.getPos(e,ne.getUiContainer(t))).x,s=r.y,de(t)&&ce(document.body)&&(o-=d.x,s-=d.y),i=t.getEl(),a=(f=Mt.getSize(i)).width,l=f.height,u=(f=Mt.getSize(e)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var he=function(){var t=window,e=Math.max(t.pageXOffset,document.body.scrollLeft,document.documentElement.scrollLeft),n=Math.max(t.pageYOffset,document.body.scrollTop,document.documentElement.scrollTop);return{x:e,y:n,w:e+(t.innerWidth||document.documentElement.clientWidth),h:n+(t.innerHeight||document.documentElement.clientHeight)}},me=function(t){var e,n=ne.getUiContainer(t);return n&&!de(t)?{x:0,y:0,w:(e=n).scrollWidth-1,h:e.scrollHeight-1}:he()},ge={testMoveRel:function(t,e){for(var n=me(this),i=0;i<e.length;i++){var r=fe(this,t,e[i]);if(de(this)){if(r.x>0&&r.x+r.w<n.w&&r.y>0&&r.y+r.h<n.h)return e[i]}else if(r.x>n.x&&r.x+r.w<n.w&&r.y>n.y&&r.y+r.h<n.h)return e[i]}return e[0]},moveRel:function(t,e){"string"!=typeof e&&(e=this.testMoveRel(t,e));var n=fe(this,t,e);return this.moveTo(n.x,n.y)},moveBy:function(t,e){var n=this.layoutRect();return this.moveTo(n.x+t,n.y+e),this},moveTo:function(t,e){var n=this;function i(t,e,n){return t<0?0:t+n>e&&(t=e-n)<0?0:t}if(n.settings.constrainToViewport){var r=me(this),o=n.layoutRect();t=i(t,r.w,o.w),e=i(e,r.h,o.h)}var s=ne.getUiContainer(n);return s&&ce(s)&&!de(n)&&(t-=s.scrollLeft,e-=s.scrollTop),s&&(t+=1,e+=1),n.state.get("rendered")?n.layoutRect({x:t,y:e}).repaint():(n.settings.x=t,n.settings.y=e),n.fire("move",{x:t,y:e}),n}},pe=ue.extend({Mixins:[ge],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var t=this,e=t.classPrefix;return'<div id="'+t._id+'" class="'+t.classes+'" role="presentation"><div class="'+e+'tooltip-arrow"></div><div class="'+e+'tooltip-inner">'+t.encode(t.state.get("text"))+"</div></div>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().lastChild.innerHTML=t.encode(e.value)}),t._super()},repaint:function(){var t,e;t=this.getEl().style,e=this._layoutRect,t.left=e.x+"px",t.top=e.y+"px",t.zIndex=131070}}),ve=ue.extend({init:function(t){var e=this;e._super(t),t=e.settings,e.canFocus=!0,t.tooltip&&!1!==ve.tooltips&&(e.on("mouseenter",function(n){var i=e.tooltip().moveTo(-65535);if(n.control===e){var r=i.text(t.tooltip).show().testMoveRel(e.getEl(),["bc-tc","bc-tl","bc-tr"]);i.classes.toggle("tooltip-n","bc-tc"===r),i.classes.toggle("tooltip-nw","bc-tl"===r),i.classes.toggle("tooltip-ne","bc-tr"===r),i.moveRel(e.getEl(),r)}else i.hide()}),e.on("mouseleave mousedown click",function(){e.tooltip().remove(),e._tooltip=null})),e.aria("label",t.ariaLabel||t.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new pe({type:"tooltip"}),ne.inheritUiContainer(this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var t=this,e=t.settings;t._super(),t.parent()||!e.width&&!e.height||(t.initLayoutRect(),t.repaint()),e.autofocus&&t.focus()},bindStates:function(){var t=this;function e(e){t.aria("disabled",e),t.classes.toggle("disabled",e)}function n(e){t.aria("pressed",e),t.classes.toggle("active",e)}return t.state.on("change:disabled",function(t){e(t.value)}),t.state.on("change:active",function(t){n(t.value)}),t.state.get("disabled")&&e(!0),t.state.get("active")&&n(!0),t._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),ye=ve.extend({Defaults:{value:0},init:function(t){this._super(t),this.classes.add("progress"),this.settings.filter||(this.settings.filter=function(t){return Math.round(t)})},renderHtml:function(){var t=this._id,e=this.classPrefix;return'<div id="'+t+'" class="'+this.classes+'"><div class="'+e+'bar-container"><div class="'+e+'bar"></div></div><div class="'+e+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var t=this;function e(e){e=t.settings.filter(e),t.getEl().lastChild.innerHTML=e+"%",t.getEl().firstChild.firstChild.style.width=e+"%"}return t.state.on("change:value",function(t){e(t.value)}),e(t.state.get("value")),t._super()}}),be=function(t,e){t.getEl().lastChild.textContent=e+(t.progressBar?" "+t.progressBar.value()+"%":"")},xe=ue.extend({Mixins:[ge],Defaults:{classes:"widget notification"},init:function(t){var e=this;e._super(t),e.maxWidth=t.maxWidth,t.text&&e.text(t.text),t.icon&&(e.icon=t.icon),t.color&&(e.color=t.color),t.type&&e.classes.add("notification-"+t.type),t.timeout&&(t.timeout<0||t.timeout>0)&&!t.closeButton?e.closeButton=!1:(e.classes.add("has-close"),e.closeButton=!0),t.progressBar&&(e.progressBar=new ye),e.on("click",function(t){-1!==t.target.className.indexOf(e.classPrefix+"close")&&e.close()})},renderHtml:function(){var t,e=this,n=e.classPrefix,i="",r="",o="";return e.icon&&(i='<i class="'+n+"ico "+n+"i-"+e.icon+'"></i>'),t=' style="max-width: '+e.maxWidth+"px;"+(e.color?"background-color: "+e.color+';"':'"'),e.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7</button>'),e.progressBar&&(o=e.progressBar.renderHtml()),'<div id="'+e._id+'" class="'+e.classes+'"'+t+' role="presentation">'+i+'<div class="'+n+'notification-inner">'+e.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var t=this;return u.setTimeout(function(){t.$el.addClass(t.classPrefix+"in"),be(t,t.state.get("text"))},100),t._super()},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl().firstChild.innerHTML=e.value,be(t,e.value)}),t.progressBar&&(t.progressBar.bindStates(),t.progressBar.state.on("change:value",function(e){be(t,t.state.get("text"))})),t._super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var t,e;t=this.getEl().style,e=this._layoutRect,t.left=e.x+"px",t.top=e.y+"px",t.zIndex=65534}});function we(t){var e=function(t){return t.inline?t.getElement():t.getContentAreaContainer()};return{open:function(n,i){var r,o=R.extend(n,{maxWidth:(r=e(t),Mt.getSize(r).width)}),s=new xe(o);return s.args=o,o.timeout>0&&(s.timer=setTimeout(function(){s.close(),i()},o.timeout)),s.on("close",function(){i()}),s.renderTo(),s},close:function(t){t.close()},reposition:function(n){var i;i=n,Ht.each(i,function(t){t.moveTo(0,0)}),function(n){if(n.length>0){var i=n.slice(0,1)[0],r=e(t);i.moveRel(r,"tc-tc"),Ht.each(n,function(t,e){e>0&&t.moveRel(n[e-1].getEl(),"bc-tc")})}}(n)},getArgs:function(t){return t.args}}}function _e(t){var e,n;if(t.changedTouches)for(e="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<e.length;n++)t[e[n]]=t.changedTouches[0][e[n]]}function Re(t,e){var n,i,r,o,s,a,l,u=e.document||document;e=e||{};var c=u.getElementById(e.handle||t);r=function(t){var r,d,f,h,m,g,p,v,y,b,x,w=(r=u,y=Math.max,d=r.documentElement,f=r.body,h=y(d.scrollWidth,f.scrollWidth),m=y(d.clientWidth,f.clientWidth),g=y(d.offsetWidth,f.offsetWidth),p=y(d.scrollHeight,f.scrollHeight),v=y(d.clientHeight,f.clientHeight),{width:h<g?m:h,height:p<y(d.offsetHeight,f.offsetHeight)?v:p});_e(t),t.preventDefault(),i=t.button,b=c,a=t.screenX,l=t.screenY,x=window.getComputedStyle?window.getComputedStyle(b,null).getPropertyValue("cursor"):b.runtimeStyle.cursor,n=Tt("<div></div>").css({position:"absolute",top:0,left:0,width:w.width,height:w.height,zIndex:2147483647,opacity:1e-4,cursor:x}).appendTo(u.body),Tt(u).on("mousemove touchmove",s).on("mouseup touchend",o),e.start(t)},s=function(t){if(_e(t),t.button!==i)return o(t);t.deltaX=t.screenX-a,t.deltaY=t.screenY-l,t.preventDefault(),e.drag(t)},o=function(t){_e(t),Tt(u).off("mousemove touchmove",s).off("mouseup touchend",o),n.remove(),e.stop&&e.stop(t)},this.destroy=function(){Tt(c).off()},Tt(c).on("mousedown touchstart",r)}var Ce=tinymce.util.Tools.resolve("tinymce.ui.Factory"),ke=function(t){return!!t.getAttribute("data-mce-tabstop")};function Ee(t){var e,n,i=t.root;function r(t){return t&&1===t.nodeType}try{e=document.activeElement}catch(b){e=document.body}function o(t){return r(t=t||e)?t.getAttribute("role"):null}function s(t){for(var n,i=t||e;i=i.parentNode;)if(n=o(i))return n}function a(t){var n=e;if(r(n))return n.getAttribute("aria-"+t)}function l(t){var e=t.tagName.toUpperCase();return"INPUT"===e||"TEXTAREA"===e||"SELECT"===e}function u(t){var e=[];return function n(t){if(1===t.nodeType&&"none"!==t.style.display&&!t.disabled){var i;(l(i=t)&&!i.hidden||ke(i)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(o(i)))&&e.push(t);for(var r=0;r<t.childNodes.length;r++)n(t.childNodes[r])}}(t||i.getEl()),e}function c(t){var e,i;(i=(t=t||n).parents().toArray()).unshift(t);for(var r=0;r<i.length&&!(e=i[r]).settings.ariaRoot;r++);return e}function d(t,e){return t<0?t=e.length-1:t>=e.length&&(t=0),e[t]&&e[t].focus(),t}function f(t,n){var i=-1,r=c();n=n||u(r.getEl());for(var o=0;o<n.length;o++)n[o]===e&&(i=o);i+=t,r.lastAriaIndex=d(i,n)}function h(){"tablist"===s()?f(-1,u(e.parentNode)):n.parent().submenu?v():f(-1)}function m(){var t=o(),n=s();"tablist"===n?f(1,u(e.parentNode)):"menuitem"===t&&"menu"===n&&a("haspopup")?y():f(1)}function g(){f(-1)}function p(){var t=o(),e=s();"menuitem"===t&&"menubar"===e?y():"button"===t&&a("haspopup")?y({key:"down"}):f(1)}function v(){n.fire("cancel")}function y(t){t=t||{},n.fire("click",{target:e,aria:t})}return n=i.getParentCtrl(e),i.on("keydown",function(t){function i(t,n){l(e)||ke(e)||"slider"!==o(e)&&!1!==n(t)&&t.preventDefault()}if(!t.isDefaultPrevented())switch(t.keyCode){case 37:i(t,h);break;case 39:i(t,m);break;case 38:i(t,g);break;case 40:i(t,p);break;case 27:v();break;case 14:case 13:case 32:i(t,y);break;case 9:!function(t){if("tablist"===s()){var e=u(n.getEl("body"))[0];e&&e.focus()}else f(t.shiftKey?-1:1)}(t),t.preventDefault()}}),i.on("focusin",function(t){e=t.target,n=t.control}),{focusFirst:function(t){var e=c(t),n=u(e.getEl());e.settings.ariaRemember&&"lastAriaIndex"in e?d(e.lastAriaIndex,n):d(0,n)}}}var He,Se,Me,Te,We={},Pe=ue.extend({init:function(t){var e=this;e._super(t),(t=e.settings).fixed&&e.state.set("fixed",!0),e._items=new $t,e.isRtl()&&e.classes.add("rtl"),e.bodyClasses=new At(function(){e.state.get("rendered")&&(e.getEl("body").className=this.toString())}),e.bodyClasses.prefix=e.classPrefix,e.classes.add("container"),e.bodyClasses.add("container-body"),t.containerCls&&e.classes.add(t.containerCls),e._layout=Ce.create((t.layout||"")+"layout"),e.settings.items?e.add(e.settings.items):e.add(e.render()),e._hasBody=!0},items:function(){return this._items},find:function(t){return(t=We[t]=We[t]||new Ut(t)).find(this)},add:function(t){return this.items().add(this.create(t)).parent(this),this},focus:function(t){var e,n,i,r=this;if(!t||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&&i.add(r.statusbar.items()),i.each(function(t){if(t.settings.autofocus)return e=null,!1;t.canFocus&&(e=e||t)}),e&&e.focus(),r;n.focusFirst(r)},replace:function(t,e){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===t){i[r]=e;break}r>=0&&((n=e.getEl())&&n.parentNode.removeChild(n),(n=t.getEl())&&n.parentNode.removeChild(n)),e.parent(this)},create:function(t){var e,n=this,i=[];return R.isArray(t)||(t=[t]),R.each(t,function(t){t&&(t instanceof ue||("string"==typeof t&&(t={type:t}),e=R.extend({},n.settings.defaults,t),t.type=e.type=e.type||t.type||n.settings.defaultType||(e.defaults?e.defaults.type:null),t=Ce.create(e)),i.push(t))}),i},renderNew:function(){var t=this;return t.items().each(function(e,n){var i;e.parent(t),e.state.get("rendered")||((i=t.getEl("body")).hasChildNodes()&&n<=i.childNodes.length-1?Tt(i.childNodes[n]).before(e.renderHtml()):Tt(i).append(e.renderHtml()),e.postRender(),te.add(e))}),t._layout.applyClasses(t.items().filter(":visible")),t._lastRect=null,t},append:function(t){return this.add(t).renderNew()},prepend:function(t){return this.items().set(this.create(t).concat(this.items().toArray())),this.renderNew()},insert:function(t,e,n){var i,r,o;return t=this.create(t),i=this.items(),!n&&e<i.length-1&&(e+=1),e>=0&&e<i.length&&(r=i.slice(0,e).toArray(),o=i.slice(e).toArray(),i.set(r.concat(t,o))),this.renderNew()},fromJSON:function(t){for(var e in t)this.find("#"+e).value(t[e]);return this},toJSON:function(){var t={};return this.find("*").each(function(e){var n=e.name(),i=e.value();n&&void 0!==i&&(t[n]=i)}),t},renderHtml:function(){var t=this,e=t._layout,n=this.settings.role;return t.preRender(),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"},postRender:function(){var t,e=this;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=Ee({root:e})),e},initLayoutRect:function(){var t=this._super();return this._layout.recalc(this),t},recalc:function(){var t=this,e=t._layoutRect,n=t._lastRect;if(!n||n.w!==e.w||n.h!==e.h)return t._layout.recalc(t),e=t.layoutRect(),t._lastRect={x:e.x,y:e.y,w:e.w,h:e.h},!0},reflow:function(){var t;if(te.remove(this),this.visible()){for(ue.repaintControls=[],ue.repaintControls.map={},this.recalc(),t=ue.repaintControls.length;t--;)ue.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),ue.repaintControls=[]}return this}}),Ne={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var t=this,e=2;function n(){var n,i,r;function o(r,o,s,a,l,u){var c,d,f,h,m,g,p,v;if(d=t.getEl("scroll"+r)){if(p=o.toLowerCase(),v=s.toLowerCase(),Tt(t.getEl("absend")).css(p,t.layoutRect()[a]-1),!l)return void Tt(d).css("display","none");Tt(d).css("display","block"),c=t.getEl("body"),f=t.getEl("scroll"+r+"t"),h=c["client"+s]-2*e,m=(h-=n&&i?d["client"+u]:0)/c["scroll"+s],(g={})[p]=c["offset"+o]+e,g[v]=h,Tt(d).css(g),(g={})[p]=c["scroll"+o]*m,g[v]=h*m,Tt(f).css(g)}}r=t.getEl("body"),n=r.scrollWidth>r.clientWidth,i=r.scrollHeight>r.clientHeight,o("h","Left","Width","contentW",n,"Height"),o("v","Top","Height","contentH",i,"Width")}t.settings.autoScroll&&(t._hasScroll||(t._hasScroll=!0,function(){function n(n,i,r,o,s){var a,l=t._id+"-scroll"+n,u=t.classPrefix;Tt(t.getEl()).append('<div id="'+l+'" class="'+u+"scrollbar "+u+"scrollbar-"+n+'"><div id="'+l+'t" class="'+u+'scrollbar-thumb"></div></div>'),t.draghelper=new Re(l+"t",{start:function(){a=t.getEl("body")["scroll"+i],Tt("#"+l).addClass(u+"active")},drag:function(l){var u,c,d,f,h=t.layoutRect();c=h.contentW>h.innerW,d=h.contentH>h.innerH,f=t.getEl("body")["client"+r]-2*e,u=(f-=c&&d?t.getEl("scroll"+n)["client"+s]:0)/t.getEl("body")["scroll"+r],t.getEl("body")["scroll"+i]=a+l["delta"+o]/u},stop:function(){Tt("#"+l).removeClass(u+"active")}})}t.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}(),t.on("wheel",function(e){var i=t.getEl("body");i.scrollLeft+=10*(e.deltaX||0),i.scrollTop+=10*e.deltaY,n()}),Tt(t.getEl("body")).on("scroll",n)),n())}},Oe=Pe.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[Ne],renderHtml:function(){var t=this,e=t._layout,n=t.settings.html;return t.preRender(),e.preRender(t),void 0===n?n='<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+e.renderHtml(t)+"</div>":("function"==typeof n&&(n=n.call(t)),t._hasBody=!1),'<div id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1" role="group">'+(t._preBodyHtml||"")+n+"</div>"}}),De={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,e){if(t<=1||e<=1){var n=Mt.getWindowSize();t=t<=1?t*n.w:t,e=e<=1?e*n.h:e}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:e,w:t,h:e}).reflow()},resizeBy:function(t,e){var n=this.layoutRect();return this.resizeTo(n.w+t,n.h+e)}},Ae=[],Be=[];function Le(t,e){for(;t;){if(t===e)return!0;t=t.parent()}}function ze(){He||(He=function(t){2!==t.button&&function(t){for(var e=Ae.length;e--;){var n=Ae[e],i=n.getParentCtrl(t.target);if(n.settings.autohide){if(i&&(Le(i,n)||n.parent()===i))continue;(t=n.fire("autohide",{target:t.target})).isDefaultPrevented()||n.hide()}}}(t)},Tt(document).on("click touchstart",He))}function Ie(t){var e=Mt.getViewPort().y;function n(e,n){for(var i,r=0;r<Ae.length;r++)if(Ae[r]!==t)for(i=Ae[r].parent();i&&(i=i.parent());)i===t&&Ae[r].fixed(e).moveBy(0,n).repaint()}t.settings.autofix&&(t.state.get("fixed")?t._autoFixY>e&&(t.fixed(!1).layoutRect({y:t._autoFixY}).repaint(),n(!1,t._autoFixY-e)):(t._autoFixY=t.layoutRect().y,t._autoFixY<e&&(t.fixed(!0).layoutRect({y:0}).repaint(),n(!0,e-t._autoFixY))))}function Fe(t,e){var n,i,r=Ve.zIndex||65535;if(t)Be.push(e);else for(n=Be.length;n--;)Be[n]===e&&Be.splice(n,1);if(Be.length)for(n=0;n<Be.length;n++)Be[n].modal&&(r++,i=Be[n]),Be[n].getEl().style.zIndex=r,Be[n].zIndex=r,r++;var o=Tt("#"+e.classPrefix+"modal-block",e.getContainerElm())[0];i?Tt(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),Te=!1),Ve.currentZIndex=r}var Ve=Oe.extend({Mixins:[ge,De],init:function(t){var e=this;e._super(t),e._eventsRoot=e,e.classes.add("floatpanel"),t.autohide&&(ze(),function(){if(!Me){var t=document.documentElement,e=t.clientWidth,n=t.clientHeight;Me=function(){document.all&&e===t.clientWidth&&n===t.clientHeight||(e=t.clientWidth,n=t.clientHeight,Ve.hideAll())},Tt(window).on("resize",Me)}}(),Ae.push(e)),t.autofix&&(Se||(Se=function(){var t;for(t=Ae.length;t--;)Ie(Ae[t])},Tt(window).on("scroll",Se)),e.on("move",function(){Ie(this)})),e.on("postrender show",function(t){if(t.control===e){var n,i=e.classPrefix;e.modal&&!Te&&((n=Tt("#"+i+"modal-block",e.getContainerElm()))[0]||(n=Tt('<div id="'+i+'modal-block" class="'+i+"reset "+i+'fade"></div>').appendTo(e.getContainerElm())),u.setTimeout(function(){n.addClass(i+"in"),Tt(e.getEl()).addClass(i+"in")}),Te=!0),Fe(!0,e)}}),e.on("show",function(){e.parents().each(function(t){if(t.state.get("fixed"))return e.fixed(!0),!1})}),t.popover&&(e._preBodyHtml='<div class="'+e.classPrefix+'arrow"></div>',e.classes.add("popover").add("bottom").add(e.isRtl()?"end":"start")),e.aria("label",t.ariaLabel),e.aria("labelledby",e._id),e.aria("describedby",e.describedBy||e._id+"-none")},fixed:function(t){var e=this;if(e.state.get("fixed")!==t){if(e.state.get("rendered")){var n=Mt.getViewPort();t?e.layoutRect().y-=n.y:e.layoutRect().y+=n.y}e.classes.toggle("fixed",t),e.state.set("fixed",t)}return e},show:function(){var t,e=this._super();for(t=Ae.length;t--&&Ae[t]!==this;);return-1===t&&Ae.push(this),e},hide:function(){return Ue(this),Fe(!1,this),this._super()},hideAll:function(){Ve.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Fe(!1,this)),this},remove:function(){Ue(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Ue(t){var e;for(e=Ae.length;e--;)Ae[e]===t&&Ae.splice(e,1);for(e=Be.length;e--;)Be[e]===t&&Be.splice(e,1)}Ve.hideAll=function(){for(var t=Ae.length;t--;){var e=Ae[t];e&&e.settings.autohide&&(e.hide(),Ae.splice(t,1))}};var qe=[],je="";function $e(t){var e,n=Tt("meta[name=viewport]")[0];!1!==a.overrideViewPort&&(n||((n=document.createElement("meta")).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(e=n.getAttribute("content"))&&void 0!==je&&(je=e),n.setAttribute("content",t?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":je))}function Ye(t,e){(function(){for(var t=0;t<qe.length;t++)if(qe[t]._fullscreen)return!0;return!1})()&&!1===e&&Tt([document.documentElement,document.body]).removeClass(t+"fullscreen")}var Xe=Ve.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(t){var e=this;e._super(t),e.isRtl()&&e.classes.add("rtl"),e.classes.add("window"),e.bodyClasses.add("window-body"),e.state.set("fixed",!0),t.buttons&&(e.statusbar=new Oe({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:e.isRtl()?"start":"end",defaults:{type:"button"},items:t.buttons}),e.statusbar.classes.add("foot"),e.statusbar.parent(e)),e.on("click",function(t){var n=e.classPrefix+"close";(Mt.hasClass(t.target,n)||Mt.hasClass(t.target.parentNode,n))&&e.close()}),e.on("cancel",function(){e.close()}),e.aria("describedby",e.describedBy||e._id+"-none"),e.aria("label",t.title),e._fullscreen=!1},recalc:function(){var t,e,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(Mt.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),t=r.layoutRect(),r.settings.title&&!r._fullscreen&&(e=t.headerW)>t.w&&(n=t.x-Math.max(0,e/2),r.layoutRect({w:e,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(e=o.layoutRect().minW+t.deltaW)>t.w&&(n=t.x-Math.max(0,e-t.w),r.layoutRect({w:e,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var t,e=this,n=e._super(),i=0;if(e.settings.title&&!e._fullscreen){t=e.getEl("head");var r=Mt.getSize(t);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}e.statusbar&&(i+=e.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=Mt.getWindowSize();return n.x=e.settings.x||Math.max(0,o.w/2-n.w/2),n.y=e.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var t=this,e=t._layout,n=t._id,i=t.classPrefix,r=t.settings,o="",s="",a=r.html;return t.preRender(),e.preRender(t),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+t.encode(r.title)+'</div><div id="'+n+'-dragh" class="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=e.renderHtml(t)),t.statusbar&&(s=t.statusbar.renderHtml()),'<div id="'+n+'" class="'+t.classes+'" hidefocus="1"><div class="'+t.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+t.bodyClasses+'">'+a+"</div>"+s+"</div></div>"},fullscreen:function(t){var e,n,i=this,r=document.documentElement,o=i.classPrefix;if(t!==i._fullscreen)if(Tt(window).on("resize",function(){var t;if(i._fullscreen)if(e)i._timer||(i._timer=u.setTimeout(function(){var t=Mt.getWindowSize();i.moveTo(0,0).resizeTo(t.w,t.h),i._timer=0},50));else{t=(new Date).getTime();var n=Mt.getWindowSize();i.moveTo(0,0).resizeTo(n.w,n.h),(new Date).getTime()-t>50&&(e=!0)}}),n=i.layoutRect(),i._fullscreen=t,t){i._initial={x:n.x,y:n.y,w:n.w,h:n.h},i.borderBox=Nt("0"),i.getEl("head").style.display="none",n.deltaH-=n.headerH+2,Tt([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=Mt.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Nt(i.settings.border),i.getEl("head").style.display="",n.deltaH+=n.headerH,Tt([r,document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var t,e=this;setTimeout(function(){e.classes.add("in"),e.fire("open")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new Re(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),qe.push(e),$e(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var t,e=this;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),Ye(e.classPrefix,!1),t=qe.length;t--;)qe[t]===e&&qe.splice(t,1);$e(qe.length>0)},getContentWindow:function(){var t=this.getEl().getElementsByTagName("iframe")[0];return t?t.contentWindow:null}});!function(){if(!a.desktop){var t={w:window.innerWidth,h:window.innerHeight};u.setInterval(function(){var e=window.innerWidth,n=window.innerHeight;t.w===e&&t.h===n||(t={w:e,h:n},Tt(window).trigger("resize"))},100)}Tt(window).on("resize",function(){var t,e,n=Mt.getWindowSize();for(t=0;t<qe.length;t++)e=qe[t].layoutRect(),qe[t].moveTo(qe[t].settings.x||Math.max(0,n.w/2-e.w/2),qe[t].settings.y||Math.max(0,n.h/2-e.h/2))})}();var Je,Ge=Xe.extend({init:function(t){t={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(t)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(t){var e,n=t.callback||function(){};function i(t,e,i){return{type:"button",text:t,subtype:i?"primary":"",onClick:function(t){t.control.parents()[1].close(),n(e)}}}switch(t.buttons){case Ge.OK_CANCEL:e=[i("Ok",!0,!0),i("Cancel",!1)];break;case Ge.YES_NO:case Ge.YES_NO_CANCEL:e=[i("Yes",1,!0),i("No",0)],t.buttons===Ge.YES_NO_CANCEL&&e.push(i("Cancel",-1));break;default:e=[i("Ok",!0,!0)]}return new Xe({padding:20,x:t.x,y:t.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:e,title:t.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:t.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:t.onClose,onCancel:function(){n(!1)}}).renderTo(document.body).reflow()},alert:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,Ge.msgBox(t)},confirm:function(t,e){return"string"==typeof t&&(t={text:t}),t.callback=e,t.buttons=Ge.OK_CANCEL,Ge.msgBox(t)}}}),Ke=function(t,e){return{renderUI:function(){return st(t,e)},getNotificationManagerImpl:function(){return we(t)},getWindowManagerImpl:function(){return{open:function(t,e,n){var i;return t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body,data:t.data,callbacks:t.commands}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Xe(t)).on("close",function(){n(i)}),t.data&&i.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),i.features=t||{},i.params=e||{},i=i.renderTo(document.body).reflow()},alert:function(t,e,n){var i;return(i=Ge.alert(t,function(){e()})).on("close",function(){n(i)}),i},confirm:function(t,e,n){var i;return(i=Ge.confirm(t,function(t){e(t)})).on("close",function(){n(i)}),i},close:function(t){t.close()},getParams:function(t){return t.params},setParams:function(t,e){t.params=e}}}}},Ze="undefined"!=typeof window?window:Function("return this;")(),Qe=function(t,e){for(var n=e!==undefined&&null!==e?e:Ze,i=0;i<t.length&&n!==undefined&&null!==n;++i)n=n[t[i]];return n},tn=function(t,e){var n=t.split(".");return Qe(n,e)},en={getOrDie:function(t,e){var n=tn(t,e);if(n===undefined||null===n)throw t+" not available on this browser";return n}},nn=tinymce.util.Tools.resolve("tinymce.util.Promise"),rn=function(t){return new nn(function(e){var n=new function(){return new(en.getOrDie("FileReader"))};n.onloadend=function(){e(n.result.split(",")[1])},n.readAsDataURL(t)})},on=function(){return new nn(function(t){var e;(e=document.createElement("input")).type="file",e.style.position="fixed",e.style.left=0,e.style.top=0,e.style.opacity=.001,document.body.appendChild(e),e.onchange=function(e){t(Array.prototype.slice.call(e.target.files))},e.click(),e.parentNode.removeChild(e)})},sn=0,an=function(t){return t+sn+++(e=function(){return Math.round(4294967295*Math.random()).toString(36)},"s"+Date.now().toString(36)+e()+e()+e());var e},ln=function(t,e){var n={};function i(i){var r,o,s;o=e[i?"startContainer":"endContainer"],s=e[i?"startOffset":"endOffset"],1===o.nodeType&&(r=t.create("span",{"data-mce-type":"bookmark"}),o.hasChildNodes()?(s=Math.min(s,o.childNodes.length-1),i?o.insertBefore(r,o.childNodes[s]):t.insertAfter(r,o.childNodes[s])):o.appendChild(r),o=r,s=0),n[i?"startContainer":"endContainer"]=o,n[i?"startOffset":"endOffset"]=s}return i(!0),e.collapsed||i(),n},un=function(t,e){function n(n){var i,r,o;i=o=e[n?"startContainer":"endContainer"],r=e[n?"startOffset":"endOffset"],i&&(1===i.nodeType&&(r=function(t){for(var e=t.parentNode.firstChild,n=0;e;){if(e===t)return n;1===e.nodeType&&"bookmark"===e.getAttribute("data-mce-type")||n++,e=e.nextSibling}return-1}(i),i=i.parentNode,t.remove(o)),e[n?"startContainer":"endContainer"]=i,e[n?"startOffset":"endOffset"]=r)}n(!0),n();var i=t.createRng();return i.setStart(e.startContainer,e.startOffset),e.endContainer&&i.setEnd(e.endContainer,e.endOffset),i},cn=tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"),dn=tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"),fn=function(t){return"A"===t.nodeName&&t.hasAttribute("href")},hn=function(t){var e,n,i,r,o,s,a,l;return r=t.selection,o=t.dom,s=r.getRng(),a=o,l=dn.getNode(s.startContainer,s.startOffset),e=a.getParent(l,fn)||l,n=dn.getNode(s.endContainer,s.endOffset),i=t.getBody(),R.grep(function(t,e,n){var i,r,o=[];for(i=new cn(e,t),r=e;r&&(1===r.nodeType&&o.push(r),r!==n);r=i.next());return o}(i,e,n),fn)},mn=function(t){var e,n,i,r,o;e=t,n=hn(t),r=e.dom,o=e.selection,i=ln(r,o.getRng()),R.each(n,function(t){e.dom.remove(t,!0)}),o.setRng(un(r,i))},gn=function(t){t.selection.collapse(!1)},pn=function(t){t.focus(),mn(t),gn(t)},vn=function(t,e){var n,i,r,o,s,a=t.dom.getParent(t.selection.getStart(),"a[href]");a?(o=a,s=e,(r=t).focus(),r.dom.setAttrib(o,"href",s),gn(r)):(i=e,(n=t).execCommand("mceInsertLink",!1,{href:i}),gn(n))},yn=function(t,e,n){var i,r,o;t.plugins.table?t.plugins.table.insertTable(e,n):(r=e,o=n,(i=t).undoManager.transact(function(){var t,e;i.insertContent(function(t,e){var n,i,r;for(r='<table data-mce-id="mce" style="width: 100%">',r+="<tbody>",i=0;i<e;i++){for(r+="<tr>",n=0;n<t;n++)r+="<td><br></td>";r+="</tr>"}return r+="</tbody>",r+="</table>"}(r,o)),(t=i.dom.select("*[data-mce-id]")[0]).removeAttribute("data-mce-id"),e=i.dom.select("td,th",t),i.selection.setCursorLocation(e[0],0)}))},bn=function(t,e){t.execCommand("FormatBlock",!1,e)},xn=function(t,e,n){var i,r;r=(i=t.editorUpload.blobCache).create(an("mceu"),n,e),i.add(r),t.insertContent(t.dom.createHTML("img",{src:r.blobUri()}))},wn=function(t,e){0===e.trim().length?pn(t):vn(t,e)},_n=pn,Rn=function(t,e){t.addButton("quicklink",{icon:"link",tooltip:"Insert/Edit link",stateSelector:"a[href]",onclick:function(){e.showForm(t,"quicklink")}}),t.addButton("quickimage",{icon:"image",tooltip:"Insert image",onclick:function(){on().then(function(e){var n=e[0];rn(n).then(function(e){xn(t,e,n)})})}}),t.addButton("quicktable",{icon:"table",tooltip:"Insert table",onclick:function(){e.hide(),yn(t,2,2)}}),function(t){for(var e=function(e){return function(){bn(t,e)}},n=1;n<6;n++){var i="h"+n;t.addButton(i,{text:i.toUpperCase(),tooltip:"Heading "+n,stateSelector:i,onclick:e(i),onPostRender:function(){this.getEl().firstChild.firstChild.style.fontWeight="bold"}})}}(t)},Cn=function(){var t=a.container;if(t&&"static"!==l.DOM.getStyle(t,"position",!0)){var e=l.DOM.getPos(t),n=e.x-t.scrollLeft,i=e.y-t.scrollTop;return mt.some({x:n,y:i})}return mt.none()},kn=function(t){return/^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(t.trim())},En=function(t){return/^https?:\/\//.test(t.trim())},Hn=function(t,e){return!En(e)&&kn(e)?(n=t,i=e,new nn(function(t){n.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?",function(e){t(!0===e?"http://"+i:i)})})):nn.resolve(e);var n,i},Sn=function(t,e){var n,i,r,o={};return n="quicklink",i={items:[{type:"button",name:"unlink",icon:"unlink",onclick:function(){t.focus(),_n(t),e()},tooltip:"Remove link"},{type:"filepicker",name:"linkurl",placeholder:"Paste or type a link",filetype:"file",onchange:function(t){var e=t.meta;e&&e.attach&&(o={href:this.value(),attach:e.attach})}},{type:"button",icon:"checkmark",subtype:"primary",tooltip:"Ok",onclick:"submit"}],onshow:function(e){if(e.control===this){var n,i="";(n=t.dom.getParent(t.selection.getStart(),"a[href]"))&&(i=t.dom.getAttrib(n,"href")),this.fromJSON({linkurl:i}),r=this.find("#unlink"),n?r.show():r.hide(),this.find("#linkurl")[0].focus()}var r},onsubmit:function(n){Hn(t,n.data.linkurl).then(function(n){t.undoManager.transact(function(){n===o.href&&(o.attach(),o={}),wn(t,n)}),e()})}},(r=Ce.create(R.extend({type:"form",layout:"flex",direction:"row",padding:5,name:n,spacing:3},i))).on("show",function(){r.find("textbox").eq(0).each(function(t){t.focus()})}),r},Mn=function(t,e,n){var i,r,o=[];if(n)return R.each(B(r=n)?r:N(r)?r.split(/[ ,]/):[],function(e){if("|"===e)i=null;else if(t.buttons[e]){i||(i={type:"buttongroup",items:[]},o.push(i));var n=t.buttons[e];A(n)&&(n=n()),n.type=n.type||"button",(n=Ce.create(n)).on("postRender",(r=t,s=n,function(){var t,e,n=(e=function(t,e){return{selector:t,handler:e}},(t=s).settings.stateSelector?e(t.settings.stateSelector,function(e){t.active(e)}):t.settings.disabledStateSelector?e(t.settings.disabledStateSelector,function(e){t.disabled(e)}):null);null!==n&&r.selection.selectorChanged(n.selector,n.handler)})),i.items.push(n)}var r,s}),Ce.create({type:"toolbar",layout:"flow",name:e,items:o})},Tn=function(){var t,e,n=function(t){return t.items().length>0},i=function(t,e){var i,r,o=(i=t,r=e,R.map(r,function(t){return Mn(i,t.id,t.items)})).concat([Mn(t,"text",J(t)),Mn(t,"insert",G(t)),Sn(t,c)]);return Ce.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:R.grep(o,n),oncancel:function(){t.focus()}})},r=function(t){t&&t.show()},o=function(t,e){t.moveTo(e.x,e.y)},s=function(t,e){e=e?e.substr(0,2):"",R.each({t:"down",b:"up",c:"center"},function(n,i){t.classes.toggle("arrow-"+n,i===e.substr(0,1))}),"cr"===e?(t.classes.toggle("arrow-left",!0),t.classes.toggle("arrow-right",!1)):"cl"===e?(t.classes.toggle("arrow-left",!0),t.classes.toggle("arrow-right",!0)):R.each({l:"left",r:"right"},function(n,i){t.classes.toggle("arrow-"+n,i===e.substr(1,1))})},a=function(t,e){var n=t.items().filter("#"+e);return n.length>0&&(n[0].show(),t.reflow(),!0)},u=function(t,n,i,r){var a,u,c,d;if(d=K(i),a=b(i),u=l.DOM.getRect(t.getEl()),c="insert"===n?j(r,a,u):$(r,a,u)){var f=Cn().getOr({x:0,y:0}),h={x:c.rect.x-f.x,y:c.rect.y-f.y,w:c.rect.w,h:c.rect.h};return e=r,o(t,Y(d,r,a,h)),s(t,c.position),!0}return!1},c=function(){t&&t.hide()};return{show:function(e,n,o,s){var l,d,f,h;t||(M(e),(t=i(e,s)).renderTo().reflow().moveTo(o.x,o.y),e.nodeChanged()),d=n,f=e,h=o,r(l=t),l.items().hide(),a(l,d)?!1===u(l,d,f,h)&&c():c()},showForm:function(n,i){if(t){if(t.items().hide(),!a(t,i))return void c();var u,d,f,h=void 0;r(t),t.items().hide(),a(t,i),f=K(n),u=b(n),h=l.DOM.getRect(t.getEl()),(d=$(e,u,h))&&(h=d.rect,o(t,Y(f,e,u,h)),s(t,d.position))}},reposition:function(e,n,i){t&&u(t,n,e,i)},inForm:function(){return t&&t.visible()&&t.items().filter("form:visible").length>0},hide:c,focus:function(){t&&t.find("toolbar:visible").eq(0).each(function(t){t.focus(!0)})},remove:function(){t&&(t.remove(),t=null)}}},Wn=Wt.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(t){this.settings=R.extend({},this.Defaults,t)},preRender:function(t){t.bodyClasses.add(this.settings.containerClass)},applyClasses:function(t){var e,n,i,r,o=this.settings;e=o.firstControlClass,n=o.lastControlClass,t.each(function(t){t.classes.remove(e).remove(n).add(o.controlClass),t.visible()&&(i||(i=t),r=t)}),i&&i.classes.add(e),r&&r.classes.add(n)},renderHtml:function(t){var e="";return this.applyClasses(t.items()),t.items().each(function(t){e+=t.renderHtml()}),e},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),Pn=Wn.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(t){t.items().filter(":visible").each(function(t){var e=t.settings;t.layoutRect({x:e.x,y:e.y,w:e.w,h:e.h}),t.recalc&&t.recalc()})},renderHtml:function(t){return'<div id="'+t._id+'-absend" class="'+t.classPrefix+'abs-end"></div>'+this._super(t)}}),Nn=ve.extend({Defaults:{classes:"widget btn",role:"button"},init:function(t){var e,n=this;n._super(t),t=n.settings,e=n.settings.size,n.on("click mousedown",function(t){t.preventDefault()}),n.on("touchstart",function(t){n.fire("click",t),t.preventDefault()}),t.subtype&&n.classes.add(t.subtype),e&&n.classes.add("btn-"+e),t.icon&&n.icon(t.icon)},icon:function(t){return arguments.length?(this.state.set("icon",t),this):this.state.get("icon")},repaint:function(){var t,e=this.getEl().firstChild;e&&((t=e.style).width=t.height="100%"),this._super()},renderHtml:function(){var t,e,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(t=l.image)?(o="none","string"!=typeof t&&(t=window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",e="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+e+'><button id="'+i+'-button" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+t+"></i>":"")+a+"</button></div>"},bindStates:function(){var t=this,e=t.$,n=t.classPrefix+"txt";function i(i){var r=e("span."+n,t.getEl());i?(r[0]||(e("button:first",t.getEl()).append('<span class="'+n+'"></span>'),r=e("span."+n,t.getEl())),r.html(t.encode(i))):r.remove(),t.classes.toggle("btn-has-text",!!i)}return t.state.on("change:text",function(t){i(t.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,s=o.getElementsByTagName("i")[0];n?(s&&s===o.firstChild||(s=document.createElement("i"),o.insertBefore(s,o.firstChild)),s.className=n):s&&o.removeChild(s),i(t.state.get("text"))}),t._super()}}),On=Nn.extend({init:function(t){t=R.extend({text:"Browse...",multiple:!1,accept:null},t),this._super(t),this.classes.add("browsebutton"),t.multiple&&this.classes.add("multiple")},postRender:function(){var t=this,e=Mt.create("input",{type:"file",id:t._id+"-browse",accept:t.settings.accept});t._super(),Tt(e).on("change",function(e){var n=e.target.files;t.value=function(){return n.length?t.settings.multiple?n:n[0]:null},e.preventDefault(),n.length&&t.fire("change",e)}),Tt(e).on("click",function(t){t.stopPropagation()}),Tt(t.getEl("button")).on("click",function(t){t.stopPropagation(),e.click()}),t.getEl().appendChild(e)},remove:function(){Tt(this.getEl("button")).off(),Tt(this.getEl("input")).off(),this._super()}}),Dn=Pe.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var t=this,e=t._layout;return t.classes.add("btn-group"),t.preRender(),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'"><div id="'+t._id+'-body">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"}}),An=ve.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(t){var e=this;e._super(t),e.on("click mousedown",function(t){t.preventDefault()}),e.on("click",function(t){t.preventDefault(),e.disabled()||e.checked(!e.checked())}),e.checked(e.settings.checked)},checked:function(t){return arguments.length?(this.state.set("checked",t),this):this.state.get("checked")},value:function(t){return arguments.length?this.checked(t):this.checked()},renderHtml:function(){var t=this,e=t._id,n=t.classPrefix;return'<div id="'+e+'" class="'+t.classes+'" unselectable="on" aria-labelledby="'+e+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+e+'-al" class="'+n+'label">'+t.encode(t.state.get("text"))+"</span></div>"},bindStates:function(){var t=this;function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,i=t.classPrefix;if(void 0===n)return t.settings.icon;t.settings.icon=n,n=n?i+"ico "+i+"i-"+t.settings.icon:"";var r=t.getEl().firstChild,o=r.getElementsByTagName("i")[0];n?(o&&o===r.firstChild||(o=document.createElement("i"),r.insertBefore(o,r.firstChild)),o.className=n):o&&r.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}}),Bn=tinymce.util.Tools.resolve("tinymce.util.VK"),Ln=ve.extend({init:function(t){var e=this;e._super(t),t=e.settings,e.classes.add("combobox"),e.subinput=!0,e.ariaTarget="inp",t.menu=t.menu||t.values,t.menu&&(t.icon="caret"),e.on("click",function(n){var i=n.target,r=e.getEl();if(Tt.contains(r,i)||i===r)for(;i&&i!==r;)i.id&&-1!==i.id.indexOf("-open")&&(e.fire("action"),t.menu&&(e.showMenu(),n.aria&&e.menu.items()[0].focus())),i=i.parentNode}),e.on("keydown",function(t){var n;13===t.keyCode&&"INPUT"===t.target.nodeName&&(t.preventDefault(),e.parents().reverse().each(function(t){if(t.toJSON)return n=t,!1}),e.fire("submit",{data:n.toJSON()}))}),e.on("keyup",function(t){if("INPUT"===t.target.nodeName){var n=e.state.get("value"),i=t.target.value;i!==n&&(e.state.set("value",i),e.fire("autocomplete",t))}}),e.on("mouseover",function(t){var n=e.tooltip().moveTo(-65535);if(e.statusLevel()&&-1!==t.target.className.indexOf(e.classPrefix+"status")){var i=e.statusMessage()||"Ok",r=n.text(i).show().testMoveRel(t.target,["bc-tc","bc-tl","bc-tr"]);n.classes.toggle("tooltip-n","bc-tc"===r),n.classes.toggle("tooltip-nw","bc-tl"===r),n.classes.toggle("tooltip-ne","bc-tr"===r),n.moveRel(t.target,r)}})},statusLevel:function(t){return arguments.length>0&&this.state.set("statusLevel",t),this.state.get("statusLevel")},statusMessage:function(t){return arguments.length>0&&this.state.set("statusMessage",t),this.state.get("statusMessage")},showMenu:function(){var t,e=this,n=e.settings;e.menu||((t=n.menu||[]).length?t={type:"menu",items:t}:t.type=t.type||"menu",e.menu=Ce.create(t).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()===e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"===t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var t,e,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect(),s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseInt(Mt.getRuntimeStyle(a,"padding-right"),10)-parseInt(Mt.getRuntimeStyle(a,"padding-left"),10)),t=r?o.w-Mt.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(e=n.layoutRect().h-2+"px"),Tt(a).css({width:t-s,lineHeight:e}),n._super(),n},postRender:function(){var t=this;return Tt(this.getEl("inp")).on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)}),t._super()},renderHtml:function(){var t,e,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-status mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(t=o.icon)&&"caret"!==t&&(t=s+"ico "+s+"i-"+o.icon),e=i.state.get("text"),(t||e)&&(l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabIndex="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==t?'<i class="'+t+'"></i>':'<i class="'+s+'caret"></i>')+(e?(t?" ":"")+e:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox" value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode(o.placeholder)+'" />'+n+l+"</div>"},value:function(t){return arguments.length?(this.state.set("value",t),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(t,e){var n=this;if(0!==t.length){n.menu?n.menu.items().remove():n.menu=Ce.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(n).renderTo(),R.each(t,function(t){var i,r;n.menu.add({text:t.title,url:t.previewUrl,match:e,classes:"menu-item-ellipsis",onclick:(i=t.value,r=t.title,function(){n.fire("selectitem",{title:r,value:i})})})}),n.menu.renderNew(),n.hideMenu(),n.menu.on("cancel",function(t){t.control.parent()===n.menu&&(t.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()});var i=n.layoutRect().w;n.menu.layoutRect({w:i,minW:0,maxW:i}),n.menu.repaint(),n.menu.reflow(),n.menu.show(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else n.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var t=this;t.state.on("change:value",function(e){t.getEl("inp").value!==e.value&&(t.getEl("inp").value=e.value)}),t.state.on("change:disabled",function(e){t.getEl("inp").disabled=e.value}),t.state.on("change:statusLevel",function(e){var n=t.getEl("status"),i=t.classPrefix,r=e.value;Mt.css(n,"display","none"===r?"none":""),Mt.toggleClass(n,i+"i-checkmark","ok"===r),Mt.toggleClass(n,i+"i-warning","warn"===r),Mt.toggleClass(n,i+"i-error","error"===r),t.classes.toggle("has-status","none"!==r),t.repaint()}),Mt.on(t.getEl("status"),"mouseleave",function(){t.tooltip().hide()}),t.on("cancel",function(e){t.menu&&t.menu.visible()&&(e.stopPropagation(),t.hideMenu())});var e=function(t,e){e&&e.items().length>0&&e.items().eq(t)[0].focus()};return t.on("keydown",function(n){var i=n.keyCode;"INPUT"===n.target.nodeName&&(i===Bn.DOWN?(n.preventDefault(),t.fire("autocomplete"),e(0,t.menu)):i===Bn.UP&&(n.preventDefault(),e(-1,t.menu)))}),t._super()},remove:function(){Tt(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),zn=Ln.extend({init:function(t){var e=this;t.spellcheck=!1,t.onaction&&(t.icon="none"),e._super(t),e.classes.add("colorbox"),e.on("change keyup postrender",function(){e.repaintColor(e.value())})},repaintColor:function(t){var e=this.getEl("open"),n=e?e.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=t}catch(i){}},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.state.get("rendered")&&t.repaintColor(e.value)}),t._super()}}),In=Nn.extend({showPanel:function(){var t=this,e=t.settings;if(t.classes.add("opened"),t.panel)t.panel.show();else{var n=e.panel;n.type&&(n={layout:"grid",items:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,t.panel=new Ve(n).on("hide",function(){t.classes.remove("opened")}).on("cancel",function(e){e.stopPropagation(),t.focus(),t.hidePanel()}).parent(t).renderTo(t.getContainerElm()),t.panel.fire("show"),t.panel.reflow()}var i=t.panel.testMoveRel(t.getEl(),e.popoverAlign||(t.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl"]));t.panel.classes.toggle("start","bc-tl"===i),t.panel.classes.toggle("end","bc-tr"===i),t.panel.moveRel(t.getEl(),i)},hidePanel:function(){this.panel&&this.panel.hide()},postRender:function(){var t=this;return t.aria("haspopup",!0),t.on("click",function(e){e.control===t&&(t.panel&&t.panel.visible()?t.hidePanel():(t.showPanel(),t.panel.focus(!!e.aria)))}),t._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),Fn=l.DOM,Vn=In.extend({init:function(t){this._super(t),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(t){return t?(this._color=t,this.getEl("preview").style.backgroundColor=t,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var t=this,e=t._id,n=t.classPrefix,i=t.state.get("text"),r=t.settings.icon?n+"ico "+n+"i-"+t.settings.icon:"",o=t.settings.image?" style=\"background-image: url('"+t.settings.image+"')\"":"",s="";return i&&(t.classes.add("btn-has-text"),s='<span class="'+n+'txt">'+t.encode(i)+"</span>"),'<div id="'+e+'" class="'+t.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+e+'-preview" class="'+n+'preview"></span>'+s+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var t=this,e=t.settings.onclick;return t.on("click",function(n){n.aria&&"down"===n.aria.key||n.control!==t||Fn.getParent(n.target,"."+t.classPrefix+"open")||(n.stopImmediatePropagation(),e.call(t,n))}),delete t.settings.onclick,t._super()}}),Un=tinymce.util.Tools.resolve("tinymce.util.Color"),qn=ve.extend({Defaults:{classes:"widget colorpicker"},init:function(t){this._super(t)},postRender:function(){var t,e,n,i,r,o=this,s=o.color();function a(t,e){var n,i,r=Mt.getPos(t);return n=e.pageX-r.x,i=e.pageY-r.y,{x:n=Math.max(0,Math.min(n/t.clientWidth,1)),y:i=Math.max(0,Math.min(i/t.clientHeight,1))}}function l(t,e){var s=(360-t.h)/360;Mt.css(n,{top:100*s+"%"}),e||Mt.css(r,{left:t.s+"%",top:100-t.v+"%"}),i.style.background=Un({s:100,v:100,h:t.h}).toHex(),o.color().parse({s:t.s,v:t.v,h:t.h})}function u(e){var n;n=a(i,e),t.s=100*n.x,t.v=100*(1-n.y),l(t),o.fire("change")}function c(n){var i;i=a(e,n),(t=s.toHsv()).h=360*(1-i.y),l(t,!0),o.fire("change")}e=o.getEl("h"),n=o.getEl("hp"),i=o.getEl("sv"),r=o.getEl("svp"),o._repaint=function(){l(t=s.toHsv())},o._super(),o._svdraghelper=new Re(o._id+"-sv",{start:u,drag:u}),o._hdraghelper=new Re(o._id+"-h",{start:c,drag:c}),o._repaint()},rgb:function(){return this.color().toRgb()},value:function(t){if(!arguments.length)return this.color().toHex();this.color().parse(t),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=Un()),this._color},renderHtml:function(){var t,e=this._id,n=this.classPrefix,i="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return t='<div id="'+e+'-h" class="'+n+'colorpicker-h" style="background: -ms-linear-gradient(top,'+i+");background: linear-gradient(to bottom,"+i+');">'+function(){var t,e,r,o,s="";for(r="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",t=0,e=(o=i.split(",")).length-1;t<e;t++)s+='<div class="'+n+'colorpicker-h-chunk" style="height:'+100/e+"%;"+r+o[t]+",endColorstr="+o[t+1]+");-ms-"+r+o[t]+",endColorstr="+o[t+1]+')"></div>';return s}()+'<div id="'+e+'-hp" class="'+n+'colorpicker-h-marker"></div></div>','<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-sv" class="'+n+'colorpicker-sv"><div class="'+n+'colorpicker-overlay1"><div class="'+n+'colorpicker-overlay2"><div id="'+e+'-svp" class="'+n+'colorpicker-selector1"><div class="'+n+'colorpicker-selector2"></div></div></div></div></div>'+t+"</div>"}}),jn=ve.extend({init:function(t){t=R.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},t),this._super(t),this.classes.add("dropzone"),t.multiple&&this.classes.add("multiple")},renderHtml:function(){var t,e,n=this.settings;return t={id:this._id,hidefocus:"1"},e=Mt.create("div",t,"<span>"+this.translate(n.text)+"</span>"),n.height&&Mt.css(e,"height",n.height+"px"),n.width&&Mt.css(e,"width",n.width+"px"),e.className=this.classes,e.outerHTML},postRender:function(){var t=this,e=function(e){e.preventDefault(),t.classes.toggle("dragenter"),t.getEl().className=t.classes};t._super(),t.$el.on("dragover",function(t){t.preventDefault()}),t.$el.on("dragenter",e),t.$el.on("dragleave",e),t.$el.on("drop",function(e){if(e.preventDefault(),!t.state.get("disabled")){var n=function(e){var n=t.settings.accept;if("string"!=typeof n)return e;var i=new RegExp("("+n.split(/\s*,\s*/).join("|")+")$","i");return R.grep(e,function(t){return i.test(t.name)})}(e.dataTransfer.files);t.value=function(){return n.length?t.settings.multiple?n:n[0]:null},n.length&&t.fire("change",e)}})},remove:function(){this.$el.off(),this._super()}}),$n=ve.extend({init:function(t){var e=this;t.delimiter||(t.delimiter="\xbb"),e._super(t),e.classes.add("path"),e.canFocus=!0,e.on("click",function(t){var n;(n=t.target.getAttribute("data-index"))&&e.fire("select",{value:e.row()[n],index:n})}),e.row(e.settings.row)},focus:function(){return this.getEl().firstChild.focus(),this},row:function(t){return arguments.length?(this.state.set("row",t),this):this.state.get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var t=this;return t.state.on("change:row",function(e){t.innerHtml(t._getDataPathHtml(e.value))}),t._super()},_getDataPathHtml:function(t){var e,n,i=t||[],r="",o=this.classPrefix;for(e=0,n=i.length;e<n;e++)r+=(e>0?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(e===n-1?" "+o+"last":"")+'" data-index="'+e+'" tabindex="-1" id="'+this._id+"-"+e+'" aria-level="'+(e+1)+'">'+i[e].name+"</div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),Yn=$n.extend({postRender:function(){var t=this,e=t.settings.editor;function n(t){if(1===t.nodeType){if("BR"===t.nodeName||t.getAttribute("data-mce-bogus"))return!0;if("bookmark"===t.getAttribute("data-mce-type"))return!0}return!1}return!1!==e.settings.elementpath&&(t.on("select",function(t){e.focus(),e.selection.select(this.row()[t.index].element),e.nodeChanged()}),e.on("nodeChange",function(i){for(var r=[],o=i.parents,s=o.length;s--;)if(1===o[s].nodeType&&!n(o[s])){var a=e.fire("ResolveName",{name:o[s].nodeName.toLowerCase(),target:o[s]});if(a.isDefaultPrevented()||r.push({name:a.name,element:o[s]}),a.isPropagationStopped())break}t.row(r)})),t._super()}}),Xn=Pe.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var t=this,e=t._layout,n=t.classPrefix;return t.classes.add("formitem"),e.preRender(t),'<div id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1">'+(t.settings.title?'<div id="'+t._id+'-title" class="'+n+'title">'+t.settings.title+"</div>":"")+'<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></div>"}}),Jn=Pe.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var t=this,e=t.items();t.settings.formItemDefaults||(t.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),e.each(function(e){var n,i=e.settings.label;i&&((n=new Xn(R.extend({items:{type:"label",id:e._id+"-l",text:i,flex:0,forId:e._id,disabled:e.disabled()}},t.settings.formItemDefaults))).type="formitem",e.aria("labelledby",e._id+"-l"),"undefined"==typeof e.settings.flex&&(e.settings.flex=1),t.replace(e,n),n.add(e))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var t=this;function e(){var e,n,i=0,r=[];if(!1!==t.settings.labelGapCalc)for(("children"===t.settings.labelGapCalc?t.find("formitem"):t.items()).filter("formitem").each(function(t){var e=t.items()[0],n=e.getEl().clientWidth;i=n>i?n:i,r.push(e)}),n=t.settings.labelGap||0,e=r.length;e--;)r[e].settings.minWidth=i+n}t._super(),t.on("show",e),e()}}),Gn=Jn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var t=this,e=t._layout,n=t.classPrefix;return t.preRender(),e.preRender(t),'<fieldset id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1">'+(t.settings.title?'<legend id="'+t._id+'-title" class="'+n+'fieldset-title">'+t.settings.title+"</legend>":"")+'<div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+(t.settings.html||"")+e.renderHtml(t)+"</div></fieldset>"}}),Kn=0,Zn=function(t){var e=(new Date).getTime();return t+"_"+Math.floor(1e9*Math.random())+ ++Kn+String(e)},Qn=function(t){if(null===t||t===undefined)throw new Error("Node cannot be null or undefined");return{dom:lt.constant(t)}},ti={fromHtml:function(t,e){var n=(e||document).createElement("div");if(n.innerHTML=t,!n.hasChildNodes()||n.childNodes.length>1)throw console.error("HTML does not have a single root node",t),"HTML must have a single root node";return Qn(n.childNodes[0])},fromTag:function(t,e){var n=(e||document).createElement(t);return Qn(n)},fromText:function(t,e){var n=(e||document).createTextNode(t);return Qn(n)},fromDom:Qn,fromPoint:function(t,e,n){return mt.from(t.dom().elementFromPoint(e,n)).map(Qn)}},ei=function(t){var e,n=!1;return function(){return n||(n=!0,e=t.apply(null,arguments)),e}},ni=8,ii=9,ri=1,oi=3,si=function(t){return t.dom().nodeName.toLowerCase()},ai=function(t){return t.dom().nodeType},li=function(t){return function(e){return ai(e)===t}},ui=li(ri),ci=li(oi),di=li(ii),fi={name:si,type:ai,value:function(t){return t.dom().nodeValue},isElement:ui,isText:ci,isDocument:di,isComment:function(t){return ai(t)===ni||"#comment"===si(t)}},hi=(ei(function(){return hi(ti.fromDom(document))}),function(t){var e=t.dom().body;if(null===e||e===undefined)throw"Body is not available yet";return ti.fromDom(e)}),mi=function(t){return function(e){return function(t){if(null===t)return"null";var e=typeof t;return"object"===e&&Array.prototype.isPrototypeOf(t)?"array":"object"===e&&String.prototype.isPrototypeOf(t)?"string":e}(e)===t}},gi={isString:mi("string"),isObject:mi("object"),isArray:mi("array"),isNull:mi("null"),isBoolean:mi("boolean"),isUndefined:mi("undefined"),isFunction:mi("function"),isNumber:mi("number")},pi=(Je=Object.keys)===undefined?function(t){var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e}:Je,vi=function(t,e){for(var n=pi(t),i=0,r=n.length;i<r;i++){var o=n[i];e(t[o],o,t)}},yi=function(t,e){var n={};return vi(t,function(i,r){var o=e(i,r,t);n[o.k]=o.v}),n},bi=function(t,e){var n=[];return vi(t,function(t,i){n.push(e(t,i))}),n},xi=function(t){return bi(t,function(t){return t})},wi={bifilter:function(t,e){var n={},i={};return vi(t,function(t,r){(e(t,r)?n:i)[r]=t}),{t:n,f:i}},each:vi,map:function(t,e){return yi(t,function(t,n,i){return{k:n,v:e(t,n,i)}})},mapToArray:bi,tupleMap:yi,find:function(t,e){for(var n=pi(t),i=0,r=n.length;i<r;i++){var o=n[i],s=t[o];if(e(s,o,t))return mt.some(s)}return mt.none()},keys:pi,values:xi,size:function(t){return xi(t).length}},_i=function(t){return t.slice(0).sort()},Ri={sort:_i,reqMessage:function(t,e){throw new Error("All required keys ("+_i(t).join(", ")+") were not specified. Specified keys were: "+_i(e).join(", ")+".")},unsuppMessage:function(t){throw new Error("Unsupported keys for object: "+_i(t).join(", "))},validateStrArr:function(t,e){if(!gi.isArray(e))throw new Error("The "+t+" fields must be an array. Was: "+e+".");Ht.each(e,function(e){if(!gi.isString(e))throw new Error("The value "+e+" in the "+t+" fields was not a string.")})},invalidTypeMessage:function(t,e){throw new Error("All values need to be of type: "+e+". Keys ("+_i(t).join(", ")+") were not.")},checkDupes:function(t){var e=_i(t);Ht.find(e,function(t,n){return n<e.length-1&&t===e[n+1]}).each(function(t){throw new Error("The field: "+t+" occurs more than once in the combined fields: ["+e.join(", ")+"].")})}},Ci={immutable:function(){var t=arguments;return function(){for(var e=new Array(arguments.length),n=0;n<e.length;n++)e[n]=arguments[n];if(t.length!==e.length)throw new Error('Wrong number of arguments to struct. Expected "['+t.length+']", got '+e.length+" arguments");var i={};return Ht.each(t,function(t,n){i[t]=lt.constant(e[n])}),i}},immutableBag:function(t,e){var n=t.concat(e);if(0===n.length)throw new Error("You must specify at least one required or optional field.");return Ri.validateStrArr("required",t),Ri.validateStrArr("optional",e),Ri.checkDupes(n),function(i){var r=wi.keys(i);Ht.forall(t,function(t){return Ht.contains(r,t)})||Ri.reqMessage(t,r);var o=Ht.filter(r,function(t){return!Ht.contains(n,t)});o.length>0&&Ri.unsuppMessage(o);var s={};return Ht.each(t,function(t){s[t]=lt.constant(i[t])}),Ht.each(e,function(t){s[t]=lt.constant(Object.prototype.hasOwnProperty.call(i,t)?mt.some(i[t]):mt.none())}),s}}},ki=function(t,e){var n=function(t,e){for(var n=0;n<t.length;n++){var i=t[n];if(i.test(e))return i}return undefined}(t,e);if(!n)return{major:0,minor:0};var i=function(t){return Number(e.replace(n,"$"+t))};return Hi(i(1),i(2))},Ei=function(){return Hi(0,0)},Hi=function(t,e){return{major:t,minor:e}},Si={nu:Hi,detect:function(t,e){var n=String(e).toLowerCase();return 0===t.length?Ei():ki(t,n)},unknown:Ei},Mi="Firefox",Ti=function(t,e){return function(){return e===t}},Wi=function(t){var e=t.current;return{current:e,version:t.version,isEdge:Ti("Edge",e),isChrome:Ti("Chrome",e),isIE:Ti("IE",e),isOpera:Ti("Opera",e),isFirefox:Ti(Mi,e),isSafari:Ti("Safari",e)}},Pi={unknown:function(){return Wi({current:undefined,version:Si.unknown()})},nu:Wi,edge:lt.constant("Edge"),chrome:lt.constant("Chrome"),ie:lt.constant("IE"),opera:lt.constant("Opera"),firefox:lt.constant(Mi),safari:lt.constant("Safari")},Ni="Windows",Oi="Android",Di="Solaris",Ai="FreeBSD",Bi=function(t,e){return function(){return e===t}},Li=function(t){var e=t.current;return{current:e,version:t.version,isWindows:Bi(Ni,e),isiOS:Bi("iOS",e),isAndroid:Bi(Oi,e),isOSX:Bi("OSX",e),isLinux:Bi("Linux",e),isSolaris:Bi(Di,e),isFreeBSD:Bi(Ai,e)}},zi={unknown:function(){return Li({current:undefined,version:Si.unknown()})},nu:Li,windows:lt.constant(Ni),ios:lt.constant("iOS"),android:lt.constant(Oi),linux:lt.constant("Linux"),osx:lt.constant("OSX"),solaris:lt.constant(Di),freebsd:lt.constant(Ai)},Ii=function(t,e){var n=String(e).toLowerCase();return Ht.find(t,function(t){return t.search(n)})},Fi=function(t,e){return Ii(t,e).map(function(t){var n=Si.detect(t.versionRegexes,e);return{current:t.name,version:n}})},Vi=function(t,e){return Ii(t,e).map(function(t){var n=Si.detect(t.versionRegexes,e);return{current:t.name,version:n}})},Ui=function(t,e){return-1!==t.indexOf(e)},qi=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ji=function(t){return function(e){return Ui(e,t)}},$i=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(t){return Ui(t,"edge/")&&Ui(t,"chrome")&&Ui(t,"safari")&&Ui(t,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,qi],search:function(t){return Ui(t,"chrome")&&!Ui(t,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(t){return Ui(t,"msie")||Ui(t,"trident")}},{name:"Opera",versionRegexes:[qi,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:ji("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:ji("firefox")},{name:"Safari",versionRegexes:[qi,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(t){return(Ui(t,"safari")||Ui(t,"mobile/"))&&Ui(t,"applewebkit")}}],Yi=[{name:"Windows",search:ji("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(t){return Ui(t,"iphone")||Ui(t,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:ji("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:ji("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:ji("linux"),versionRegexes:[]},{name:"Solaris",search:ji("sunos"),versionRegexes:[]},{name:"FreeBSD",search:ji("freebsd"),versionRegexes:[]}],Xi={browsers:lt.constant($i),oses:lt.constant(Yi)},Ji=function(t){var e,n,i,r,o,s,a,l,u,c,d,f=Xi.browsers(),h=Xi.oses(),m=Fi(f,t).fold(Pi.unknown,Pi.nu),g=Vi(h,t).fold(zi.unknown,zi.nu);return{browser:m,os:g,deviceType:(n=m,i=t,r=(e=g).isiOS()&&!0===/ipad/i.test(i),o=e.isiOS()&&!r,s=e.isAndroid()&&3===e.version.major,a=e.isAndroid()&&4===e.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=e.isiOS()||e.isAndroid(),c=u&&!l,d=n.isSafari()&&e.isiOS()&&!1===/safari/i.test(i),{isiPad:lt.constant(r),isiPhone:lt.constant(o),isTablet:lt.constant(l),isPhone:lt.constant(c),isTouch:lt.constant(u),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:lt.constant(d)})}},Gi=ei(function(){var t=navigator.userAgent;return Ji(t)}),Ki=ri,Zi=ii,Qi=function(t){return t.nodeType!==Ki&&t.nodeType!==Zi||0===t.childElementCount},tr={all:function(t,e){var n=e===undefined?document:e.dom();return Qi(n)?[]:Ht.map(n.querySelectorAll(t),ti.fromDom)},is:function(t,e){var n=t.dom();if(n.nodeType!==Ki)return!1;if(n.matches!==undefined)return n.matches(e);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(e);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(e);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")},one:function(t,e){var n=e===undefined?document:e.dom();return Qi(n)?mt.none():mt.from(n.querySelector(t)).map(ti.fromDom)}},er=(Gi().browser.isIE(),Ci.immutable("element","offset"),function(t,e){return tr.all(e,t)}),nr=R.trim,ir=function(t){return function(e){if(e&&1===e.nodeType){if(e.contentEditable===t)return!0;if(e.getAttribute("data-mce-contenteditable")===t)return!0}return!1}},rr=ir("true"),or=ir("false"),sr=function(t,e,n,i,r){return{type:t,title:e,url:n,level:i,attach:r}},ar=function(t){return t.innerText||t.textContent},lr=function(t){return(e=t)&&"A"===e.nodeName&&(e.id||e.name)&&cr(t);var e},ur=function(t){return t&&/^(H[1-6])$/.test(t.nodeName)},cr=function(t){return function(t){for(;t=t.parentNode;){var e=t.contentEditable;if(e&&"inherit"!==e)return rr(t)}return!1}(t)&&!or(t)},dr=function(t){return ur(t)&&cr(t)},fr=function(t){var e,n,i=(e=t).id?e.id:Zn("h");return sr("header",ar(t),"#"+i,ur(n=t)?parseInt(n.nodeName.substr(1),10):0,function(){t.id=i})},hr=function(t){var e=t.id||t.name,n=ar(t);return sr("anchor",n||"#"+e,"#"+e,0,lt.noop)},mr=function(t){var e,n;return e="h1,h2,h3,h4,h5,h6,a:not([href])",n=t,Ht.map(er(ti.fromDom(n),e),function(t){return t.dom()})},gr=function(t){return nr(t.title).length>0},pr=function(t){var e,n,i=mr(t);return Ht.filter((n=i,Ht.map(Ht.filter(n,dr),fr)).concat((e=i,Ht.map(Ht.filter(e,lr),hr))),gr)},vr={},yr=function(t){return{title:t.title,value:{title:{raw:t.title},url:t.url,attach:t.attach}}},br=function(t,e){return{title:t,value:{title:t,url:e,attach:lt.noop}}},xr=function(t,e,n){var i=e in t?t[e]:n;return!1===i?null:i},wr=function(t,e,n,i){var r,o,s,a,l={title:"-"},u=function(t){var i=t.hasOwnProperty(n)?t[n]:[],r=Ht.filter(i,function(t){return n=t,i=e,!Ht.exists(i,function(t){return t.url===n});var n,i});return R.map(r,function(t){return{title:t,value:{title:t,url:t,attach:lt.noop}}})},c=function(t){var n,i=Ht.filter(e,function(e){return e.type===t});return n=i,R.map(n,yr)};return!1===i.typeahead_urls?[]:"file"===n?(r=[_r(t,u(vr)),_r(t,c("header")),_r(t,(o=c("anchor"),s=xr(i,"anchor_top","#top"),a=xr(i,"anchor_bottom","#bottom"),null!==s&&o.unshift(br("<top>",s)),null!==a&&o.push(br("<bottom>",a)),o))],Ht.foldl(r,function(t,e){return 0===t.length||0===e.length?t.concat(e):t.concat(l,e)},[])):_r(t,u(vr))},_r=function(t,e){var n=t.toLowerCase(),i=R.grep(e,function(t){return-1!==t.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===t?[]:i},Rr=function(t,e,n,i){var r=function(r){var o=pr(n),s=wr(r,o,i,e);t.showAutoComplete(s,r)};t.on("autocomplete",function(){r(t.value())}),t.on("selectitem",function(e){var n=e.value;t.value(n.url);var r,o=(r=n.title).raw?r.raw:r;"image"===i?t.fire("change",{meta:{alt:o,attach:n.attach}}):t.fire("change",{meta:{text:o,attach:n.attach}}),t.focus()}),t.on("click",function(e){0===t.value().length&&"INPUT"===e.target.nodeName&&r("")}),t.on("PostRender",function(){t.getRoot().on("submit",function(e){var n,r,o;e.isDefaultPrevented()||(n=t.value(),o=vr[r=i],/^https?/.test(n)&&(o?-1===Ht.indexOf(o,n)&&(vr[r]=o.slice(0,5).concat(n)):vr[r]=[n]))})})},Cr=function(t,e,n){var i=e.filepicker_validator_handler;i&&t.state.on("change:value",function(e){var r;0!==(r=e.value).length?i({url:r,type:n},function(e){var n,i,r,o=(i=(n=e).status,r=n.message,"valid"===i?{status:"ok",message:r}:"unknown"===i?{status:"warn",message:r}:"invalid"===i?{status:"warn",message:r}:{status:"none",message:""});t.statusMessage(o.message),t.statusLevel(o.status)}):t.statusLevel("none")})},kr=Ln.extend({Statics:{clearHistory:function(){vr={}}},init:function(t){var e,n,i,r=this,o=window.tinymce?window.tinymce.activeEditor:T.activeEditor,s=o.settings,a=t.filetype;t.spellcheck=!1,(i=s.file_picker_types||s.file_browser_callback_types)&&(i=R.makeMap(i,/[, ]/)),i&&!i[a]||(!(n=s.file_picker_callback)||i&&!i[a]?!(n=s.file_browser_callback)||i&&!i[a]||(e=function(){n(r.getEl("inp").id,r.value(),a,window)}):e=function(){var t=r.fire("beforecall").meta;t=R.extend({filetype:a},t),n.call(o,function(t,e){r.value(t).fire("change",{meta:e})},r.value(),t)}),e&&(t.icon="browse",t.onaction=e),r._super(t),r.classes.add("filepicker"),Rr(r,s,o.getBody(),a),Cr(r,s,a)}}),Er=Pn.extend({recalc:function(t){var e=t.layoutRect(),n=t.paddingBox;t.items().filter(":visible").each(function(t){t.layoutRect({x:n.left,y:n.top,w:e.innerW-n.right-n.left,h:e.innerH-n.top-n.bottom}),t.recalc&&t.recalc()})}}),Hr=Pn.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,y,b,x,w,_,R,C,k,E,H,S,M,T,W,P,N,O,D,A,B,L=[],z=Math.max,I=Math.min;for(i=t.items().filter(":visible"),r=t.layoutRect(),o=t.paddingBox,s=t.settings,f=t.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=t.isRtl()?s.pack||"end":s.pack,u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y",_="h",R="minH",k="maxH",H="innerH",E="top",S="deltaH",M="contentH",O="left",P="w",T="x",W="innerW",N="minW",D="right",A="deltaW",B="contentW"):(C="x",_="w",R="minW",k="maxW",H="innerW",E="left",S="deltaW",M="contentW",O="top",P="h",T="y",W="innerH",N="minH",D="bottom",A="deltaH",B="contentH"),d=r[H]-o[E]-o[E],w=c=0,e=0,n=i.length;e<n;e++)m=(h=i[e]).layoutRect(),d-=e<n-1?u:0,(g=h.settings.flex)>0&&(c+=g,m[k]&&L.push(h),m.flex=g),d-=m[R],(p=o[O]+m[N]+o[D])>w&&(w=p);if((b={})[R]=d<0?r[R]-d+r[S]:r[H]-d+r[S],b[N]=w+r[A],b[M]=r[H]-d,b[B]=w,b.minW=I(b.minW,r.maxW),b.minH=I(b.minH,r.maxH),b.minW=z(b.minW,r.startMinWidth),b.minH=z(b.minH,r.startMinHeight),!r.autoResize||b.minW===r.minW&&b.minH===r.minH){for(y=d/c,e=0,n=L.length;e<n;e++)v=(m=(h=L[e]).layoutRect())[k],(p=m[R]+m.flex*y)>v?(d-=m[k]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(y=d/c,x=o[E],b={},0===c&&("end"===l?x=d+o[E]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[E])<0&&(x=o[E]):"justify"===l&&(x=o[E],u=Math.floor(d/(i.length-1)))),b[T]=o[O],e=0,n=i.length;e<n;e++)p=(m=(h=i[e]).layoutRect()).maxFlexSize||m[R],"center"===a?b[T]=Math.round(r[W]/2-m[P]/2):"stretch"===a?(b[P]=z(m[N]||0,r[W]-o[O]-o[D]),b[T]=o[O]):"end"===a&&(b[T]=r[W]-m[P]-o.top),m.flex>0&&(p+=m.flex*y),b[_]=p,b[C]=x,h.layoutRect(b),h.recalc&&h.recalc(),x+=p+u}else if(b.w=b.minW,b.h=b.minH,t.layoutRect(b),this.recalc(t),null===t._lastRect){var F=t.parent();F&&(F._lastRect=null,F.recalc())}}}),Sr=Wn.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(t){t.items().filter(":visible").each(function(t){t.recalc&&t.recalc()})},isNative:function(){return!0}}),Mr=function(t,e){return tr.one(e,t)},Tr=function(t,e){return function(){t.execCommand("mceToggleFormat",!1,e)}},Wr=function(t,e){return function(){var n=this;t.formatter?t.formatter.formatChanged(e,function(t){n.active(t)}):t.on("init",function(){t.formatter.formatChanged(e,function(t){n.active(t)})})}},Pr=function(t){t.addMenuItem("align",{text:"Align",menu:[{text:"Left",icon:"alignleft",onclick:Tr(t,"alignleft")},{text:"Center",icon:"aligncenter",onclick:Tr(t,"aligncenter")},{text:"Right",icon:"alignright",onclick:Tr(t,"alignright")},{text:"Justify",icon:"alignjustify",onclick:Tr(t,"alignjustify")}]}),R.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(e,n){t.addButton(n,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:Wr(t,n)})})},Nr=function(t){return function(e,n){return mt.from(n).map(ti.fromDom).filter(fi.isElement).bind(function(n){return function(t,e,n){for(;n!==e;){if(n.style[t]){var i=n.style[t];return""!==i?mt.some(i):mt.none()}n=n.parentNode}return mt.none()}(t,e,n.dom()).or((i=t,r=n.dom(),mt.from(l.DOM.getStyle(r,i,!0))));var i,r}).getOr("")}},Or={getFontSize:Nr("fontSize"),getFontFamily:lt.compose(function(t){return t.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},Nr("fontFamily")),toPt:function(t,e){return/[0-9.]+px$/.test(t)?(n=72*parseInt(t,10)/96,i=e||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):t;var n,i,r}},Dr=function(t){return t?t.split(",")[0]:""},Ar=function(t,e){return function(){var n=this;t.on("init nodeChange",function(i){var r,o,s,a=Or.getFontFamily(t.getBody(),i.element),l=(r=e,o=a,R.each(r,function(t){t.value.toLowerCase()===o.toLowerCase()&&(s=t.value)}),R.each(r,function(t){s||Dr(t.value).toLowerCase()!==Dr(o).toLowerCase()||(s=t.value)}),s);n.value(l||null),!l&&a&&n.text(Dr(a))})}},Br=function(t){t.addButton("fontselect",function(){var e,n=(e=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(t.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),R.map(e,function(t){return{text:{raw:t[0]},value:t[1],textStyle:-1===t[1].indexOf("dings")?"font-family:"+t[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:n,fixedWidth:!0,onPostRender:Ar(t,n),onselect:function(e){e.control.settings.value&&t.execCommand("FontName",!1,e.control.settings.value)}}})},Lr=function(t){Br(t)},zr=function(t,e,n){var i;return R.each(t,function(t){t.value===n?i=n:t.value===e&&(i=e)}),i},Ir=function(t){t.addButton("fontsizeselect",function(){var e,n,i,r=(e=t.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",R.map(e.split(" "),function(t){var e=t,n=t,i=t.split("=");return i.length>1&&(e=i[0],n=i[1]),{text:e,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:r,fixedWidth:!0,onPostRender:(n=t,i=r,function(){var t=this;n.on("init nodeChange",function(e){var r,o,s,a;if(r=Or.getFontSize(n.getBody(),e.element))for(s=3;!a&&s>=0;s--)o=Or.toPt(r,s),a=zr(i,o,r);t.value(a||null),a||t.text(o)})}),onclick:function(e){e.control.settings.value&&t.execCommand("FontSize",!1,e.control.settings.value)}}})},Fr=function(t){Ir(t)},Vr=function(t,e){var n=e.length;return R.each(e,function(e){e.menu&&(e.hidden=0===Vr(t,e.menu));var i=e.format;i&&(e.hidden=!t.formatter.canApply(i)),e.hidden&&n--}),n},Ur=function(t,e){var n=e.items().length;return e.items().each(function(e){e.menu&&e.visible(Ur(t,e.menu)>0),!e.menu&&e.settings.menu&&e.visible(Vr(t,e.settings.menu)>0);var i=e.settings.format;i&&e.visible(t.formatter.canApply(i)),e.visible()||n--}),n},qr=function(t){var e,n,i,r,o,s,a,l,u=(n=0,i=[],r=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],o=function(t){var e=[];if(t)return R.each(t,function(t){var r={text:t.title,icon:t.icon};if(t.items)r.menu=o(t.items);else{var s=t.format||"custom"+n++;t.format||(t.name=s,i.push(t)),r.format=s,r.cmd=t.cmd}e.push(r)}),e},(e=t).on("init",function(){R.each(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:e.settings.style_formats_merge?e.settings.style_formats?o(r.concat(e.settings.style_formats)):o(r):o(e.settings.style_formats||r),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return e.formatter.getCssText(this.settings.format)},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,i;(n=t.settings.format)&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),(i=t.settings.cmd)&&t.active(e.queryCommandState(i))})},onclick:function(){this.settings.format&&Tr(e,this.settings.format)(),this.settings.cmd&&e.execCommand(this.settings.cmd)}}});s=u,t.addMenuItem("formats",{text:"Formats",menu:s}),l=u,(a=t).addButton("styleselect",{type:"menubutton",text:"Formats",menu:l,onShowMenu:function(){a.settings.style_formats_autohide&&Ur(a,this.menu)}})},jr=function(t,e){return function(){var n,i,r,o=[];return R.each(e,function(e){o.push({text:e[0],value:e[1],textStyle:function(){return t.formatter.getCssText(e[1])}})}),{type:"listbox",text:e[0][0],values:o,fixedWidth:!0,onselect:function(e){if(e.control){var n=e.control.value();Tr(t,n)()}},onPostRender:(n=t,i=o,function(){var t=this;n.on("nodeChange",function(e){var o=n.formatter,s=null;R.each(e.parents,function(t){if(R.each(i,function(e){if(r?o.matchNode(t,r,{value:e.value})&&(s=e.value):o.matchNode(t,e.value)&&(s=e.value),s)return!1}),s)return!1}),t.value(s)})})}}},$r=function(t){var e,n,i=function(t){for(var e=(t=t.replace(/;$/,"").split(";")).length;e--;)t[e]=t[e].split("=");return t}(t.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");t.addMenuItem("blockformats",{text:"Blocks",menu:(e=t,n=i,R.map(n,function(t){return{text:t[0],onclick:Tr(e,t[1]),textStyle:function(){return e.formatter.getCssText(t[1])}}}))}),t.addButton("formatselect",jr(t,i))},Yr=function(t,e){var n,i;if("string"==typeof e)i=e.split(" ");else if(R.isArray(e))return Ht.flatten(R.map(e,function(e){return Yr(t,e)}));return n=R.grep(i,function(e){return"|"===e||e in t.menuItems}),R.map(n,function(e){return"|"===e?{text:"-"}:t.menuItems[e]})},Xr=function(t){return t&&"-"===t.text},Jr=function(t){var e=Ht.filter(t,function(t,e,n){return!Xr(t)||!Xr(n[e-1])});return Ht.filter(e,function(t,e,n){return!Xr(t)||e>0&&e<n.length-1})},Gr=function(t){var e,n,i,r,o=t.settings.insert_button_items;return Jr(o?Yr(t,o):(e=t,n="insert",i=[{text:"-"}],r=R.grep(e.menuItems,function(t){return t.context===n}),R.each(r,function(t){"before"===t.separator&&i.push({text:"|"}),t.prependToContext?i.unshift(t):i.push(t),"after"===t.separator&&i.push({text:"|"})}),i))},Kr=function(t){var e;(e=t).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(Gr(e)),this.menu.renderNew()}})},Zr=function(t){var e,n,i;e=t,R.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{active:!1,tooltip:t,onPostRender:Wr(e,n),onclick:Tr(e,n)})}),n=t,R.each({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},function(t,e){n.addButton(e,{tooltip:t[0],cmd:t[1]})}),i=t,R.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(t,e){i.addButton(e,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:Wr(i,e)})})},Qr=function(t){var e;Zr(t),e=t,R.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:Tr(e,"code")})},to=function(t,e){return function(){var n=this,i=function(){var n="redo"===e?"hasRedo":"hasUndo";return!!t.undoManager&&t.undoManager[n]()};n.disabled(!i()),t.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){n.disabled(t.readonly||!i())})}},eo=function(t){var e,n;(e=t).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:to(e,"undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:to(e,"redo"),cmd:"redo"}),(n=t).addButton("undo",{tooltip:"Undo",onPostRender:to(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:to(n,"redo"),cmd:"redo"})},no=function(t){var e,n;(e=t).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=e,function(){var t=this;n.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},io={setup:function(t){var e;t.rtl&&(ue.rtl=!0),t.on("mousedown",function(){Ve.hideAll()}),(e=t).settings.ui_container&&(a.container=Mr(ti.fromDom(document.body),e.settings.ui_container).fold(lt.constant(null),function(t){return t.dom()})),ve.tooltips=!a.iOS,ue.translate=function(t){return T.translate(t)},$r(t),Pr(t),Qr(t),eo(t),Fr(t),Lr(t),qr(t),no(t),Kr(t)}},ro=Pn.extend({recalc:function(t){var e,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,y,b,x,w,_,R,C,k,E,H,S,M=[],T=[];e=t.settings,r=t.items().filter(":visible"),o=t.layoutRect(),i=e.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),y=e.spacingH||e.spacing||0,b=e.spacingV||e.spacing||0,x=e.alignH||e.align,w=e.alignV||e.align,p=t.paddingBox,S="reverseRows"in e?e.reverseRows:t.isRtl(),x&&"string"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)M.push(0);for(f=0;f<n;f++)T.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,k=u.minH,M[d]=C>M[d]?C:M[d],T[f]=k>T[f]?k:T[f];for(E=o.innerW-p.left-p.right,_=0,d=0;d<i;d++)_+=M[d]+(d>0?y:0),E-=(d>0?y:0)+M[d];for(H=o.innerH-p.top-p.bottom,R=0,f=0;f<n;f++)R+=T[f]+(f>0?b:0),H-=(f>0?b:0)+T[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){var W;o.autoResize&&((l=t.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),W="start"===e.packV?0:H>0?Math.floor(H/n):0;var P=0,N=e.flexWidths;if(N)for(d=0;d<N.length;d++)P+=N[d];else P=i;var O=E/P;for(d=0;d<i;d++)M[d]+=N?N[d]*O:O;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=T[f]+W,d=0;d<i&&(c=r[S?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(M[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+y,c.recalc&&c.recalc();m+=a+b}}else if(l.w=l.minW,l.h=l.minH,t.layoutRect(l),this.recalc(t),null===t._lastRect){var D=t.parent();D&&(D._lastRect=null,D.recalc())}}}),oo=ve.extend({renderHtml:function(){var t=this;return t.classes.add("iframe"),t.canFocus=!1,'<iframe id="'+t._id+'" class="'+t.classes+'" tabindex="-1" src="'+(t.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(t){this.getEl().src=t},html:function(t,e){var n=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=t,e&&e()):u.setTimeout(function(){n.html(t)}),this}}),so=ve.extend({init:function(t){this._super(t),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(t){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(t)},help:function(t){this.state.set("help",t)},renderHtml:function(){var t=this,e=t.classPrefix;return'<div id="'+t._id+'" class="'+t.classes+'"><div id="'+t._id+'-body">'+t.encode(t.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+e+"ico "+e+'i-help"></i></button></div></div>'},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.getEl("body").firstChild.data=t.encode(e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t.state.on("change:help",function(e){t.classes.toggle("has-help",e.value),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),ao=ve.extend({init:function(t){var e=this;e._super(t),e.classes.add("widget").add("label"),e.canFocus=!1,t.multiline&&e.classes.add("autoscroll"),t.strong&&e.classes.add("strong")},initLayoutRect:function(){var t=this,e=t._super();return t.settings.multiline&&(Mt.getSize(t.getEl()).width>e.maxW&&(e.minW=e.maxW,t.classes.add("multiline")),t.getEl().style.width=e.minW+"px",e.startMinH=e.h=e.minH=Math.min(e.maxH,Mt.getSize(t.getEl()).height)),e},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeight=this.layoutRect().h+"px"),this._super()},severity:function(t){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(t)},renderHtml:function(){var t,e,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(e=n.settings.forName)&&(t=n.getRoot().find("#"+e)[0])&&(i=t._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class="'+n.classes+'">'+r+"</span>"},bindStates:function(){var t=this;return t.state.on("change:text",function(e){t.innerHtml(t.encode(e.value)),t.state.get("rendered")&&t.updateLayoutRect()}),t._super()}}),lo=Pe.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(t){this._super(t),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(t){t.classes.add("toolbar-item")}),this._super()}}),uo=lo.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),co=Nn.extend({init:function(t){var e=this;e._renderOpen=!0,e._super(t),t=e.settings,e.classes.add("menubtn"),t.fixedWidth&&e.classes.add("fixed-width"),e.aria("haspopup",!0),e.state.set("menu",t.menu||e.render())},showMenu:function(t){var e,n=this;if(n.menu&&n.menu.visible()&&!1!==t)return n.hideMenu();n.menu||(e=n.state.get("menu")||[],n.classes.add("opened"),e.length?e={type:"menu",animate:!0,items:e}:(e.type=e.type||"menu",e.animate=!0),e.renderTo?n.menu=e.parent(n).show().renderTo():n.menu=Ce.create(e).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(t){t.control.parent()===n.menu&&(t.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(t){t.control===n.menu&&(n.activeMenu("show"===t.type),n.classes.toggle("opened","show"===t.type)),n.aria("expanded","show"===t.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(t){t.hideMenu&&t.hideMenu()}),this.menu.hide())},activeMenu:function(t){this.classes.toggle("active",t)},renderHtml:function(){var t,e=this,n=e._id,i=e.classPrefix,r=e.settings.icon,o=e.state.get("text"),s="";return(t=e.settings.image)?(r="none","string"!=typeof t&&(t=window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",o&&(e.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+e.encode(o)+"</span>"),r=e.settings.icon?i+"ico "+i+"i-"+r:"",e.aria("role",e.parent()instanceof uo?"menuitem":"button"),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+t+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRender:function(){var t=this;return t.on("click",function(e){e.control===t&&function(t,e){for(;t;){if(e===t)return!0;t=t.parentNode}return!1}(e.target,t.getEl())&&(t.focus(),t.showMenu(!e.aria),e.aria&&t.menu.items().filter(":visible")[0].focus())}),t.on("mouseenter",function(e){var n,i=e.control,r=t.parent();i&&r&&i instanceof co&&i.parent()===r&&(r.items().filter("MenuButton").each(function(t){t.hideMenu&&t!==i&&(t.menu&&t.menu.visible()&&(n=!0),t.hideMenu())}),n&&(i.focus(),i.showMenu()))}),t._super()},bindStates:function(){var t=this;return t.state.on("change:menu",function(){t.menu&&t.menu.remove(),t.menu=null}),t._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});function fo(t,e){var n,i,r=this,o=ue.classPrefix;r.show=function(s,a){function l(){n&&(Tt(t).append('<div class="'+o+"throbber"+(e?" "+o+"throbber-inline":"")+'"></div>'),a&&a())}return r.hide(),n=!0,s?i=u.setTimeout(l,s):l(),r},r.hide=function(){var e=t.lastChild;return u.clearTimeout(i),e&&-1!==e.className.indexOf("throbber")&&e.parentNode.removeChild(e),n=!1,r}}var ho=Ve.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(t){if(t.autohide=!0,t.constrainToViewport=!0,"function"==typeof t.items&&(t.itemsFactory=t.items,t.items=[]),t.itemDefaults)for(var e=t.items,n=e.length;n--;)e[n]=R.extend({},t.itemDefaults,e[n]);this._super(t),this.classes.add("menu"),t.animate&&11!==a.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var t,e=this;function n(){e.throbber&&(e.throbber.hide(),e.throbber=null)}e.settings.itemsFactory&&(e.throbber||(e.throbber=new fo(e.getEl("body"),!0),0===e.items().length?(e.throbber.show(),e.fire("loading")):e.throbber.show(100,function(){e.items().remove(),e.fire("loading")}),e.on("hide close",n)),e.requestTime=t=(new Date).getTime(),e.settings.itemsFactory(function(i){0!==i.length?e.requestTime===t&&(e.getEl().style.width="",e.getEl("body").style.width="",n(),e.items().remove(),e.getEl("body").innerHTML="",e.add(i),e.renderNew(),e.fire("loaded")):e.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var t=this;return t.items().each(function(e){var n=e.settings;if(n.icon||n.image||n.selectable)return t._hasIcons=!0,!1}),t.settings.itemsFactory&&t.on("postrender",function(){t.settings.itemsFactory&&t.load()}),t.on("show hide",function(e){e.control===t&&("show"===e.type?u.setTimeout(function(){t.classes.add("in")},0):t.classes.remove("in"))}),t._super()}}),mo=co.extend({init:function(t){var e,n,i,r,o=this;o._super(t),t=o.settings,o._values=e=t.values,e&&("undefined"!=typeof t.value&&function s(e){for(var r=0;r<e.length;r++){if(n=e[r].selected||t.value===e[r].value)return i=i||e[r].text,o.state.set("value",e[r].value),!0;if(e[r].menu&&s(e[r].menu))return!0}}(e),!n&&e.length>0&&(i=e[0].text,o.state.set("value",e[0].value)),o.state.set("menu",e)),o.state.set("text",t.text||i),o.classes.add("listbox"),o.on("select",function(e){var n=e.control;r&&(e.lastControl=r),t.multiple?n.active(!n.active()):o.value(e.control.value()),r=n})},bindStates:function(){var t=this;return t.on("show",function(e){var n,i;n=e.control,i=t.value(),n instanceof ho&&n.items().each(function(t){t.hasMenus()||t.active(t.value()===i)})}),t.state.on("change:value",function(e){var n=function i(t,e){var n;if(t)for(var r=0;r<t.length;r++){if(t[r].value===e)return t[r];if(t[r].menu&&(n=i(t[r].menu,e)))return n}}(t.state.get("menu"),e.value);n?t.text(n.text):t.text(t.settings.text)}),t._super()}}),go=ve.extend({Defaults:{border:0,role:"menuitem"},init:function(t){var e,n=this;n._super(t),t=n.settings,n.classes.add("menu-item"),t.menu&&n.classes.add("menu-item-expand"),t.preview&&n.classes.add("menu-item-preview"),"-"!==(e=n.state.get("text"))&&"|"!==e||(n.classes.add("menu-item-sep"),n.aria("role","separator"),n.state.set("text","-")),t.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.add("menu-item-checkbox"),t.icon="selected"),t.preview||t.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(t){t.preventDefault()}),t.menu&&!t.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var t,e=this,n=e.settings,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){(t=e.menu)?t.show():((t=n.menu).length?t={type:"menu",items:t}:t.type=t.type||"menu",i.settings.itemDefaults&&(t.itemDefaults=i.settings.itemDefaults),(t=e.menu=Ce.create(t).parent(e).renderTo()).reflow(),t.on("cancel",function(n){n.stopPropagation(),e.focus(),t.hide()}),t.on("show hide",function(t){t.control.items&&t.control.items().each(function(t){t.active(t.settings.selected)})}).fire("show"),t.on("hide",function(n){n.control===t&&e.classes.remove("selected")}),t.submenu=!0),t._parentMenu=i,t.classes.add("menu-sub");var r=t.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);t.moveRel(e.getEl(),r),t.rel=r,r="menu-sub-"+r,t.classes.remove(t._lastRel).add(r),t._lastRel=r,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var t=this;return t.menu&&(t.menu.items().each(function(t){t.hideMenu&&t.hideMenu()}),t.menu.hide(),t.aria("expanded",!1)),t},renderHtml:function(){var t,e=this,n=e._id,i=e.settings,r=e.classPrefix,o=e.state.get("text"),s=e.settings.icon,l="",u=i.shortcut,c=e.encode(i.url);function d(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f(t){var e=i.match||"";return e?t.replace(new RegExp(d(e),"gi"),function(t){return"!mce~match["+t+"]mce~match!"}):t}function h(t){return t.replace(new RegExp(d("!mce~match["),"g"),"<b>").replace(new RegExp(d("]mce~match!"),"g"),"</b>")}return s&&e.parent().classes.add("menu-has-icons"),i.image&&(l=" style=\"background-image: url('"+i.image+"')\""),u&&(u=function(t){var e,n,i={};for(i=a.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},t=t.split("+"),e=0;e<t.length;e++)(n=i[t[e].toLowerCase()])&&(t[e]=n);return t.join("+")}(u)),s=r+"ico "+r+"i-"+(e.settings.icon||"none"),t="-"!==o?'<i class="'+s+'"'+l+"></i>\xa0":"",o=h(e.encode(f(o))),c=h(e.encode(f(c))),'<div id="'+n+'" class="'+e.classes+'" tabindex="-1">'+t+("-"!==o?'<span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(u?'<div id="'+n+'-shortcut" class="'+r+'menu-shortcut">'+u+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(c?'<div class="'+r+'menu-item-link">'+c+"</div>":"")+"</div>"},postRender:function(){var t=this,e=t.settings,n=e.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=t.getEl("text");i&&(i.setAttribute("style",n),t._textStyle=n)}return t.on("mouseenter click",function(n){n.control===t&&(e.menu||"click"!==n.type?(t.showMenu(),n.aria&&t.menu.focus(!0)):(t.fire("select"),u.requestAnimationFrame(function(){t.parent().hideAll()})))}),t._super(),t},hover:function(){return this.parent().items().each(function(t){t.classes.remove("selected")}),this.classes.toggle("selected",!0),this},active:function(t){return function(t,e){var n=t._textStyle;if(n){var i=t.getEl("text");i.setAttribute("style",n),e&&(i.style.color="",i.style.backgroundColor="")}}(this,t),void 0!==t&&this.aria("checked",t),this._super(t)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),po=An.extend({Defaults:{classes:"radio",role:"radio"}}),vo=ve.extend({renderHtml:function(){var t=this,e=t.classPrefix;return t.classes.add("resizehandle"),"both"===t.settings.direction&&t.classes.add("resizehandle-both"),t.canFocus=!1,'<div id="'+t._id+'" class="'+t.classes+'"><i class="'+e+"ico "+e+'i-resize"></i></div>'},postRender:function(){var t=this;t._super(),t.resizeDragHelper=new Re(this._id,{start:function(){t.fire("ResizeStart")},drag:function(e){"both"!==t.settings.direction&&(e.deltaX=0),t.fire("Resize",e)},stop:function(){t.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function yo(t){var e="";if(t)for(var n=0;n<t.length;n++)e+='<option value="'+t[n]+'">'+t[n]+"</option>";return e}var bo=ve.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(t){var e=this;e._super(t),e.settings.size&&(e.size=e.settings.size),e.settings.options&&(e._options=e.settings.options),e.on("keydown",function(t){var n;13===t.keyCode&&(t.preventDefault(),e.parents().reverse().each(function(t){if(t.toJSON)return n=t,!1}),e.fire("submit",{data:n.toJSON()}))})},options:function(t){return arguments.length?(this.state.set("options",t),this):this.state.get("options")},renderHtml:function(){var t,e=this,n="";return t=yo(e._options),e.size&&(n=' size = "'+e.size+'"'),'<select id="'+e._id+'" class="'+e.classes+'"'+n+">"+t+"</select>"},bindStates:function(){var t=this;return t.state.on("change:options",function(e){t.getEl().innerHTML=yo(e.value)}),t._super()}});function xo(t,e,n){return t<e&&(t=e),t>n&&(t=n),t}function wo(t,e,n){t.setAttribute("aria-"+e,n)}function _o(t,e){var n,i,r,o,s;"v"===t.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=t.getEl("handle"),o=((t.layoutRect()[n]||100)-Mt.getSize(s)[i])*((e-t._minValue)/(t._maxValue-t._minValue))+"px",s.style[r]=o,s.style.height=t.layoutRect().h+"px",wo(s,"valuenow",e),wo(s,"valuetext",""+t.settings.previewFilter(e)),wo(s,"valuemin",t._minValue),wo(s,"valuemax",t._maxValue)}var Ro=ve.extend({init:function(t){var e=this;t.previewFilter||(t.previewFilter=function(t){return Math.round(100*t)/100}),e._super(t),e.classes.add("slider"),"v"===t.orientation&&e.classes.add("vertical"),e._minValue=gi.isNumber(t.minValue)?t.minValue:0,e._maxValue=gi.isNumber(t.maxValue)?t.maxValue:100,e._initValue=e.state.get("value")},renderHtml:function(){var t=this._id,e=this.classPrefix;return'<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-handle" class="'+e+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var t,e,n,i,r,o,s,a,l,u,c,d,f,h,m=this;t=m._minValue,e=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top",r="height",o="h"):(n="screenX",i="left",r="width",o="w"),m._super(),function(t,e){function n(n){var i,r,o;i=xo(i=(((i=m.value())+(o=t))/(e-o)+.05*n)*(e-(r=t))-r,t,e),m.value(i),m.fire("dragstart",{value:i}),m.fire("drag",{value:i}),m.fire("dragend",{value:i})}m.on("keydown",function(t){switch(t.keyCode){case 37:case 38:n(-1);break;case 39:case 40:n(1)}})}(t,e),s=t,a=e,l=m.getEl("handle"),m._dragHelper=new Re(m._id,{handle:m._id+"-handle",start:function(t){u=t[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-Mt.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(t){var e=t[n]-u;f=xo(c+e,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(""+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.fire("dragend",{value:h})}})},repaint:function(){this._super(),_o(this,this.value())},bindStates:function(){var t=this;return t.state.on("change:value",function(e){_o(t,e.value)}),t._super()}}),Co=ve.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),ko=co.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var t,e,n=this.getEl(),i=this.layoutRect();return this._super(),t=n.firstChild,e=n.lastChild,Tt(t).css({width:i.w-Mt.getSize(e).width,height:i.h-2}),Tt(e).css({height:i.h-2}),this},activeMenu:function(t){Tt(this.getEl().lastChild).toggleClass(this.classPrefix+"active",t)},renderHtml:function(){var t,e,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(t=a.image)?(o="none","string"!=typeof t&&(t=window.getSelection?t[0]:t[1]),t=" style=\"background-image: url('"+t+"')\""):t="",o=a.icon?r+"ico "+r+"i-"+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),e="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+e+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+t+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1">'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var t=this.settings.onclick;return this.on("click",function(e){var n=e.target;if(e.control===this)for(;n;){if(e.aria&&"down"!==e.aria.key||"BUTTON"===n.nodeName&&-1===n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete this.settings.onclick,this._super()}}),Eo=Sr.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),Ho=Oe.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(t){var e;this.activeTabId&&(e=this.getEl(this.activeTabId),Tt(e).removeClass(this.classPrefix+"active"),e.setAttribute("aria-selected","false")),this.activeTabId="t"+t,(e=this.getEl("t"+t)).setAttribute("aria-selected","true"),Tt(e).addClass(this.classPrefix+"active"),this.items()[t].show().fire("showtab"),this.reflow(),this.items().each(function(e,n){t!==n&&e.hide()})},renderHtml:function(){var t=this,e=t._layout,n="",i=t.classPrefix;return t.preRender(),e.preRender(t),t.items().each(function(e,r){var o=t._id+"-t"+r;e.aria("role","tabpanel"),e.aria("labelledby",o),n+='<div id="'+o+'" class="'+i+'tab" unselectable="on" role="tab" aria-controls="'+e._id+'" aria-selected="false" tabIndex="-1">'+t.encode(e.settings.title)+"</div>"}),'<div id="'+t._id+'" class="'+t.classes+'" hidefocus="1" tabindex="-1"><div id="'+t._id+'-head" class="'+i+'tabs" role="tablist">'+n+'</div><div id="'+t._id+'-body" class="'+t.bodyClasses+'">'+e.renderHtml(t)+"</div></div>"},postRender:function(){var t=this;t._super(),t.settings.activeTab=t.settings.activeTab||0,t.activateTab(t.settings.activeTab),this.on("click",function(e){var n=e.target.parentNode;if(n&&n.id===t._id+"-head")for(var i=n.childNodes.length;i--;)n.childNodes[i]===e.target&&t.activateTab(i)})},initLayoutRect:function(){var t,e,n,i=this;e=(e=Mt.getSize(i.getEl("head")).width)<0?0:e,n=0,i.items().each(function(t){e=Math.max(e,t.layoutRect().minW),n=Math.max(n,t.layoutRect().minH)}),i.items().each(function(t){t.settings.x=0,t.settings.y=0,t.settings.w=e,t.settings.h=n,t.layoutRect({x:0,y:0,w:e,h:n})});var r=Mt.getSize(i.getEl("head")).height;return i.settings.minWidth=e,i.settings.minHeight=n+r,(t=i._super()).deltaH+=r,t.innerH=t.h-t.deltaH,t}}),So=ve.extend({init:function(t){var e=this;e._super(t),e.classes.add("textbox"),t.multiline?e.classes.add("multiline"):(e.on("keydown",function(t){var n;13===t.keyCode&&(t.preventDefault(),e.parents().reverse().each(function(t){if(t.toJSON)return n=t,!1}),e.fire("submit",{data:n.toJSON()}))}),e.on("keyup",function(t){e.state.set("value",t.target.value)}))},repaint:function(){var t,e,n,i,r,o=this,s=0;t=o.getEl().style,e=o._layoutRect,r=o._lastRepaintRect||{};var a=document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(t.lineHeight=e.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),e.x!==r.x&&(t.left=e.x+"px",r.x=e.x),e.y!==r.y&&(t.top=e.y+"px",r.y=e.y),e.w!==r.w&&(t.width=e.w-i+"px",r.w=e.w),e.h!==r.h&&(t.height=e.h-s+"px",r.h=e.h),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var t,e,n=this,i=n.settings;return t={id:n._id,hidefocus:"1"},R.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(e){t[e]=i[e]}),n.disabled()&&(t.disabled="disabled"),i.subtype&&(t.type=i.subtype),(e=Mt.create(i.multiline?"textarea":"input",t)).value=n.state.get("value"),e.className=n.classes,e.outerHTML},value:function(t){return arguments.length?(this.state.set("value",t),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var t=this;t.getEl().value=t.state.get("value"),t._super(),t.$el.on("change",function(e){t.state.set("value",e.target.value),t.fire("change",e)})},bindStates:function(){var t=this;return t.state.on("change:value",function(e){t.getEl().value!==e.value&&(t.getEl().value=e.value)}),t.state.on("change:disabled",function(e){t.getEl().disabled=e.value}),t._super()},remove:function(){this.$el.off(),this._super()}}),Mo=function(){return{Selector:Ut,Collection:$t,ReflowQueue:te,Control:ue,Factory:Ce,KeyboardNavigation:Ee,Container:Pe,DragHelper:Re,Scrollable:Ne,Panel:Oe,Movable:ge,Resizable:De,FloatPanel:Ve,Window:Xe,MessageBox:Ge,Tooltip:pe,Widget:ve,Progress:ye,Notification:xe,Layout:Wn,AbsoluteLayout:Pn,Button:Nn,ButtonGroup:Dn,Checkbox:An,ComboBox:Ln,ColorBox:zn,PanelButton:In,ColorButton:Vn,ColorPicker:qn,Path:$n,ElementPath:Yn,FormItem:Xn,Form:Jn,FieldSet:Gn,FilePicker:kr,FitLayout:Er,FlexLayout:Hr,FlowLayout:Sr,FormatControls:io,GridLayout:ro,Iframe:oo,InfoBox:so,Label:ao,Toolbar:lo,MenuBar:uo,MenuButton:co,MenuItem:go,Throbber:fo,Menu:ho,ListBox:mo,Radio:po,ResizeHandle:vo,SelectBox:bo,Slider:Ro,Spacer:Co,SplitButton:ko,StackLayout:Eo,TabPanel:Ho,TextBox:So,DropZone:jn,BrowseButton:On}},To=function(t){t.ui?R.each(Mo(),function(e,n){t.ui[n]=e}):t.ui=Mo()};R.each(Mo(),function(t,e){Ce.add(e,t)}),To(window.tinymce?window.tinymce:{}),s.add("inlite",function(t){var e=Tn();return io.setup(t),Rn(t,e),Ke(t,e)})}(); diff --git a/public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js.gz b/public/assets/tinymce/themes/inlite/theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..2437433ed46a62cfb10613d732be6adadc560dd3 GIT binary patch literal 43605 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/themes/inlite/theme.js b/public/assets/tinymce/themes/inlite/theme.js index 81e886239..29d4395ad 120000 --- a/public/assets/tinymce/themes/inlite/theme.js +++ b/public/assets/tinymce/themes/inlite/theme.js @@ -1 +1 @@ -theme-b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c.js \ No newline at end of file +theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js \ No newline at end of file diff --git a/public/assets/tinymce/themes/inlite/theme.js.gz b/public/assets/tinymce/themes/inlite/theme.js.gz index 7c329c6b9..f37ae8a74 120000 --- a/public/assets/tinymce/themes/inlite/theme.js.gz +++ b/public/assets/tinymce/themes/inlite/theme.js.gz @@ -1 +1 @@ -theme-b229a7d133e9ac600d6bbaba2ed9004366d44ff493691100a9ff91e584e5fa9c.js.gz \ No newline at end of file +theme-85200b51c33da2da254c460f2980006c5f34559fa064b0091e5bc2a4da771110.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js b/public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js new file mode 100644 index 000000000..15dfa7b0b --- /dev/null +++ b/public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js @@ -0,0 +1 @@ +!function(){"use strict";var n,e,t,r,o,i,u,a=function(n){return function(){return n}},c={noop:function(){},noarg:function(n){return function(){return n()}},compose:function(n,e){return function(){return n(e.apply(null,arguments))}},constant:a,identity:function(n){return n},tripleEquals:function(n,e){return n===e},curry:function(n){for(var e=new Array(arguments.length-1),t=1;t<arguments.length;t++)e[t-1]=arguments[t];return function(){for(var t=new Array(arguments.length),r=0;r<t.length;r++)t[r]=arguments[r];var o=e.concat(t);return n.apply(null,o)}},not:function(n){return function(){return!n.apply(null,arguments)}},die:function(n){return function(){throw new Error(n)}},apply:function(n){return n()},call:function(n){n()},never:a(!1),always:a(!0)},s={contextmenu:c.constant("contextmenu"),touchstart:c.constant("touchstart"),touchmove:c.constant("touchmove"),touchend:c.constant("touchend"),gesturestart:c.constant("gesturestart"),mousedown:c.constant("mousedown"),mousemove:c.constant("mousemove"),mouseout:c.constant("mouseout"),mouseup:c.constant("mouseup"),mouseover:c.constant("mouseover"),focusin:c.constant("focusin"),keydown:c.constant("keydown"),input:c.constant("input"),change:c.constant("change"),focus:c.constant("focus"),click:c.constant("click"),transitionend:c.constant("transitionend"),selectstart:c.constant("selectstart")},f=function(n){var e,t=!1;return function(){return t||(t=!0,e=n.apply(null,arguments)),e}},l=function(n,e){var t=function(n,e){for(var t=0;t<n.length;t++){var r=n[t];if(r.test(e))return r}return undefined}(n,e);if(!t)return{major:0,minor:0};var r=function(n){return Number(e.replace(t,"$"+n))};return m(r(1),r(2))},d=function(){return m(0,0)},m=function(n,e){return{major:n,minor:e}},p={nu:m,detect:function(n,e){var t=String(e).toLowerCase();return 0===n.length?d():l(n,t)},unknown:d},g="Edge",h="Chrome",v="Opera",y="Firefox",b="Safari",w=function(n,e){return function(){return e===n}},S=function(n){var e=n.current;return{current:e,version:n.version,isEdge:w(g,e),isChrome:w(h,e),isIE:w("IE",e),isOpera:w(v,e),isFirefox:w(y,e),isSafari:w(b,e)}},x={unknown:function(){return S({current:undefined,version:p.unknown()})},nu:S,edge:c.constant(g),chrome:c.constant(h),ie:c.constant("IE"),opera:c.constant(v),firefox:c.constant(y),safari:c.constant(b)},O="Windows",T="Android",k="Linux",C="Solaris",E="FreeBSD",D=function(n,e){return function(){return e===n}},A=function(n){var e=n.current;return{current:e,version:n.version,isWindows:D(O,e),isiOS:D("iOS",e),isAndroid:D(T,e),isOSX:D("OSX",e),isLinux:D(k,e),isSolaris:D(C,e),isFreeBSD:D(E,e)}},M={unknown:function(){return A({current:undefined,version:p.unknown()})},nu:A,windows:c.constant(O),ios:c.constant("iOS"),android:c.constant(T),linux:c.constant(k),osx:c.constant("OSX"),solaris:c.constant(C),freebsd:c.constant(E)},R=c.never,F=c.always,B=function(){return I},I=(r={fold:function(n,e){return n()},is:R,isSome:R,isNone:F,getOr:t=function(n){return n},getOrThunk:e=function(n){return n()},getOrDie:function(n){throw new Error(n||"error: getOrDie called on none.")},or:t,orThunk:e,map:B,ap:B,each:function(){},bind:B,flatten:B,exists:R,forall:F,filter:B,equals:n=function(n){return n.isNone()},equals_:n,toArray:function(){return[]},toString:c.constant("none()")},Object.freeze&&Object.freeze(r),r),H=function(n){var e=function(){return n},t=function(){return o},r=function(e){return e(n)},o={fold:function(e,t){return t(n)},is:function(e){return n===e},isSome:F,isNone:R,getOr:e,getOrThunk:e,getOrDie:e,or:t,orThunk:t,map:function(e){return H(e(n))},ap:function(e){return e.fold(B,function(e){return H(e(n))})},each:function(e){e(n)},bind:r,flatten:e,exists:r,forall:r,filter:function(e){return e(n)?o:I},equals:function(e){return e.is(n)},equals_:function(e,t){return e.fold(R,function(e){return t(n,e)})},toArray:function(){return[n]},toString:function(){return"some("+n+")"}};return o},N={some:H,none:B,from:function(n){return null===n||n===undefined?I:H(n)}},V=(o=Array.prototype.indexOf)===undefined?function(n,e){return K(n,e)}:function(n,e){return o.call(n,e)},j=function(n,e){return V(n,e)>-1},P=function(n,e){for(var t=n.length,r=new Array(t),o=0;o<t;o++){var i=n[o];r[o]=e(i,o,n)}return r},L=function(n,e){for(var t=0,r=n.length;t<r;t++)e(n[t],t,n)},W=function(n,e){for(var t=n.length-1;t>=0;t--)e(n[t],t,n)},U=function(n,e){for(var t=[],r=0,o=n.length;r<o;r++){var i=n[r];e(i,r,n)&&t.push(i)}return t},z=function(n,e){for(var t=0,r=n.length;t<r;t++)if(e(n[t],t,n))return N.some(t);return N.none()},K=function(n,e){for(var t=0,r=n.length;t<r;++t)if(n[t]===e)return t;return-1},G=Array.prototype.push,$=function(n){for(var e=[],t=0,r=n.length;t<r;++t){if(!Array.prototype.isPrototypeOf(n[t]))throw new Error("Arr.flatten item "+t+" was not an array, input: "+n);G.apply(e,n[t])}return e},q=function(n,e){for(var t=0,r=n.length;t<r;++t)if(!0!==e(n[t],t,n))return!1;return!0},_=Array.prototype.slice,X={map:P,each:L,eachr:W,partition:function(n,e){for(var t=[],r=[],o=0,i=n.length;o<i;o++){var u=n[o];(e(u,o,n)?t:r).push(u)}return{pass:t,fail:r}},filter:U,groupBy:function(n,e){if(0===n.length)return[];for(var t=e(n[0]),r=[],o=[],i=0,u=n.length;i<u;i++){var a=n[i],c=e(a);c!==t&&(r.push(o),o=[]),t=c,o.push(a)}return 0!==o.length&&r.push(o),r},indexOf:function(n,e){var t=V(n,e);return-1===t?N.none():N.some(t)},foldr:function(n,e,t){return W(n,function(n){t=e(t,n)}),t},foldl:function(n,e,t){return L(n,function(n){t=e(t,n)}),t},find:function(n,e){for(var t=0,r=n.length;t<r;t++){var o=n[t];if(e(o,t,n))return N.some(o)}return N.none()},findIndex:z,flatten:$,bind:function(n,e){var t=P(n,e);return $(t)},forall:q,exists:function(n,e){return z(n,e).isSome()},contains:j,equal:function(n,e){return n.length===e.length&&q(n,function(n,t){return n===e[t]})},reverse:function(n){var e=_.call(n,0);return e.reverse(),e},chunk:function(n,e){for(var t=[],r=0;r<n.length;r+=e){var o=n.slice(r,r+e);t.push(o)}return t},difference:function(n,e){return U(n,function(n){return!j(e,n)})},mapToObject:function(n,e){for(var t={},r=0,o=n.length;r<o;r++){var i=n[r];t[String(i)]=e(i,r)}return t},pure:function(n){return[n]},sort:function(n,e){var t=_.call(n,0);return t.sort(e),t},range:function(n,e){for(var t=[],r=0;r<n;r++)t.push(e(r));return t},head:function(n){return 0===n.length?N.none():N.some(n[0])},last:function(n){return 0===n.length?N.none():N.some(n[n.length-1])}},Y=function(n,e){var t=String(e).toLowerCase();return X.find(n,function(n){return n.search(t)})},J=function(n,e){return Y(n,e).map(function(n){var t=p.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Q=function(n,e){return Y(n,e).map(function(n){var t=p.detect(n.versionRegexes,e);return{current:n.name,version:t}})},Z=function(n,e){return n.replace(/\${([^{}]*)}/g,function(n,t){var r,o=e[t];return"string"==(r=typeof o)||"number"===r?o:n})},nn=function(n,e){return-1!==n.indexOf(e)},en=function(n){return n.replace(/^\s+|\s+$/g,"")},tn=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,rn=function(n){return function(e){return nn(e,n)}},on=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(n){return nn(n,"edge/")&&nn(n,"chrome")&&nn(n,"safari")&&nn(n,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,tn],search:function(n){return nn(n,"chrome")&&!nn(n,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(n){return nn(n,"msie")||nn(n,"trident")}},{name:"Opera",versionRegexes:[tn,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:rn("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:rn("firefox")},{name:"Safari",versionRegexes:[tn,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(n){return(nn(n,"safari")||nn(n,"mobile/"))&&nn(n,"applewebkit")}}],un=[{name:"Windows",search:rn("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(n){return nn(n,"iphone")||nn(n,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:rn("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:rn("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:rn("linux"),versionRegexes:[]},{name:"Solaris",search:rn("sunos"),versionRegexes:[]},{name:"FreeBSD",search:rn("freebsd"),versionRegexes:[]}],an={browsers:c.constant(on),oses:c.constant(un)},cn=function(n){var e,t,r,o,i,u,a,s,f,l,d,m=an.browsers(),p=an.oses(),g=J(m,n).fold(x.unknown,x.nu),h=Q(p,n).fold(M.unknown,M.nu);return{browser:g,os:h,deviceType:(t=g,r=n,o=(e=h).isiOS()&&!0===/ipad/i.test(r),i=e.isiOS()&&!o,u=e.isAndroid()&&3===e.version.major,a=e.isAndroid()&&4===e.version.major,s=o||u||a&&!0===/mobile/i.test(r),f=e.isiOS()||e.isAndroid(),l=f&&!s,d=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(r),{isiPad:c.constant(o),isiPhone:c.constant(i),isTablet:c.constant(s),isPhone:c.constant(l),isTouch:c.constant(f),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:c.constant(d)})}},sn={detect:f(function(){var n=navigator.userAgent;return cn(n)})},fn={tap:c.constant("alloy.tap")},ln={focus:c.constant("alloy.focus"),postBlur:c.constant("alloy.blur.post"),receive:c.constant("alloy.receive"),execute:c.constant("alloy.execute"),focusItem:c.constant("alloy.focus.item"),tap:fn.tap,tapOrClick:sn.detect().deviceType.isTouch()?fn.tap:s.click,longpress:c.constant("alloy.longpress"),sandboxClose:c.constant("alloy.sandbox.close"),systemInit:c.constant("alloy.system.init"),windowScroll:c.constant("alloy.system.scroll"),attachedToDom:c.constant("alloy.system.attached"),detachedFromDom:c.constant("alloy.system.detached"),changeTab:c.constant("alloy.change.tab"),dismissTab:c.constant("alloy.dismiss.tab")},dn=function(n){return function(e){return function(n){if(null===n)return"null";var e=typeof n;return"object"===e&&Array.prototype.isPrototypeOf(n)?"array":"object"===e&&String.prototype.isPrototypeOf(n)?"string":e}(e)===n}},mn={isString:dn("string"),isObject:dn("object"),isArray:dn("array"),isNull:dn("null"),isBoolean:dn("boolean"),isUndefined:dn("undefined"),isFunction:dn("function"),isNumber:dn("number")},pn=function(n){return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(0===e.length)throw new Error("Can't merge zero objects");for(var r={},o=0;o<e.length;o++){var i=e[o];for(var u in i)i.hasOwnProperty(u)&&(r[u]=n(r[u],i[u]))}return r}},gn=pn(function(n,e){return mn.isObject(n)&&mn.isObject(e)?gn(n,e):e}),hn=pn(function(n,e){return e}),vn={deepMerge:gn,merge:hn},yn=(i=Object.keys)===undefined?function(n){var e=[];for(var t in n)n.hasOwnProperty(t)&&e.push(t);return e}:i,bn=function(n,e){for(var t=yn(n),r=0,o=t.length;r<o;r++){var i=t[r];e(n[i],i,n)}},wn=function(n,e){var t={};return bn(n,function(r,o){var i=e(r,o,n);t[i.k]=i.v}),t},Sn=function(n,e){var t=[];return bn(n,function(n,r){t.push(e(n,r))}),t},xn=function(n){return Sn(n,function(n){return n})},On={bifilter:function(n,e){var t={},r={};return bn(n,function(n,o){(e(n,o)?t:r)[o]=n}),{t:t,f:r}},each:bn,map:function(n,e){return wn(n,function(n,t,r){return{k:t,v:e(n,t,r)}})},mapToArray:Sn,tupleMap:wn,find:function(n,e){for(var t=yn(n),r=0,o=t.length;r<o;r++){var i=t[r],u=n[i];if(e(u,i,n))return N.some(u)}return N.none()},keys:yn,values:xn,size:function(n){return xn(n).length}},Tn=function(n,e){kn(n,n.element(),e,{})},kn=function(n,e,t,r){var o=vn.deepMerge({target:e},r);n.getSystem().triggerEvent(t,e,On.map(o,c.constant))},Cn=Tn,En=function(n,e,t){kn(n,n.element(),e,t)},Dn=function(n){Tn(n,ln.execute())},An=function(n,e,t){kn(n,e,t,{})},Mn=function(n,e,t,r){n.getSystem().triggerEvent(t,e,r.event())},Rn=function(n,e){n.getSystem().triggerFocus(e,n.element())},Fn=function(n){return n.slice(0).sort()},Bn={sort:Fn,reqMessage:function(n,e){throw new Error("All required keys ("+Fn(n).join(", ")+") were not specified. Specified keys were: "+Fn(e).join(", ")+".")},unsuppMessage:function(n){throw new Error("Unsupported keys for object: "+Fn(n).join(", "))},validateStrArr:function(n,e){if(!mn.isArray(e))throw new Error("The "+n+" fields must be an array. Was: "+e+".");X.each(e,function(e){if(!mn.isString(e))throw new Error("The value "+e+" in the "+n+" fields was not a string.")})},invalidTypeMessage:function(n,e){throw new Error("All values need to be of type: "+e+". Keys ("+Fn(n).join(", ")+") were not.")},checkDupes:function(n){var e=Fn(n);X.find(e,function(n,t){return t<e.length-1&&n===e[t+1]}).each(function(n){throw new Error("The field: "+n+" occurs more than once in the combined fields: ["+e.join(", ")+"].")})}},In={immutable:function(){var n=arguments;return function(){for(var e=new Array(arguments.length),t=0;t<e.length;t++)e[t]=arguments[t];if(n.length!==e.length)throw new Error('Wrong number of arguments to struct. Expected "['+n.length+']", got '+e.length+" arguments");var r={};return X.each(n,function(n,t){r[n]=c.constant(e[t])}),r}},immutableBag:function(n,e){var t=n.concat(e);if(0===t.length)throw new Error("You must specify at least one required or optional field.");return Bn.validateStrArr("required",n),Bn.validateStrArr("optional",e),Bn.checkDupes(t),function(r){var o=On.keys(r);X.forall(n,function(n){return X.contains(o,n)})||Bn.reqMessage(n,o);var i=X.filter(o,function(n){return!X.contains(t,n)});i.length>0&&Bn.unsuppMessage(i);var u={};return X.each(n,function(n){u[n]=c.constant(r[n])}),X.each(e,function(n){u[n]=c.constant(Object.prototype.hasOwnProperty.call(r,n)?N.some(r[n]):N.none())}),u}}},Hn=function(n,e){for(var t=[],r=function(n){return t.push(n),e(n)},o=e(n);(o=o.bind(r)).isSome(););return t},Nn="undefined"!=typeof window?window:Function("return this;")(),Vn=function(n,e){for(var t=e!==undefined&&null!==e?e:Nn,r=0;r<n.length&&t!==undefined&&null!==t;++r)t=t[n[r]];return t},jn=function(n,e){var t=n.split(".");return Vn(t,e)},Pn={getOrDie:function(n,e){var t=jn(n,e);if(t===undefined||null===t)throw n+" not available on this browser";return t}},Ln=function(n){if(null===n||n===undefined)throw new Error("Node cannot be null or undefined");return{dom:c.constant(n)}},Wn={fromHtml:function(n,e){var t=(e||document).createElement("div");if(t.innerHTML=n,!t.hasChildNodes()||t.childNodes.length>1)throw console.error("HTML does not have a single root node",n),"HTML must have a single root node";return Ln(t.childNodes[0])},fromTag:function(n,e){var t=(e||document).createElement(n);return Ln(t)},fromText:function(n,e){var t=(e||document).createTextNode(n);return Ln(t)},fromDom:Ln,fromPoint:function(n,e,t){return N.from(n.dom().elementFromPoint(e,t)).map(Ln)}},Un=8,zn=9,Kn=1,Gn=3,$n=Kn,qn=zn,_n=function(n){return n.nodeType!==$n&&n.nodeType!==qn||0===n.childElementCount},Xn={all:function(n,e){var t=e===undefined?document:e.dom();return _n(t)?[]:X.map(t.querySelectorAll(n),Wn.fromDom)},is:function(n,e){var t=n.dom();if(t.nodeType!==$n)return!1;if(t.matches!==undefined)return t.matches(e);if(t.msMatchesSelector!==undefined)return t.msMatchesSelector(e);if(t.webkitMatchesSelector!==undefined)return t.webkitMatchesSelector(e);if(t.mozMatchesSelector!==undefined)return t.mozMatchesSelector(e);throw new Error("Browser lacks native selectors")},one:function(n,e){var t=e===undefined?document:e.dom();return _n(t)?N.none():N.from(t.querySelector(n)).map(Wn.fromDom)}},Yn=function(n,e){return n.dom()===e.dom()},Jn=(sn.detect().browser.isIE(),Yn),Qn=function(n){return Wn.fromDom(n.dom().ownerDocument)},Zn=function(n){var e=n.dom();return N.from(e.parentNode).map(Wn.fromDom)},ne=function(n){var e=n.dom();return N.from(e.previousSibling).map(Wn.fromDom)},ee=function(n){var e=n.dom();return N.from(e.nextSibling).map(Wn.fromDom)},te=function(n){var e=n.dom();return X.map(e.childNodes,Wn.fromDom)},re=function(n,e){var t=n.dom().childNodes;return N.from(t[e]).map(Wn.fromDom)},oe=In.immutable("element","offset"),ie={owner:Qn,defaultView:function(n){var e=n.dom().ownerDocument.defaultView;return Wn.fromDom(e)},documentElement:function(n){var e=Qn(n);return Wn.fromDom(e.dom().documentElement)},parent:Zn,findIndex:function(n){return Zn(n).bind(function(e){var t=te(e);return X.findIndex(t,function(e){return Jn(n,e)})})},parents:function(n,e){for(var t=mn.isFunction(e)?e:c.constant(!1),r=n.dom(),o=[];null!==r.parentNode&&r.parentNode!==undefined;){var i=r.parentNode,u=Wn.fromDom(i);if(o.push(u),!0===t(u))break;r=i}return o},siblings:function(n){return Zn(n).map(te).map(function(e){return X.filter(e,function(e){return!Jn(n,e)})}).getOr([])},prevSibling:ne,offsetParent:function(n){var e=n.dom();return N.from(e.offsetParent).map(Wn.fromDom)},prevSiblings:function(n){return X.reverse(Hn(n,ne))},nextSibling:ee,nextSiblings:function(n){return Hn(n,ee)},children:te,child:re,firstChild:function(n){return re(n,0)},lastChild:function(n){return re(n,n.dom().childNodes.length-1)},childNodesCount:function(n){return n.dom().childNodes.length},hasChildNodes:function(n){return n.dom().hasChildNodes()},leaf:function(n,e){var t=te(n);return t.length>0&&e<t.length?oe(t[e],0):oe(n,e)}},ue=function(n,e){ie.parent(n).each(function(t){t.dom().insertBefore(e.dom(),n.dom())})},ae=function(n,e){n.dom().appendChild(e.dom())},ce={before:ue,after:function(n,e){ie.nextSibling(n).fold(function(){ie.parent(n).each(function(n){ae(n,e)})},function(n){ue(n,e)})},prepend:function(n,e){ie.firstChild(n).fold(function(){ae(n,e)},function(t){n.dom().insertBefore(e.dom(),t.dom())})},append:ae,appendAt:function(n,e,t){ie.child(n,t).fold(function(){ae(n,e)},function(n){ue(n,e)})},wrap:function(n,e){ue(n,e),ae(e,n)}},se={before:function(n,e){X.each(e,function(e){ce.before(n,e)})},after:function(n,e){X.each(e,function(t,r){var o=0===r?n:e[r-1];ce.after(o,t)})},prepend:function(n,e){X.each(e.slice().reverse(),function(e){ce.prepend(n,e)})},append:function(n,e){X.each(e,function(e){ce.append(n,e)})}},fe=function(n){var e=n.dom();null!==e.parentNode&&e.parentNode.removeChild(e)},le={empty:function(n){n.dom().textContent="",X.each(ie.children(n),function(n){fe(n)})},remove:fe,unwrap:function(n){var e=ie.children(n);e.length>0&&se.before(n,e),fe(n)}},de=function(n){return n.dom().nodeName.toLowerCase()},me=function(n){return n.dom().nodeType},pe=function(n){return function(e){return me(e)===n}},ge=pe(Kn),he=pe(Gn),ve=pe(zn),ye={name:de,type:me,value:function(n){return n.dom().nodeValue},isElement:ge,isText:he,isDocument:ve,isComment:function(n){return me(n)===Un||"#comment"===de(n)}},be=f(function(){return we(Wn.fromDom(document))}),we=function(n){var e=n.dom().body;if(null===e||e===undefined)throw"Body is not available yet";return Wn.fromDom(e)},Se={body:be,getBody:we,inBody:function(n){var e=ye.isText(n)?n.dom().parentNode:n.dom();return e!==undefined&&null!==e&&e.ownerDocument.body.contains(e)}},xe=function(n){Cn(n,ln.detachedFromDom());var e=n.components();X.each(e,xe)},Oe=function(n){var e=n.components();X.each(e,Oe),Cn(n,ln.attachedToDom())},Te=function(n,e,t){n.getSystem().addToWorld(e),t(n.element(),e.element()),Se.inBody(n.element())&&Oe(e),n.syncComponents()},ke=function(n){xe(n),le.remove(n.element()),n.getSystem().removeFromWorld(n)},Ce={attach:function(n,e){Te(n,e,ce.append)},attachWith:Te,detach:function(n){var e=ie.parent(n.element()).bind(function(e){return n.getSystem().getByDom(e).fold(N.none,N.some)});ke(n),e.each(function(n){n.syncComponents()})},detachChildren:function(n){var e=n.components();X.each(e,ke),le.empty(n.element()),n.syncComponents()},attachSystem:function(n,e){ce.append(n,e.element());var t=ie.children(e.element());X.each(t,function(n){e.getByDom(n).each(Oe)})},detachSystem:function(n){var e=ie.children(n.element());X.each(e,function(e){n.getByDom(e).each(xe)}),le.remove(n.element())}},Ee=function(n,e){var t=(e||document).createElement("div");return t.innerHTML=n,ie.children(Wn.fromDom(t))},De=function(n){return n.dom().innerHTML},Ae=De,Me=function(n,e){var t=ie.owner(n).dom(),r=Wn.fromDom(t.createDocumentFragment()),o=Ee(e,t);se.append(r,o),le.empty(n),ce.append(n,r)},Re=function(n){var e=Wn.fromTag("div"),t=Wn.fromDom(n.dom().cloneNode(!0));return ce.append(e,t),De(e)},Fe=function(n,e,t){if(!(mn.isString(t)||mn.isBoolean(t)||mn.isNumber(t)))throw console.error("Invalid call to Attr.set. Key ",e,":: Value ",t,":: Element ",n),new Error("Attribute value was not simple");n.setAttribute(e,t+"")},Be=function(n,e,t){Fe(n.dom(),e,t)},Ie=function(n,e){var t=n.dom().getAttribute(e);return null===t?undefined:t},He=function(n,e){var t=n.dom();return!(!t||!t.hasAttribute)&&t.hasAttribute(e)},Ne={clone:function(n){return X.foldl(n.dom().attributes,function(n,e){return n[e.name]=e.value,n},{})},set:Be,setAll:function(n,e){var t=n.dom();On.each(e,function(n,e){Fe(t,e,n)})},get:Ie,has:He,remove:function(n,e){n.dom().removeAttribute(e)},hasNone:function(n){var e=n.dom().attributes;return e===undefined||null===e||0===e.length},transfer:function(n,e,t){ye.isElement(n)&&ye.isElement(e)&&X.each(t,function(t){var r,o,i;o=e,He(r=n,i=t)&&!He(o,i)&&Be(o,i,Ie(r,i))})}},Ve=function(n,e){return Wn.fromDom(n.dom().cloneNode(e))},je=function(n){return Ve(n,!1)},Pe=function(n){var e=je(n);return Re(e)},Le={element:function(n){return Pe(n)}},We=function(n){return{is:function(e){return n===e},isValue:c.always,isError:c.never,getOr:c.constant(n),getOrThunk:c.constant(n),getOrDie:c.constant(n),or:function(e){return We(n)},orThunk:function(e){return We(n)},fold:function(e,t){return t(n)},map:function(e){return We(e(n))},each:function(e){e(n)},bind:function(e){return e(n)},exists:function(e){return e(n)},forall:function(e){return e(n)},toOption:function(){return N.some(n)}}},Ue=function(n){return{is:c.never,isValue:c.never,isError:c.always,getOr:c.identity,getOrThunk:function(n){return n()},getOrDie:function(){return c.die(n)()},or:function(n){return n},orThunk:function(n){return n()},fold:function(e,t){return e(n)},map:function(e){return Ue(n)},each:c.noop,bind:function(e){return Ue(n)},exists:c.never,forall:c.always,toOption:N.none}},ze={value:We,error:Ue},Ke=function(n){if(!mn.isArray(n))throw new Error("cases must be an array");if(0===n.length)throw new Error("there must be at least one case");var e=[],t={};return X.each(n,function(r,o){var i=On.keys(r);if(1!==i.length)throw new Error("one and only one name per case");var u=i[0],a=r[u];if(t[u]!==undefined)throw new Error("duplicate key detected:"+u);if("cata"===u)throw new Error("cannot have a case named cata (sorry)");if(!mn.isArray(a))throw new Error("case arguments must be an array");e.push(u),t[u]=function(){var t=arguments.length;if(t!==a.length)throw new Error("Wrong number of arguments to case "+u+". Expected "+a.length+" ("+a+"), got "+t);for(var r=new Array(t),i=0;i<r.length;i++)r[i]=arguments[i];return{fold:function(){if(arguments.length!==n.length)throw new Error("Wrong number of arguments to fold. Expected "+n.length+", got "+arguments.length);return arguments[o].apply(null,r)},match:function(n){var t=On.keys(n);if(e.length!==t.length)throw new Error("Wrong number of arguments to match. Expected: "+e.join(",")+"\nActual: "+t.join(","));if(!X.forall(e,function(n){return X.contains(t,n)}))throw new Error("Not all branches were specified when using match. Specified: "+t.join(", ")+"\nRequired: "+e.join(", "));return n[u].apply(null,r)},log:function(n){console.log(n,{constructors:e,constructor:u,params:r})}}}}),t},Ge=(Ke([{bothErrors:["error1","error2"]},{firstError:["error1","value2"]},{secondError:["value1","error2"]},{bothValues:["value1","value2"]}]),function(n){var e=[],t=[];return X.each(n,function(n){n.fold(function(n){e.push(n)},function(n){t.push(n)})}),{errors:e,values:t}}),$e=function(n){return c.compose(ze.error,X.flatten)(n)},qe=function(n,e){var t,r,o=Ge(n);return o.errors.length>0?$e(o.errors):(t=o.values,r=e,ze.value(vn.deepMerge.apply(undefined,[r].concat(t))))},_e=function(n){var e=Ge(n);return e.errors.length>0?$e(e.errors):ze.value(e.values)},Xe=function(n,e){var t={};return X.each(e,function(e){n[e]!==undefined&&n.hasOwnProperty(e)&&(t[e]=n[e])}),t},Ye=function(n,e){var t={};return On.each(n,function(n,r){X.contains(e,r)||(t[r]=n)}),t},Je=function(n,e){var t={};return X.each(n,function(n){var r=n[e];t[r]=n}),t},Qe=function(n){return function(e){return e.hasOwnProperty(n)?N.from(e[n]):N.none()}},Ze=Qe,nt=function(n,e){return function(t){return Qe(n)(t).getOr(e)}},et=function(n,e){return Qe(e)(n)},tt=function(n,e){return n.hasOwnProperty(e)&&n[e]!==undefined&&null!==n[e]},rt=function(n,e){var t={};return t[n]=e,t},ot=function(n){var e={};return X.each(n,function(n){e[n.key]=n.value}),e},it={narrow:function(n,e){return Xe(n,e)},exclude:function(n,e){return Ye(n,e)},readOpt:function(n){return Ze(n)},readOr:function(n,e){return nt(n,e)},readOptFrom:function(n,e){return et(n,e)},wrap:function(n,e){return rt(n,e)},wrapAll:function(n){return ot(n)},indexOnKey:function(n,e){return Je(n,e)},hasKey:function(n,e){return tt(n,e)},consolidate:function(n,e){return qe(n,e)}},ut=function(n){for(var e=[],t=function(n){e.push(n)},r=0;r<n.length;r++)n[r].each(t);return e},at=function(n,e){for(var t=0;t<n.length;t++){var r=e(n[t],t);if(r.isSome())return r}return N.none()},ct="unknown",st="__CHROME_INSPECTOR_CONNECTION_TO_ALLOY__",ft=[],lt=["alloy/data/Fields","alloy/debugging/Debugging"],dt={logEventCut:c.noop,logEventStopped:c.noop,logNoParent:c.noop,logEventNoHandlers:c.noop,logEventResponse:c.noop,write:c.noop},mt=function(){return window[st]!==undefined?window[st]:(window[st]={systems:{},lookup:function(n){var e=window[st].systems,t=On.keys(e);return at(t,function(t){return e[t].getByUid(n).toOption().map(function(n){return it.wrap(Le.element(n.element()),(e=function(n){var t=n.spec();return{"(original.spec)":t,"(dom.ref)":n.element().dom(),"(element)":Le.element(n.element()),"(initComponents)":X.map(t.components!==undefined?t.components:[],e),"(components)":X.map(n.components(),e),"(bound.events)":On.mapToArray(n.events(),function(n,e){return[e]}).join(", "),"(behaviours)":t.behaviours!==undefined?On.map(t.behaviours,function(e,t){return e===undefined?"--revoked--":{config:e.configAsRaw(),"original-config":e.initialConfig,state:n.readState(t)}}):"none"}})(n));var e})})}},window[st])},pt=function(n,e,t){},gt=(c.constant(dt),function(){var n=new Error;if(n.stack!==undefined){var e=n.stack.split("\n");return X.find(e,function(n){return n.indexOf("alloy")>0&&!X.exists(lt,function(e){return n.indexOf(e)>-1})}).getOr(ct)}return ct}),ht=function(n,e,t){var r,o="*"===ft||X.contains(ft,n)?(r=[],{logEventCut:function(n,e,t){r.push({outcome:"cut",target:e,purpose:t})},logEventStopped:function(n,e,t){r.push({outcome:"stopped",target:e,purpose:t})},logNoParent:function(n,e,t){r.push({outcome:"no-parent",target:e,purpose:t})},logEventNoHandlers:function(n,e){r.push({outcome:"no-handlers-left",target:e})},logEventResponse:function(n,e,t){r.push({outcome:"response",purpose:t,target:e})},write:function(){X.contains(["mousemove","mouseover","mouseout",ln.systemInit()],n)||console.log(n,{event:n,target:e.dom(),sequence:X.map(r,function(n){return X.contains(["cut","stopped","response"],n.outcome)?"{"+n.purpose+"} "+n.outcome+" at ("+Le.element(n.target)+")":n.outcome})})}}):dt,i=t(o);return o.write(),i},vt=(c.constant(!0),function(n,e){mt().systems[n]=e}),yt=function(n,e){return Jn(n.element(),e.event().target())},bt=Ke([{strict:[]},{defaultedThunk:["fallbackThunk"]},{asOption:[]},{asDefaultedOptionThunk:["fallbackThunk"]},{mergeWithThunk:["baseThunk"]}]),wt={strict:bt.strict,asOption:bt.asOption,defaulted:function(n){return bt.defaultedThunk(c.constant(n))},defaultedThunk:bt.defaultedThunk,asDefaultedOption:function(n){return bt.asDefaultedOptionThunk(c.constant(n))},asDefaultedOptionThunk:bt.asDefaultedOptionThunk,mergeWith:function(n){return bt.mergeWithThunk(c.constant(n))},mergeWithThunk:bt.mergeWithThunk},St={typeAdt:Ke([{setOf:["validator","valueType"]},{arrOf:["valueType"]},{objOf:["fields"]},{itemOf:["validator"]},{choiceOf:["key","branches"]},{thunk:["description"]},{func:["args","outputSchema"]}]),fieldAdt:Ke([{field:["name","presence","type"]},{state:["name"]}])},xt=function(){return Pn.getOrDie("JSON")},Ot=function(n,e,t){return xt().stringify(n,e,t)},Tt=function(n){return mn.isObject(n)&&On.keys(n).length>100?" removed due to size":Ot(n,null,2)},kt=function(n){var e=n.length>10?n.slice(0,10).concat([{path:[],getErrorInfo:function(){return"... (only showing first ten failures)"}}]):n;return X.map(e,function(n){return"Failed path: ("+n.path.join(" > ")+")\n"+n.getErrorInfo()})},Ct=function(n,e){return ze.error([{path:n,getErrorInfo:e}])},Et=function(n,e,t){return Ct(n,function(){return'Could not find valid *strict* value for "'+e+'" in '+Tt(t)})},Dt=function(n,e){return Ct(n,function(){return'Choice schema did not contain choice key: "'+e+'"'})},At=function(n,e,t){return Ct(n,function(){return'The chosen schema: "'+t+'" did not exist in branches: '+Tt(e)})},Mt=function(n,e){return Ct(n,function(){return"There are unsupported fields: ["+e.join(", ")+"] specified"})},Rt=function(n,e){return Ct(n,function(){return e})},Ft=Ke([{field:["key","okey","presence","prop"]},{state:["okey","instantiator"]}]),Bt=function(n,e,t){var r=et(n,e).fold(function(){return t(n)},c.identity);return ze.value(r)},It=function(n,e,t,r){return t.fold(function(t,o,i,u){var a=function(e){return u.extract(n.concat([t]),r,e).map(function(n){return rt(o,r(n))})},s=function(e){return e.fold(function(){var n=rt(o,r(N.none()));return ze.value(n)},function(e){return u.extract(n.concat([t]),r,e).map(function(n){return rt(o,r(N.some(n)))})})};return i.fold(function(){return(r=n,o=e,i=t,et(o,i).fold(function(){return Et(r,i,o)},ze.value)).bind(a);var r,o,i},function(n){return Bt(e,t,n).bind(a)},function(){return(n=e,r=t,ze.value(et(n,r))).bind(s);var n,r},function(n){return(r=e,o=t,i=n,u=et(r,o).map(function(n){return!0===n?i(r):n}),ze.value(u)).bind(s);var r,o,i,u},function(n){var r=n(e);return Bt(e,t,c.constant({})).map(function(n){return vn.deepMerge(r,n)}).bind(a)})},function(n,t){var o=t(e);return ze.value(rt(n,r(o)))})},Ht=function(n){return{extract:function(e,t,r){return n(r,t).fold(function(n){return Rt(e,n)},ze.value)},toString:function(){return"val"},toDsl:function(){return St.typeAdt.itemOf(n)}}},Nt=function(n){return{extract:function(e,t,r){return o=e,i=r,u=n,a=t,c=X.map(u,function(n){return It(o,i,n,a)}),qe(c,{});var o,i,u,a,c},toString:function(){return"obj{\n"+X.map(n,function(n){return n.fold(function(n,e,t,r){return n+" -> "+r.toString()},function(n,e){return"state("+n+")"})}).join("\n")+"}"},toDsl:function(){return St.typeAdt.objOf(X.map(n,function(n){return n.fold(function(n,e,t,r){return St.fieldAdt.field(n,t,r)},function(n,e){return St.fieldAdt.state(n)})}))}}},Vt=function(n){return{extract:function(e,t,r){var o=X.map(r,function(r,o){return n.extract(e.concat(["["+o+"]"]),t,r)});return _e(o)},toString:function(){return"array("+n.toString()+")"},toDsl:function(){return St.typeAdt.arrOf(n)}}},jt=Ht(ze.value),Pt=c.compose(Vt,Nt),Lt={anyValue:c.constant(jt),value:Ht,obj:Nt,objOnly:function(n){var e=Nt(n),t=X.foldr(n,function(n,e){return e.fold(function(e){return vn.deepMerge(n,it.wrap(e,!0))},c.constant(n))},{});return{extract:function(n,r,o){var i,u,a=mn.isBoolean(o)?[]:(i=o,u=On.keys(i),X.filter(u,function(n){return it.hasKey(i,n)})),c=X.filter(a,function(n){return!it.hasKey(t,n)});return 0===c.length?e.extract(n,r,o):Mt(n,c)},toString:e.toString,toDsl:e.toDsl}},arr:Vt,setOf:function(n,e){return{extract:function(t,r,o){var i,u,a=On.keys(o);return(i=t,u=a,Vt(Ht(n)).extract(i,c.identity,u)).bind(function(n){var i=X.map(n,function(n){return Ft.field(n,n,wt.strict(),e)});return Nt(i).extract(t,r,o)})},toString:function(){return"setOf("+e.toString()+")"},toDsl:function(){return St.typeAdt.setOf(n,e)}}},arrOfObj:Pt,state:Ft.state,field:Ft.field,output:function(n,e){return Ft.state(n,c.constant(e))},snapshot:function(n){return Ft.state(n,c.identity)},thunk:function(n,e){var t=f(function(){return e()});return{extract:function(n,e,r){return t().extract(n,e,r)},toString:function(){return t().toString()},toDsl:function(){return St.typeAdt.thunk(n)}}},func:function(n,e,t){return{extract:Ht(function(e,r){return mn.isFunction(e)?ze.value(function(){var o=Array.prototype.slice.call(arguments,0).slice(0,n.length),i=e.apply(null,o);return t(i,r)}):ze.error("Not a function")}).extract,toString:function(){return"function"},toDsl:function(){return St.typeAdt.func(n,e)}}}},Wt=function(n,e){return Lt.field(n,n,wt.strict(),e)},Ut=function(n){return Lt.field(n,n,wt.strict(),Lt.anyValue())},zt=Wt,Kt=function(n,e){return Lt.field(n,n,wt.strict(),Lt.obj(e))},Gt=function(n){return Lt.field(n,n,wt.strict(),Lt.value(function(n){return mn.isFunction(n)?ze.value(n):ze.error("Not a function")}))},$t=function(n,e){return Lt.field(n,n,wt.asOption(),Lt.value(function(t){return ze.error("The field: "+n+" is forbidden. "+e)}))},qt=function(n){return Lt.field(n,n,wt.asOption(),Lt.anyValue())},_t=function(n,e){return Lt.field(n,n,wt.asOption(),e)},Xt=function(n,e){return Lt.field(n,n,wt.asOption(),Lt.obj(e))},Yt=function(n,e){return Lt.field(n,n,wt.asOption(),Lt.objOnly(e))},Jt=function(n,e){return Lt.field(n,n,wt.defaulted(e),Lt.anyValue())},Qt=function(n,e,t){return Lt.field(n,n,wt.defaulted(e),t)},Zt=function(n,e,t){return Lt.field(n,n,wt.defaulted(e),Lt.obj(t))},nr=function(n,e,t,r){return Lt.field(n,e,t,r)},er=function(n,e){return Lt.state(n,e)},tr=function(n,e){return{extract:function(t,r,o){return it.readOptFrom(o,n).fold(function(){return Dt(t,n)},function(n){return i=t,u=r,a=o,c=e,s=n,it.readOptFrom(c,s).fold(function(){return At(i,c,s)},function(n){return Lt.obj(n).extract(i.concat(["branch: "+s]),u,a)});var i,u,a,c,s})},toString:function(){return"chooseOn("+n+"). Possible values: "+On.keys(e)},toDsl:function(){return St.typeAdt.choiceOf(n,e)}}},rr=Lt.value(ze.value),or=Lt.arr,ir=Lt.obj,ur=Lt.objOnly,ar=Lt.setOf,cr=function(n,e,t,r){return e.extract([n],t,r).fold(function(n){return ze.error({input:r,errors:n})},ze.value)},sr=function(n,e,t){return cr(n,e,c.constant,t)},fr=function(n,e,t){return cr(n,e,c.identity,t)},lr=function(n){return n.fold(function(n){throw new Error(dr(n))},c.identity)},dr=function(n){return"Errors: \n"+kt(n.errors)+"\n\nInput object: "+Tt(n.input)},mr={anyValue:c.constant(rr),arrOfObj:function(n){return Lt.arrOfObj(n)},arrOf:or,arrOfVal:function(){return Lt.arr(rr)},valueOf:function(n){return Lt.value(function(e){return n(e)})},setOf:ar,objOf:ir,objOfOnly:ur,asStruct:sr,asRaw:fr,asStructOrDie:function(n,e,t){return lr(sr(n,e,t))},asRawOrDie:function(n,e,t){return lr(fr(n,e,t))},getOrDie:lr,formatError:dr,choose:function(n,e){return tr(n,e)},thunkOf:function(n,e){return Lt.thunk(n,e)},funcOrDie:function(n,e){return Lt.func(n,e,function(n,t){return lr(cr("()",e,t,n))})}},pr=function(n){if(!it.hasKey(n,"can")&&!it.hasKey(n,"abort")&&!it.hasKey(n,"run"))throw new Error("EventHandler defined by: "+Ot(n,null,2)+" does not have can, abort, or run!");return mr.asRawOrDie("Extracting event.handler",mr.objOfOnly([Jt("can",c.constant(!0)),Jt("abort",c.constant(!1)),Jt("run",c.noop)]),n)},gr=function(n){return mn.isFunction(n)?{can:c.constant(!0),abort:c.constant(!1),run:n}:n},hr=function(n){var e,t,r,o,i=(e=n,t=function(n){return n.can},function(){var n=Array.prototype.slice.call(arguments,0);return X.foldl(e,function(e,r){return e&&t(r).apply(undefined,n)},!0)}),u=(r=n,o=function(n){return n.abort},function(){var n=Array.prototype.slice.call(arguments,0);return X.foldl(r,function(e,t){return e||o(t).apply(undefined,n)},!1)});return pr({can:i,abort:u,run:function(){var e=Array.prototype.slice.call(arguments,0);X.each(n,function(n){n.run.apply(undefined,e)})}})},vr=pr,yr=it.wrapAll,br=function(n,e){return{key:n,value:vr({run:e})}},wr=function(n){return function(e){return{key:n,value:vr({run:function(n,t){yt(n,t)&&e(n,t)}})}}},Sr=function(n,e){return br(n,function(t,r){t.getSystem().getByUid(e).each(function(e){Mn(e,e.element(),n,r)})})},xr={derive:yr,run:br,preventDefault:function(n){return{key:n,value:vr({run:function(n,e){e.event().prevent()}})}},runActionExtra:function(n,e,t){return{key:n,value:vr({run:function(n){e.apply(undefined,[n].concat(t))}})}},runOnAttached:wr(ln.attachedToDom()),runOnDetached:wr(ln.detachedFromDom()),runOnInit:wr(ln.systemInit()),runOnExecute:(u=ln.execute(),function(n){return br(u,n)}),redirectToUid:Sr,redirectToPart:function(n,e,t){var r=e.partUids()[t];return Sr(n,r)},runWithTarget:function(n,e){return br(n,function(n,t){n.getSystem().getByDom(t.event().target()).each(function(r){e(n,r,t)})})},abort:function(n,e){return{key:n,value:vr({abort:e})}},can:function(n,e){return{key:n,value:vr({can:e})}},cutter:function(n){return br(n,function(n,e){e.cut()})},stopper:function(n){return br(n,function(n,e){e.stop()})}},Or=(N.none,function(n,e,t){return n}),Tr=function(n,e){return n},kr=function(n,e){return n},Cr=In.immutableBag(["tag"],["classes","attributes","styles","value","innerHtml","domChildren","defChildren"]),Er=function(n){return{tag:n.tag(),classes:n.classes().getOr([]),attributes:n.attributes().getOr({}),styles:n.styles().getOr({}),value:n.value().getOr("<none>"),innerHtml:n.innerHtml().getOr("<none>"),defChildren:n.defChildren().getOr("<none>"),domChildren:n.domChildren().fold(function(){return"<none>"},function(n){return 0===n.length?"0 children, but still specified":String(n.length)})}},Dr={nu:Cr,defToStr:function(n){var e=Er(n);return Ot(e,null,2)},defToRaw:Er},Ar=In.immutableBag([],["classes","attributes","styles","value","innerHtml","defChildren","domChildren"]),Mr=function(n){return{classes:n.classes().getOr("<none>"),attributes:n.attributes().getOr("<none>"),styles:n.styles().getOr("<none>"),value:n.value().getOr("<none>"),innerHtml:n.innerHtml().getOr("<none>"),defChildren:n.defChildren().getOr("<none>"),domChildren:n.domChildren().fold(function(){return"<none>"},function(n){return 0===n.length?"0 children, but still specified":String(n.length)})}},Rr=function(n,e,t){return e.fold(function(){return t.fold(function(){return{}},function(e){return it.wrap(n,e)})},function(e){return t.fold(function(){return it.wrap(n,e)},function(e){return it.wrap(n,e)})})},Fr={nu:Ar,derive:function(n){var e={},t=On.keys(n);return X.each(t,function(t){n[t].each(function(n){e[t]=n})}),Ar(e)},merge:function(n,e){var t=vn.deepMerge({tag:n.tag(),classes:e.classes().getOr([]).concat(n.classes().getOr([])),attributes:vn.merge(n.attributes().getOr({}),e.attributes().getOr({})),styles:vn.merge(n.styles().getOr({}),e.styles().getOr({}))},e.innerHtml().or(n.innerHtml()).map(function(n){return it.wrap("innerHtml",n)}).getOr({}),Rr("domChildren",e.domChildren(),n.domChildren()),Rr("defChildren",e.defChildren(),n.defChildren()),e.value().or(n.value()).map(function(n){return it.wrap("value",n)}).getOr({}));return Dr.nu(t)},modToStr:function(n){var e=Mr(n);return Ot(e,null,2)},modToRaw:Mr},Br=function(n){return{key:n,value:undefined}},Ir=function(n,e,t,r,o,i,u){var a=function(n){return it.hasKey(n,t)?n[t]():N.none()},s=On.map(o,function(n,e){return r=t,Or(function(n){var e=arguments;return n.config({name:c.constant(r)}).fold(function(){throw new Error("We could not find any behaviour configuration for: "+r+". Using API: "+i)},function(t){var r=Array.prototype.slice.call(e,1);return o.apply(undefined,[n,t.config,t.state].concat(r))})},i=e,o=n);var r,o,i}),l=On.map(i,function(n,e){return Tr(n,e)}),d=vn.deepMerge(l,s,{revoke:c.curry(Br,t),config:function(e){var r=mr.asStructOrDie(t+"-config",n,e);return{key:t,value:{config:r,me:d,configAsRaw:f(function(){return mr.asRawOrDie(t+"-config",n,e)}),initialConfig:e,state:u}}},schema:function(){return e},exhibit:function(n,e){return a(n).bind(function(n){return it.readOptFrom(r,"exhibit").map(function(t){return t(e,n.config,n.state)})}).getOr(Fr.nu({}))},name:function(){return t},handlers:function(n){return a(n).bind(function(n){return it.readOptFrom(r,"events").map(function(e){return e(n.config,n.state)})}).getOr({})}});return d},Hr=function(n,e,t){return xr.runOnExecute(function(r){t(r,n,e)})},Nr=function(n,e,t){return xr.runOnInit(function(r,o){t(r,n,e)})},Vr=function(n,e,t,r,o,i){var u=mr.objOfOnly(n),a=Xt(e,[Yt("config",n)]);return Ir(u,a,e,t,r,o,i)},jr=function(n,e,t,r,o,i){var u=n,a=Xt(e,[_t("config",n)]);return Ir(u,a,e,t,r,o,i)},Pr=function(n,e){return Lr(n,e,{validate:mn.isFunction,label:"function"})},Lr=function(n,e,t){if(0===e.length)throw new Error("You must specify at least one required field.");return Bn.validateStrArr("required",e),Bn.checkDupes(e),function(r){var o=On.keys(r);X.forall(e,function(n){return X.contains(o,n)})||Bn.reqMessage(e,o),n(e,o);var i=X.filter(e,function(n){return!t.validate(r[n],n)});return i.length>0&&Bn.invalidTypeMessage(i,t.label),r}},Wr=c.noop,Ur={exactly:c.curry(Pr,function(n,e){var t=X.filter(e,function(e){return!X.contains(n,e)});t.length>0&&Bn.unsuppMessage(t)}),ensure:c.curry(Pr,Wr),ensureWith:c.curry(Lr,Wr)},zr=Ur.ensure(["readState"]),Kr={init:function(){return zr({readState:function(){return"No State required"}})}},Gr=mr.objOfOnly([Ut("fields"),Ut("name"),Jt("active",{}),Jt("apis",{}),Jt("extra",{}),Jt("state",Kr)]),$r=mr.objOfOnly([Ut("branchKey"),Ut("branches"),Ut("name"),Jt("active",{}),Jt("apis",{}),Jt("extra",{}),Jt("state",Kr)]),qr={derive:function(n){return it.wrapAll(n)},revoke:c.constant(undefined),noActive:c.constant({}),noApis:c.constant({}),noExtra:c.constant({}),noState:c.constant(Kr),create:function(n){var e=mr.asRawOrDie("Creating behaviour: "+n.name,Gr,n);return Vr(e.fields,e.name,e.active,e.apis,e.extra,e.state)},createModes:function(n){var e=mr.asRawOrDie("Creating behaviour: "+n.name,$r,n);return jr(mr.choose(e.branchKey,e.branches),e.name,e.active,e.apis,e.extra,e.state)}};function _r(n,e,t){var r=t||!1,o=function(){e(),r=!0},i=function(){n(),r=!1};return{on:o,off:i,toggle:function(){(r?i:o)()},isOn:function(){return r}}}var Xr=function(n,e){var t=Ne.get(n,e);return t===undefined||""===t?[]:t.split(" ")},Yr=Xr,Jr=function(n,e,t){var r=Xr(n,e).concat([t]);Ne.set(n,e,r.join(" "))},Qr=function(n,e,t){var r=X.filter(Xr(n,e),function(n){return n!==t});r.length>0?Ne.set(n,e,r.join(" ")):Ne.remove(n,e)},Zr=function(n){return Yr(n,"class")},no=function(n,e){return Jr(n,"class",e)},eo=function(n,e){return Qr(n,"class",e)},to=Zr,ro=no,oo=eo,io=function(n,e){X.contains(Zr(n),e)?eo(n,e):no(n,e)},uo=function(n){return n.dom().classList!==undefined},ao=function(n,e){return uo(n)&&n.dom().classList.contains(e)},co={add:function(n,e){uo(n)?n.dom().classList.add(e):ro(n,e)},remove:function(n,e){var t;uo(n)?n.dom().classList.remove(e):oo(n,e),0===(uo(t=n)?t.dom().classList:to(t)).length&&Ne.remove(t,"class")},toggle:function(n,e){return uo(n)?n.dom().classList.toggle(e):io(n,e)},toggler:function(n,e){var t=uo(n),r=n.dom().classList;return _r(function(){t?r.remove(e):oo(n,e)},function(){t?r.add(e):ro(n,e)},ao(n,e))},has:ao},so=function(n,e,t){co.remove(n,t),co.add(n,e)},fo={toAlpha:function(n,e,t){so(n.element(),e.alpha(),e.omega())},toOmega:function(n,e,t){so(n.element(),e.omega(),e.alpha())},isAlpha:function(n,e,t){return co.has(n.element(),e.alpha())},isOmega:function(n,e,t){return co.has(n.element(),e.omega())},clear:function(n,e,t){co.remove(n.element(),e.alpha()),co.remove(n.element(),e.omega())}},lo=[Ut("alpha"),Ut("omega")],mo=qr.create({fields:lo,name:"swapping",apis:fo}),po=function(n){var e=n,t=function(){return e};return{get:t,set:function(n){e=n},clone:function(){return po(t())}}};function go(n,e,t,r,o){return n(t,r)?N.some(t):mn.isFunction(o)&&o(t)?N.none():e(t,r,o)}var ho=function(n,e,t){for(var r=n.dom(),o=mn.isFunction(t)?t:c.constant(!1);r.parentNode;){r=r.parentNode;var i=Wn.fromDom(r);if(e(i))return N.some(i);if(o(i))break}return N.none()},vo=function(n,e){return X.find(n.dom().childNodes,c.compose(e,Wn.fromDom)).map(Wn.fromDom)},yo=function(n,e){var t=function(n){for(var r=0;r<n.childNodes.length;r++){if(e(Wn.fromDom(n.childNodes[r])))return N.some(Wn.fromDom(n.childNodes[r]));var o=t(n.childNodes[r]);if(o.isSome())return o}return N.none()};return t(n.dom())},bo={first:function(n){return yo(Se.body(),n)},ancestor:ho,closest:function(n,e,t){return go(function(n){return e(n)},ho,n,e,t)},sibling:function(n,e){var t=n.dom();return t.parentNode?vo(Wn.fromDom(t.parentNode),function(t){return!Jn(n,t)&&e(t)}):N.none()},child:vo,descendant:yo},wo=function(n){n.dom().focus()},So=function(n){var e=n!==undefined?n.dom():document;return N.from(e.activeElement).map(Wn.fromDom)},xo=function(n){var e=ie.owner(n).dom();return n.dom()===e.activeElement},Oo=wo,To=function(n){n.dom().blur()},ko=So,Co=function(n){return So(ie.owner(n)).filter(function(e){return n.dom().contains(e.dom())})},Eo=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),Do=tinymce.util.Tools.resolve("tinymce.ThemeManager"),Ao=function(n){var e=document.createElement("a");e.target="_blank",e.href=n.href,e.rel="noreferrer noopener";var t=document.createEvent("MouseEvents");t.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),document.body.appendChild(e),e.dispatchEvent(t),document.body.removeChild(e)},Mo=function(n){return!1===n.settings.skin},Ro={formatChanged:c.constant("formatChanged"),orientationChanged:c.constant("orientationChanged"),dropupDismissed:c.constant("dropupDismissed")},Fo={events:function(n){return xr.derive([xr.run(ln.receive(),function(e,t){var r,o,i=n.channels(),u=On.keys(i),a=(r=u,(o=t).universal()?r:X.filter(r,function(n){return X.contains(o.channels(),n)}));X.each(a,function(n){var r=i[n](),o=r.schema(),u=mr.asStructOrDie("channel["+n+"] data\nReceiver: "+Le.element(e.element()),o,t.data());r.onReceive()(e,u)})})])}},Bo=[Ut("menu"),Ut("selectedMenu")],Io=[Ut("item"),Ut("selectedItem")],Ho=mr.objOfOnly(Io.concat(Bo)),No=mr.objOfOnly(Io),Vo={menuFields:c.constant(Bo),itemFields:c.constant(Io),schema:c.constant(Ho),itemSchema:c.constant(No)},jo=Kt("initSize",[Ut("numColumns"),Ut("numRows")]),Po=function(n,e,t){var r=gt();return nr(e,e,t,mr.valueOf(function(t){return ze.value(function(){return pt(n,e,r),t.apply(undefined,arguments)})}))},Lo={initSize:c.constant(jo),itemMarkers:function(){return zt("markers",Vo.itemSchema())},menuMarkers:function(){return zt("markers",Vo.schema())},tieredMenuMarkers:function(){return Kt("markers",[Ut("backgroundMenu")].concat(Vo.menuFields()).concat(Vo.itemFields()))},markers:function(n){return Kt("markers",X.map(n,Ut))},onHandler:function(n){return Po("onHandler",n,wt.defaulted(c.noop))},onKeyboardHandler:function(n){return Po("onKeyboardHandler",n,wt.defaulted(N.none))},onStrictHandler:function(n){return Po("onHandler",n,wt.strict())},onStrictKeyboardHandler:function(n){return Po("onKeyboardHandler",n,wt.strict())},output:function(n,e){return er(n,c.constant(e))},snapshot:function(n){return er(n,c.identity)}},Wo=[zt("channels",mr.setOf(ze.value,mr.objOfOnly([Lo.onStrictHandler("onReceive"),Jt("schema",mr.anyValue())])))],Uo=qr.create({fields:Wo,name:"receiving",active:Fo}),zo=function(n,e){var t=$o(n,e),r=e.aria();r.update()(n,r,t)},Ko=function(n,e,t){co.add(n.element(),e.toggleClass()),zo(n,e)},Go=function(n,e,t){co.remove(n.element(),e.toggleClass()),zo(n,e)},$o=function(n,e){return co.has(n.element(),e.toggleClass())},qo={onLoad:function(n,e,t){(e.selected()?Ko:Go)(n,e,t)},toggle:function(n,e,t){co.toggle(n.element(),e.toggleClass()),zo(n,e)},isOn:$o,on:Ko,off:Go},_o={exhibit:function(n,e,t){return Fr.nu({})},events:function(n,e){var t=Hr(n,e,qo.toggle),r=Nr(n,e,qo.onLoad);return xr.derive(X.flatten([n.toggleOnExecute()?[t]:[],[r]]))}},Xo=function(n,e,t){Ne.set(n.element(),"aria-expanded",t)},Yo={button:["aria-pressed"],"input:checkbox":["aria-checked"]},Jo={button:["aria-pressed"],listbox:["aria-pressed","aria-expanded"],menuitemcheckbox:["aria-checked"]},Qo={updatePressed:function(n,e,t){Ne.set(n.element(),"aria-pressed",t),e.syncWithExpanded()&&Xo(n,e,t)},updateSelected:function(n,e,t){Ne.set(n.element(),"aria-selected",t)},updateChecked:function(n,e,t){Ne.set(n.element(),"aria-checked",t)},updateExpanded:Xo,updateAuto:function(n,e,t){var r=function(n){var e=n.element();if(Ne.has(e,"role")){var t=Ne.get(e,"role");return it.readOptFrom(Jo,t)}return N.none()}(n).orThunk(function(){return e=n.element(),t=ye.name(e),r="input"===t&&Ne.has(e,"type")?":"+Ne.get(e,"type"):"",it.readOptFrom(Yo,t+r);var e,t,r}).getOr([]);X.each(r,function(e){Ne.set(n.element(),e,t)})}},Zo=[Jt("selected",!1),Ut("toggleClass"),Jt("toggleOnExecute",!0),Qt("aria",{mode:"none"},mr.choose("mode",{pressed:[Jt("syncWithExpanded",!1),Lo.output("update",Qo.updatePressed)],checked:[Lo.output("update",Qo.updateChecked)],expanded:[Lo.output("update",Qo.updateExpanded)],selected:[Lo.output("update",Qo.updateSelected)],none:[Lo.output("update",c.noop)]}))],ni=qr.create({fields:Zo,name:"toggling",active:_o,apis:qo}),ei=function(n,e){return Uo.config({channels:it.wrap(Ro.formatChanged(),{onReceive:function(t,r){r.command===n&&e(t,r.state)}})})},ti=function(n){return Uo.config({channels:it.wrap(Ro.orientationChanged(),{onReceive:n})})},ri=function(n,e){return{key:n,value:{onReceive:e}}},oi="tinymce-mobile",ii={resolve:function(n){return oi+"-"+n},prefix:c.constant(oi)},ui={focus:function(n,e){e.ignore()||(Oo(n.element()),e.onFocus()(n))},blur:function(n,e){e.ignore()||To(n.element())},isFocused:function(n){return xo(n.element())}},ai={exhibit:function(n,e){return e.ignore()?Fr.nu({}):Fr.nu({attributes:{tabindex:"-1"}})},events:function(n){return xr.derive([xr.run(ln.focus(),function(e,t){ui.focus(e,n),t.stop()})])}},ci=[Lo.onHandler("onFocus"),Jt("ignore",!1)],si=qr.create({fields:ci,name:"focusing",active:ai,apis:ui}),fi={BACKSPACE:c.constant([8]),TAB:c.constant([9]),ENTER:c.constant([13]),SHIFT:c.constant([16]),CTRL:c.constant([17]),ALT:c.constant([18]),CAPSLOCK:c.constant([20]),ESCAPE:c.constant([27]),SPACE:c.constant([32]),PAGEUP:c.constant([33]),PAGEDOWN:c.constant([34]),END:c.constant([35]),HOME:c.constant([36]),LEFT:c.constant([37]),UP:c.constant([38]),RIGHT:c.constant([39]),DOWN:c.constant([40]),INSERT:c.constant([45]),DEL:c.constant([46]),META:c.constant([91,93,224]),F10:c.constant([121])},li=function(n,e,t,r){var o=n+e;return o>r?t:o<t?r:o},di=function(n,e,t){return n<=e?e:n>=t?t:n},mi=function(n,e,t){return X.filter(ie.parents(n,t),e)},pi=function(n,e){return X.filter(ie.siblings(n),e)},gi=function(n){return Xn.all(n)},hi=function(n,e,t){return mi(n,function(n){return Xn.is(n,e)},t)},vi=function(n,e){return pi(n,function(n){return Xn.is(n,e)})},yi=function(n,e){return Xn.all(e,n)},bi=function(n,e,t){return bo.ancestor(n,function(n){return Xn.is(n,e)},t)},wi=function(n){return Xn.one(n)},Si=bi,xi=function(n,e){return Xn.one(e,n)},Oi=function(n,e,t){return go(Xn.is,bi,n,e,t)},Ti=function(n,e,t){var r=yi(n.element(),"."+e.highlightClass());X.each(r,function(t){co.remove(t,e.highlightClass()),n.getSystem().getByDom(t).each(function(t){e.onDehighlight()(n,t)})})},ki=function(n,e,t,r){var o=Ci(n,e,t,r);Ti(n,e),co.add(r.element(),e.highlightClass()),o||e.onHighlight()(n,r)},Ci=function(n,e,t,r){return co.has(r.element(),e.highlightClass())},Ei=function(n,e,t,r){var o=yi(n.element(),"."+e.itemClass());return N.from(o[r]).fold(function(){return ze.error("No element found with index "+r)},n.getSystem().getByDom)},Di=function(n,e,t){return xi(n.element(),"."+e.itemClass()).bind(n.getSystem().getByDom)},Ai=function(n,e,t){var r=yi(n.element(),"."+e.itemClass());return(r.length>0?N.some(r[r.length-1]):N.none()).bind(n.getSystem().getByDom)},Mi=function(n,e,t,r){var o=yi(n.element(),"."+e.itemClass());return X.findIndex(o,function(n){return co.has(n,e.highlightClass())}).bind(function(e){var t=li(e,r,0,o.length-1);return n.getSystem().getByDom(o[t])})},Ri={dehighlightAll:Ti,dehighlight:function(n,e,t,r){var o=Ci(n,e,t,r);co.remove(r.element(),e.highlightClass()),o&&e.onDehighlight()(n,r)},highlight:ki,highlightFirst:function(n,e,t){Di(n,e,t).each(function(r){ki(n,e,t,r)})},highlightLast:function(n,e,t){Ai(n,e,t).each(function(r){ki(n,e,t,r)})},highlightAt:function(n,e,t,r){Ei(n,e,t,r).fold(function(n){throw new Error(n)},function(r){ki(n,e,t,r)})},highlightBy:function(n,e,t,r){var o=yi(n.element(),"."+e.itemClass()),i=ut(X.map(o,function(e){return n.getSystem().getByDom(e).toOption()}));X.find(i,r).each(function(r){ki(n,e,t,r)})},isHighlighted:Ci,getHighlighted:function(n,e,t){return xi(n.element(),"."+e.highlightClass()).bind(n.getSystem().getByDom)},getFirst:Di,getLast:Ai,getPrevious:function(n,e,t){return Mi(n,e,0,-1)},getNext:function(n,e,t){return Mi(n,e,0,1)}},Fi=[Ut("highlightClass"),Ut("itemClass"),Lo.onHandler("onHighlight"),Lo.onHandler("onDehighlight")],Bi=qr.create({fields:Fi,name:"highlighting",apis:Ri}),Ii=function(){return{get:function(n){return Co(n.element())},set:function(n,e){n.getSystem().triggerFocus(e,n.element())}}},Hi=function(){return{get:function(n){return Bi.getHighlighted(n).map(function(n){return n.element()})},set:function(n,e){n.getSystem().getByDom(e).fold(c.noop,function(e){Bi.highlight(n,e)})}}},Ni=function(n){return!0===n.raw().shiftKey},Vi=function(n){return!0===n.raw().ctrlKey},ji={inSet:function(n){return function(e){return X.contains(n,e.raw().which)}},and:function(n){return function(e){return X.forall(n,function(n){return n(e)})}},is:function(n){return function(e){return e.raw().which===n}},isShift:Ni,isNotShift:c.not(Ni),isControl:Vi,isNotControl:c.not(Vi)},Pi=function(n,e){return{matches:n,classification:e}},Li=function(n,e){return X.find(n,function(n){return n.matches(e)}).map(function(n){return n.classification})},Wi=function(n,e,t,r,o,i){var u=function(n,e,r,o){var i=t(n,e,r,o);return Li(i,e.event()).bind(function(t){return t(n,e,r,o)})},a={schema:function(){return n.concat([Jt("focusManager",Ii()),Lo.output("handler",a),Lo.output("state",e)])},processKey:u,toEvents:function(n,e){var t=r(n,e),o=xr.derive(i.map(function(t){return xr.run(ln.focus(),function(r,o){t(r,n,e,o),o.stop()})}).toArray().concat([xr.run(s.keydown(),function(t,r){u(t,r,n,e).each(function(n){r.stop()})})]));return vn.deepMerge(t,o)},toApis:o};return a},Ui={cyclePrev:function(n,e,t){var r=X.reverse(n.slice(0,e)),o=X.reverse(n.slice(e+1));return X.find(r.concat(o),t)},cycleNext:function(n,e,t){var r=n.slice(0,e),o=n.slice(e+1);return X.find(o.concat(r),t)},tryPrev:function(n,e,t){var r=X.reverse(n.slice(0,e));return X.find(r,t)},tryNext:function(n,e,t){var r=n.slice(e+1);return X.find(r,t)}},zi={isSupported:function(n){return n.style!==undefined}},Ki=function(n,e,t){if(!mn.isString(t))throw console.error("Invalid call to CSS.set. Property ",e,":: Value ",t,":: Element ",n),new Error("CSS value must be a string: "+t);zi.isSupported(n)&&n.style.setProperty(e,t)},Gi=function(n,e){zi.isSupported(n)&&n.style.removeProperty(e)},$i=function(n,e,t){var r=n.dom();Ki(r,e,t)},qi=function(n,e){return zi.isSupported(n)?n.style.getPropertyValue(e):""},_i=function(n,e){var t=n.dom(),r=qi(t,e);return N.from(r).filter(function(n){return n.length>0})},Xi={copy:function(n,e){var t=n.dom(),r=e.dom();zi.isSupported(t)&&zi.isSupported(r)&&(r.style.cssText=t.style.cssText)},set:$i,preserve:function(n,e){var t=Ne.get(n,"style"),r=e(n);return(t===undefined?Ne.remove:Ne.set)(n,"style",t),r},setAll:function(n,e){var t=n.dom();On.each(e,function(n,e){Ki(t,e,n)})},setOptions:function(n,e){var t=n.dom();On.each(e,function(n,e){n.fold(function(){Gi(t,e)},function(n){Ki(t,e,n)})})},remove:function(n,e){var t=n.dom();Gi(t,e),Ne.has(n,"style")&&""===en(Ne.get(n,"style"))&&Ne.remove(n,"style")},get:function(n,e){var t=n.dom(),r=window.getComputedStyle(t).getPropertyValue(e),o=""!==r||Se.inBody(n)?r:qi(t,e);return null===o?undefined:o},getRaw:_i,getAllRaw:function(n){var e={},t=n.dom();if(zi.isSupported(t))for(var r=0;r<t.style.length;r++){var o=t.style.item(r);e[o]=t.style[o]}return e},isValidValue:function(n,e,t){var r=Wn.fromTag(n);return $i(r,e,t),_i(r,e).isSome()},reflow:function(n){return n.dom().offsetWidth},transfer:function(n,e,t){ye.isElement(n)&&ye.isElement(e)&&X.each(t,function(t){var r,o;r=e,_i(n,o=t).each(function(n){_i(r,o).isNone()&&$i(r,o,n)})})}};function Yi(n,e){var t=function(t){var r=e(t);if(r<=0||null===r){var o=Xi.get(t,n);return parseFloat(o)||0}return r},r=function(n,e){return X.foldl(e,function(e,t){var r=Xi.get(n,t),o=r===undefined?0:parseInt(r,10);return isNaN(o)?e:e+o},0)};return{set:function(e,t){if(!mn.isNumber(t)&&!t.match(/^[0-9]+$/))throw n+".set accepts only positive integer values. Value was "+t;var r=e.dom();zi.isSupported(r)&&(r.style[n]=t+"px")},get:t,getOuter:t,aggregate:r,max:function(n,e,t){var o=r(n,t);return e>o?e-o:0}}}var Ji=Yi("height",function(n){return Se.inBody(n)?n.dom().getBoundingClientRect().height:n.dom().offsetHeight}),Qi=function(n){return Ji.get(n)},Zi=function(n){var e=[qt("onEscape"),qt("onEnter"),Jt("selector",'[data-alloy-tabstop="true"]'),Jt("firstTabstop",0),Jt("useTabstopAt",c.constant(!0)),qt("visibilitySelector")].concat([n]),t=function(n,e){var t=n.visibilitySelector().bind(function(n){return Oi(e,n)}).getOr(e);return Qi(t)>0},r=function(n,e,r,o,i){return i(e,r,function(n){return t(e=o,r=n)&&e.useTabstopAt()(r);var e,r}).fold(function(){return o.cyclic()?N.some(!0):N.none()},function(e){return o.focusManager().set(n,e),N.some(!0)})},o=function(n,e,t,o){var i,u,a=yi(n.element(),t.selector());return(i=n,u=t,u.focusManager().get(i).bind(function(n){return Oi(n,u.selector())})).bind(function(e){return X.findIndex(a,c.curry(Jn,e)).bind(function(e){return r(n,a,e,t,o)})})},i=c.constant([Pi(ji.and([ji.isShift,ji.inSet(fi.TAB())]),function(n,e,t,r){var i=t.cyclic()?Ui.cyclePrev:Ui.tryPrev;return o(n,0,t,i)}),Pi(ji.inSet(fi.TAB()),function(n,e,t,r){var i=t.cyclic()?Ui.cycleNext:Ui.tryNext;return o(n,0,t,i)}),Pi(ji.inSet(fi.ESCAPE()),function(n,e,t,r){return t.onEscape().bind(function(t){return t(n,e)})}),Pi(ji.and([ji.isNotShift,ji.inSet(fi.ENTER())]),function(n,e,t,r){return t.onEnter().bind(function(t){return t(n,e)})})]),u=c.constant({}),a=c.constant({});return Wi(e,Kr.init,i,u,a,N.some(function(n,e,r){var o,i,u,a;(o=n,i=e,u=yi(o.element(),i.selector()),a=X.filter(u,function(n){return t(i,n)}),N.from(a[i.firstTabstop()])).each(function(t){e.focusManager().set(n,t)})}))},nu=Zi(er("cyclic",c.constant(!1))),eu=Zi(er("cyclic",c.constant(!0))),tu=function(n){return"input"===ye.name(n)&&"radio"!==Ne.get(n,"type")||"textarea"===ye.name(n)},ru=function(n,e,t){return tu(t)&&ji.inSet(fi.SPACE())(e.event())?N.none():(An(n,t,ln.execute()),N.some(!0))},ou=[Jt("execute",ru),Jt("useSpace",!1),Jt("useEnter",!0),Jt("useControlEnter",!1),Jt("useDown",!1)],iu=function(n,e,t,r){return t.execute()(n,e,n.element())},uu=c.constant({}),au=c.constant({}),cu=Wi(ou,Kr.init,function(n,e,t,r){var o=t.useSpace()&&!tu(n.element())?fi.SPACE():[],i=t.useEnter()?fi.ENTER():[],u=t.useDown()?fi.DOWN():[],a=o.concat(i).concat(u);return[Pi(ji.inSet(a),iu)].concat(t.useControlEnter()?[Pi(ji.and([ji.isControl,ji.inSet(fi.ENTER())]),iu)]:[])},uu,au,N.none()),su={flatgrid:function(n){var e=po(N.none());return zr({readState:c.constant({}),setGridSize:function(n,t){e.set(N.some({numRows:c.constant(n),numColumns:c.constant(t)}))},getNumRows:function(){return e.get().map(function(n){return n.numRows()})},getNumColumns:function(){return e.get().map(function(n){return n.numColumns()})}})},init:function(n){return n.state()(n)}},fu=function(n){return"rtl"===Xi.get(n,"direction")?"rtl":"ltr"},lu=function(n,e){return function(t){return"rtl"===fu(t)?e:n}},du=function(n){return function(e,t,r,o){var i=n(e.element());return pu(i,e,t,r,o)}},mu=function(n){return function(e,t,r,o){return pu(n,e,t,r,o)}},pu=function(n,e,t,r,o){return r.focusManager().get(e).bind(function(t){return n(e.element(),t,r,o)}).map(function(n){return r.focusManager().set(e,n),!0})},gu=function(n,e){var t=lu(e,n);return du(t)},hu=function(n,e){var t=lu(n,e);return du(t)},vu=mu,yu=mu,bu=mu,wu=In.immutableBag(["index","candidates"],[]),Su=function(n,e){return X.findIndex(n,e).map(function(e){return wu({index:e,candidates:n})})},xu=function(n){var e,t=n.dom();return!((e=t).offsetWidth<=0&&e.offsetHeight<=0)},Ou=function(n,e,t,r){var o=c.curry(Jn,e),i=yi(n,t),u=X.filter(i,xu);return Su(u,o)},Tu=function(n,e,t){return Ou(n,e,t,xu)},ku=function(n,e){return X.findIndex(n,function(n){return Jn(e,n)})},Cu=function(n,e,t,r){return r(Math.floor(e/t),e%t).bind(function(e){var r=e.row()*t+e.column();return r>=0&&r<n.length?N.some(n[r]):N.none()})},Eu=function(n,e,t,r,o){return Cu(n,e,r,function(e,i){var u=e===t-1?n.length-e*r:r,a=li(i,o,0,u-1);return N.some({row:c.constant(e),column:c.constant(a)})})},Du=function(n,e,t,r,o){return Cu(n,e,r,function(e,i){var u=li(e,o,0,t-1),a=u===t-1?n.length-u*r:r,s=di(i,0,a-1);return N.some({row:c.constant(u),column:c.constant(s)})})},Au=function(n,e,t,r){return Du(n,e,t,r,1)},Mu=function(n,e,t,r){return Du(n,e,t,r,-1)},Ru=function(n,e,t,r){return Eu(n,e,t,r,-1)},Fu=function(n,e,t,r){return Eu(n,e,t,r,1)},Bu=[Ut("selector"),Jt("execute",ru),Lo.onKeyboardHandler("onEscape"),Jt("captureTab",!1),Lo.initSize()],Iu=function(n){return function(e,t,r,o){return Tu(e,t,r.selector()).bind(function(e){return n(e.candidates(),e.index(),o.getNumRows().getOr(r.initSize().numRows()),o.getNumColumns().getOr(r.initSize().numColumns()))})}},Hu=function(n,e,t,r){return t.captureTab()?N.some(!0):N.none()},Nu=Iu(Ru),Vu=Iu(Fu),ju=Iu(Mu),Pu=Iu(Au),Lu=c.constant([Pi(ji.inSet(fi.LEFT()),hu(Nu,Vu)),Pi(ji.inSet(fi.RIGHT()),gu(Nu,Vu)),Pi(ji.inSet(fi.UP()),vu(ju)),Pi(ji.inSet(fi.DOWN()),yu(Pu)),Pi(ji.and([ji.isShift,ji.inSet(fi.TAB())]),Hu),Pi(ji.and([ji.isNotShift,ji.inSet(fi.TAB())]),Hu),Pi(ji.inSet(fi.ESCAPE()),function(n,e,t,r){return t.onEscape()(n,e)}),Pi(ji.inSet(fi.SPACE().concat(fi.ENTER())),function(n,e,t,r){return(o=n,i=t,i.focusManager().get(o).bind(function(n){return Oi(n,i.selector())})).bind(function(r){return t.execute()(n,e,r)});var o,i})]),Wu=c.constant({}),Uu=Wi(Bu,su.flatgrid,Lu,Wu,{},N.some(function(n,e,t){xi(n.element(),e.selector()).each(function(t){e.focusManager().set(n,t)})})),zu=function(n,e,t,r){return Tu(n,t,e,c.constant(!0)).bind(function(n){var e=n.index(),t=n.candidates(),o=li(e,r,0,t.length-1);return N.from(t[o])})},Ku=[Ut("selector"),Jt("getInitial",N.none),Jt("execute",ru),Jt("executeOnMove",!1)],Gu=function(n,e,t){return(r=n,o=t,o.focusManager().get(r).bind(function(n){return Oi(n,o.selector())})).bind(function(r){return t.execute()(n,e,r)});var r,o},$u=function(n,e,t){return zu(n,t.selector(),e,-1)},qu=function(n,e,t){return zu(n,t.selector(),e,1)},_u=function(n){return function(e,t,r){return n(e,t,r).bind(function(){return r.executeOnMove()?Gu(e,t,r):N.some(!0)})}},Xu=c.constant({}),Yu=c.constant({}),Ju=Wi(Ku,Kr.init,function(n){return[Pi(ji.inSet(fi.LEFT().concat(fi.UP())),_u(hu($u,qu))),Pi(ji.inSet(fi.RIGHT().concat(fi.DOWN())),_u(gu($u,qu))),Pi(ji.inSet(fi.ENTER()),Gu),Pi(ji.inSet(fi.SPACE()),Gu)]},Xu,Yu,N.some(function(n,e){e.getInitial()(n).or(xi(n.element(),e.selector())).each(function(t){e.focusManager().set(n,t)})})),Qu=In.immutableBag(["rowIndex","columnIndex","cell"],[]),Zu=function(n,e,t){return N.from(n[e]).bind(function(n){return N.from(n[t]).map(function(n){return Qu({rowIndex:e,columnIndex:t,cell:n})})})},na=function(n,e,t,r){var o=n[e].length,i=li(t,r,0,o-1);return Zu(n,e,i)},ea=function(n,e,t,r){var o=li(t,r,0,n.length-1),i=n[o].length,u=di(e,0,i-1);return Zu(n,o,u)},ta=function(n,e,t,r){var o=n[e].length,i=di(t+r,0,o-1);return Zu(n,e,i)},ra=function(n,e,t,r){var o=di(t+r,0,n.length-1),i=n[o].length,u=di(e,0,i-1);return Zu(n,o,u)},oa=function(n,e,t){return na(n,e,t,1)},ia=function(n,e,t){return na(n,e,t,-1)},ua=function(n,e,t){return ea(n,t,e,-1)},aa=function(n,e,t){return ea(n,t,e,1)},ca=function(n,e,t){return ta(n,e,t,-1)},sa=function(n,e,t){return ta(n,e,t,1)},fa=function(n,e,t){return ra(n,t,e,-1)},la=function(n,e,t){return ra(n,t,e,1)},da=[Kt("selectors",[Ut("row"),Ut("cell")]),Jt("cycles",!0),Jt("previousSelector",N.none),Jt("execute",ru)],ma=function(n,e){return function(t,r,o){var i=o.cycles()?n:e;return Oi(r,o.selectors().row()).bind(function(n){var e=yi(n,o.selectors().cell());return ku(e,r).bind(function(e){var r=yi(t,o.selectors().row());return ku(r,n).bind(function(n){var t,u,a=(t=r,u=o,X.map(t,function(n){return yi(n,u.selectors().cell())}));return i(a,n,e).map(function(n){return n.cell()})})})})}},pa=ma(ia,ca),ga=ma(oa,sa),ha=ma(ua,fa),va=ma(aa,la),ya=c.constant([Pi(ji.inSet(fi.LEFT()),hu(pa,ga)),Pi(ji.inSet(fi.RIGHT()),gu(pa,ga)),Pi(ji.inSet(fi.UP()),vu(ha)),Pi(ji.inSet(fi.DOWN()),yu(va)),Pi(ji.inSet(fi.SPACE().concat(fi.ENTER())),function(n,e,t){return Co(n.element()).bind(function(r){return t.execute()(n,e,r)})})]),ba=c.constant({}),wa=c.constant({}),Sa=Wi(da,Kr.init,ya,ba,wa,N.some(function(n,e){e.previousSelector()(n).orThunk(function(){var t=e.selectors();return xi(n.element(),t.cell())}).each(function(t){e.focusManager().set(n,t)})})),xa=[Ut("selector"),Jt("execute",ru),Jt("moveOnTab",!1)],Oa=function(n,e,t){return t.focusManager().get(n).bind(function(r){return t.execute()(n,e,r)})},Ta=function(n,e,t){return zu(n,t.selector(),e,-1)},ka=function(n,e,t){return zu(n,t.selector(),e,1)},Ca=c.constant([Pi(ji.inSet(fi.UP()),bu(Ta)),Pi(ji.inSet(fi.DOWN()),bu(ka)),Pi(ji.and([ji.isShift,ji.inSet(fi.TAB())]),function(n,e,t){return t.moveOnTab()?bu(Ta)(n,e,t):N.none()}),Pi(ji.and([ji.isNotShift,ji.inSet(fi.TAB())]),function(n,e,t){return t.moveOnTab()?bu(ka)(n,e,t):N.none()}),Pi(ji.inSet(fi.ENTER()),Oa),Pi(ji.inSet(fi.SPACE()),Oa)]),Ea=c.constant({}),Da=c.constant({}),Aa=Wi(xa,Kr.init,Ca,Ea,Da,N.some(function(n,e,t){xi(n.element(),e.selector()).each(function(t){e.focusManager().set(n,t)})})),Ma=[Lo.onKeyboardHandler("onSpace"),Lo.onKeyboardHandler("onEnter"),Lo.onKeyboardHandler("onShiftEnter"),Lo.onKeyboardHandler("onLeft"),Lo.onKeyboardHandler("onRight"),Lo.onKeyboardHandler("onTab"),Lo.onKeyboardHandler("onShiftTab"),Lo.onKeyboardHandler("onUp"),Lo.onKeyboardHandler("onDown"),Lo.onKeyboardHandler("onEscape"),qt("focusIn")],Ra=c.constant({}),Fa=c.constant({}),Ba=Wi(Ma,Kr.init,function(n,e,t){return[Pi(ji.inSet(fi.SPACE()),t.onSpace()),Pi(ji.and([ji.isNotShift,ji.inSet(fi.ENTER())]),t.onEnter()),Pi(ji.and([ji.isShift,ji.inSet(fi.ENTER())]),t.onShiftEnter()),Pi(ji.and([ji.isShift,ji.inSet(fi.TAB())]),t.onShiftTab()),Pi(ji.and([ji.isNotShift,ji.inSet(fi.TAB())]),t.onTab()),Pi(ji.inSet(fi.UP()),t.onUp()),Pi(ji.inSet(fi.DOWN()),t.onDown()),Pi(ji.inSet(fi.LEFT()),t.onLeft()),Pi(ji.inSet(fi.RIGHT()),t.onRight()),Pi(ji.inSet(fi.SPACE()),t.onSpace()),Pi(ji.inSet(fi.ESCAPE()),t.onEscape())]},Ra,Fa,N.some(function(n,e){return e.focusIn().bind(function(t){return t(n,e)})})),Ia={acyclic:nu.schema(),cyclic:eu.schema(),flow:Ju.schema(),flatgrid:Uu.schema(),matrix:Sa.schema(),execution:cu.schema(),menu:Aa.schema(),special:Ba.schema()},Ha=qr.createModes({branchKey:"mode",branches:Ia,name:"keying",active:{events:function(n,e){return n.handler().toEvents(n,e)}},apis:{focusIn:function(n){n.getSystem().triggerFocus(n.element(),n.element())},setGridSize:function(n,e,t,r,o){it.hasKey(t,"setGridSize")?t.setGridSize(r,o):console.error("Layout does not support setGridSize")}},state:su}),Na=function(n,e){return Zt(n,{},X.map(e,function(e){return $t(e.name(),"Cannot configure "+e.name()+" for "+n)}).concat([er("dump",c.identity)]))},Va=function(n){return n.dump()},ja=0,Pa=function(n){var e=(new Date).getTime();return n+"_"+Math.floor(1e9*Math.random())+ ++ja+String(e)},La=Pa("alloy-premade"),Wa=Pa("api"),Ua={apiConfig:c.constant(Wa),makeApi:function(n){return kr(function(e){var t=Array.prototype.slice.call(arguments,0),r=e.config(Wa);return n.apply(undefined,[r].concat(t))},n)},premade:function(n){return it.wrap(La,n)},getPremade:function(n){return it.readOptFrom(n,La)}},za=Ke([{required:["data"]},{external:["data"]},{optional:["data"]},{group:["data"]}]),Ka=Jt("factory",{sketch:c.identity}),Ga=Jt("schema",[]),$a=Ut("name"),qa=nr("pname","pname",wt.defaultedThunk(function(n){return"<alloy."+Pa(n.name)+">"}),mr.anyValue()),_a=Jt("defaults",c.constant({})),Xa=Jt("overrides",c.constant({})),Ya=mr.objOf([Ka,Ga,$a,qa,_a,Xa]),Ja=mr.objOf([Ka,Ga,$a,_a,Xa]),Qa=mr.objOf([Ka,Ga,$a,qa,_a,Xa]),Za=mr.objOf([Ka,Ga,$a,Ut("unit"),qa,_a,Xa]),nc=function(n,e){return function(t){var r=mr.asStructOrDie("Converting part type",e,t);return n(r)}},ec={required:nc(za.required,Ya),external:nc(za.external,Ja),optional:nc(za.optional,Qa),group:nc(za.group,Za),asNamedPart:function(n){return n.fold(N.some,N.none,N.some,N.some)},name:function(n){var e=function(n){return n.name()};return n.fold(e,e,e,e)},asCommon:function(n){return n.fold(c.identity,c.identity,c.identity,c.identity)},original:c.constant("entirety")},tc="placeholder",rc=Ke([{single:["required","valueThunk"]},{multiple:["required","valueThunks"]}]),oc=function(n,e,t,r){return t.uiType===tc?(i=t,u=r,(o=n).exists(function(n){return n!==i.owner})?rc.single(!0,c.constant(i)):it.readOptFrom(u,i.name).fold(function(){throw new Error("Unknown placeholder component: "+i.name+"\nKnown: ["+On.keys(u)+"]\nNamespace: "+o.getOr("none")+"\nSpec: "+Ot(i,null,2))},function(n){return n.replace()})):rc.single(!1,c.constant(t));var o,i,u},ic=function(n,e,t,r){return oc(n,0,t,r).fold(function(o,i){var u=i(e,t.config,t.validated),a=it.readOptFrom(u,"components").getOr([]),c=X.bind(a,function(t){return ic(n,e,t,r)});return[vn.deepMerge(u,{components:c})]},function(n,r){return r(e,t.config,t.validated)})},uc=function(n,e,t,r){return X.bind(t,function(t){return ic(n,e,t,r)})},ac={single:rc.single,multiple:rc.multiple,isSubstitute:function(n){return X.contains([tc],n)},placeholder:c.constant(tc),substituteAll:uc,substitutePlaces:function(n,e,t,r){var o=On.map(r,function(n,e){return t=e,r=n,o=!1,{name:c.constant(t),required:function(){return r.fold(function(n,e){return n},function(n,e){return n})},used:function(){return o},replace:function(){if(!0===o)throw new Error("Trying to use the same placeholder more than once: "+t);return o=!0,r}};var t,r,o}),i=uc(n,e,t,o);return On.each(o,function(t){if(!1===t.used()&&t.required())throw new Error("Placeholder: "+t.name()+" was not found in components list\nNamespace: "+n.getOr("none")+"\nComponents: "+Ot(e.components(),null,2))}),i},singleReplace:function(n,e){return e.fold(function(e,t){return[t(n)]},function(e,t){return t(n)})}},cc=function(n,e,t,r){var o=t;return vn.deepMerge(e.defaults()(n,t,r),t,{uid:n.partUids()[e.name()]},e.overrides()(n,t,r),{"debug.sketcher":it.wrap("part-"+e.name(),o)})},sc=function(n,e,t){var r={},o={};return X.each(t,function(n){n.fold(function(n){r[n.pname()]=ac.single(!0,function(e,t,r){return n.factory().sketch(cc(e,n,t,r))})},function(n){var t=e.parts()[n.name()]();o[n.name()]=c.constant(cc(e,n,t[ec.original()]()))},function(n){r[n.pname()]=ac.single(!1,function(e,t,r){return n.factory().sketch(cc(e,n,t,r))})},function(n){r[n.pname()]=ac.multiple(!0,function(e,t,r){var o=e[n.name()]();return X.map(o,function(t){return n.factory().sketch(vn.deepMerge(n.defaults()(e,t),t,n.overrides()(e,t)))})})})}),{internals:c.constant(r),externals:c.constant(o)}},fc=function(n,e){return{uiType:ac.placeholder(),owner:n,name:e}},lc=function(n){return X.map(n,ec.name)},dc=function(n,e,t){var r=e.partUids()[t];return n.getSystem().getByUid(r).toOption()},mc=function(n,e){var t=lc(e);return it.wrapAll(X.map(t,function(e){return{key:e,value:n+"-"+e}}))},pc=function(n,e){var t={};return X.each(e,function(e){ec.asNamedPart(e).each(function(e){var r=fc(n,e.pname());t[e.name()]=function(t){var o=mr.asRawOrDie("Part: "+e.name()+" in "+n,mr.objOf(e.schema()),t);return vn.deepMerge(r,{config:t,validated:o})}})}),t},gc=function(n,e,t){return{uiType:ac.placeholder(),owner:n,name:e,config:t,validated:{}}},hc=function(n){return X.bind(n,function(n){return n.fold(N.none,N.some,N.none,N.none).map(function(n){return Kt(n.name(),n.schema().concat([Lo.snapshot(ec.original())]))}).toArray()})},vc=function(n,e,t){return sc(n,e,t)},yc=function(n,e,t){return ac.substitutePlaces(N.some(n),e,e.components(),t)},bc=function(n){return nr("partUids","partUids",wt.mergeWithThunk(function(e){return mc(e.uid,n)}),mr.anyValue())},wc=function(n,e){var t=n.getSystem();return On.map(e.partUids(),function(n,e){return c.constant(t.getByUid(n))})},Sc=dc,xc=function(n,e,t){return dc(n,e,t).getOrDie("Could not find part: "+t)},Oc={prefix:c.constant("alloy-id-"),idAttr:c.constant("data-alloy-id")},Tc=Oc.prefix(),kc=Oc.idAttr(),Cc={revoke:function(n){Ne.remove(n,kc)},write:function(n,e){var t=Pa(Tc+n);return Ne.set(e,kc,t),t},writeOnly:function(n,e){Ne.set(n,kc,e)},read:function(n){var e=ye.isElement(n)?Ne.get(n,kc):null;return N.from(e)},find:function(n,e){return xi(n,e)},generate:function(n){return Pa(n)},attribute:c.constant(kc)},Ec=function(n,e,t,r){return(e.length>0?[Kt("parts",e)]:[]).concat([Ut("uid"),Jt("dom",{}),Jt("components",[]),Lo.snapshot("originalSpec"),Jt("debug.sketcher",{})]).concat(t)},Dc=function(n,e,t,r,o){var i=Ec(0,r,o);return mr.asStructOrDie(n+" [SpecSchema]",mr.objOfOnly(i.concat(e)),t)},Ac=function(n){return vn.deepMerge({uid:Cc.generate("uid")},n)},Mc=function(n,e,t,r){var o=Ac(r),i=Dc(n,e,o,[],[]);return vn.deepMerge(t(i,o),{"debug.sketcher":it.wrap(n,r)})},Rc=function(n,e,t,r,o){var i=Ac(o),u=hc(t),a=bc(t),c=Dc(n,e,i,u,[a]),s=vc(n,c,t),f=yc(n,c,s.internals());return vn.deepMerge(r(c,f,i,s.externals()),{"debug.sketcher":it.wrap(n,o)})},Fc=mr.objOfOnly([Ut("name"),Ut("factory"),Ut("configFields"),Jt("apis",{}),Jt("extraApis",{})]),Bc=mr.objOfOnly([Ut("name"),Ut("factory"),Ut("configFields"),Ut("partFields"),Jt("apis",{}),Jt("extraApis",{})]),Ic=function(n){var e=mr.asRawOrDie("Sketcher for "+n.name,Fc,n),t=On.map(e.apis,Ua.makeApi),r=On.map(e.extraApis,function(n,e){return Tr(n,e)});return vn.deepMerge({name:c.constant(e.name),partFields:c.constant([]),configFields:c.constant(e.configFields),sketch:function(n){return Mc(e.name,e.configFields,e.factory,n)}},t,r)},Hc=function(n){var e=mr.asRawOrDie("Sketcher for "+n.name,Bc,n),t=pc(e.name,e.partFields),r=On.map(e.apis,Ua.makeApi),o=On.map(e.extraApis,function(n,e){return Tr(n,e)});return vn.deepMerge({name:c.constant(e.name),partFields:c.constant(e.partFields),configFields:c.constant(e.configFields),sketch:function(n){return Rc(e.name,e.configFields,e.partFields,e.factory,n)},parts:c.constant(t)},r,o)},Nc=function(n){var e=function(n,e){e.stop(),Dn(n)},t=sn.detect().deviceType.isTouch()?[xr.run(ln.tap(),e)]:[xr.run(s.click(),e),xr.run(s.mousedown(),function(n,e){e.cut()})];return xr.derive(X.flatten([n.map(function(n){return xr.run(ln.execute(),function(e,t){n(e),t.stop()})}).toArray(),t]))},Vc=Ic({name:"Button",factory:function(n,e){var t=Nc(n.action()),r=it.readOptFrom(n.dom(),"attributes").bind(it.readOpt("type")),o=it.readOptFrom(n.dom(),"tag");return{uid:n.uid(),dom:n.dom(),components:n.components(),events:t,behaviours:vn.deepMerge(qr.derive([si.config({}),Ha.config({mode:"execution",useSpace:!0,useEnter:!0})]),Va(n.buttonBehaviours())),domModification:{attributes:vn.deepMerge(r.fold(function(){return o.is("button")?{type:"button"}:{}},function(n){return{}}),{role:n.role().getOr("button")})},eventOrder:n.eventOrder()}},configFields:[Jt("uid",undefined),Ut("dom"),Jt("components",[]),Na("buttonBehaviours",[si,Ha]),qt("action"),qt("role"),Jt("eventOrder",{})]}),jc={events:function(n){return xr.derive([xr.abort(s.selectstart(),c.constant(!0))])},exhibit:function(n,e){return Fr.nu({styles:{"-webkit-user-select":"none","user-select":"none","-ms-user-select":"none","-moz-user-select":"-moz-none"},attributes:{unselectable:"on"}})}},Pc=qr.create({fields:[],name:"unselecting",active:jc}),Lc=function(n){var e,t,r,o=Wn.fromHtml(n),i=ie.children(o),u=(t=(e=o).dom().attributes!==undefined?e.dom().attributes:[],X.foldl(t,function(n,e){return"class"===e.name?n:vn.deepMerge(n,it.wrap(e.name,e.value))},{})),a=(r=o,Array.prototype.slice.call(r.dom().classList,0)),c=0===i.length?{}:{innerHtml:Ae(o)};return vn.deepMerge({tag:ye.name(o),classes:a,attributes:u},c)},Wc=Lc,Uc=function(n){var e=Z(n,{prefix:ii.prefix()});return Wc(e)},zc={dom:Uc,spec:function(n){return{dom:Uc(n)}}},Kc=function(n){return qr.derive([ni.config({toggleClass:ii.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),ei(n,function(n,e){(e?ni.on:ni.off)(n)})])},Gc=function(n,e,t){return Vc.sketch({dom:zc.dom('<span class="${prefix}-toolbar-button ${prefix}-icon-'+n+' ${prefix}-icon"></span>'),action:e,buttonBehaviours:vn.deepMerge(qr.derive([Pc.config({})]),t)})},$c={forToolbar:Gc,forToolbarCommand:function(n,e){return Gc(e,function(){n.execCommand(e)},{})},forToolbarStateAction:function(n,e,t,r){var o=Kc(t);return Gc(e,r,o)},forToolbarStateCommand:function(n,e){var t=Kc(e);return Gc(e,function(){n.execCommand(e)},t)}},qc=function(n,e,t){return Math.max(e,Math.min(t,n))},_c=function(n,e,t,r){return n<e?n:n>t?t:n===e?e-1:Math.max(e,n-r)},Xc=function(n,e,t,r){return n>t?n:n<e?e:n===t?t+1:Math.min(t,n+r)},Yc=function(n,e,t,r,o,i,u){var a=t-e;if(r<n.left)return e-1;if(r>n.right)return t+1;var c,s,f,l,d=Math.min(n.right,Math.max(r,n.left))-n.left,m=qc(d/n.width*a+e,e-1,t+1),p=Math.round(m);return i&&m>=e&&m<=t?(c=m,s=e,f=t,l=o,u.fold(function(){var n=c-s,e=Math.round(n/l)*l;return qc(s+e,s-1,f+1)},function(n){var e=(c-n)%l,t=Math.round(e/l),r=Math.floor((c-n)/l),o=Math.floor((f-n)/l),i=n+Math.min(o,r+t)*l;return Math.max(n,i)})):p},Jc="slider.change.value",Qc=sn.detect().deviceType.isTouch(),Zc=function(n){var e;return(e=n.event().raw(),Qc&&e.touches!==undefined&&1===e.touches.length?N.some(e.touches[0]):Qc&&e.touches!==undefined?N.none():Qc||e.clientX===undefined?N.none():N.some(e)).map(function(n){return n.clientX})},ns=function(n,e){En(n,Jc,{value:e})},es={setXFromEvent:function(n,e,t,r){return Zc(r).map(function(r){var o,i,u,a;return o=n,u=r,a=Yc(t,(i=e).min(),i.max(),u,i.stepSize(),i.snapToGrid(),i.snapStart()),ns(o,a),r})},setToLedge:function(n,e){ns(n,e.min()-1)},setToRedge:function(n,e){ns(n,e.max()+1)},moveLeftFromRedge:function(n,e){ns(n,e.max())},moveRightFromLedge:function(n,e){ns(n,e.min())},moveLeft:function(n,e){var t=_c(e.value().get(),e.min(),e.max(),e.stepSize());ns(n,t)},moveRight:function(n,e){var t=Xc(e.value().get(),e.min(),e.max(),e.stepSize());ns(n,t)},changeEvent:c.constant(Jc)},ts=sn.detect().deviceType.isTouch(),rs=function(n,e){return ec.optional({name:n+"-edge",overrides:function(n){var t=xr.derive([xr.runActionExtra(s.touchstart(),e,[n])]),r=xr.derive([xr.runActionExtra(s.mousedown(),e,[n]),xr.runActionExtra(s.mousemove(),function(n,t){t.mouseIsDown().get()&&e(n,t)},[n])]);return{events:ts?t:r}}})},os=[rs("left",es.setToLedge),rs("right",es.setToRedge),ec.required({name:"thumb",defaults:c.constant({dom:{styles:{position:"absolute"}}}),overrides:function(n){return{events:xr.derive([xr.redirectToPart(s.touchstart(),n,"spectrum"),xr.redirectToPart(s.touchmove(),n,"spectrum"),xr.redirectToPart(s.touchend(),n,"spectrum")])}}}),ec.required({schema:[er("mouseIsDown",function(){return po(!1)})],name:"spectrum",overrides:function(n){var e=function(e,t){var r=e.element().dom().getBoundingClientRect();es.setXFromEvent(e,n,r,t)},t=xr.derive([xr.run(s.touchstart(),e),xr.run(s.touchmove(),e)]),r=xr.derive([xr.run(s.mousedown(),e),xr.run(s.mousemove(),function(t,r){n.mouseIsDown().get()&&e(t,r)})]);return{behaviours:qr.derive(ts?[]:[Ha.config({mode:"special",onLeft:function(e){return es.moveLeft(e,n),N.some(!0)},onRight:function(e){return es.moveRight(e,n),N.some(!0)}}),si.config({})]),events:ts?t:r}}})],is={onLoad:function(n,e,t){e.store().manager().onLoad(n,e,t)},onUnload:function(n,e,t){e.store().manager().onUnload(n,e,t)},setValue:function(n,e,t,r){e.store().manager().setValue(n,e,t,r)},getValue:function(n,e,t){return e.store().manager().getValue(n,e,t)}},us={events:function(n,e){var t=n.resetOnDom()?[xr.runOnAttached(function(t,r){is.onLoad(t,n,e)}),xr.runOnDetached(function(t,r){is.onUnload(t,n,e)})]:[Nr(n,e,is.onLoad)];return xr.derive(t)}},as={memory:function(){var n=po(null);return zr({set:n.set,get:n.get,isNotSet:function(){return null===n.get()},clear:function(){n.set(null)},readState:function(){return{mode:"memory",value:n.get()}}})},dataset:function(){var n=po({});return zr({readState:function(){return{mode:"dataset",dataset:n.get()}},set:n.set,get:n.get})},manual:function(){return zr({readState:function(){}})},init:function(n){return n.store().manager().state(n)}},cs=function(n,e,t,r){e.store().getDataKey(),t.set({}),e.store().setData()(n,r),e.onSetValue()(n,r)},ss=[qt("initialValue"),Ut("getFallbackEntry"),Ut("getDataKey"),Ut("setData"),Lo.output("manager",{setValue:cs,getValue:function(n,e,t){var r=e.store().getDataKey()(n),o=t.get();return it.readOptFrom(o,r).fold(function(){return e.store().getFallbackEntry()(r)},function(n){return n})},onLoad:function(n,e,t){e.store().initialValue().each(function(r){cs(n,e,t,r)})},onUnload:function(n,e,t){t.set({})},state:as.dataset})],fs=[Ut("getValue"),Jt("setValue",c.noop),qt("initialValue"),Lo.output("manager",{setValue:function(n,e,t,r){e.store().setValue()(n,r),e.onSetValue()(n,r)},getValue:function(n,e,t){return e.store().getValue()(n)},onLoad:function(n,e,t){e.store().initialValue().each(function(t){e.store().setValue()(n,t)})},onUnload:c.noop,state:Kr.init})],ls=[qt("initialValue"),Lo.output("manager",{setValue:function(n,e,t,r){t.set(r),e.onSetValue()(n,r)},getValue:function(n,e,t){return t.get()},onLoad:function(n,e,t){e.store().initialValue().each(function(n){t.isNotSet()&&t.set(n)})},onUnload:function(n,e,t){t.clear()},state:as.memory})],ds=[Qt("store",{mode:"memory"},mr.choose("mode",{memory:ls,manual:fs,dataset:ss})),Lo.onHandler("onSetValue"),Jt("resetOnDom",!1)],ms=qr.create({fields:ds,name:"representing",active:us,apis:is,extra:{setValueFrom:function(n,e){var t=ms.getValue(e);ms.setValue(n,t)}},state:as}),ps=sn.detect().deviceType.isTouch(),gs=[Ut("min"),Ut("max"),Jt("stepSize",1),Jt("onChange",c.noop),Jt("onInit",c.noop),Jt("onDragStart",c.noop),Jt("onDragEnd",c.noop),Jt("snapToGrid",!1),qt("snapStart"),Ut("getInitialValue"),Na("sliderBehaviours",[Ha,ms]),er("value",function(n){return po(n.min)})].concat(ps?[]:[er("mouseIsDown",function(){return po(!1)})]),hs=Yi("width",function(n){return n.dom().offsetWidth}),vs=function(n,e){hs.set(n,e)},ys=function(n){return hs.get(n)},bs=sn.detect().deviceType.isTouch(),ws=Hc({name:"Slider",configFields:gs,partFields:os,factory:function(n,e,t,r){var o=n.max()-n.min(),i=function(n){var e=n.element().dom().getBoundingClientRect();return(e.left+e.right)/2},u=function(e){return xc(e,n,"thumb")},a=function(e){var t,r,u,a,c=xc(e,n,"spectrum").element().dom().getBoundingClientRect(),s=e.element().dom().getBoundingClientRect(),f=(t=e,r=c,(a=(u=n).value().get())<u.min()?Sc(t,u,"left-edge").fold(function(){return 0},function(n){return i(n)-r.left}):a>u.max()?Sc(t,u,"right-edge").fold(function(){return r.width},function(n){return i(n)-r.left}):(u.value().get()-u.min())/o*r.width);return c.left-s.left+f},f=function(n){var e=a(n),t=u(n),r=ys(t.element())/2;Xi.set(t.element(),"left",e-r+"px")},l=function(e,t){var r=n.value().get(),o=u(e);return r!==t||Xi.getRaw(o.element(),"left").isNone()?(n.value().set(t),f(e),n.onChange()(e,o,t),N.some(!0)):N.none()},d=bs?[xr.run(s.touchstart(),function(e,t){n.onDragStart()(e,u(e))}),xr.run(s.touchend(),function(e,t){n.onDragEnd()(e,u(e))})]:[xr.run(s.mousedown(),function(e,t){t.stop(),n.onDragStart()(e,u(e)),n.mouseIsDown().set(!0)}),xr.run(s.mouseup(),function(e,t){n.onDragEnd()(e,u(e)),n.mouseIsDown().set(!1)})];return{uid:n.uid(),dom:n.dom(),components:e,behaviours:vn.deepMerge(qr.derive(X.flatten([bs?[]:[Ha.config({mode:"special",focusIn:function(e){return Sc(e,n,"spectrum").map(Ha.focusIn).map(c.constant(!0))}})],[ms.config({store:{mode:"manual",getValue:function(e){return n.value().get()}}})]])),Va(n.sliderBehaviours())),events:xr.derive([xr.run(es.changeEvent(),function(n,e){l(n,e.event().value())}),xr.runOnAttached(function(e,t){n.value().set(n.getInitialValue()());var r=u(e);f(e),n.onInit()(e,r,n.value().get())})].concat(d)),apis:{resetToMin:function(e){l(e,n.min())},resetToMax:function(e){l(e,n.max())},refresh:f},domModification:{styles:{position:"relative"}}}},apis:{resetToMin:function(n,e){n.resetToMin(e)},resetToMax:function(n,e){n.resetToMax(e)},refresh:function(n,e){n.refresh(e)}}}),Ss=function(n,e,t){return $c.forToolbar(e,function(){var r=t();n.setContextToolbar([{label:e+" group",items:r}])},{})},xs=function(n){return[(e=n,t=function(n){return n<0?"black":n>360?"white":"hsl("+n+", 100%, 50%)"},ws.sketch({dom:zc.dom('<div class="${prefix}-slider ${prefix}-hue-slider-container"></div>'),components:[ws.parts()["left-edge"](zc.spec('<div class="${prefix}-hue-slider-black"></div>')),ws.parts().spectrum({dom:zc.dom('<div class="${prefix}-slider-gradient-container"></div>'),components:[zc.spec('<div class="${prefix}-slider-gradient"></div>')],behaviours:qr.derive([ni.config({toggleClass:ii.resolve("thumb-active")})])}),ws.parts()["right-edge"](zc.spec('<div class="${prefix}-hue-slider-white"></div>')),ws.parts().thumb({dom:zc.dom('<div class="${prefix}-slider-thumb"></div>'),behaviours:qr.derive([ni.config({toggleClass:ii.resolve("thumb-active")})])})],onChange:function(n,r,o){var i=t(o);Xi.set(r.element(),"background-color",i),e.onChange(n,r,i)},onDragStart:function(n,e){ni.on(e)},onDragEnd:function(n,e){ni.off(e)},onInit:function(n,e,r){var o=t(r);Xi.set(e.element(),"background-color",o)},stepSize:10,min:0,max:360,getInitialValue:e.getInitialValue,sliderBehaviours:qr.derive([ti(ws.refresh)])}))];var e,t},Os=function(n,e){var t={onChange:function(n,t,r){e.undoManager.transact(function(){e.formatter.apply("forecolor",{value:r}),e.nodeChanged()})},getInitialValue:function(){return-1}};return Ss(n,"color",function(){return xs(t)})},Ts=mr.objOfOnly([Ut("getInitialValue"),Ut("onChange"),Ut("category"),Ut("sizes")]),ks=function(n){var e=mr.asRawOrDie("SizeSlider",Ts,n);return ws.sketch({dom:{tag:"div",classes:[ii.resolve("slider-"+e.category+"-size-container"),ii.resolve("slider"),ii.resolve("slider-size-container")]},onChange:function(n,t,r){var o;(o=r)>=0&&o<e.sizes.length&&e.onChange(r)},onDragStart:function(n,e){ni.on(e)},onDragEnd:function(n,e){ni.off(e)},min:0,max:e.sizes.length-1,stepSize:1,getInitialValue:e.getInitialValue,snapToGrid:!0,sliderBehaviours:qr.derive([ti(ws.refresh)]),components:[ws.parts().spectrum({dom:zc.dom('<div class="${prefix}-slider-size-container"></div>'),components:[zc.spec('<div class="${prefix}-slider-size-line"></div>')]}),ws.parts().thumb({dom:zc.dom('<div class="${prefix}-slider-thumb"></div>'),behaviours:qr.derive([ni.config({toggleClass:ii.resolve("thumb-active")})])})]})},Cs=function(n,e,t){for(var r=n.dom(),o=mn.isFunction(t)?t:c.constant(!1);r.parentNode;){r=r.parentNode;var i=Wn.fromDom(r),u=e(i);if(u.isSome())return u;if(o(i))break}return N.none()},Es=function(n,e,t){return e(n).orThunk(function(){return t(n)?N.none():Cs(n,e,t)})},Ds=["9px","10px","11px","12px","14px","16px","18px","20px","24px","32px","36px"],As=function(n){var e,t,r=n.selection.getStart(),o=Wn.fromDom(r),i=Wn.fromDom(n.getBody()),u=(e=function(n){return Jn(i,n)},t=o,(ye.isElement(t)?N.some(t):ie.parent(t)).map(function(n){return Es(n,function(n){return Xi.getRaw(n,"font-size")},e).getOrThunk(function(){return Xi.get(n,"font-size")})}).getOr(""));return X.find(Ds,function(n){return u===n}).getOr("medium")},Ms={candidates:c.constant(Ds),get:function(n){var e,t=As(n);return(e=t,X.findIndex(Ds,function(n){return n===e})).getOr(2)},apply:function(n,e){var t;(t=e,N.from(Ds[t])).each(function(e){var t,r;r=e,As(t=n)!==r&&t.execCommand("fontSize",!1,r)})}},Rs=Ms.candidates(),Fs=function(n){return[zc.spec('<span class="${prefix}-toolbar-button ${prefix}-icon-small-font ${prefix}-icon"></span>'),(e=n,ks({onChange:e.onChange,sizes:Rs,category:"font",getInitialValue:e.getInitialValue})),zc.spec('<span class="${prefix}-toolbar-button ${prefix}-icon-large-font ${prefix}-icon"></span>')];var e},Bs=function(n,e){var t={onChange:function(n){Ms.apply(e,n)},getInitialValue:function(){return Ms.get(e)}};return Ss(n,"font-size",function(){return Fs(t)})},Is=function(n){var e=it.hasKey(n,"uid")?n.uid:Cc.generate("memento");return{get:function(n){return n.getSystem().getByUid(e).getOrDie()},getOpt:function(n){return n.getSystem().getByUid(e).fold(N.none,N.some)},asSpec:function(){return vn.deepMerge(n,{uid:e})}}};function Hs(n,e){return Vs(document.createElement("canvas"),n,e)}function Ns(n){return n.getContext("2d")}function Vs(n,e,t){return n.width=e,n.height=t,n}var js={create:Hs,clone:function(n){var e;return Ns(e=Hs(n.width,n.height)).drawImage(n,0,0),e},resize:Vs,get2dContext:Ns,get3dContext:function(n){var e=null;try{e=n.getContext("webgl")||n.getContext("experimental-webgl")}catch(t){}return e||(e=null),e}},Ps={getWidth:function(n){return n.naturalWidth||n.width},getHeight:function(n){return n.naturalHeight||n.height}},Ls=window.Promise?window.Promise:function(){var n=function(n){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof n)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],c(n,t(i,this),t(u,this))},e=n.immediateFn||"function"==typeof setImmediate&&setImmediate||function(n){setTimeout(n,1)};function t(n,e){return function(){n.apply(e,arguments)}}var r=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)};function o(n){var t=this;null!==this._state?e(function(){var e=t._state?n.onFulfilled:n.onRejected;if(null!==e){var r;try{r=e(t._value)}catch(o){return void n.reject(o)}n.resolve(r)}else(t._state?n.resolve:n.reject)(t._value)}):this._deferreds.push(n)}function i(n){try{if(n===this)throw new TypeError("A promise cannot be resolved with itself.");if(n&&("object"==typeof n||"function"==typeof n)){var e=n.then;if("function"==typeof e)return void c(t(e,n),t(i,this),t(u,this))}this._state=!0,this._value=n,a.call(this)}catch(r){u.call(this,r)}}function u(n){this._state=!1,this._value=n,a.call(this)}function a(){for(var n=0,e=this._deferreds.length;n<e;n++)o.call(this,this._deferreds[n]);this._deferreds=null}function c(n,e,t){var r=!1;try{n(function(n){r||(r=!0,e(n))},function(n){r||(r=!0,t(n))})}catch(o){if(r)return;r=!0,t(o)}}return n.prototype["catch"]=function(n){return this.then(null,n)},n.prototype.then=function(e,t){var r=this;return new n(function(n,i){o.call(r,new function(n,e,t,r){this.onFulfilled="function"==typeof n?n:null,this.onRejected="function"==typeof e?e:null,this.resolve=t,this.reject=r}(e,t,n,i))})},n.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&r(arguments[0])?arguments[0]:arguments);return new n(function(n,t){if(0===e.length)return n([]);var r=e.length;function o(i,u){try{if(u&&("object"==typeof u||"function"==typeof u)){var a=u.then;if("function"==typeof a)return void a.call(u,function(n){o(i,n)},t)}e[i]=u,0==--r&&n(e)}catch(c){t(c)}}for(var i=0;i<e.length;i++)o(i,e[i])})},n.resolve=function(e){return e&&"object"==typeof e&&e.constructor===n?e:new n(function(n){n(e)})},n.reject=function(e){return new n(function(n,t){t(e)})},n.race=function(e){return new n(function(n,t){for(var r=0,o=e.length;r<o;r++)e[r].then(n,t)})},n}();function Ws(){return new(Pn.getOrDie("FileReader"))}var Us={atob:function(n){return Pn.getOrDie("atob")(n)},requestAnimationFrame:function(n){Pn.getOrDie("requestAnimationFrame")(n)}};function zs(n){return new Ls(function(e,t){var r=URL.createObjectURL(n),o=new Image,i=function(){o.removeEventListener("load",u),o.removeEventListener("error",a)};function u(){i(),e(o)}function a(){i(),t("Unable to load data of type "+n.type+": "+r)}o.addEventListener("load",u),o.addEventListener("error",a),o.src=r,o.complete&&u()})}function Ks(n){return new Ls(function(e,t){var r=new XMLHttpRequest;r.open("GET",n,!0),r.responseType="blob",r.onload=function(){200==this.status&&e(this.response)},r.onerror=function(){var n,e=this;t(0===this.status?((n=new Error("No access to download image")).code=18,n.name="SecurityError",n):new Error("Error "+e.status+" downloading image"))},r.send()})}function Gs(n){var e=n.split(","),t=/data:([^;]+)/.exec(e[0]);if(!t)return N.none();for(var r,o,i,u=t[1],a=e[1],c=Us.atob(a),s=c.length,f=Math.ceil(s/1024),l=new Array(f),d=0;d<f;++d){for(var m=1024*d,p=Math.min(m+1024,s),g=new Array(p-m),h=m,v=0;h<p;++v,++h)g[v]=c[h].charCodeAt(0);l[d]=(r=g,new(Pn.getOrDie("Uint8Array"))(r))}return N.some((o=l,i={type:u},new(Pn.getOrDie("Blob"))(o,i)))}function $s(n){return new Ls(function(e,t){Gs(n).fold(function(){t("uri is not base64: "+n)},e)})}function qs(n){return new Ls(function(e){var t=new Ws;t.onloadend=function(){e(t.result)},t.readAsDataURL(n)})}var _s={blobToImage:zs,imageToBlob:function(n){return(e=n,new Ls(function(n){e.complete?n(e):e.addEventListener("load",function t(){e.removeEventListener("load",t),n(e)})})).then(function(n){var e=n.src;return 0===e.indexOf("blob:")?Ks(e):0===e.indexOf("data:")?$s(e):Ks(e)});var e},blobToArrayBuffer:function(n){return new Ls(function(e){var t=new Ws;t.onloadend=function(){e(t.result)},t.readAsArrayBuffer(n)})},blobToDataUri:qs,blobToBase64:function(n){return qs(n).then(function(n){return n.split(",")[1]})},dataUriToBlobSync:Gs,canvasToBlob:function(n,e,t){return e=e||"image/png",HTMLCanvasElement.prototype.toBlob?new Ls(function(r){n.toBlob(function(n){r(n)},e,t)}):$s(n.toDataURL(e,t))},canvasToDataURL:function(n,e,t){return e=e||"image/png",n.then(function(n){return n.toDataURL(e,t)})},blobToCanvas:function(n){return zs(n).then(function(n){var e,t;return e=n,URL.revokeObjectURL(e.src),t=js.create(Ps.getWidth(n),Ps.getHeight(n)),js.get2dContext(t).drawImage(n,0,0),t})},uriToBlob:function(n){return 0===n.indexOf("blob:")?Ks(n):0===n.indexOf("data:")?$s(n):null}},Xs=function(n){return _s.blobToBase64(n)},Ys=function(n){var e=Is({dom:{tag:"input",attributes:{accept:"image/*",type:"file",title:""},styles:{visibility:"hidden",position:"absolute"}},events:xr.derive([xr.cutter(s.click()),xr.run(s.change(),function(e,t){var r,o,i;(r=t,o=r.event(),i=o.raw().target.files||o.raw().dataTransfer.files,N.from(i[0])).each(function(e){var t,r;t=n,Xs(r=e).then(function(n){t.undoManager.transact(function(){var e=t.editorUpload.blobCache,o=e.create(Pa("mceu"),r,n);e.add(o);var i=t.dom.createHTML("img",{src:o.blobUri()});t.insertContent(i)})})})})])});return Vc.sketch({dom:zc.dom('<span class="${prefix}-toolbar-button ${prefix}-icon-image ${prefix}-icon"></span>'),components:[e.asSpec()],action:function(n){e.get(n).element().dom().click()}})},Js=function(n){return n.dom().textContent},Qs=function(n,e){n.dom().textContent=e},Zs=function(n){return n.length>0},nf=function(n){return n===undefined||null===n?"":n},ef=function(n,e,t){return t.text.filter(Zs).fold(function(){return Ne.get(t=n,"href")===Js(t)?N.some(e):N.none();var t},N.some)},tf=function(n){var e=Wn.fromDom(n.selection.getStart());return Oi(e,"a")},rf={getInfo:function(n){return tf(n).fold(function(){return{url:"",text:n.selection.getContent({format:"text"}),title:"",target:"",link:N.none()}},function(n){return t=Js(e=n),r=Ne.get(e,"href"),o=Ne.get(e,"title"),i=Ne.get(e,"target"),{url:nf(r),text:t!==r?nf(t):"",title:nf(o),target:nf(i),link:N.some(e)};var e,t,r,o,i})},applyInfo:function(n,e){e.url.filter(Zs).fold(function(){var t;t=n,e.link.bind(c.identity).each(function(n){t.execCommand("unlink")})},function(t){var r,o,i=(r=e,(o={}).href=t,r.title.filter(Zs).each(function(n){o.title=n}),r.target.filter(Zs).each(function(n){o.target=n}),o);e.link.bind(c.identity).fold(function(){var r=e.text.filter(Zs).getOr(t);n.insertContent(n.dom.createHTML("a",i,n.dom.encode(r)))},function(n){var r=ef(n,t,e);Ne.setAll(n,i),r.each(function(e){Qs(n,e)})})})},query:tf},of=sn.detect(),uf=function(n,e){var t=e.selection.getRng();n(),e.selection.setRng(t)},af=function(n,e){(of.os.isAndroid()?uf:c.apply)(e,n)},cf=function(n,e){var t=xr.derive(e);return qr.create({fields:[Ut("enabled")],name:n,active:{events:c.constant(t)}})},sf={events:cf,config:function(n,e){return{key:n,value:{config:{},me:cf(n,e),configAsRaw:c.constant({}),initialConfig:{},state:qr.noState()}}}},ff={getCurrent:function(n,e,t){return e.find()(n)}},lf=[Ut("find")],df=qr.create({fields:lf,name:"composing",apis:ff}),mf=Ic({name:"Container",factory:function(n,e){return{uid:n.uid(),dom:vn.deepMerge({tag:"div",attributes:{role:"presentation"}},n.dom()),components:n.components(),behaviours:Va(n.containerBehaviours()),events:n.events(),domModification:n.domModification(),eventOrder:n.eventOrder()}},configFields:[Jt("components",[]),Na("containerBehaviours",[]),Jt("events",{}),Jt("domModification",{}),Jt("eventOrder",{})]}),pf=Ic({name:"DataField",factory:function(n,e){return{uid:n.uid(),dom:n.dom(),behaviours:vn.deepMerge(qr.derive([ms.config({store:{mode:"memory",initialValue:n.getInitialValue()()}}),df.config({find:N.some})]),Va(n.dataBehaviours())),events:xr.derive([xr.runOnAttached(function(e,t){ms.setValue(e,n.getInitialValue()())})])}},configFields:[Ut("uid"),Ut("dom"),Ut("getInitialValue"),Na("dataBehaviours",[ms,df])]}),gf=function(n,e){if(e===undefined)throw new Error("Value.set was undefined");n.dom().value=e},hf=function(n){return n.dom().value},vf=[qt("data"),Jt("inputAttributes",{}),Jt("inputStyles",{}),Jt("type","input"),Jt("tag","input"),Jt("inputClasses",[]),Lo.onHandler("onSetValue"),Jt("styles",{}),qt("placeholder"),Jt("eventOrder",{}),Na("inputBehaviours",[ms,si]),Jt("selectOnFocus",!0)],yf={schema:c.constant(vf),behaviours:function(n){return vn.deepMerge(qr.derive([ms.config({store:{mode:"manual",initialValue:n.data().getOr(undefined),getValue:function(n){return hf(n.element())},setValue:function(n,e){hf(n.element())!==e&&gf(n.element(),e)}},onSetValue:n.onSetValue()}),si.config({onFocus:!1===n.selectOnFocus()?c.noop:function(n){var e=n.element(),t=hf(e);e.dom().setSelectionRange(0,t.length)}})]),Va(n.inputBehaviours()))},dom:function(n){return{tag:n.tag(),attributes:vn.deepMerge(it.wrapAll([{key:"type",value:n.type()}].concat(n.placeholder().map(function(n){return{key:"placeholder",value:n}}).toArray())),n.inputAttributes()),styles:n.inputStyles(),classes:n.inputClasses()}}},bf=Ic({name:"Input",configFields:yf.schema(),factory:function(n,e){return{uid:n.uid(),dom:yf.dom(n),components:[],behaviours:yf.behaviours(n),eventOrder:n.eventOrder()}}}),wf={exhibit:function(n,e){return Fr.nu({attributes:it.wrapAll([{key:e.tabAttr(),value:"true"}])})}},Sf=[Jt("tabAttr","data-alloy-tabstop")],xf=qr.create({fields:Sf,name:"tabstopping",active:wf}),Of=function(n,e){var t=Is(bf.sketch({placeholder:e,onSetValue:function(n,e){Cn(n,s.input())},inputBehaviours:qr.derive([df.config({find:N.some}),xf.config({}),Ha.config({mode:"execution"})]),selectOnFocus:!1})),r=Is(Vc.sketch({dom:zc.dom('<button class="${prefix}-input-container-x ${prefix}-icon-cancel-circle ${prefix}-icon"></button>'),action:function(n){var e=t.get(n);ms.setValue(e,"")}}));return{name:n,spec:mf.sketch({dom:zc.dom('<div class="${prefix}-input-container"></div>'),components:[t.asSpec(),r.asSpec()],containerBehaviours:qr.derive([ni.config({toggleClass:ii.resolve("input-container-empty")}),df.config({find:function(n){return N.some(t.get(n))}}),sf.config("input-clearing",[xr.run(s.input(),function(n){var e=t.get(n);(ms.getValue(e).length>0?ni.off:ni.on)(n)})])])})}},Tf=function(n){return{name:n,spec:pf.sketch({dom:{tag:"span",styles:{display:"none"}},getInitialValue:function(){return N.none()}})}},kf=["input","button","textarea"],Cf=function(n){return X.contains(kf,ye.name(n.element()))},Ef=function(n){Ne.set(n.element(),"disabled","disabled")},Df=function(n){Ne.remove(n.element(),"disabled")},Af=function(n){Ne.set(n.element(),"aria-disabled","true")},Mf=function(n){Ne.set(n.element(),"aria-disabled","false")},Rf=function(n,e,t){e.disableClass().each(function(e){co.add(n.element(),e)}),(Cf(n)?Ef:Af)(n)},Ff={enable:function(n,e,t){e.disableClass().each(function(e){co.remove(n.element(),e)}),(Cf(n)?Df:Mf)(n)},disable:Rf,isDisabled:function(n){return Cf(n)?Ne.has(n.element(),"disabled"):"true"===Ne.get(n.element(),"aria-disabled")},onLoad:function(n,e,t){e.disabled()&&Rf(n,e,t)}},Bf={exhibit:function(n,e,t){return Fr.nu({classes:e.disabled()?e.disableClass().map(X.pure).getOr([]):[]})},events:function(n,e){return xr.derive([xr.abort(ln.execute(),function(t,r){return Ff.isDisabled(t,n,e)}),Nr(n,e,Ff.onLoad)])}},If=[Jt("disabled",!1),qt("disableClass")],Hf=qr.create({fields:If,name:"disabling",active:Bf,apis:Ff}),Nf=[Na("formBehaviours",[ms])],Vf=function(n){return"<alloy.field."+n+">"},jf=function(n,e,t){return vn.deepMerge({"debug.sketcher":{Form:t},uid:n.uid(),dom:n.dom(),components:e,behaviours:vn.deepMerge(qr.derive([ms.config({store:{mode:"manual",getValue:function(e){var t=wc(e,n);return On.map(t,function(n,e){return n().bind(df.getCurrent).map(ms.getValue)})},setValue:function(e,t){On.each(t,function(t,r){Sc(e,n,r).each(function(n){df.getCurrent(n).each(function(n){ms.setValue(n,t)})})})}}})]),Va(n.formBehaviours())),apis:{getField:function(e,t){return Sc(e,n,t).bind(df.getCurrent)}}})},Pf=(Ua.makeApi(function(n,e,t){return n.getField(e,t)}),function(n){var e,t=(e=[],{field:function(n,t){return e.push(n),gc("form",Vf(n),t)},record:function(){return e}}),r=n(t),o=t.record(),i=X.map(o,function(n){return ec.required({name:n,pname:Vf(n)})});return Rc("form",Nf,i,jf,r)}),Lf=function(n){var e=po(N.none()),t=function(){e.get().each(n)};return{clear:function(){t(),e.set(N.none())},isSet:function(){return e.get().isSome()},set:function(n){t(),e.set(N.some(n))}}},Wf={destroyable:function(){return Lf(function(n){n.destroy()})},unbindable:function(){return Lf(function(n){n.unbind()})},api:function(){var n=po(N.none()),e=function(){n.get().each(function(n){n.destroy()})};return{clear:function(){e(),n.set(N.none())},isSet:function(){return n.get().isSome()},set:function(t){e(),n.set(N.some(t))},run:function(e){n.get().each(e)}}},value:function(){var n=po(N.none());return{clear:function(){n.set(N.none())},set:function(e){n.set(N.some(e))},isSet:function(){return n.get().isSome()},on:function(e){n.get().each(e)}}}},Uf=function(n){return{xValue:n,points:[]}},zf=function(n,e){if(e===n.xValue)return n;var t=e-n.xValue>0?1:-1,r={direction:t,xValue:e};return{xValue:e,points:(0===n.points.length?[]:n.points[n.points.length-1].direction===t?n.points.slice(0,n.points.length-1):n.points).concat([r])}},Kf=function(n){if(0===n.points.length)return 0;var e=n.points[0].direction,t=n.points[n.points.length-1].direction;return-1===e&&-1===t?-1:1===e&&1===t?1:0},Gf=function(n){var e="navigateEvent",t=mr.objOf([Ut("fields"),Jt("maxFieldIndex",n.fields.length-1),Ut("onExecute"),Ut("getInitialValue"),er("state",function(){return{dialogSwipeState:Wf.value(),currentScreen:po(0)}})]),r=mr.asRawOrDie("SerialisedDialog",t,n),o=function(n,t,r){return Vc.sketch({dom:zc.dom('<span class="${prefix}-icon-'+t+' ${prefix}-icon"></span>'),action:function(t){En(t,e,{direction:n})},buttonBehaviours:qr.derive([Hf.config({disableClass:ii.resolve("toolbar-navigation-disabled"),disabled:!r})])})},i=function(n,e){var t=yi(n.element(),"."+ii.resolve("serialised-dialog-screen"));xi(n.element(),"."+ii.resolve("serialised-dialog-chain")).each(function(n){r.state.currentScreen.get()+e>=0&&r.state.currentScreen.get()+e<t.length&&(Xi.getRaw(n,"left").each(function(r){var o=parseInt(r,10),i=ys(t[0]);Xi.set(n,"left",o-e*i+"px")}),r.state.currentScreen.set(r.state.currentScreen.get()+e))})},u=function(n){var e=yi(n.element(),"input");N.from(e[r.state.currentScreen.get()]).each(function(e){n.getSystem().getByDom(e).each(function(e){Rn(n,e.element())})});var t=c.get(n);Bi.highlightAt(t,r.state.currentScreen.get())},a=Is(Pf(function(n){return{dom:zc.dom('<div class="${prefix}-serialised-dialog"></div>'),components:[mf.sketch({dom:zc.dom('<div class="${prefix}-serialised-dialog-chain" style="left: 0px; position: absolute;"></div>'),components:X.map(r.fields,function(e,t){return t<=r.maxFieldIndex?mf.sketch({dom:zc.dom('<div class="${prefix}-serialised-dialog-screen"></div>'),components:X.flatten([[o(-1,"previous",t>0)],[n.field(e.name,e.spec)],[o(1,"next",t<r.maxFieldIndex)]])}):n.field(e.name,e.spec)})})],formBehaviours:qr.derive([ti(function(n,e){var t;t=e,xi(n.element(),"."+ii.resolve("serialised-dialog-chain")).each(function(n){Xi.set(n,"left",-r.state.currentScreen.get()*t.width+"px")})}),Ha.config({mode:"special",focusIn:function(n){u(n)},onTab:function(n){return i(n,1),N.some(!0)},onShiftTab:function(n){return i(n,-1),N.some(!0)}}),sf.config("form-events",[xr.runOnAttached(function(n,e){r.state.currentScreen.set(0),r.state.dialogSwipeState.clear();var t=c.get(n);Bi.highlightFirst(t),r.getInitialValue(n).each(function(e){ms.setValue(n,e)})}),xr.runOnExecute(r.onExecute),xr.run(s.transitionend(),function(n,e){"left"===e.event().raw().propertyName&&u(n)}),xr.run(e,function(n,e){var t=e.event().direction();i(n,t)})])])}})),c=Is({dom:zc.dom('<div class="${prefix}-dot-container"></div>'),behaviours:qr.derive([Bi.config({highlightClass:ii.resolve("dot-active"),itemClass:ii.resolve("dot-item")})]),components:X.bind(r.fields,function(n,e){return e<=r.maxFieldIndex?[zc.spec('<div class="${prefix}-dot-item ${prefix}-icon-full-dot ${prefix}-icon"></div>')]:[]})});return{dom:zc.dom('<div class="${prefix}-serializer-wrapper"></div>'),components:[a.asSpec(),c.asSpec()],behaviours:qr.derive([Ha.config({mode:"special",focusIn:function(n){var e=a.get(n);Ha.focusIn(e)}}),sf.config("serializer-wrapper-events",[xr.run(s.touchstart(),function(n,e){r.state.dialogSwipeState.set(Uf(e.event().raw().touches[0].clientX))}),xr.run(s.touchmove(),function(n,e){r.state.dialogSwipeState.on(function(n){e.event().prevent(),r.state.dialogSwipeState.set(zf(n,e.event().raw().touches[0].clientX))})}),xr.run(s.touchend(),function(n){r.state.dialogSwipeState.on(function(e){var t=a.get(n),r=-1*Kf(e);i(t,r)})})])])}},$f=f(function(n,e){return[{label:"the link group",items:[Gf({fields:[Of("url","Type or paste URL"),Of("text","Link text"),Of("title","Link title"),Of("target","Link target"),Tf("link")],maxFieldIndex:["url","text","title","target"].length-1,getInitialValue:function(){return N.some(rf.getInfo(e))},onExecute:function(t){var r=ms.getValue(t);rf.applyInfo(e,r),n.restoreToolbar(),e.focus()}})]}]}),qf=function(n,e){return $c.forToolbarStateAction(e,"link","link",function(){var t=$f(n,e);n.setContextToolbar(t),af(e,function(){n.focusToolbar()}),rf.query(e).each(function(n){e.selection.select(n.dom())})})},_f=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],Xf=function(n,e){var t=X.map(e,function(n){return nr(n.name(),n.name(),wt.asOption(),mr.objOf([Ut("config"),Jt("state",Kr)]))}),r=mr.asStruct("component.behaviours",mr.objOf(t),n.behaviours).fold(function(e){throw new Error(mr.formatError(e)+"\nComplete spec:\n"+Ot(n,null,2))},c.identity);return{list:e,data:On.map(r,function(n){var e=n();return c.constant(e.map(function(n){return{config:n.config(),state:n.state().init(n.config())}}))})}},Yf=function(n){return n.list},Jf=function(n){return n.data},Qf=function(n,e){return Xf(n,e)},Zf=function(n){var e,t,r,o=(e=n,t=it.readOptFrom(e,"behaviours").getOr({}),r=X.filter(On.keys(t),function(n){return t[n]!==undefined}),X.map(r,function(n){return e.behaviours[n].me}));return Qf(n,o)},nl=Ur.exactly(["getSystem","config","hasConfigured","spec","connect","disconnect","element","syncComponents","readState","components","events"]),el=Ur.exactly(["debugInfo","triggerFocus","triggerEvent","triggerEscape","addToWorld","removeFromWorld","addToGui","removeFromGui","build","getByUid","getByDom","broadcast","broadcastOn"]);function tl(n){var e=function(e){return function(){throw new Error("The component must be in a context to send: "+e+"\n"+Le.element(n().element())+" is not in context.")}};return el({debugInfo:c.constant("fake"),triggerEvent:e("triggerEvent"),triggerFocus:e("triggerFocus"),triggerEscape:e("triggerEscape"),build:e("build"),addToWorld:e("addToWorld"),removeFromWorld:e("removeFromWorld"),addToGui:e("addToGui"),removeFromGui:e("removeFromGui"),getByUid:e("getByUid"),getByDom:e("getByDom"),broadcast:e("broadcast"),broadcastOn:e("broadcastOn")})}var rl,ol,il,ul,al,cl=function(n,e){var t={};return On.each(n,function(n,r){On.each(n,function(n,o){var i=it.readOr(o,[])(t);t[o]=i.concat([e(r,n)])})}),t},sl=function(n,e){return{name:c.constant(n),modification:e}},fl=function(n,e,t){return n.length>1?ze.error('Multiple behaviours have tried to change DOM "'+e+'". The guilty behaviours are: '+Ot(X.map(n,function(n){return n.name()}))+". At this stage, this is not supported. Future releases might provide strategies for resolving this."):0===n.length?ze.value({}):ze.value(n[0].modification().fold(function(){return{}},function(n){return it.wrap(e,n)}))},ll=function(n,e){return X.foldl(n,function(t,r){var o=r.modification().getOr({});return t.bind(function(t){var r=On.mapToArray(o,function(r,o){return t[o]!==undefined?(i=e,u=o,a=n,ze.error("Mulitple behaviours have tried to change the _"+u+'_ "'+i+'". The guilty behaviours are: '+Ot(X.bind(a,function(n){return n.modification().getOr({})[u]!==undefined?[n.name()]:[]}),null,2)+". This is not currently supported.")):ze.value(it.wrap(o,r));var i,u,a});return it.consolidate(r,t)})},ze.value({})).map(function(n){return it.wrap(e,n)})},dl={classes:function(n,e){var t=X.bind(n,function(n){return n.modification().getOr([])});return ze.value(it.wrap(e,t))},attributes:ll,styles:ll,domChildren:fl,defChildren:fl,innerHtml:fl,value:fl},ml=function(n,e,t,r){var o=vn.deepMerge({},e);X.each(t,function(e){o[e.name()]=e.exhibit(n,r)});var i=cl(o,sl),u=On.map(i,function(n,e){return X.bind(n,function(n){return n.modification().fold(function(){return[]},function(e){return[n]})})}),a=On.mapToArray(u,function(n,e){return it.readOptFrom(dl,e).fold(function(){return ze.error("Unknown field type: "+e)},function(t){return t(n,e)})});return it.consolidate(a,{}).map(Fr.nu)},pl=function(n,e,t,r){var o=t.slice(0);try{var i=o.sort(function(t,o){var i=t[e](),u=o[e](),a=r.indexOf(i),c=r.indexOf(u);if(-1===a)throw new Error("The ordering for "+n+" does not have an entry for "+i+".\nOrder specified: "+Ot(r,null,2));if(-1===c)throw new Error("The ordering for "+n+" does not have an entry for "+u+".\nOrder specified: "+Ot(r,null,2));return a<c?-1:c<a?1:0});return ze.value(i)}catch(u){return ze.error([u])}},gl={nu:function(n,e){return{handler:n,purpose:c.constant(e)}},curryArgs:function(n,e){return{handler:c.curry.apply(undefined,[n.handler].concat(e)),purpose:n.purpose}},getHandler:function(n){return n.handler}},hl=function(n,e){return{name:c.constant(n),handler:c.constant(e)}},vl=function(n,e,t){var r,o,i,u=vn.deepMerge(t,(r=e,o=n,i={},X.each(r,function(n){i[n.name()]=n.handlers(o)}),i));return cl(u,hl)},yl=function(n,e,t){var r,o,i=e[t];return i?pl("Event: "+t,"name",n,i).map(function(n){var e=X.map(n,function(n){return n.handler()});return hr(e)}):(r=t,o=n,ze.error(["The event ("+r+') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: '+Ot(X.map(o,function(n){return n.name()}),null,2)]))},bl=function(n,e){var t=On.mapToArray(n,function(n,t){return(1===n.length?ze.value(n[0].handler()):yl(n,e,t)).map(function(r){var o,i=(o=gr(r),function(n,e){var t=Array.prototype.slice.call(arguments,0);o.abort.apply(undefined,t)?e.stop():o.can.apply(undefined,t)&&o.run.apply(undefined,t)}),u=n.length>1?X.filter(e,function(e){return X.contains(n,function(n){return n.name()===e})}).join(" > "):n[0].name();return it.wrap(t,gl.nu(i,u))})});return it.consolidate(t,{})},wl=function(n,e,t,r){var o=vl(n,t,r);return bl(o,e)},Sl=function(n){return mr.asStruct("custom.definition",mr.objOfOnly([nr("dom","dom",wt.strict(),mr.objOfOnly([Ut("tag"),Jt("styles",{}),Jt("classes",[]),Jt("attributes",{}),qt("value"),qt("innerHtml")])),Ut("components"),Ut("uid"),Jt("events",{}),Jt("apis",c.constant({})),nr("eventOrder","eventOrder",wt.mergeWith({"alloy.execute":["disabling","alloy.base.behaviour","toggling"],"alloy.focus":["alloy.base.behaviour","focusing","keying"],"alloy.system.init":["alloy.base.behaviour","disabling","toggling","representing"],input:["alloy.base.behaviour","representing","streaming","invalidating"],"alloy.system.detached":["alloy.base.behaviour","representing"]}),mr.anyValue()),qt("domModification"),Lo.snapshot("originalSpec"),Jt("debug.sketcher","unknown")]),n)},xl=function(n){var e,t={tag:n.dom().tag(),classes:n.dom().classes(),attributes:vn.deepMerge((e=n,it.wrap(Oc.idAttr(),e.uid())),n.dom().attributes()),styles:n.dom().styles(),domChildren:X.map(n.components(),function(n){return n.element()})};return Dr.nu(vn.deepMerge(t,n.dom().innerHtml().map(function(n){return it.wrap("innerHtml",n)}).getOr({}),n.dom().value().map(function(n){return it.wrap("value",n)}).getOr({})))},Ol=function(n){return n.domModification().fold(function(){return Fr.nu({})},Fr.nu)},Tl=function(n){return n.events()},kl={add:function(n,e){X.each(e,function(e){co.add(n,e)})},remove:function(n,e){X.each(e,function(e){co.remove(n,e)})},toggle:function(n,e){X.each(e,function(e){co.toggle(n,e)})},hasAll:function(n,e){return X.forall(e,function(e){return co.has(n,e)})},hasAny:function(n,e){return X.exists(e,function(e){return co.has(n,e)})},get:function(n){return uo(n)?function(n){for(var e=n.dom().classList,t=new Array(e.length),r=0;r<e.length;r++)t[r]=e.item(r);return t}(n):to(n)}},Cl=function(n){var e=Wn.fromTag(n.tag());Ne.setAll(e,n.attributes().getOr({})),kl.add(e,n.classes().getOr([])),Xi.setAll(e,n.styles().getOr({})),Me(e,n.innerHtml().getOr(""));var t=function(n){if(n.domChildren().isSome()&&n.defChildren().isSome())throw new Error("Cannot specify children and child specs! Must be one or the other.\nDef: "+Dr.defToStr(n));return n.domChildren().fold(function(){var e=n.defChildren().getOr([]);return X.map(e,El)},function(n){return n})}(n);return se.append(e,t),n.value().each(function(n){gf(e,n)}),e},El=function(n){var e=Dr.nu(n);return Cl(e)},Dl=Cl,Al=function(n){var e=function(){return h},t=po(tl(e)),r=mr.getOrDie(Sl(vn.deepMerge(n,{behaviours:undefined}))),o=Zf(n),i=Yf(o),u=Jf(o),a=xl(r),s={"alloy.base.modification":Ol(r)},f=ml(u,s,i,a).getOrDie(),l=Fr.merge(a,f),d=Dl(l),m={"alloy.base.behaviour":Tl(r)},p=wl(u,r.eventOrder(),i,m).getOrDie(),g=po(r.components()),h=nl({getSystem:t.get,config:function(e){if(e===Ua.apiConfig())return r.apis();var t=u;return(mn.isFunction(t[e.name()])?t[e.name()]:function(){throw new Error("Could not find "+e.name()+" in "+Ot(n,null,2))})()},hasConfigured:function(n){return mn.isFunction(u[n.name()])},spec:c.constant(n),readState:function(n){return u[n]().map(function(n){return n.state.readState()}).getOr("not enabled")},connect:function(n){t.set(n)},disconnect:function(){t.set(tl(e))},element:c.constant(d),syncComponents:function(){var n=ie.children(d),e=X.bind(n,function(n){return t.get().getByDom(n).fold(function(){return[]},function(n){return[n]})});g.set(e)},components:g.get,events:c.constant(p)});return h},Ml={events:xr.derive([xr.can(ln.focus(),function(n,e){var t,r,o=e.event().originator(),i=e.event().target();return r=i,!(Jn(t=o,n.element())&&!Jn(t,r)&&(console.warn(ln.focus()+" did not get interpreted by the desired target. \nOriginator: "+Le.element(o)+"\nTarget: "+Le.element(i)+"\nCheck the "+ln.focus()+" event handlers"),1))})])},Rl=function(n){return n},Fl=function(n){var e,t,r=Rl(n),o=(e=r,t=it.readOr("components",[])(e),X.map(t,Il)),i=vn.deepMerge(Ml,r,it.wrap("components",o));return ze.value(Al(i))},Bl=function(n){var e=mr.asStructOrDie("external.component",mr.objOfOnly([Ut("element"),qt("uid")]),n),t=po(tl());e.uid().each(function(n){Cc.writeOnly(e.element(),n)});var r=nl({getSystem:t.get,config:N.none,hasConfigured:c.constant(!1),connect:function(n){t.set(n)},disconnect:function(){t.set(tl(function(){return r}))},element:c.constant(e.element()),spec:c.constant(n),readState:c.constant("No state"),syncComponents:c.noop,components:c.constant([]),events:c.constant({})});return Ua.premade(r)},Il=function(n){return Ua.getPremade(n).fold(function(){var e=vn.deepMerge({uid:Cc.generate("")},n);return Fl(e).getOrDie()},function(n){return n})},Hl={build:Il,premade:Ua.premade,external:Bl,text:function(n){var e=Wn.fromText(n);return Bl({element:e})}},Nl="alloy.item-hover",Vl="alloy.item-focus",jl={hover:c.constant(Nl),focus:c.constant(Vl),onHover:function(n){(Co(n.element()).isNone()||si.isFocused(n))&&(si.isFocused(n)||si.focus(n),En(n,Nl,{item:n}))},onFocus:function(n){En(n,Vl,{item:n})}},Pl=[Ut("data"),Ut("components"),Ut("dom"),qt("toggling"),Jt("itemBehaviours",{}),Jt("ignoreFocus",!1),Jt("domModification",{}),Lo.output("builder",function(n){return{dom:vn.deepMerge(n.dom(),{attributes:{role:n.toggling().isSome()?"menuitemcheckbox":"menuitem"}}),behaviours:vn.deepMerge(qr.derive([n.toggling().fold(ni.revoke,function(n){return ni.config(vn.deepMerge({aria:{mode:"checked"}},n))}),si.config({ignore:n.ignoreFocus(),onFocus:function(n){jl.onFocus(n)}}),Ha.config({mode:"execution"}),ms.config({store:{mode:"memory",initialValue:n.data()}})]),n.itemBehaviours()),events:xr.derive([xr.runWithTarget(ln.tapOrClick(),Dn),xr.cutter(s.mousedown()),xr.run(s.mouseover(),jl.onHover),xr.run(ln.focusItem(),si.focus)]),components:n.components(),domModification:n.domModification()}})],Ll=[Ut("dom"),Ut("components"),Lo.output("builder",function(n){return{dom:n.dom(),components:n.components(),events:xr.derive([xr.stopper(ln.focusItem())])}})],Wl=[ec.required({name:"widget",overrides:function(n){return{behaviours:qr.derive([ms.config({store:{mode:"manual",getValue:function(e){return n.data()},setValue:function(){}}})])}}})],Ul={owner:c.constant("item-widget"),parts:c.constant(Wl)},zl=[Ut("uid"),Ut("data"),Ut("components"),Ut("dom"),Jt("autofocus",!1),Jt("domModification",{}),bc(Ul.parts()),Lo.output("builder",function(n){var e=vc(Ul.owner(),n,Ul.parts()),t=yc(Ul.owner(),n,e.internals()),r=function(e){return Sc(e,n,"widget").map(function(n){return Ha.focusIn(n),n})},o=function(e,t){return tu(t.event().target())?N.none():n.autofocus()?(t.setSource(e.element()),N.none()):N.none()};return vn.deepMerge({dom:n.dom(),components:t,domModification:n.domModification(),events:xr.derive([xr.runOnExecute(function(n,e){r(n).each(function(n){e.stop()})}),xr.run(s.mouseover(),jl.onHover),xr.run(ln.focusItem(),function(e,t){n.autofocus()?r(e):si.focus(e)})]),behaviours:qr.derive([ms.config({store:{mode:"memory",initialValue:n.data()}}),si.config({onFocus:function(n){jl.onFocus(n)}}),Ha.config({mode:"special",onLeft:o,onRight:o,onEscape:function(e,t){return si.isFocused(e)||n.autofocus()?n.autofocus()?(t.setSource(e.element()),N.none()):N.none():(si.focus(e),N.some(!0))}})])})})],Kl=mr.choose("type",{widget:zl,item:Pl,separator:Ll}),Gl=[ec.group({factory:{sketch:function(n){var e=mr.asStructOrDie("menu.spec item",Kl,n);return e.builder()(e)}},name:"items",unit:"item",defaults:function(n,e){var t=Cc.generate("");return vn.deepMerge({uid:t},e)},overrides:function(n,e){return{type:e.type,ignoreFocus:n.fakeFocus(),domModification:{classes:[n.markers().item()]}}}})],$l=[Ut("value"),Ut("items"),Ut("dom"),Ut("components"),Jt("eventOrder",{}),Na("menuBehaviours",[Bi,ms,df,Ha]),Qt("movement",{mode:"menu",moveOnTab:!0},mr.choose("mode",{grid:[Lo.initSize(),Lo.output("config",function(n,e){return{mode:"flatgrid",selector:"."+n.markers().item(),initSize:{numColumns:e.initSize().numColumns(),numRows:e.initSize().numRows()},focusManager:n.focusManager()}})],menu:[Jt("moveOnTab",!0),Lo.output("config",function(n,e){return{mode:"menu",selector:"."+n.markers().item(),moveOnTab:e.moveOnTab(),focusManager:n.focusManager()}})]})),Lo.itemMarkers(),Jt("fakeFocus",!1),Jt("focusManager",Ii()),Lo.onHandler("onHighlight")],ql={name:c.constant("Menu"),schema:c.constant($l),parts:c.constant(Gl)},_l={focus:c.constant("alloy.menu-focus")},Xl={make:function(n,e,t,r){return vn.deepMerge({dom:vn.deepMerge(n.dom(),{attributes:{role:"menu"}}),uid:n.uid(),behaviours:vn.deepMerge(qr.derive([Bi.config({highlightClass:n.markers().selectedItem(),itemClass:n.markers().item(),onHighlight:n.onHighlight()}),ms.config({store:{mode:"memory",initialValue:n.value()}}),df.config({find:c.identity}),Ha.config(n.movement().config()(n,n.movement()))]),Va(n.menuBehaviours())),events:xr.derive([xr.run(jl.focus(),function(n,e){var t=e.event();n.getSystem().getByDom(t.target()).each(function(t){Bi.highlight(n,t),e.stop(),En(n,_l.focus(),{menu:n,item:t})})}),xr.run(jl.hover(),function(n,e){var t=e.event().item();Bi.highlight(n,t)})]),components:e,eventOrder:n.eventOrder()})}},Yl=Hc({name:"Menu",configFields:ql.schema(),partFields:ql.parts(),factory:Xl.make}),Jl=function(n,e){var t=ie.owner(e),r=ko(t).bind(function(n){var t=function(e){return Jn(n,e)};return t(e)?N.some(e):bo.descendant(e,t)}),o=n(e);return r.each(function(n){ko(t).filter(function(e){return Jn(e,n)}).orThunk(function(){Oo(n)})}),o},Ql=function(n,e,t,r){var o=n.getSystem().build(r);Ce.attachWith(n,o,t)},Zl=function(n,e){return n.components()},nd={append:function(n,e,t,r){Ql(n,0,ce.append,r)},prepend:function(n,e,t,r){Ql(n,0,ce.prepend,r)},remove:function(n,e,t,r){var o=Zl(n,e);X.find(o,function(n){return Jn(r.element(),n.element())}).each(Ce.detach)},set:function(n,e,t,r){Ce.detachChildren(n),Jl(function(){var e=X.map(r,n.getSystem().build);X.each(e,function(e){Ce.attach(n,e)})},n.element())},contents:Zl},ed=qr.create({fields:[],name:"replacing",apis:nd}),td=function(n,e,t,r){return it.readOptFrom(t,r).bind(function(r){return it.readOptFrom(n,r).bind(function(r){var o=td(n,e,t,r);return N.some([r].concat(o))})}).getOr([])},rd={generate:function(n,e){var t={};On.each(n,function(n,e){X.each(n,function(n){t[n]=e})});var r,o=e,i=(r=e,On.tupleMap(r,function(n,e){return{k:n,v:e}})),u=On.map(i,function(n,e){return[e].concat(td(t,o,i,e))});return On.map(t,function(n){return it.readOptFrom(u,n).getOr([n])})}},od={make:function(n,e){var t,r,o,i,u,a,s=(t=po({}),r=po({}),o=po({}),i=po(N.none()),u=po(c.constant([])),{setContents:function(n,e,a,c){i.set(N.some(n)),t.set(a),r.set(e),u.set(c);var s=c(e),f=rd.generate(s,a);o.set(f)},expand:function(n){return it.readOptFrom(t.get(),n).map(function(e){var t=it.readOptFrom(o.get(),n).getOr([]);return[e].concat(t)})},refresh:function(n){return it.readOptFrom(o.get(),n)},collapse:function(n){return it.readOptFrom(o.get(),n).bind(function(n){return n.length>1?N.some(n.slice(1)):N.none()})},lookupMenu:a=function(n){return it.readOptFrom(r.get(),n)},otherMenus:function(n){var e=u.get()(r.get());return X.difference(On.keys(e),n)},getPrimary:function(){return i.get().bind(a)},getMenus:function(){return r.get()},clear:function(){t.set({}),r.set({}),o.set({}),i.set(N.none())},isClear:function(){return i.get().isNone()}}),f=function(t){var r,o,i=(r=t,o=n.data().menus(),On.map(o,function(t,o){var i=Yl.sketch(vn.deepMerge(t,{value:o,items:t.items,markers:it.narrow(e.markers,["item","selectedItem"]),fakeFocus:n.fakeFocus(),onHighlight:n.onHighlight(),focusManager:n.fakeFocus()?Hi():Ii()}));return r.getSystem().build(i)}));return s.setContents(n.data().primary(),i,n.data().expansions(),function(n){return d(t,n)}),s.getPrimary()},l=function(n){return ms.getValue(n).value},d=function(e,t){return On.map(n.data().menus(),function(n,e){return X.bind(n.items,function(n){return"separator"===n.type?[]:[n.data.value]})})},m=function(n,e){Bi.highlight(n,e),Bi.getHighlighted(e).orThunk(function(){return Bi.getFirst(e)}).each(function(e){An(n,e.element(),ln.focusItem())})},p=function(n,e){return ut(X.map(e,n.lookupMenu))},g=function(e,t,r){return N.from(r[0]).bind(t.lookupMenu).map(function(o){var i=p(t,r.slice(1));X.each(i,function(e){co.add(e.element(),n.markers().backgroundMenu())}),Se.inBody(o.element())||ed.append(e,Hl.premade(o)),kl.remove(o.element(),[n.markers().backgroundMenu()]),m(e,o);var u=p(t,t.otherMenus(r));return X.each(u,function(t){kl.remove(t.element(),[n.markers().backgroundMenu()]),n.stayInDom()||ed.remove(e,t)}),o})},h=function(e,t){var r=l(t);return s.expand(r).bind(function(r){return N.from(r[0]).bind(s.lookupMenu).each(function(r){Se.inBody(r.element())||ed.append(e,Hl.premade(r)),n.onOpenSubmenu()(e,t,r),Bi.highlightFirst(r)}),g(e,s,r)})},v=function(e,t){var r=l(t);return s.collapse(r).bind(function(r){return g(e,s,r).map(function(r){return n.onCollapseMenu()(e,t,r),r})})},y=function(e){return function(t,r){return Oi(r.getSource(),"."+n.markers().item()).bind(function(n){return t.getSystem().getByDom(n).bind(function(n){return e(t,n)})})}},b=xr.derive([xr.run(_l.focus(),function(n,e){var t=e.event().menu();Bi.highlight(n,t)}),xr.runOnExecute(function(e,t){var r=t.event().target();return e.getSystem().getByDom(r).bind(function(t){return 0===l(t).indexOf("collapse-item")?v(e,t):h(e,t).orThunk(function(){return n.onExecute()(e,t)})})}),xr.runOnAttached(function(e,t){f(e).each(function(t){ed.append(e,Hl.premade(t)),n.openImmediately()&&(m(e,t),n.onOpenMenu()(e,t))})})].concat(n.navigateOnHover()?[xr.run(jl.hover(),function(e,t){var r,o,i=t.event().item();r=e,o=l(i),s.refresh(o).bind(function(n){return g(r,s,n)}),h(e,i),n.onHover()(e,i)})]:[]));return{uid:n.uid(),dom:n.dom(),behaviours:vn.deepMerge(qr.derive([Ha.config({mode:"special",onRight:y(function(n,e){return tu(e.element())?N.none():h(n,e)}),onLeft:y(function(n,e){return tu(e.element())?N.none():v(n,e)}),onEscape:y(function(e,t){return v(e,t).orThunk(function(){return n.onEscape()(e,t)})}),focusIn:function(n,e){s.getPrimary().each(function(e){An(n,e.element(),ln.focusItem())})}}),Bi.config({highlightClass:n.markers().selectedMenu(),itemClass:n.markers().menu()}),df.config({find:function(n){return Bi.getHighlighted(n)}}),ed.config({})]),Va(n.tmenuBehaviours())),eventOrder:n.eventOrder(),apis:{collapseMenu:function(n){Bi.getHighlighted(n).each(function(e){Bi.getHighlighted(e).each(function(e){v(n,e)})})}},events:b}},collapseItem:c.constant("collapse-item")},id=Ic({name:"TieredMenu",configFields:[Lo.onStrictKeyboardHandler("onExecute"),Lo.onStrictKeyboardHandler("onEscape"),Lo.onStrictHandler("onOpenMenu"),Lo.onStrictHandler("onOpenSubmenu"),Lo.onHandler("onCollapseMenu"),Jt("openImmediately",!0),Kt("data",[Ut("primary"),Ut("menus"),Ut("expansions")]),Jt("fakeFocus",!1),Lo.onHandler("onHighlight"),Lo.onHandler("onHover"),Lo.tieredMenuMarkers(),Ut("dom"),Jt("navigateOnHover",!0),Jt("stayInDom",!1),Na("tmenuBehaviours",[Ha,Bi,df,ed]),Jt("eventOrder",{})],apis:{collapseMenu:function(n,e){n.collapseMenu(e)}},factory:od.make,extraApis:{tieredData:function(n,e,t){return{primary:n,menus:e,expansions:t}},singleData:function(n,e){return{primary:n,menus:it.wrap(n,e),expansions:{}}},collapseItem:function(n){return{value:Pa(od.collapseItem()),text:n}}}}),ud=function(n,e,t,r){return it.readOptFrom(e.routes(),r.start()).map(c.apply).bind(function(n){return it.readOptFrom(n,r.destination()).map(c.apply)})},ad=function(n,e,t,r){return ud(0,e,0,r).bind(function(n){return n.transition().map(function(e){return{transition:c.constant(e),route:c.constant(n)}})})},cd=function(n,e,t){var r,o,i;(r=n,o=e,i=t,sd(r,o,i).bind(function(n){return ad(r,o,i,n)})).each(function(t){var r=t.transition();co.remove(n.element(),r.transitionClass()),Ne.remove(n.element(),e.destinationAttr())})},sd=function(n,e,t){var r=n.element();return Ne.has(r,e.destinationAttr())?N.some({start:c.constant(Ne.get(n.element(),e.stateAttr())),destination:c.constant(Ne.get(n.element(),e.destinationAttr()))}):N.none()},fd=function(n,e,t,r){cd(n,e,t),Ne.has(n.element(),e.stateAttr())&&Ne.get(n.element(),e.stateAttr())!==r&&e.onFinish()(n,r),Ne.set(n.element(),e.stateAttr(),r)},ld={findRoute:ud,disableTransition:cd,getCurrentRoute:sd,jumpTo:fd,progressTo:function(n,e,t,r){var o,i;i=e,Ne.has((o=n).element(),i.destinationAttr())&&(Ne.set(o.element(),i.stateAttr(),Ne.get(o.element(),i.destinationAttr())),Ne.remove(o.element(),i.destinationAttr()));var u,a,s,f=(u=n,a=e,s=r,{start:c.constant(Ne.get(u.element(),a.stateAttr())),destination:c.constant(s)});ad(n,e,t,f).fold(function(){fd(n,e,t,r)},function(o){cd(n,e,t);var i=o.transition();co.add(n.element(),i.transitionClass()),Ne.set(n.element(),e.destinationAttr(),r)})},getState:function(n,e,t){var r=n.element();return Ne.has(r,e.stateAttr())?N.some(Ne.get(r,e.stateAttr())):N.none()}},dd={events:function(n,e){return xr.derive([xr.run(s.transitionend(),function(t,r){var o=r.event().raw();ld.getCurrentRoute(t,n,e).each(function(r){ld.findRoute(t,n,e,r).each(function(i){i.transition().each(function(i){o.propertyName===i.property()&&(ld.jumpTo(t,n,e,r.destination()),n.onTransition()(t,r))})})})}),xr.runOnAttached(function(t,r){ld.jumpTo(t,n,e,n.initialState())})])}},md=[Jt("destinationAttr","data-transitioning-destination"),Jt("stateAttr","data-transitioning-state"),Ut("initialState"),Lo.onHandler("onTransition"),Lo.onHandler("onFinish"),zt("routes",mr.setOf(ze.value,mr.setOf(ze.value,mr.objOfOnly([Yt("transition",[Ut("property"),Ut("transitionClass")])]))))],pd=qr.create({fields:md,name:"transitioning",active:dd,apis:ld,extra:{createRoutes:function(n){var e={};return On.each(n,function(n,t){var r=t.split("<->");e[r[0]]=it.wrap(r[1],n),e[r[1]]=it.wrap(r[0],n)}),e},createBistate:function(n,e,t){return it.wrapAll([{key:n,value:it.wrap(e,t)},{key:e,value:it.wrap(n,t)}])},createTristate:function(n,e,t,r){return it.wrapAll([{key:n,value:it.wrapAll([{key:e,value:r},{key:t,value:r}])},{key:e,value:it.wrapAll([{key:n,value:r},{key:t,value:r}])},{key:t,value:it.wrapAll([{key:n,value:r},{key:e,value:r}])}])}}}),gd=ii.resolve("scrollable"),hd={register:function(n){co.add(n,gd)},deregister:function(n){co.remove(n,gd)},scrollable:c.constant(gd)},vd=function(n){return it.readOptFrom(n,"format").getOr(n.title)},yd=function(n,e,t,r,o){return{data:{value:n,text:e},type:"item",dom:{tag:"div",classes:o?[ii.resolve("styles-item-is-menu")]:[]},toggling:{toggleOnExecute:!1,toggleClass:ii.resolve("format-matches"),selected:t},itemBehaviours:qr.derive(o?[]:[ei(n,function(n,e){(e?ni.on:ni.off)(n)})]),components:[{dom:{tag:"div",attributes:{style:r},innerHtml:e}}]}},bd=function(n,e,t,r){return{value:n,dom:{tag:"div"},components:[Vc.sketch({dom:{tag:"div",classes:[ii.resolve("styles-collapser")]},components:r?[{dom:{tag:"span",classes:[ii.resolve("styles-collapse-icon")]}},Hl.text(n)]:[Hl.text(n)],action:function(n){if(r){var e=t().get(n);id.collapseMenu(e)}}}),{dom:{tag:"div",classes:[ii.resolve("styles-menu-items-container")]},components:[Yl.parts().items({})],behaviours:qr.derive([sf.config("adhoc-scrollable-menu",[xr.runOnAttached(function(n,e){Xi.set(n.element(),"overflow-y","auto"),Xi.set(n.element(),"-webkit-overflow-scrolling","touch"),hd.register(n.element())}),xr.runOnDetached(function(n){Xi.remove(n.element(),"overflow-y"),Xi.remove(n.element(),"-webkit-overflow-scrolling"),hd.deregister(n.element())})])])}],items:e,menuBehaviours:qr.derive([pd.config({initialState:"after",routes:pd.createTristate("before","current","after",{transition:{property:"transform",transitionClass:"transitioning"}})})])}},wd=function(n){var e,t,r,o,i,u=(e=n.formats,t=function(){return a},r=bd("Styles",[].concat(X.map(e.items,function(n){return yd(vd(n),n.title,n.isSelected(),n.getPreview(),it.hasKey(e.expansions,vd(n)))})),t,!1),o=On.map(e.menus,function(n,r){var o=X.map(n,function(n){return yd(vd(n),n.title,n.isSelected!==undefined&&n.isSelected(),n.getPreview!==undefined?n.getPreview():"",it.hasKey(e.expansions,vd(n)))});return bd(r,o,t,!0)}),i=vn.deepMerge(o,it.wrap("styles",r)),{tmenu:id.tieredData("styles",i,e.expansions)}),a=Is(id.sketch({dom:{tag:"div",classes:[ii.resolve("styles-menu")]},components:[],fakeFocus:!0,stayInDom:!0,onExecute:function(e,t){var r=ms.getValue(t);n.handle(t,r.value)},onEscape:function(){},onOpenMenu:function(n,e){var t=ys(n.element());vs(e.element(),t),pd.jumpTo(e,"current")},onOpenSubmenu:function(n,e,t){var r=ys(n.element()),o=Si(e.element(),'[role="menu"]').getOrDie("hacky"),i=n.getSystem().getByDom(o).getOrDie();vs(t.element(),r),pd.progressTo(i,"before"),pd.jumpTo(t,"after"),pd.progressTo(t,"current")},onCollapseMenu:function(n,e,t){var r=Si(e.element(),'[role="menu"]').getOrDie("hacky"),o=n.getSystem().getByDom(r).getOrDie();pd.progressTo(o,"after"),pd.progressTo(t,"current")},navigateOnHover:!1,openImmediately:!0,data:u.tmenu,markers:{backgroundMenu:ii.resolve("styles-background-menu"),menu:ii.resolve("styles-menu"),selectedMenu:ii.resolve("styles-selected-menu"),item:ii.resolve("styles-item"),selectedItem:ii.resolve("styles-selected-item")}}));return a.asSpec()},Sd=function(n){return it.hasKey(n,"items")?(e=n,t=vn.deepMerge(it.exclude(e,["items"]),{menu:!0}),r=xd(e.items),{item:t,menus:vn.deepMerge(r.menus,it.wrap(e.title,r.items)),expansions:vn.deepMerge(r.expansions,it.wrap(e.title,e.title))}):{item:n,menus:{},expansions:{}};var e,t,r},xd=function(n){return X.foldr(n,function(n,e){var t=Sd(e);return{menus:vn.deepMerge(n.menus,t.menus),items:[t.item].concat(n.items),expansions:vn.deepMerge(n.expansions,t.expansions)}},{menus:{},expansions:{},items:[]})},Od={expand:xd},Td=function(n,e){var t=function(e){return function(){return n.formatter.match(e)}},r=function(e){return function(){return n.formatter.getCssText(e)}},o=it.readOptFrom(e,"style_formats").getOr(_f),i=function(e){return X.map(e,function(e){if(it.hasKey(e,"items")){var o=i(e.items);return vn.deepMerge((l=e,vn.deepMerge(l,{isSelected:c.constant(!1),getPreview:c.constant("")})),{items:o})}return it.hasKey(e,"format")?(f=e,vn.deepMerge(f,{isSelected:t(f.format),getPreview:r(f.format)})):(a=Pa((u=e).title),s=vn.deepMerge(u,{format:a,isSelected:t(a),getPreview:r(a)}),n.formatter.register(a,s),s);var u,a,s,f,l})};return i(o)},kd=function(n,e,t){var r,o,i,u=(r=n,i=(o=function(n){return X.bind(n,function(n){return n.items!==undefined?o(n.items).length>0?[n]:[]:!it.hasKey(n,"format")||r.formatter.canApply(n.format)?[n]:[]})})(e),Od.expand(i));return wd({formats:u,handle:function(e,r){n.undoManager.transact(function(){ni.isOn(e)?n.formatter.remove(r):n.formatter.apply(r)}),t()}})},Cd=["undo","bold","italic","link","image","bullist","styleselect"],Ed=function(n){var e=n.replace(/\|/g," ").trim();return e.length>0?e.split(/\s+/):[]},Dd=function(n){return X.bind(n,function(n){return mn.isArray(n)?Dd(n):Ed(n)})},Ad=function(n){var e=n.toolbar!==undefined?n.toolbar:Cd;return mn.isArray(e)?Dd(e):Ed(e)},Md=function(n,e){var t=function(n){return function(){return $c.forToolbarCommand(e,n)}},r=function(n){return function(){return $c.forToolbarStateCommand(e,n)}},o=function(n,t,r){return function(){return $c.forToolbarStateAction(e,n,t,r)}},i=t("undo"),u=t("redo"),a=r("bold"),c=r("italic"),s=r("underline"),f=t("removeformat"),l=o("unlink","link",function(){e.execCommand("unlink",null,!1)}),d=o("unordered-list","ul",function(){e.execCommand("InsertUnorderedList",null,!1)}),m=o("ordered-list","ol",function(){e.execCommand("InsertOrderedList",null,!1)}),p=Td(e,e.settings),g=function(){return kd(e,p,function(){e.fire("scrollIntoView")})},h=function(n,t){return{isSupported:function(){return n.forall(function(n){return it.hasKey(e.buttons,n)})},sketch:t}};return{undo:h(N.none(),i),redo:h(N.none(),u),bold:h(N.none(),a),italic:h(N.none(),c),underline:h(N.none(),s),removeformat:h(N.none(),f),link:h(N.none(),function(){return qf(n,e)}),unlink:h(N.none(),l),image:h(N.none(),function(){return Ys(e)}),bullist:h(N.some("bullist"),d),numlist:h(N.some("numlist"),m),fontsizeselect:h(N.none(),function(){return Bs(n,e)}),forecolor:h(N.none(),function(){return Os(n,e)}),styleselect:h(N.none(),function(){return $c.forToolbar("style-formats",function(t){e.fire("toReading"),n.dropup().appear(g,ni.on,t)},qr.derive([ni.config({toggleClass:ii.resolve("toolbar-button-selected"),toggleOnExecute:!1,aria:{mode:"pressed"}}),Uo.config({channels:it.wrapAll([ri(Ro.orientationChanged(),ni.off),ri(Ro.dropupDismissed(),ni.off)])})]))})}},Rd=function(n,e){var t=Ad(n),r={};return X.bind(t,function(n){var t=!it.hasKey(r,n)&&it.hasKey(e,n)&&e[n].isSupported()?[e[n].sketch()]:[];return r[n]=!0,t})},Fd=function(n,e){return function(t){if(n(t)){var r,o,i,u,a,s,f,l=Wn.fromDom(t.target),d=function(){t.stopPropagation()},m=function(){t.preventDefault()},p=c.compose(m,d),g=(r=l,o=t.clientX,i=t.clientY,u=d,a=m,s=p,f=t,{target:c.constant(r),x:c.constant(o),y:c.constant(i),stop:u,prevent:a,kill:s,raw:c.constant(f)});e(g)}}},Bd=function(n,e,t,r,o){var i=Fd(t,r);return n.dom().addEventListener(e,i,o),{unbind:c.curry(Id,n,e,i,o)}},Id=function(n,e,t,r){n.dom().removeEventListener(e,t,r)},Hd=function(n,e,t,r){return Bd(n,e,t,r,!1)},Nd=function(n,e,t,r){return Bd(n,e,t,r,!0)},Vd=c.constant(!0),jd={bind:function(n,e,t){return Hd(n,e,Vd,t)},capture:function(n,e,t){return Nd(n,e,Vd,t)}},Pd=function(n){var e=n.matchMedia("(orientation: portrait)").matches;return{isPortrait:c.constant(e)}},Ld=Pd,Wd=function(n,e){var t=Wn.fromDom(n),r=null,o=jd.bind(t,"orientationchange",function(){clearInterval(r);var t=Pd(n);e.onChange(t),i(function(){e.onReady(t)})}),i=function(e){clearInterval(r);var t=n.innerHeight,o=0;r=setInterval(function(){t!==n.innerHeight?(clearInterval(r),e(N.some(n.innerHeight))):o>20&&(clearInterval(r),e(N.none())),o++},50)};return{onAdjustment:i,destroy:function(){o.unbind()}}},Ud=function(n){var e=sn.detect().os.isiOS(),t=Pd(n).isPortrait();return e&&!t?n.screen.height:n.screen.width},zd=function(n){return n.raw().touches===undefined||1!==n.raw().touches.length?N.none():N.some(n.raw().touches[0])},Kd=function(n){var e,t,r,o=po(N.none()),i=(e=function(e){o.set(N.none()),n.triggerEvent(ln.longpress(),e)},t=400,r=null,{cancel:function(){null!==r&&(clearTimeout(r),r=null)},schedule:function(){var n=arguments;r=setTimeout(function(){e.apply(null,n),r=null},t)}}),u=it.wrapAll([{key:s.touchstart(),value:function(n){return zd(n).each(function(e){i.cancel();var t={x:c.constant(e.clientX),y:c.constant(e.clientY),target:n.target};i.schedule(t),o.set(N.some(t))}),N.none()}},{key:s.touchmove(),value:function(n){return i.cancel(),zd(n).each(function(n){o.get().each(function(e){var t,r,i,u;t=n,r=e,i=Math.abs(t.clientX-r.x()),u=Math.abs(t.clientY-r.y()),(i>5||u>5)&&o.set(N.none())})}),N.none()}},{key:s.touchend(),value:function(e){return i.cancel(),o.get().filter(function(n){return Jn(n.target(),e.target())}).map(function(t){return n.triggerEvent(ln.tap(),e)})}}]);return{fireIfReady:function(n,e){return it.readOptFrom(u,e).bind(function(e){return e(n)})}}},Gd=function(n){var e=Kd({triggerEvent:function(e,t){n.onTapContent(t)}});return{fireTouchstart:function(n){e.fireIfReady(n,"touchstart")},onTouchend:function(){return jd.bind(n.body(),"touchend",function(n){e.fireIfReady(n,"touchend")})},onTouchmove:function(){return jd.bind(n.body(),"touchmove",function(n){e.fireIfReady(n,"touchmove")})}}},$d=sn.detect().os.version.major>=6,qd=function(n,e,t){var r=Gd(n),o=ie.owner(e),i=function(n){return!Jn(n.start(),n.finish())||n.soffset()!==n.foffset()},u=function(){var r=n.doc().dom().hasFocus()&&n.getSelection().exists(i);t.getByDom(e).each(!0===(r||ko(o).filter(function(n){return"input"===ye.name(n)}).exists(function(n){return n.dom().selectionStart!==n.dom().selectionEnd}))?ni.on:ni.off)},a=[jd.bind(n.body(),"touchstart",function(e){n.onTouchContent(),r.fireTouchstart(e)}),r.onTouchmove(),r.onTouchend(),jd.bind(e,"touchstart",function(e){n.onTouchToolstrip()}),n.onToReading(function(){To(n.body())}),n.onToEditing(c.noop),n.onScrollToCursor(function(e){e.preventDefault(),n.getCursorBox().each(function(e){var t=n.win(),r=e.top()>t.innerHeight||e.bottom()>t.innerHeight?e.bottom()-t.innerHeight+50:0;0!==r&&t.scrollTo(t.pageXOffset,t.pageYOffset+r)})})].concat(!0===$d?[]:[jd.bind(Wn.fromDom(n.win()),"blur",function(){t.getByDom(e).each(ni.off)}),jd.bind(o,"select",u),jd.bind(n.doc(),"selectionchange",u)]);return{destroy:function(){X.each(a,function(n){n.unbind()})}}},_d=function(n,e){var t=parseInt(Ne.get(n,e),10);return isNaN(t)?0:t},Xd=(rl=ye.isText,ol="text",il=function(n){return rl(n)?N.from(n.dom().nodeValue):N.none()},ul=sn.detect().browser,{get:function(n){if(!rl(n))throw new Error("Can only get "+ol+" value of a "+ol+" node");return al(n).getOr("")},getOption:al=ul.isIE()&&10===ul.version.major?function(n){try{return il(n)}catch(e){return N.none()}}:il,set:function(n,e){if(!rl(n))throw new Error("Can only set raw "+ol+" value of a "+ol+" node");n.dom().nodeValue=e}}),Yd=function(n){return Xd.getOption(n)},Jd=function(n){return"img"===ye.name(n)?1:Yd(n).fold(function(){return ie.children(n).length},function(n){return n.length})},Qd=Jd,Zd=Ke([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),nm={before:Zd.before,on:Zd.on,after:Zd.after,cata:function(n,e,t,r){return n.fold(e,t,r)},getStart:function(n){return n.fold(c.identity,c.identity,c.identity)}},em=Ke([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),tm=In.immutable("start","soffset","finish","foffset"),rm={domRange:em.domRange,relative:em.relative,exact:em.exact,exactFromRange:function(n){return em.exact(n.start(),n.soffset(),n.finish(),n.foffset())},range:tm,getWin:function(n){var e=n.match({domRange:function(n){return Wn.fromDom(n.startContainer)},relative:function(n,e){return nm.getStart(n)},exact:function(n,e,t,r){return n}});return ie.defaultView(e)}},om=function(n,e,t,r){var o=ie.owner(n).dom().createRange();return o.setStart(n.dom(),e),o.setEnd(t.dom(),r),o},im=function(n,e,t,r){var o=om(n,e,t,r),i=Jn(n,t)&&e===r;return o.collapsed&&!i},um=function(n,e){n.selectNodeContents(e.dom())},am=function(n){n.deleteContents()},cm=function(n){return{left:c.constant(n.left),top:c.constant(n.top),right:c.constant(n.right),bottom:c.constant(n.bottom),width:c.constant(n.width),height:c.constant(n.height)}},sm={create:function(n){return n.document.createRange()},replaceWith:function(n,e){am(n),n.insertNode(e.dom())},selectNodeContents:function(n,e){var t=n.document.createRange();return um(t,e),t},selectNodeContentsUsing:um,relativeToNative:function(n,e,t){var r,o,i=n.document.createRange();return r=i,e.fold(function(n){r.setStartBefore(n.dom())},function(n,e){r.setStart(n.dom(),e)},function(n){r.setStartAfter(n.dom())}),o=i,t.fold(function(n){o.setEndBefore(n.dom())},function(n,e){o.setEnd(n.dom(),e)},function(n){o.setEndAfter(n.dom())}),i},exactToNative:function(n,e,t,r,o){var i=n.document.createRange();return i.setStart(e.dom(),t),i.setEnd(r.dom(),o),i},deleteContents:am,cloneFragment:function(n){var e=n.cloneContents();return Wn.fromDom(e)},getFirstRect:function(n){var e=n.getClientRects(),t=e.length>0?e[0]:n.getBoundingClientRect();return t.width>0||t.height>0?N.some(t).map(cm):N.none()},getBounds:function(n){var e=n.getBoundingClientRect();return e.width>0||e.height>0?N.some(e).map(cm):N.none()},isWithin:function(n,e){return e.compareBoundaryPoints(n.END_TO_START,n)<1&&e.compareBoundaryPoints(n.START_TO_END,n)>-1},toString:function(n){return n.toString()}},fm=Ke([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),lm=function(n,e,t){return e(Wn.fromDom(t.startContainer),t.startOffset,Wn.fromDom(t.endContainer),t.endOffset)},dm=function(n,e){var t,r,o,i=(t=n,e.match({domRange:function(n){return{ltr:c.constant(n),rtl:N.none}},relative:function(n,e){return{ltr:f(function(){return sm.relativeToNative(t,n,e)}),rtl:f(function(){return N.some(sm.relativeToNative(t,e,n))})}},exact:function(n,e,r,o){return{ltr:f(function(){return sm.exactToNative(t,n,e,r,o)}),rtl:f(function(){return N.some(sm.exactToNative(t,r,o,n,e))})}}}));return(o=(r=i).ltr()).collapsed?r.rtl().filter(function(n){return!1===n.collapsed}).map(function(n){return fm.rtl(Wn.fromDom(n.endContainer),n.endOffset,Wn.fromDom(n.startContainer),n.startOffset)}).getOrThunk(function(){return lm(0,fm.ltr,o)}):lm(0,fm.ltr,o)},mm=(fm.ltr,fm.rtl,dm),pm=function(n,e){return dm(n,e).match({ltr:function(e,t,r,o){var i=n.document.createRange();return i.setStart(e.dom(),t),i.setEnd(r.dom(),o),i},rtl:function(e,t,r,o){var i=n.document.createRange();return i.setStart(r.dom(),o),i.setEnd(e.dom(),t),i}})},gm=(document.caretPositionFromPoint||document.caretRangeFromPoint,function(n,e){var t=ye.name(n);return"input"===t?nm.after(n):X.contains(["br","img"],t)?0===e?nm.before(n):nm.after(n):nm.on(n,e)}),hm=function(n,e,t,r){var o=gm(n,e),i=gm(t,r);return rm.relative(o,i)},vm=hm,ym=function(n,e){N.from(n.getSelection()).each(function(n){n.removeAllRanges(),n.addRange(e)})},bm=function(n,e,t,r,o){var i=sm.exactToNative(n,e,t,r,o);ym(n,i)},wm=function(n,e){return mm(n,e).match({ltr:function(e,t,r,o){bm(n,e,t,r,o)},rtl:function(e,t,r,o){var i=n.getSelection();i.setBaseAndExtent?i.setBaseAndExtent(e.dom(),t,r.dom(),o):i.extend?(i.collapse(e.dom(),t),i.extend(r.dom(),o)):bm(n,r,o,e,t)}})},Sm=function(n){var e=Wn.fromDom(n.anchorNode),t=Wn.fromDom(n.focusNode);return im(e,n.anchorOffset,t,n.focusOffset)?N.some(rm.range(Wn.fromDom(n.anchorNode),n.anchorOffset,Wn.fromDom(n.focusNode),n.focusOffset)):function(n){if(n.rangeCount>0){var e=n.getRangeAt(0),t=n.getRangeAt(n.rangeCount-1);return N.some(rm.range(Wn.fromDom(e.startContainer),e.startOffset,Wn.fromDom(t.endContainer),t.endOffset))}return N.none()}(n)},xm=function(n){var e=n.getSelection();return e.rangeCount>0?Sm(e):N.none()},Om=function(n,e,t,r,o){var i=vm(e,t,r,o);wm(n,i)},Tm=xm,km=function(n){return xm(n).map(function(n){return rm.exact(n.start(),n.soffset(),n.finish(),n.foffset())})},Cm=function(n){n.getSelection().removeAllRanges()},Em=function(n,e){var t=pm(n,e);return sm.getFirstRect(t)},Dm=function(n){return{left:n.left,top:n.top,right:n.right,bottom:n.bottom,width:c.constant(2),height:n.height}},Am=function(n){return{left:c.constant(n.left),top:c.constant(n.top),right:c.constant(n.right),bottom:c.constant(n.bottom),width:c.constant(n.width),height:c.constant(n.height)}},Mm={getRectangles:function(n){var e=n.getSelection();return e!==undefined&&e.rangeCount>0?function(n){if(n.collapsed){var e=Wn.fromDom(n.startContainer);return ie.parent(e).bind(function(t){var r=rm.exact(e,n.startOffset,t,Qd(t));return Em(n.startContainer.ownerDocument.defaultView,r).map(Dm).map(X.pure)}).getOr([])}return X.map(n.getClientRects(),Am)}(e.getRangeAt(0)):[]}},Rm=function(n){n.focus();var e=Wn.fromDom(n.document.body);(ko().exists(function(n){return X.contains(["input","textarea"],ye.name(n))})?function(n){setTimeout(function(){n()},0)}:c.apply)(function(){ko().each(To),Oo(e)})},Fm="data-"+ii.resolve("last-outer-height"),Bm=function(n,e){Ne.set(n,Fm,e)},Im=function(n){return{top:c.constant(n.top()),bottom:c.constant(n.top()+n.height())}},Hm=function(n,e){var t=_d(e,Fm),r=n.innerHeight;return t>r?N.some(t-r):N.none()},Nm=function(n,e){var t=Wn.fromDom(e.document.body),r=jd.bind(Wn.fromDom(n),"resize",function(){Hm(n,t).each(function(n){var t,r;(t=e,r=Mm.getRectangles(t),r.length>0?N.some(r[0]).map(Im):N.none()).each(function(t){var r,o,i,u=(r=e,i=n,(o=t).top()>r.innerHeight||o.bottom()>r.innerHeight?Math.min(i,o.bottom()-r.innerHeight+50):0);0!==u&&e.scrollTo(e.pageXOffset,e.pageYOffset+u)})}),Bm(t,n.innerHeight)});return Bm(t,n.innerHeight),{toEditing:function(){Rm(e)},destroy:function(){r.unbind()}}},Vm=function(n){return N.some(Wn.fromDom(n.dom().contentWindow.document.body))},jm=function(n){return N.some(Wn.fromDom(n.dom().contentWindow.document))},Pm=function(n){return N.from(n.dom().contentWindow)},Lm=function(n){return Pm(n).bind(Tm)},Wm=function(n){return n.getFrame()},Um=function(n,e){return function(t){return t[n].getOrThunk(function(){var n=Wm(t);return function(){return e(n)}})()}},zm=function(n,e,t,r){return n[t].getOrThunk(function(){return function(n){return jd.bind(e,r,n)}})},Km=function(n){return{left:c.constant(n.left),top:c.constant(n.top),right:c.constant(n.right),bottom:c.constant(n.bottom),width:c.constant(n.width),height:c.constant(n.height)}},Gm={getBody:Um("getBody",Vm),getDoc:Um("getDoc",jm),getWin:Um("getWin",Pm),getSelection:Um("getSelection",Lm),getFrame:Wm,getActiveApi:function(n){var e=Wm(n);return Vm(e).bind(function(t){return jm(e).bind(function(r){return Pm(e).map(function(o){var i=Wn.fromDom(r.dom().documentElement),u=n.getCursorBox.getOrThunk(function(){return function(){return km(o).bind(function(n){return Em(o,n).orThunk(function(){return Tm(o).filter(function(n){return Jn(n.start(),n.finish())&&n.soffset()===n.foffset()}).bind(function(n){var e=n.start().dom().getBoundingClientRect();return e.width>0||e.height>0?N.some(e).map(Km):N.none()})})})}}),a=n.setSelection.getOrThunk(function(){return function(n,e,t,r){Om(o,n,e,t,r)}}),s=n.clearSelection.getOrThunk(function(){return function(){Cm(o)}});return{body:c.constant(t),doc:c.constant(r),win:c.constant(o),html:c.constant(i),getSelection:c.curry(Lm,e),setSelection:a,clearSelection:s,frame:c.constant(e),onKeyup:zm(n,r,"onKeyup","keyup"),onNodeChanged:zm(n,r,"onNodeChanged","selectionchange"),onDomChanged:n.onDomChanged,onScrollToCursor:n.onScrollToCursor,onScrollToElement:n.onScrollToElement,onToReading:n.onToReading,onToEditing:n.onToEditing,onToolbarScrollStart:n.onToolbarScrollStart,onTouchContent:n.onTouchContent,onTapContent:n.onTapContent,onTouchToolstrip:n.onTouchToolstrip,getCursorBox:u}})})})}},$m="data-ephox-mobile-fullscreen-style",qm="position:absolute!important;",_m="top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;",Xm=sn.detect().os.isAndroid(),Ym=function(n,e){var t,r,o=function(n){return function(e){var t=Ne.get(e,"style"),r=t===undefined?"no-styles":t.trim();r!==n&&(Ne.set(e,$m,r),Ne.set(e,"style",n))}},i=hi(n,"*"),u=X.bind(i,function(n){return vi(n,"*")}),a=(t=e,(r=Xi.get(t,"background-color"))!==undefined&&""!==r?"background-color:"+r+"!important":"background-color:rgb(255,255,255)!important;");X.each(u,o("display:none!important;")),X.each(i,o(qm+_m+a)),o((!0===Xm?"":qm)+_m+a)(n)},Jm=function(){var n=gi("["+$m+"]");X.each(n,function(n){var e=Ne.get(n,$m);"no-styles"!==e?Ne.set(n,"style",e):Ne.remove(n,"style"),Ne.remove(n,$m)})},Qm=function(){var n=wi("head").getOrDie(),e=wi('meta[name="viewport"]').getOrThunk(function(){var e=Wn.fromTag("meta");return Ne.set(e,"name","viewport"),ce.append(n,e),e}),t=Ne.get(e,"content");return{maximize:function(){Ne.set(e,"content","width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0")},restore:function(){t!==undefined&&null!==t&&t.length>0?Ne.set(e,"content",t):Ne.set(e,"content","user-scalable=yes")}}},Zm=function(n,e){var t=Qm(),r=Wf.api(),o=Wf.api();return{enter:function(){e.hide(),co.add(n.container,ii.resolve("fullscreen-maximized")),co.add(n.container,ii.resolve("android-maximized")),t.maximize(),co.add(n.body,ii.resolve("android-scroll-reload")),r.set(Nm(n.win,Gm.getWin(n.editor).getOrDie("no"))),Gm.getActiveApi(n.editor).each(function(e){Ym(n.container,e.body()),o.set(qd(e,n.toolstrip,n.alloy))})},exit:function(){t.restore(),e.show(),co.remove(n.container,ii.resolve("fullscreen-maximized")),co.remove(n.container,ii.resolve("android-maximized")),Jm(),co.remove(n.body,ii.resolve("android-scroll-reload")),o.clear(),r.clear()}}},np=function(n,e){var t=null;return{cancel:function(){null!==t&&(clearTimeout(t),t=null)},throttle:function(){var r=arguments;null===t&&(t=setTimeout(function(){n.apply(null,r),t=null,r=null},e))}}},ep=function(n,e){var t=null;return{cancel:function(){null!==t&&(clearTimeout(t),t=null)},throttle:function(){var r=arguments;null!==t&&clearTimeout(t),t=setTimeout(function(){n.apply(null,r),t=null,r=null},e)}}},tp=function(n,e){var t=Is(mf.sketch({dom:zc.dom('<div aria-hidden="true" class="${prefix}-mask-tap-icon"></div>'),containerBehaviours:qr.derive([ni.config({toggleClass:ii.resolve("mask-tap-icon-selected"),toggleOnExecute:!1})])})),r=np(n,200);return mf.sketch({dom:zc.dom('<div class="${prefix}-disabled-mask"></div>'),components:[mf.sketch({dom:zc.dom('<div class="${prefix}-content-container"></div>'),components:[Vc.sketch({dom:zc.dom('<div class="${prefix}-content-tap-section"></div>'),components:[t.asSpec()],action:function(n){r.throttle()},buttonBehaviours:qr.derive([ni.config({toggleClass:ii.resolve("mask-tap-icon-selected")})])})]})]})},rp=mr.objOf([Kt("editor",[Ut("getFrame"),qt("getBody"),qt("getDoc"),qt("getWin"),qt("getSelection"),qt("setSelection"),qt("clearSelection"),qt("cursorSaver"),qt("onKeyup"),qt("onNodeChanged"),qt("getCursorBox"),Ut("onDomChanged"),Jt("onTouchContent",c.noop),Jt("onTapContent",c.noop),Jt("onTouchToolstrip",c.noop),Jt("onScrollToCursor",c.constant({unbind:c.noop})),Jt("onScrollToElement",c.constant({unbind:c.noop})),Jt("onToEditing",c.constant({unbind:c.noop})),Jt("onToReading",c.constant({unbind:c.noop})),Jt("onToolbarScrollStart",c.identity)]),Ut("socket"),Ut("toolstrip"),Ut("dropup"),Ut("toolbar"),Ut("container"),Ut("alloy"),er("win",function(n){return ie.owner(n.socket).dom().defaultView}),er("body",function(n){return Wn.fromDom(n.socket.dom().ownerDocument.body)}),Jt("translate",c.identity),Jt("setReadOnly",c.noop)]),op={produce:function(n){var e=mr.asRawOrDie("Getting AndroidWebapp schema",rp,n);Xi.set(e.toolstrip,"width","100%");var t=Hl.build(tp(function(){e.setReadOnly(!0),o.enter()},e.translate));e.alloy.add(t);var r={show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}};ce.append(e.container,t.element());var o=Zm(e,r);return{setReadOnly:e.setReadOnly,refreshStructure:c.noop,enter:o.enter,exit:o.exit,destroy:c.noop}}},ip=[Jt("shell",!0),Na("toolbarBehaviours",[ed])],up=[ec.optional({name:"groups",overrides:function(n){return{behaviours:qr.derive([ed.config({})])}}})],ap={name:c.constant("Toolbar"),schema:c.constant(ip),parts:c.constant(up)},cp=Hc({name:"Toolbar",configFields:ap.schema(),partFields:ap.parts(),factory:function(n,e,t,r){var o=function(e){return n.shell()?N.some(e):Sc(e,n,"groups")},i=n.shell()?{behaviours:[ed.config({})],components:[]}:{behaviours:[],components:e};return{uid:n.uid(),dom:n.dom(),components:i.components,behaviours:vn.deepMerge(qr.derive(i.behaviours),Va(n.toolbarBehaviours())),apis:{setGroups:function(n,e){o(n).fold(function(){throw console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"),new Error("Toolbar was defined to not be a shell, but no groups container was specified in components")},function(n){ed.set(n,e)})}},domModification:{attributes:{role:"group"}}}},apis:{setGroups:function(n,e,t){n.setGroups(e,t)}}}),sp=[Ut("items"),Lo.markers(["itemClass"]),Na("tgroupBehaviours",[Ha])],fp=[ec.group({name:"items",unit:"item",overrides:function(n){return{domModification:{classes:[n.markers().itemClass()]}}}})],lp={name:c.constant("ToolbarGroup"),schema:c.constant(sp),parts:c.constant(fp)},dp=Hc({name:"ToolbarGroup",configFields:lp.schema(),partFields:lp.parts(),factory:function(n,e,t,r){return vn.deepMerge({dom:{attributes:{role:"toolbar"}}},{uid:n.uid(),dom:n.dom(),components:e,behaviours:vn.deepMerge(qr.derive([Ha.config({mode:"flow",selector:"."+n.markers().itemClass()})]),Va(n.tgroupBehaviours())),"debug.sketcher":t["debug.sketcher"]})}}),mp="data-"+ii.resolve("horizontal-scroll"),pp=function(n){return n.dom().scrollTop>0||function(n){n.dom().scrollTop=1;var e=0!==n.dom().scrollTop;return n.dom().scrollTop=0,e}(n)},gp=function(n){return n.dom().scrollLeft>0||function(n){n.dom().scrollLeft=1;var e=0!==n.dom().scrollLeft;return n.dom().scrollLeft=0,e}(n)},hp=function(n){return"true"===Ne.get(n,mp)?gp:pp},vp={exclusive:function(n,e){return jd.bind(n,"touchmove",function(n){Oi(n.target(),e).filter(hp).fold(function(){n.raw().preventDefault()},c.noop)})},markAsHorizontal:function(n){Ne.set(n,mp,"true")}};function yp(){var n=function(n){var e=!0===n.scrollable?"${prefix}-toolbar-scrollable-group":"";return{dom:zc.dom('<div aria-label="'+n.label+'" class="${prefix}-toolbar-group '+e+'"></div>'),tgroupBehaviours:qr.derive([sf.config("adhoc-scrollable-toolbar",!0===n.scrollable?[xr.runOnInit(function(n,e){Xi.set(n.element(),"overflow-x","auto"),vp.markAsHorizontal(n.element()),hd.register(n.element())})]:[])]),components:[mf.sketch({components:[dp.parts().items({})]})],markers:{itemClass:ii.resolve("toolbar-group-item")},items:n.items}},e=Hl.build(cp.sketch({dom:zc.dom('<div class="${prefix}-toolbar"></div>'),components:[cp.parts().groups({})],toolbarBehaviours:qr.derive([ni.config({toggleClass:ii.resolve("context-toolbar"),toggleOnExecute:!1,aria:{mode:"none"}}),Ha.config({mode:"cyclic"})]),shell:!0})),t=Hl.build(mf.sketch({dom:{classes:[ii.resolve("toolstrip")]},components:[Hl.premade(e)],containerBehaviours:qr.derive([ni.config({toggleClass:ii.resolve("android-selection-context-toolbar"),toggleOnExecute:!1})])})),r=function(){cp.setGroups(e,o.get()),ni.off(e)},o=po([]);return{wrapper:c.constant(t),toolbar:c.constant(e),createGroups:function(e){return X.map(e,c.compose(dp.sketch,n))},setGroups:function(n){o.set(n),r()},setContextToolbar:function(n){ni.on(e),cp.setGroups(e,n)},restoreToolbar:function(){ni.isOn(e)&&r()},refresh:function(){cp.refresh(e)},focus:function(){Ha.focusIn(e)}}}var bp=function(n,e){ed.append(n,Hl.premade(e))},wp=function(n,e){ed.remove(n,e)},Sp={makeEditSwitch:function(n){return Hl.build(Vc.sketch({dom:zc.dom('<div class="${prefix}-mask-edit-icon ${prefix}-icon"></div>'),action:function(){n.run(function(n){n.setReadOnly(!1)})}}))},makeSocket:function(){return Hl.build(mf.sketch({dom:zc.dom('<div class="${prefix}-editor-socket"></div>'),components:[],containerBehaviours:qr.derive([ed.config({})])}))},updateMode:function(n,e,t,r){(!0===t?mo.toAlpha:mo.toOmega)(r),(t?bp:wp)(n,e)}},xp=function(n,e){return e.getAnimationRoot().fold(function(){return n.element()},function(e){return e(n)})},Op=function(n){return n.dimension().property()},Tp=function(n,e){return n.dimension().getDimension()(e)},kp=function(n,e){var t=xp(n,e);kl.remove(t,[e.shrinkingClass(),e.growingClass()])},Cp=function(n,e){co.remove(n.element(),e.openClass()),co.add(n.element(),e.closedClass()),Xi.set(n.element(),Op(e),"0px"),Xi.reflow(n.element())},Ep=function(n,e){co.remove(n.element(),e.closedClass()),co.add(n.element(),e.openClass()),Xi.remove(n.element(),Op(e))},Dp=function(n,e,t){t.setCollapsed(),Xi.set(n.element(),Op(e),Tp(e,n.element())),Xi.reflow(n.element());var r=xp(n,e);co.add(r,e.shrinkingClass()),Cp(n,e),e.onStartShrink()(n)},Ap=function(n,e,t){var r=function(n,e){Ep(n,e);var t=Tp(e,n.element());return Cp(n,e),t}(n,e),o=xp(n,e);co.add(o,e.growingClass()),Ep(n,e),Xi.set(n.element(),Op(e),r),t.setExpanded(),e.onStartGrow()(n)},Mp=function(n,e,t){var r=xp(n,e);return!0===co.has(r,e.growingClass())},Rp=function(n,e,t){var r=xp(n,e);return!0===co.has(r,e.shrinkingClass())},Fp={grow:function(n,e,t){t.isExpanded()||Ap(n,e,t)},shrink:function(n,e,t){t.isExpanded()&&Dp(n,e,t)},immediateShrink:function(n,e,t){var r,o;t.isExpanded()&&(r=n,o=e,t.setCollapsed(),Xi.set(r.element(),Op(o),Tp(o,r.element())),Xi.reflow(r.element()),kp(r,o),Cp(r,o),o.onStartShrink()(r),o.onShrunk()(r))},hasGrown:function(n,e,t){return t.isExpanded()},hasShrunk:function(n,e,t){return t.isCollapsed()},isGrowing:Mp,isShrinking:Rp,isTransitioning:function(n,e,t){return!0===Mp(n,e)||!0===Rp(n,e)},toggleGrow:function(n,e,t){(t.isExpanded()?Dp:Ap)(n,e,t)},disableTransitions:kp},Bp={exhibit:function(n,e){return e.expanded()?Fr.nu({classes:[e.openClass()],styles:{}}):Fr.nu({classes:[e.closedClass()],styles:it.wrap(e.dimension().property(),"0px")})},events:function(n,e){return xr.derive([xr.run(s.transitionend(),function(t,r){r.event().raw().propertyName===n.dimension().property()&&(Fp.disableTransitions(t,n,e),e.isExpanded()&&Xi.remove(t.element(),n.dimension().property()),(e.isExpanded()?n.onGrown():n.onShrunk())(t,r))})])}},Ip=[Ut("closedClass"),Ut("openClass"),Ut("shrinkingClass"),Ut("growingClass"),qt("getAnimationRoot"),Lo.onHandler("onShrunk"),Lo.onHandler("onStartShrink"),Lo.onHandler("onGrown"),Lo.onHandler("onStartGrow"),Jt("expanded",!1),zt("dimension",mr.choose("property",{width:[Lo.output("property","width"),Lo.output("getDimension",function(n){return ys(n)+"px"})],height:[Lo.output("property","height"),Lo.output("getDimension",function(n){return Qi(n)+"px"})]}))],Hp={init:function(n){var e=po(n.expanded());return zr({isExpanded:function(){return!0===e.get()},isCollapsed:function(){return!1===e.get()},setCollapsed:c.curry(e.set,!1),setExpanded:c.curry(e.set,!0),readState:function(){return"expanded: "+e.get()}})}},Np=qr.create({fields:Ip,name:"sliding",active:Bp,apis:Fp,state:Hp}),Vp={build:function(n,e){var t=Hl.build(mf.sketch({dom:{tag:"div",classes:ii.resolve("dropup")},components:[],containerBehaviours:qr.derive([ed.config({}),Np.config({closedClass:ii.resolve("dropup-closed"),openClass:ii.resolve("dropup-open"),shrinkingClass:ii.resolve("dropup-shrinking"),growingClass:ii.resolve("dropup-growing"),dimension:{property:"height"},onShrunk:function(t){n(),e(),ed.set(t,[])},onGrown:function(t){n(),e()}}),ti(function(n,e){r(c.noop)})])})),r=function(n){window.requestAnimationFrame(function(){n(),Np.shrink(t)})};return{appear:function(n,e,r){!0===Np.hasShrunk(t)&&!1===Np.isTransitioning(t)&&window.requestAnimationFrame(function(){e(r),ed.set(t,[n()]),Np.grow(t)})},disappear:r,component:c.constant(t),element:t.element}}},jp=sn.detect().browser.isFirefox(),Pp=mr.objOfOnly([Gt("triggerEvent"),Gt("broadcastEvent"),Jt("stopBackspace",!0)]),Lp=function(n,e){var t,r,o,i,u=mr.asRawOrDie("Getting GUI events settings",Pp,e),a=sn.detect().deviceType.isTouch()?["touchstart","touchmove","touchend","gesturestart"]:["mousedown","mouseup","mouseover","mousemove","mouseout","click"],c=Kd(u),s=X.map(a.concat(["selectstart","input","contextmenu","change","transitionend","dragstart","dragover","drop"]),function(e){return jd.bind(n,e,function(n){c.fireIfReady(n,e).each(function(e){e&&n.kill()}),u.triggerEvent(e,n)&&n.kill()})}),f=jd.bind(n,"keydown",function(n){var e;u.triggerEvent("keydown",n)?n.kill():!0!==u.stopBackspace||(e=n).raw().which!==fi.BACKSPACE()[0]||X.contains(["input","textarea"],ye.name(e.target()))||n.prevent()}),l=(t=n,r=function(n){u.triggerEvent("focusin",n)&&n.kill()},jp?jd.capture(t,"focus",r):jd.bind(t,"focusin",r)),d=(o=n,i=function(n){u.triggerEvent("focusout",n)&&n.kill(),setTimeout(function(){u.triggerEvent(ln.postBlur(),n)},0)},jp?jd.capture(o,"blur",i):jd.bind(o,"focusout",i)),m=ie.defaultView(n),p=jd.bind(m,"scroll",function(n){u.broadcastEvent(ln.windowScroll(),n)&&n.kill()});return{unbind:function(){X.each(s,function(n){n.unbind()}),f.unbind(),l.unbind(),d.unbind(),p.unbind()}}},Wp=function(n,e){var t=it.readOptFrom(n,"target").map(function(n){return n()}).getOr(e);return po(t)},Up=function(n,e){var t=po(!1),r=po(!1);return{stop:function(){t.set(!0)},cut:function(){r.set(!0)},isStopped:t.get,isCut:r.get,event:c.constant(n),setSource:e.set,getSource:e.get}},zp=Up,Kp=function(n){var e=po(!1);return{stop:function(){e.set(!0)},cut:c.noop,isStopped:e.get,isCut:c.constant(!1),event:c.constant(n),setTarget:c.die(new Error("Cannot set target of a broadcasted event")),getTarget:c.die(new Error("Cannot get target of a broadcasted event"))}},Gp=Ke([{stopped:[]},{resume:["element"]},{complete:[]}]),$p=function(n,e,t,r,o,i){var u=n(e,r),a=zp(t,o);return u.fold(function(){return i.logEventNoHandlers(e,r),Gp.complete()},function(n){var t=n.descHandler();return gl.getHandler(t)(a),a.isStopped()?(i.logEventStopped(e,n.element(),t.purpose()),Gp.stopped()):a.isCut()?(i.logEventCut(e,n.element(),t.purpose()),Gp.complete()):ie.parent(n.element()).fold(function(){return i.logNoParent(e,n.element(),t.purpose()),Gp.complete()},function(r){return i.logEventResponse(e,n.element(),t.purpose()),Gp.resume(r)})})},qp=function(n,e,t,r,o,i){return $p(n,e,t,r,o,i).fold(function(){return!0},function(r){return qp(n,e,t,r,o,i)},function(){return!1})},_p=function(n,e,t,r,o){var i=Wp(t,r);return qp(n,e,t,r,i,o)},Xp={triggerHandler:function(n,e,t,r,o){var i=Wp(t,r);return $p(n,e,t,r,i,o)},triggerUntilStopped:function(n,e,t,r){var o=t.target();return _p(n,e,t,o,r)},triggerOnUntilStopped:_p,broadcast:function(n,e,t){var r=Kp(e);return X.each(n,function(n){var e=n.descHandler();gl.getHandler(e)(r)}),r.isStopped()}},Yp={closest:function(n,e,t){return bo.closest(n,function(n){return e(n).isSome()},t).bind(e)}},Jp=In.immutable("element","descHandler"),Qp=function(n,e){return{id:c.constant(n),descHandler:c.constant(e)}};function Zp(){var n={};return{registerId:function(e,t,r){On.each(r,function(r,o){var i=n[o]!==undefined?n[o]:{};i[t]=gl.curryArgs(r,e),n[o]=i})},unregisterId:function(e){On.each(n,function(n,t){n.hasOwnProperty(e)&&delete n[e]})},filterByType:function(e){return it.readOptFrom(n,e).map(function(n){return On.mapToArray(n,function(n,e){return Qp(e,n)})}).getOr([])},find:function(e,t,r){var o=it.readOpt(t)(n);return Yp.closest(r,function(n){return e=o,t=n,Cc.read(t).fold(function(n){return N.none()},function(n){var r=it.readOpt(n);return e.bind(r).map(function(n){return Jp(t,n)})});var e,t},e)}}}function ng(){var n=Zp(),e={},t=function(t){Cc.read(t.element()).each(function(t){e[t]=undefined,n.unregisterId(t)})};return{find:function(e,t,r){return n.find(e,t,r)},filter:function(e){return n.filterByType(e)},register:function(r){var o,i,u=(i=(o=r).element(),Cc.read(i).fold(function(){return Cc.write("uid-",o.element())},function(n){return n}));it.hasKey(e,u)&&function(n,r){var o=e[r];if(o!==n)throw new Error('The tagId "'+r+'" is already used by: '+Le.element(o.element())+"\nCannot use it for: "+Le.element(n.element())+"\nThe conflicting element is"+(Se.inBody(o.element())?" ":" not ")+"already in the DOM");t(n)}(r,u);var a=[r];n.registerId(a,u,r.events()),e[u]=r},unregister:t,getById:function(n){return it.readOpt(n)(e)}}}var eg=function(n){var e=function(e){return ie.parent(n.element()).fold(function(){return!0},function(n){return Jn(e,n)})},t=ng(),r=function(n,r){return t.find(e,n,r)},o=Lp(n.element(),{triggerEvent:function(n,e){return ht(n,e.target(),function(t){return Xp.triggerUntilStopped(r,n,e,t)})},broadcastEvent:function(n,e){var r=t.filter(n);return Xp.broadcast(r,e)}}),i=el({debugInfo:c.constant("real"),triggerEvent:function(n,e,t){ht(n,e,function(o){Xp.triggerOnUntilStopped(r,n,t,e,o)})},triggerFocus:function(n,e){Cc.read(n).fold(function(){Oo(n)},function(t){ht(ln.focus(),n,function(t){Xp.triggerHandler(r,ln.focus(),{originator:c.constant(e),target:c.constant(n)},n,t)})})},triggerEscape:function(n,e){i.triggerEvent("keydown",n.element(),e.event())},getByUid:function(n){return p(n)},getByDom:function(n){return g(n)},build:Hl.build,addToGui:function(n){s(n)},removeFromGui:function(n){f(n)},addToWorld:function(n){u(n)},removeFromWorld:function(n){a(n)},broadcast:function(n){d(n)},broadcastOn:function(n,e){m(n,e)}}),u=function(n){n.connect(i),ye.isText(n.element())||(t.register(n),X.each(n.components(),u),i.triggerEvent(ln.systemInit(),n.element(),{target:c.constant(n.element())}))},a=function(n){ye.isText(n.element())||(X.each(n.components(),a),t.unregister(n)),n.disconnect()},s=function(e){Ce.attach(n,e)},f=function(n){Ce.detach(n)},l=function(n){var e=t.filter(ln.receive());X.each(e,function(e){var t=e.descHandler();gl.getHandler(t)(n)})},d=function(n){l({universal:c.constant(!0),data:c.constant(n)})},m=function(n,e){l({universal:c.constant(!1),channels:c.constant(n),data:c.constant(e)})},p=function(n){return t.getById(n).fold(function(){return ze.error(new Error('Could not find component with uid: "'+n+'" in system.'))},ze.value)},g=function(n){return Cc.read(n).bind(p)};return u(n),{root:c.constant(n),element:n.element,destroy:function(){o.unbind(),le.remove(n.element())},add:s,remove:f,getByUid:p,getByDom:g,addToWorld:u,removeFromWorld:a,broadcast:d,broadcastOn:m}},tg={create:function(){var n=Hl.build(mf.sketch({dom:{tag:"div"}}));return eg(n)},takeover:eg},rg=c.constant(ii.resolve("readonly-mode")),og=c.constant(ii.resolve("edit-mode"));function ig(n){var e=Hl.build(mf.sketch({dom:{classes:[ii.resolve("outer-container")].concat(n.classes)},containerBehaviours:qr.derive([mo.config({alpha:rg(),omega:og()})])}));return tg.takeover(e)}var ug=function(n,e){var t=Wn.fromTag("input");Xi.setAll(t,{opacity:"0",position:"absolute",top:"-1000px",left:"-1000px"}),ce.append(n,t),Oo(t),e(t),le.remove(t)},ag=function(n){var e=n.getSelection();if(e.rangeCount>0){var t=e.getRangeAt(0),r=n.document.createRange();r.setStart(t.startContainer,t.startOffset),r.setEnd(t.endContainer,t.endOffset),e.removeAllRanges(),e.addRange(r)}},cg={resume:function(n,e){ko().each(function(n){Jn(n,e)||To(n)}),n.focus(),Oo(Wn.fromDom(n.document.body)),ag(n)}},sg={stubborn:function(n,e,t,r){var o=function(){cg.resume(e,r)},i=jd.bind(t,"keydown",function(n){X.contains(["input","textarea"],ye.name(n.target()))||o()});return{toReading:function(){ug(n,To)},toEditing:o,onToolbarTouch:function(){},destroy:function(){i.unbind()}}},timid:function(n,e,t,r){var o=function(){To(r)};return{toReading:function(){o()},toEditing:function(){cg.resume(e,r)},onToolbarTouch:function(){o()},destroy:c.noop}}},fg=function(n,e,t,r,o){var i=function(){e.run(function(n){n.refreshSelection()})},u=function(n,t){var o=n-r.dom().scrollTop;e.run(function(n){n.scrollIntoView(o,o+t)})},a=function(){e.run(function(n){n.clearSelection()})},c=function(){n.getCursorBox().each(function(n){u(n.top(),n.height())}),e.run(function(n){n.syncHeight()})},s=Gd(n),f=ep(c,300),l=[n.onKeyup(function(){a(),f.throttle()}),n.onNodeChanged(i),n.onDomChanged(f.throttle),n.onDomChanged(i),n.onScrollToCursor(function(n){n.preventDefault(),f.throttle()}),n.onScrollToElement(function(n){n.element(),u(e,r)}),n.onToEditing(function(){e.run(function(n){n.toEditing()})}),n.onToReading(function(){e.run(function(n){n.toReading()})}),jd.bind(n.doc(),"touchend",function(e){Jn(n.html(),e.target())||Jn(n.body(),e.target())}),jd.bind(t,"transitionend",function(n){var r;"height"===n.raw().propertyName&&(r=Qi(t),e.run(function(n){n.setViewportOffset(r)}),i(),c())}),jd.capture(t,"touchstart",function(t){var r;e.run(function(n){n.highlightSelection()}),r=t,e.run(function(n){n.onToolbarTouch(r)}),n.onTouchToolstrip()}),jd.bind(n.body(),"touchstart",function(e){a(),n.onTouchContent(),s.fireTouchstart(e)}),s.onTouchmove(),s.onTouchend(),jd.bind(n.body(),"click",function(n){n.kill()}),jd.bind(t,"touchmove",function(){n.onToolbarScrollStart()})];return{destroy:function(){X.each(l,function(n){n.unbind()})}}},lg=function(n){var e=N.none(),t=[],r=function(n){o()?u(n):t.push(n)},o=function(){return e.isSome()},i=function(n){X.each(n,u)},u=function(n){e.each(function(e){setTimeout(function(){n(e)},0)})};return n(function(n){e=N.some(n),i(t),t=[]}),{get:r,map:function(n){return lg(function(e){r(function(t){e(n(t))})})},isReady:o}},dg={nu:lg,pure:function(n){return lg(function(e){e(n)})}},mg=function(n){return function(){var e=Array.prototype.slice.call(arguments),t=this;setTimeout(function(){n.apply(t,e)},0)}},pg=function(n){var e=function(e){n(mg(e))};return{map:function(n){return pg(function(t){e(function(e){var r=n(e);t(r)})})},bind:function(n){return pg(function(t){e(function(e){n(e).get(t)})})},anonBind:function(n){return pg(function(t){e(function(e){n.get(t)})})},toLazy:function(){return dg.nu(e)},get:e}},gg={nu:pg,pure:function(n){return pg(function(e){e(n)})}},hg=function(n,e,t){return Math.abs(n-e)<=t?N.none():n<e?N.some(n+t):N.some(n-t)},vg=function(){var n=null;return{animate:function(e,t,r,o,i,u){var a=!1,c=function(n){a=!0,i(n)};clearInterval(n);var s=function(e){clearInterval(n),c(e)};n=setInterval(function(){var i=e();hg(i,t,r).fold(function(){clearInterval(n),c(t)},function(r){if(o(r,s),!a){var u=e();(u!==r||Math.abs(u-t)>Math.abs(i-t))&&(clearInterval(n),c(t))}})},u)}}},yg=function(n,e){return at([{width:320,height:480,keyboard:{portrait:300,landscape:240}},{width:320,height:568,keyboard:{portrait:300,landscape:240}},{width:375,height:667,keyboard:{portrait:305,landscape:240}},{width:414,height:736,keyboard:{portrait:320,landscape:240}},{width:768,height:1024,keyboard:{portrait:320,landscape:400}},{width:1024,height:1366,keyboard:{portrait:380,landscape:460}}],function(t){return n<=t.width&&e<=t.height?N.some(t.keyboard):N.none()}).getOr({portrait:e/5,landscape:n/4})},bg=function(n){var e,t=Ld(n).isPortrait(),r=yg((e=n).screen.width,e.screen.height),o=t?r.portrait:r.landscape;return(t?n.screen.height:n.screen.width)-n.innerHeight>o?0:o},wg=function(n,e){var t=ie.owner(n).dom().defaultView;return Qi(n)+Qi(e)-bg(t)},Sg=wg,xg=function(n,e,t){var r=wg(e,t),o=Qi(e)+Qi(t)-r;Xi.set(n,"padding-bottom",o+"px")},Og=Ke([{fixed:["element","property","offsetY"]},{scroller:["element","offsetY"]}]),Tg="data-"+ii.resolve("position-y-fixed"),kg="data-"+ii.resolve("y-property"),Cg="data-"+ii.resolve("scrolling"),Eg="data-"+ii.resolve("last-window-height"),Dg=function(n){return _d(n,Tg)},Ag=function(n,e){var t=Ne.get(n,kg);return Og.fixed(n,t,e)},Mg=function(n,e){return Og.scroller(n,e)},Rg=function(n){var e=Dg(n);return("true"===Ne.get(n,Cg)?Mg:Ag)(n,e)},Fg=function(n,e,t){var r=ie.owner(n).dom().defaultView.innerHeight;return Ne.set(n,Eg,r+"px"),r-e-t},Bg=function(n){var e=yi(n,"["+Tg+"]");return X.map(e,Rg)},Ig=function(n,e,t,r){var o,i,u,a,s,f,l,d,m=ie.owner(n).dom().defaultView,p=(d=Ne.get(l=t,"style"),Xi.setAll(l,{position:"absolute",top:"0px"}),Ne.set(l,Tg,"0px"),Ne.set(l,kg,"top"),{restore:function(){Ne.set(l,"style",d||""),Ne.remove(l,Tg),Ne.remove(l,kg)}}),g=Qi(t),h=Qi(r),v=Fg(n,g,h),y=(u=g,a=v,f=Ne.get(s=n,"style"),hd.register(s),Xi.setAll(s,{position:"absolute",height:a+"px",width:"100%",top:u+"px"}),Ne.set(s,Tg,u+"px"),Ne.set(s,Cg,"true"),Ne.set(s,kg,"top"),{restore:function(){hd.deregister(s),Ne.set(s,"style",f||""),Ne.remove(s,Tg),Ne.remove(s,Cg),Ne.remove(s,kg)}}),b=(i=Ne.get(o=r,"style"),Xi.setAll(o,{position:"absolute",bottom:"0px"}),Ne.set(o,Tg,"0px"),Ne.set(o,kg,"bottom"),{restore:function(){Ne.set(o,"style",i||""),Ne.remove(o,Tg),Ne.remove(o,kg)}}),w=!0,S=function(){return m.innerHeight>_d(n,Eg)},x=function(){if(w){var o=Qi(t),i=Qi(r),u=Fg(n,o,i);Ne.set(n,Tg,o+"px"),Xi.set(n,"height",u+"px"),Xi.set(r,"bottom",-(o+u+i)+"px"),xg(e,n,r)}};return xg(e,n,r),{setViewportOffset:function(e){Ne.set(n,Tg,e+"px"),x()},isExpanding:S,isShrinking:c.not(S),refresh:x,restore:function(){w=!1,p.restore(),y.restore(),b.restore()}}},Hg=Dg,Ng=vg(),Vg="data-"+ii.resolve("last-scroll-top"),jg=function(n){var e=Xi.getRaw(n,"top").getOr(0);return parseInt(e,10)},Pg=function(n){return parseInt(n.dom().scrollTop,10)},Lg=function(n,e){var t=e+Hg(n)+"px";Xi.set(n,"top",t)},Wg=function(n,e,t){return gg.nu(function(r){var o=c.curry(Pg,n);Ng.animate(o,e,15,function(e){n.dom().scrollTop=e,Xi.set(n,"top",jg(n)+15+"px")},function(){n.dom().scrollTop=e,Xi.set(n,"top",t+"px"),r(e)},10)})},Ug=function(n,e){return gg.nu(function(t){var r=c.curry(Pg,n);Ne.set(n,Vg,r());var o=Math.abs(e-r()),i=Math.ceil(o/10);Ng.animate(r,e,i,function(e,t){_d(n,Vg)!==n.dom().scrollTop?t(n.dom().scrollTop):(n.dom().scrollTop=e,Ne.set(n,Vg,e))},function(){n.dom().scrollTop=e,Ne.set(n,Vg,e),t(e)},10)})},zg=function(n,e){return gg.nu(function(t){var r=c.curry(jg,n),o=function(e){Xi.set(n,"top",e+"px")},i=Math.abs(e-r()),u=Math.ceil(i/10);Ng.animate(r,e,u,o,function(){o(e),t(e)},10)})},Kg=function(n,e,t){var r=ie.owner(n).dom().defaultView;return gg.nu(function(o){Lg(n,t),Lg(e,t),r.scrollTo(0,t),o(t)})},Gg=function(n,e,t,r,o){var i=Sg(e,t),u=c.curry(ag,n);r>i||o>i?Ug(e,e.dom().scrollTop-i+o).get(u):r<0&&Ug(e,e.dom().scrollTop+r).get(u)},$g=function(n,e){return e(function(e){var t=[],r=0;0===n.length?e([]):X.each(n,function(o,i){var u;o.get((u=i,function(o){t[u]=o,++r>=n.length&&e(t)}))})})},qg=function(n){return $g(n,gg.nu)},_g=qg,Xg=function(n,e){return n.fold(function(n,t,r){return o=n,i=t,a=e+(u=r),Xi.set(o,i,a+"px"),gg.pure(u);var o,i,u,a},function(n,t){return r=n,i=e+(o=t),u=Xi.getRaw(r,"top").getOr(o),a=i-parseInt(u,10),c=r.dom().scrollTop+a,Wg(r,c,i);var r,o,i,u,a,c})},Yg=function(n,e){var t=Bg(n),r=X.map(t,function(n){return Xg(n,e)});return _g(r)},Jg=function(n,e,t,r,o,i){var u,a,s=(u=function(t){return Kg(n,e,t)},a=po(dg.pure({})),{start:function(n){var e=dg.nu(function(e){return u(n).get(e)});a.set(e)},idle:function(n){a.get().get(function(){n()})}}),f=ep(function(){s.idle(function(){Yg(t,r.pageYOffset).get(function(){var n;(n=Mm.getRectangles(i),N.from(n[0]).bind(function(n){var t=n.top()-e.dom().scrollTop;return t>r.innerHeight+5||t<-5?N.some({top:c.constant(t),bottom:c.constant(t+n.height())}):N.none()})).each(function(n){e.dom().scrollTop=e.dom().scrollTop+n.top()}),s.start(0),o.refresh()})})},1e3),l=jd.bind(Wn.fromDom(r),"scroll",function(){r.pageYOffset<0||f.throttle()});return Yg(t,r.pageYOffset).get(c.identity),{unbind:l.unbind}},Qg=function(n){var e=n.cWin(),t=n.ceBody(),r=n.socket(),o=n.toolstrip(),i=n.toolbar(),u=n.contentElement(),a=n.keyboardType(),s=n.outerWindow(),f=n.dropup(),l=Ig(r,t,o,f),d=a(n.outerBody(),e,Se.body(),u,o,i),m=Wd(s,{onChange:c.noop,onReady:l.refresh});m.onAdjustment(function(){l.refresh()});var p=jd.bind(Wn.fromDom(s),"resize",function(){l.isExpanding()&&l.refresh()}),g=Jg(o,r,n.outerBody(),s,l,e),h=function(n,e){var t=n.document,r=Wn.fromTag("div");co.add(r,ii.resolve("unfocused-selections")),ce.append(Wn.fromDom(t.documentElement),r);var o=jd.bind(r,"touchstart",function(t){t.prevent(),cg.resume(n,e),u()}),i=function(n){var e=Wn.fromTag("span");return kl.add(e,[ii.resolve("layer-editor"),ii.resolve("unfocused-selection")]),Xi.setAll(e,{left:n.left()+"px",top:n.top()+"px",width:n.width()+"px",height:n.height()+"px"}),e},u=function(){le.empty(r)};return{update:function(){u();var e=Mm.getRectangles(n),t=X.map(e,i);se.append(r,t)},isActive:function(){return ie.children(r).length>0},destroy:function(){o.unbind(),le.remove(r)},clear:u}}(e,u),v=function(){h.clear()};return{toEditing:function(){d.toEditing(),v()},toReading:function(){d.toReading()},onToolbarTouch:function(n){d.onToolbarTouch(n)},refreshSelection:function(){h.isActive()&&h.update()},clearSelection:v,highlightSelection:function(){h.update()},scrollIntoView:function(n,t){Gg(e,r,f,n,t)},updateToolbarPadding:c.noop,setViewportOffset:function(n){l.setViewportOffset(n),zg(r,n).get(c.identity)},syncHeight:function(){Xi.set(u,"height",u.dom().contentWindow.document.body.scrollHeight+"px")},refreshStructure:l.refresh,destroy:function(){l.restore(),m.destroy(),g.unbind(),p.unbind(),d.destroy(),h.destroy(),ug(Se.body(),To)}}},Zg=function(n,e){var t=Qm(),r=Wf.value(),o=Wf.value(),i=Wf.api(),u=Wf.api();return{enter:function(){e.hide();var a=Wn.fromDom(document);Gm.getActiveApi(n.editor).each(function(e){r.set({socketHeight:Xi.getRaw(n.socket,"height"),iframeHeight:Xi.getRaw(e.frame(),"height"),outerScroll:document.body.scrollTop}),o.set({exclusives:vp.exclusive(a,"."+hd.scrollable())}),co.add(n.container,ii.resolve("fullscreen-maximized")),Ym(n.container,e.body()),t.maximize(),Xi.set(n.socket,"overflow","scroll"),Xi.set(n.socket,"-webkit-overflow-scrolling","touch"),Oo(e.body());var s=In.immutableBag(["cWin","ceBody","socket","toolstrip","toolbar","dropup","contentElement","cursor","keyboardType","isScrolling","outerWindow","outerBody"],[]);i.set(Qg(s({cWin:e.win(),ceBody:e.body(),socket:n.socket,toolstrip:n.toolstrip,toolbar:n.toolbar,dropup:n.dropup.element(),contentElement:e.frame(),cursor:c.noop,outerBody:n.body,outerWindow:n.win,keyboardType:sg.stubborn,isScrolling:function(){return o.get().exists(function(n){return n.socket.isScrolling()})}}))),i.run(function(n){n.syncHeight()}),u.set(fg(e,i,n.toolstrip,n.socket,n.dropup))})},refreshStructure:function(){i.run(function(n){n.refreshStructure()})},exit:function(){t.restore(),u.clear(),i.clear(),e.show(),r.on(function(e){e.socketHeight.each(function(e){Xi.set(n.socket,"height",e)}),e.iframeHeight.each(function(e){Xi.set(n.editor.getFrame(),"height",e)}),document.body.scrollTop=e.scrollTop}),r.clear(),o.on(function(n){n.exclusives.unbind()}),o.clear(),co.remove(n.container,ii.resolve("fullscreen-maximized")),Jm(),hd.deregister(n.toolbar),Xi.remove(n.socket,"overflow"),Xi.remove(n.socket,"-webkit-overflow-scrolling"),To(n.editor.getFrame()),Gm.getActiveApi(n.editor).each(function(n){n.clearSelection()})}}},nh={produce:function(n){var e=mr.asRawOrDie("Getting IosWebapp schema",rp,n);Xi.set(e.toolstrip,"width","100%"),Xi.set(e.container,"position","relative");var t=Hl.build(tp(function(){e.setReadOnly(!0),r.enter()},e.translate));e.alloy.add(t);var r=Zg(e,{show:function(){e.alloy.add(t)},hide:function(){e.alloy.remove(t)}});return{setReadOnly:e.setReadOnly,refreshStructure:r.refreshStructure,enter:r.enter,exit:r.exit,destroy:c.noop}}},eh=tinymce.util.Tools.resolve("tinymce.EditorManager"),th=function(n){var e=it.readOptFrom(n.settings,"skin_url").fold(function(){return eh.baseURL+"/skins/lightgray"},function(n){return n});return{content:e+"/content.mobile.min.css",ui:e+"/skin.mobile.min.css"}},rh=function(n,e,t){n.system().broadcastOn([Ro.formatChanged()],{command:e,state:t})},oh=function(n,e){var t=On.keys(e.formatter.get());X.each(t,function(t){e.formatter.formatChanged(t,function(e){rh(n,t,e)})}),X.each(["ul","ol"],function(t){e.selection.selectorChanged(t,function(e,r){rh(n,t,e)})})},ih=(c.constant(["x-small","small","medium","large","x-large"]),function(n){var e=function(){n._skinLoaded=!0,n.fire("SkinLoaded")};return function(){n.initialized?e():n.on("init",e)}}),uh=c.constant("toReading"),ah=c.constant("toEditing");Do.add("mobile",function(n){return{getNotificationManagerImpl:function(){return{open:c.identity,close:c.noop,reposition:c.noop,getArgs:c.identity}},renderUI:function(e){var t=th(n);!1===Mo(n)?(n.contentCSS.push(t.content),Eo.DOM.styleSheetLoader.load(t.ui,ih(n))):ih(n)();var r,o,i,u,a,s,f,l,d,m,p,g,h,v,y=function(){n.fire("scrollIntoView")},b=Wn.fromTag("div"),w=sn.detect().os.isAndroid()?(l=y,d=ig({classes:[ii.resolve("android-container")]}),m=yp(),p=Wf.api(),g=Sp.makeEditSwitch(p),h=Sp.makeSocket(),v=Vp.build(c.noop,l),d.add(m.wrapper()),d.add(h),d.add(v.component()),{system:c.constant(d),element:d.element,init:function(n){p.set(op.produce(n))},exit:function(){p.run(function(n){n.exit(),ed.remove(h,g)})},setToolbarGroups:function(n){var e=m.createGroups(n);m.setGroups(e)},setContextToolbar:function(n){var e=m.createGroups(n);m.setContextToolbar(e)},focusToolbar:function(){m.focus()},restoreToolbar:function(){m.restoreToolbar()},updateMode:function(n){Sp.updateMode(h,g,n,d.root())},socket:c.constant(h),dropup:c.constant(v)}):(r=y,o=ig({classes:[ii.resolve("ios-container")]}),i=yp(),u=Wf.api(),a=Sp.makeEditSwitch(u),s=Sp.makeSocket(),f=Vp.build(function(){u.run(function(n){n.refreshStructure()})},r),o.add(i.wrapper()),o.add(s),o.add(f.component()),{system:c.constant(o),element:o.element,init:function(n){u.set(nh.produce(n))},exit:function(){u.run(function(n){ed.remove(s,a),n.exit()})},setToolbarGroups:function(n){var e=i.createGroups(n);i.setGroups(e)},setContextToolbar:function(n){var e=i.createGroups(n);i.setContextToolbar(e)},focusToolbar:function(){i.focus()},restoreToolbar:function(){i.restoreToolbar()},updateMode:function(n){Sp.updateMode(s,a,n,o.root())},socket:c.constant(s),dropup:c.constant(f)}),S=Wn.fromDom(e.targetNode);ce.after(S,b),Ce.attachSystem(b,w.system());var x=e.targetNode.ownerDocument.defaultView,O=Wd(x,{onChange:function(){w.system().broadcastOn([Ro.orientationChanged()],{width:Ud(x)})},onReady:c.noop}),T=function(e,t,r){!1===r&&n.selection.collapse(),w.setToolbarGroups(r?e.get():t.get()),n.setMode(!0===r?"readonly":"design"),n.fire(!0===r?uh():ah()),w.updateMode(r)},k=function(e,t){return n.on(e,t),{unbind:function(){n.off(e)}}};return n.on("init",function(){w.init({editor:{getFrame:function(){return Wn.fromDom(n.contentAreaContainer.querySelector("iframe"))},onDomChanged:function(){return{unbind:c.noop}},onToReading:function(n){return k(uh(),n)},onToEditing:function(n){return k(ah(),n)},onScrollToCursor:function(e){return n.on("scrollIntoView",function(n){e(n)}),{unbind:function(){n.off("scrollIntoView"),O.destroy()}}},onTouchToolstrip:function(){e()},onTouchContent:function(){var t,r=Wn.fromDom(n.editorContainer.querySelector("."+ii.resolve("toolbar")));(t=r,Co(t).bind(function(n){return w.system().getByDom(n).toOption()})).each(Dn),w.restoreToolbar(),e()},onTapContent:function(e){var t=e.target();"img"===ye.name(t)?(n.selection.select(t.dom()),e.kill()):"a"===ye.name(t)&&w.system().getByDom(Wn.fromDom(n.editorContainer)).each(function(n){mo.isAlpha(n)&&Ao(t.dom())})}},container:Wn.fromDom(n.editorContainer),socket:Wn.fromDom(n.contentAreaContainer),toolstrip:Wn.fromDom(n.editorContainer.querySelector("."+ii.resolve("toolstrip"))),toolbar:Wn.fromDom(n.editorContainer.querySelector("."+ii.resolve("toolbar"))),dropup:w.dropup(),alloy:w.system(),translate:c.noop,setReadOnly:function(n){T(s,a,n)}});var e=function(){w.dropup().disappear(function(){w.system().broadcastOn([Ro.dropupDismissed()],{})})};vt("remove this",w.system());var t={label:"The first group",scrollable:!1,items:[$c.forToolbar("back",function(){n.selection.collapse(),w.exit()},{})]},r={label:"Back to read only",scrollable:!1,items:[$c.forToolbar("readonly-back",function(){T(s,a,!0)},{})]},o=Md(w,n),i=Rd(n.settings,o),u={label:"The extra group",scrollable:!1,items:[]},a=po([r,{label:"the action group",scrollable:!0,items:i},u]),s=po([t,{label:"The read only mode group",scrollable:!0,items:[]},u]);oh(w,n)}),{iframeContainer:w.socket().element().dom(),editorContainer:w.element().dom()}}}})}(); diff --git a/public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js.gz b/public/assets/tinymce/themes/mobile/theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..bbb5961ffdba271db86b1e89b649b962d632b8fc GIT binary patch literal 53143 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%0AOFnVYUHcA`X10VJEe%O#E z*v7_caNW~p0pPy2TJ(=q>B+4oNki*tv#Db=>Q=3)&WmbcEu(w4F<xqOz4cC5lE=5F zAbeKv%~l;2IqHnL^R7lkL7Mw+@f!07R<ScSVPiIplYFF`1}1cd&)6jVK9669Q=s}% zHFd4E;Ou&o*F$y@{~pfF*Ei<t8~mydVAXPT4#SKt*qDC<7WD{D#wZl=IZ708f`&Z4 zKn@+yJw$?v4AE0W<ENRt<12?C#&N4e0U{kfEBwNDKNF{}fH$IhHI}ps{iml;6&H7R z_1#^fdsf@O>HDnd`|i$Z5wA3%TE)h(80q^Z?8qK0N_kHujj<ZNg#vFAM}1$=RmfZ1 zTK4M<Umqo>6YkvGR`|M8ctVBoLf(FRX5Xn;Gf-DAYP5JW!%shC{K~F7Mz#>xZa_hO zCmC7_MzXDm^W<B0o`|9x)v(-K=gn2nAVmyBj^_+o5Q%#q4-9*8GlI8Bu_iexpxamA zvWUJ2pB0sOHmOTbkyCg*!tYS5<SEZuwga-1`T}KOd!@DTl~G^xjr^YA)4m~%Q164+ z@Ti;4aVGflpxmYl`zqH=>TuNH{z$D*INX#~qH09f`D{|;=d+SmJ_wj^cq0U4^0c_# zo}fulx2XCIjly><epA6H_wr2m3e!j6IPq*#_gaT(S%75STeza{c(o-&l3wufQSrQ( z_LtYipa#H$e(nOhw6KmYXly263wTP)Zve$pY&@%`SylN<s*kcL2*b<rzIG|pNh(FS z(s2a%EKSU~=J|6i4-_OSBj3-TJh?~3INS_KTNp%cH7VLHtf$0|h|giz>Y8>6n+YhA zybu`Uxg-nGWvZ0m@vZ8L=mT9X;7d6Ue76siqgOObeDka*COpaM<*EEl@84_nK7BFD ze)_hnAV{AyI92;77^xmeMuL@@<@Z?UEn}O8dOI{B;Vp}_mOYx%De6*P9q)FM{~!ia zUY_&8cU~3)2{G7(M(tRl&O_cHnBJ_51dfVOT^4w!e2@*Z(M3`nT;;Hmz(tFjupXl3 z@wh&TbNa(F_-ANcIn3F49?$a7E3;1VDpIa$h}wPonGZM5Wof_<IJWy+!O!1_%=6hB zoN#oWGn#pHk<Zyp9*0@1?j$eyP1Sd+qxD_3W)`QN5A*i41)Y_oYH4l^_&mzkY2K?1 zzrj9~l1cO^nS{LVApLG8CD*Imt2((g*I}o*tswzk$*dqgKqDLCI2&D_#M$VZRG1$6 zn>;@8H<`0?cxyCE_@orC*ItZ2%zHF8c$yv{OPIB<CY^b)vUhShPL9S<NYy;vb3wc8 zR-i(jwDEK=aGJZfvNpb4wVD(-J;nIpb?&!_tG9EbJd{M{5MI|HQoVtufn{8%cV2e2 zQOggjE!EI9EqY50U3=8fh{w@Q&b}p+8u;kzoK@L(uU+RgKB)cyI!EoLzr?@!h)*~Y z7u4snTb%Z#TTntts%*a@d!Y7O2)q&e5wJ<2z(ziT--mP(0`CB%`}~}jJKwNn0gW8w zq!lYzbIjod`F0*3<!q<jqjzwqL4WSz-4T|W<eL8pvB|BT#&9Auzc;@5-81}h#OXJ7 z@U9I=Z{1yFwonJv%mM1|_Nd0BCVXuu)xS{iS&sMIrHFQ6*YU4!fQ?Ez%HZz(-efX> z(sfqy@c=Pp5C$u|ga==W49+Yz2!<=caB#&-PFH@_jHj?E`FJ!q)IViSEP^+HyU1EN z)yaOP&Z~Mh>yFDas`peBCZn5%y`oMf)qyiUR0SlHY@7%V+yLyq?ycG*Ixplo%02g- zM;ClR#sdSG&tzN;rgbF-r`+6djs_o-3OnaCosCZ;Bp$F_HalfHGRkUyPqY<fTX<@S zcIW1Lbs$+9gdduw<TOoWuph9za^J&S0H!E#PQbq*Yo%v1c(ug3(-H!+nqEGyXT0*< z{ZQ=<rHAMKTcn0rSzUkfMBOQ^te?z>5}XUM0wG5LiWIbpG_6Zmsse^6fJq({dCE0F z(_(sxr?!G=G&qLYI+Ht*V4br)WF)84TA&0PbtFH-O>O)?&8O*$kVgyHwI4o~ASMkY zFNsTO8o|{Ce5rwV8SGrc-o)(_9RIMQn_c<g1g3rti1ovYZXdvC8UVD`%wBV?LhI7G z6g<vPVoUzubkC1>!+@n4lFyQJ@3Eb0?*(bNjLfO%WlsMnYPlCB-MJYgVgMXDyg>Dw zAzerxX4p|OkqeG{RL$X8K61%J80dNd9HGqfUAIM+nDD(pd^DwL7$|+r!C{4T3SQs_ zpi5gnWAkaGFK0utw;A5uJ;QqrO|OYv*^oy*ZYAV>prq%@(rQUwZ*OD@h`+8qc>;|( z^ft_7tM%fw9p2WhmBp3DmF?0yPhrJ5H-enY3(MO}w9eU7{0g-mX<h~Uspo(~FY?7! zKpwy<o)eZ+Tl(SOjj)J|5nj3DEvLC6->@${_w(2i<{oJYSE>n=HapVt9ion`c#%~b z!4UY25B-DXk1X*4=p9IyxV1NVw4b*wx}Q7|-oj#IWu+Vn;Q#Pa`NSIc7e8kXtif!O zi7>Esz=s@p5`fBEpmZLa)TZ{A+&B~nTlTrTQ%V7$w<r(}I-<TM*#vhx+NvT@21+3s zG((-U*De=h=@?qZc3lFnUyRWlHpkB3?817u+b!{1YhuT)u7xC`kEn1fi|Gq7op>i4 z^1Hh+a9&6NhoiLQKm~Rb{}qh0Z-IoxD9dwRzBqdGI?mZ6fr!0*kxj-px(b!10%(MO z*86Z>%?5{5O!$b)8DT4falz#of02CSc+kT!4?rvnc$GsVM44n!B7c3wG?ZV%5?e!% z_whLMqaG@}XyW<MZdNzMuf@_WVPPDIzbVv;z0T?9TR4zKpDoY+2#dh62ull$vf_(( zbu}_Cm6zwQX|><y@qe@LdHgT-Dv#IMZ+ZMPdz{Cwa`rWkzvt|84>OIBM6L?<+v6Oz zp8eu0ps2K8Am}O(Z5MS8d+-yWm+Q{ffQ37{0}Y^v%gJb{d`75j9-l;?XdYtpwdUo` zAvr7+<rbbJL%`yZ0$a;K+1dB9UBXspLXF8BeVZl%j<d?9Hpci+e^f^^JXdez8$F_) zYVBgC0ePjkR3qM^%}9#x%MGPd4x8wZm1mMl4JJu?2^%pH8SJl0)u_ncKIi{<T`gM| z!sOQSqTx0zyS>13_D9}lw?SQyGLL@E*~>f*Z56yCz9V!Tg0txlK%U>dNZ<5mwpVcl zB<{K1$aD5*?)8Ilrm5z|N3#UYP;kq4XT);;kd{jREi3BkFgu+9wevK`AJSY7l&HTc zu|!jHXL5_Wx*M|O@q!I$Rcnn+9P<;;kP05}fefj+=rB-ZFJM7&c2;pxW%Kx!mMi)_ zXMl=HJrQ)P)jJt?bw^g6jV?wYtDq5E5j;=JzvmWpw`;2&TP>j4n~)^>Gq-FbJ-GQN z$)Uux+0wNHtKcDTS$$DMz~OjqHeTl1v%qv;_3GhBbl+_n*>rB6&@;Kz;3UJ@4aK9C z7WR{+ta-9Y)P`2&*#%e~Tae3$))m@_n9*&mfM3H?I8`q<$~c=hjt!N>>Z%`vbfUD) z%eW<sC;@|eK=;T3-H3R`@ECat+@5MbMLA~@CEv=0U4B>E)jWH^>cl&}PsXV91*!e` zkf@B==@IAlqqhyJ$vLStV28p;BEjYFsO0FISPA0se3eU1R+!S{adD|G9cW?;sJ`hf zu@qh-n7#()%wa<p)ot;sFm9gs?YD)^vk6P2<R&)3X2FSg0RW<cODvhQx=jW%eJUU- zy6PQ)mjrTTAi#ob_>99g<eGG7n9;6Hct?9GYbLW9&&M<^T@e8ar16wmi)zl2v+m_V z<{S#4w(qdCItxY)piQ{(R&s>l<~5)%4z1g7gH*n5b;HbtQ@#jJ!iE!pBTBgXwbf;- zGj)iO5@(6--C13goof>H71l@_PgV{1-J)KFY05{ku<69NVBM<L4Z|9loaPZfE?3u2 zHlRgn0?qUntc7k;>CuOlk$P)<s(v%T*@EWUm1SXF7a+Tc-O%a*=QOdOV2~IXLSZ~@ z;`o+NXRY8U8e=dt#x_RC$VD6kT7#o;02)Qn!f_?y%8o_$6P>~Fl($x0587>JgIk26 zau$`zR)L}LyUD7-qQtVFOu1{_J!jK<YoVM2%gmRwb(r$Tg5aFTGakMIFkH~D-*Plg z!(ZRw*9}0I%-P_WCVe^DSEDjLx@SZmun-Drns++qXtIRz^9BCWTv+rCpSFu>hrw#b zn&VjCql@tWN@YPbniwmXp2Dodt`qDPw~o`$$mXbDyIO#Oqtjx1v(YGLK(6Oq<xKDl zN)58ArT)1A#<Yi(JVcrRm7-H}jm7%W6-+&+U)|x{ko^#V3r#=t*qUt+wU~+?EgS9~ zm+8eZG+I*`AHfC3wz?i{neYIG-7sMQFw9Yod}L_d0$t-g5B#w8*EoQ!p}TWzjOY|Q z;+;E5_tG#KL+Ou2NtA%0i-2|WY26?K@JABRc9G$eCkMC>;GnH;@^sr8Azm0e)3`=l z15%@?kJAiu2PI1&(B#Na5xWhGFXz{ynMXt)n4ywLTdCZ~Ok6}qT-j0iX^%dht+8|k z2D3HoF(LxqNX(Qcpp?;>)JUTq{gNiky9d7qSSTpbFt;@ixjY73asn$6@HSMtt0G|| zr_q9>bI@4rY)FpICe_YoH4@<*0=$8cW_}L1HPOxpyeERE8~1R`orRzRxQF@>4Yulz zU(8-YfoqsqTZwBA*P>TsWbl09p<`N^vn?J!=j@GtWSOEr2uI1TmA0@a)L=Dv+AWiF zjQ~Zw!%4fjQJJ+xYaI(;hRj~}63q;J<VSUQl$<MQFcEunKj{Q8jTE+z)*5%PrUx7g zfQ88UZkIOU#dm1me2d}T9X%^!y5@z7IRtR_YsdHGB{xODz#GjiA<7ZRigZmq2%x_p ziUuF#4LTF_q}F>tN^|@A8|r4Kwa_>2`d+=trn3nT&;|usHl=WuE974EtUJYBu7Ra2 zOZFD4ea@YRn>cOi8fDX*Sdo~s7Yp0cuFl~jad#&#A57Ea=x)EDCE5p~OH1k(p2>mM ztbL-ZR?M$<Jm%zFc7lfG2uGIBrC|&JFM7uD&sL8TT+iSj@7^C`sa;OiGLr2?+n_y; zLT&Vd8z$5%`^k^)q@mt^d&(|<)68_k3i;E$<l<80&yAc-fyT~w*I$`fmFC*y$rI-V zu1=T8HlB4X+bCiVs~@79Ko+B|;G-AlVw}ORXY>Q`47PqYlmf&D?pF;j+|r~S`QoK% zAMg-<go=o_KI-wsRtCJ2V1A84hes)>O1)LA=|^9GxA#O>p=}+RpgsUeii@M;{m5V| z&K;i}c*XPKxf_ZKok_f5PClwzW7SfBiTlFG^aOZ;+A6}!q9853ackP{-|g?pPrUcL zC=O<Bzys@!O?u%D@#6h`-=gUiXqHGn>lIQ<rk6;E?X=ft`6x-|dpa6tIJi&-K=OxT zD(-2&f6e%!HG8jMpOB{sMo8^lrT5M<Y2c_;F|aYKAX!d;_jlM!Ql$LInT!GT9yY=& z-o7rk?bmXTRapw+a@S}rFa|bxuYrxYKnpKZ)3&a`MguMRP;`++#v_(Bv1JYe{iDBc z*4saJl;jxdYH~xp;!!i0@zU<Tj<e&n6PCniI8OJ0@b}R|yMb{%n`9~QS7<>vkQZcd z*aj;#4GJJ85)`FtA24(4W*&z@gF>D}B!jRj%JOC?VQa5T(z7m>g_dW5xY73GoZ^=C znTR`aXL0s0^`sY~3k}3*KmY`^`)iEER+7dXEQF^O;1kJEELah?7l0E{D2vxNvR_Iw zu9cNxd7Rl+ZJD-LX+_;4lx|P#(IPBeI45k}nT;`c3-l~HHhCJ4o52<*c4W_z=z{Rb zpTeMbPAI^e@r%DVe(I;00NG_~OGPwP{43u|1;+8f<!C-g1T^+${2qHVX(i?}un_~~ zwNHV^!E1AA@@dR`2Uiz7A7Dt>b3IUF_v;L3Acy)+nbtY8KqFnl0Rx)1Aw4PFP}5o_ zfcHRR=#dN?i?WJ1vmT=wZ}pOC6_v;z&84%!Z#)iP@$mTev=A3G%_=&UG4|F0a`fY; z0NqtdAuo?Gs{oN?S)k(3+gO*N53MG!j}Owe-YQ_4IB|8X7BOvnD7=<<c}qc0vbi#H zb9MB__6_gq*e#b6=Gx*PV?nUTUiL2?si@uIcO`(aPdeVykox)Rl}ymhHvY|K4hvb` z*gmaoJ_hzxy&R%1Y$1h*3Z!5T2cLWjZ3h8`6-{``<MO15bUj4w>9dbZbq2zH1L0;M zrepQDf<`~_d)#LH8jNFp($YM(eSeVur<<}E3oB2UKkn;I%Svsx8f!0ubTq_}#26o3 zhc<e-<Sg<IK9)4R4cVG(?Du8W>1`X&kc>O!Ew5wT3Ea+~JpLVIJ#kMw)`mU%omfAi z@1IFy%X_N-j?#%_c1550jAwZ~t0?uy_+idUaSu=hn!s`dSs^^Ac@OjfM0k_{*d;d3 zDMnHz@Ztdw_R8;-^hsaT@#}O_k9$HL{h>>hJQ)My=`|COd@GeGd%{Esx0zixdZO)I zr%QS+3iXA!U1X~j2VPSW6^E1J!{o2{jlZdvdU~*^y@iDCPaY^_<Lxi`wYkR@i{k6` zkmF9&s+A$y>nhpb^7~`S!{dSL@OMKQ6kJ;|ccOwfK3}Oon`Vku5U>g!K7ZbR@$TTw z&gZ@T!?!!zM+fgdZy)UM!>_%A{m(}SpSNDWKKSGF=YXA&jr9cnl}^P^0cOe5U2>v; zb4|VDr}g<cumn$^>tDeM8w1|LiA_#W+Y}t0geLv!P!zKnA6u{Y3uQRcD!E_00FhuK zLqRxS-tlS%OUd>7t1=V%0T?!4L|AFTeOw7=pKms=qp<lM-%8)?D!N6kq`0hom!C~} z<;o4Ro#6@_T^}A>%tO}DTSBV8-)Ce9pasLQ8wpBP$;1e^O!&G{;5#=4VfS2=rr<m^ z`or5GEXoYlDw)uSVGs!xgyUj5D)|{aSuH9}XAr74@U^e&AVkOd=CT5cYFpOk-opXC z{UHKm<Jd^rZNR-ak;P66Xh-_iVL|C7sGKfwT;Eh--zG<jZu>W3a~!0+tf)(DOpKaG zXTZuA(f-c-`UJ-|G+13N`M2Vdk5^ZN2)Wp^>^!369q?nTdY4=wjP;_d%J%^Vs{n{* z$z+>ezy?OLg>E9r_z-`iA@zJ1QCQ^wexXW0is^HyCTtKCEg(cknLTIcA`a~k7`9uB z33;J~1nHXuCDThs=r-zA`lKBX{>p=PST^nt%cf(1NvaYI(Ru&`8mUGJCtiy_J8~F? z!fnjcQenJbQ-OZq-FfSXX2Fjr`k#rrJBz70LkVd!q`;aE9qU-9OS*qs)FQ>m!a-V# zfNAGe4DCmWaKv0nHV*N-x2;MRT+p7On)kMq7pwB3^uEzq1h=(uJWXDxqN@{rX0>d$ zXUO!uLo8Lvpc$Ccq9pJZYFZ0+Y$Z!!R$>#@<VeBW^(Hn*I6Q$RzPoFQmqau$uDR-0 z5x)u~S&AensZn{4e0?m@pjp6XZqVyU&3L#O+@gX)&2}Z2lfFWIMQ=QT8W@Mz%5kAP zCemnCRPOX)G!}Sq5EhmsMlgd3WOMe--R6(h+LUpM#9kd@#LB|Px#?k`U*>Hy1L@+d z21terry?fFTPCKGF`<;PF&|4c?Qw7h`~4Is20fDy4UD-|jULOV=emk~-CvP{H=xCU zE^?YwTz>}H`wDmxHI`E`lE0Yg4PNQr%#6~<l%5)sX*G+`xmBRsac7d93am4!o__q3 z@ATILquvIXfmBbwE+jkswE*3zFlUDVYP6Hu8jDEc0FdP~sT4uZyC}6@1WmT&vX`YU zVZAL*ztCIhxl6Aw22rame4SntS<2}H@LtfoR$|dtp-^JXtF+7r6jJE}^M}`fw8+uI zewx+d5Nb^mrLVz$%`BwL@o|7EU?`3OijXS6PoW1a4`@{co0zj}A1nGcAL+Y}FnD=* zuumBgy2q4`$3T0NF4VKL8})I{j=U);+5u7;C8cpkTU*-<2J+@~JQ&xU9EP*+9M~w7 zlSmu)6B+;suN{+VX48ZpVC!o`t)V%-oh5)=aCpKTiEY@+&k9eZ{?TYO2ua;vT@+WS zS0pXm0Aq|}plnQ{g)#h3hEd+~!SImaU>B;ue5i9Ioj_aRr(*L4ze+!L;7L{p_-0_z zcxStZ)M<5?o>lHniqjhJ^sd~tumyen`iJeJo{Y%?0lA`qG<5h;5~UxNjRJ-`2!2@M zD?d<dfFD+lgo<1Hyl1R^ozdPHRD{@raV9%f$JIdY9K0Kebay{sCtDAl6ME%CW3VSw zSJa-s;p;w$pTo)M-5JSgNwcCi51JN60VwfGg%4^gN<_btf1}9`u(x*)>Wvs`wyVxG zO$j8aDdZoE9?Z&O=FkIGB$ISBQ)CM$%(EWWG*&v4j%~Jc$K2emnnT~HHBp<sCp_^= zj1iREw2<)<b+mX7!(9VEF3N<$5bLcjFaW(TaB-vODOjoVl2mbjPLqz%p{g36@a_~H z_4mJJoaPREC_ROAms!s`gfgllN6w3JLG~JbOSU7>d;?Q58l|_kRZLX81zdu;kGp(E zF0L#$<>y@#4RaVr3FBxq+d>9jQnjj~$_`rk`Up`QU&P2n<`{BP&^>MsyvQFZ-^>8Z zFvN4yW!>sbMd6(LRLz!xM9t4)HE!p_-o<ia36*r4W#Ho6i0JJE)3Q2iwg|xoIA)2R zFMP-8t->Y8Y{1$^c-`G`p=gHsPDp=<X2}=ku7M%}7I<Dwd}-RmNU>ET$p$H7js3qf zaEY}ghLU0lEPEQuqqX+o-yWehgOYg1@Rf%t+I`6+q$<j4x^QB^$=%}7tMoa3EkFy1 zErNxC23Fw|UnxhrqtIP#-sAux<%muKG&IT{)JTA&wH%Cz`waiVh@mabLCPOGM3~>a z&Mqz|ATRQ0jXykSjV01|#8tA)FoV}r(j<{R4&c-*;HV5R6$lQr@nWXT7K>Jx%ovF4 zYF3A!zYM5}{a4uhMZ_;eX!Z+xE8^yM@`C_uAF|gVVI=vDHbF8};|qL~W;8G0JUjgo z?bDxweByI2*e5$M5lcJB(!FQvKcKju5amqkW;sLK**R-VPPYc0-G$3pV>Uxcn;oOs zf+7QiS&Y$uHAA0aFc#&w>D{#%8HB##H(@5P{ArV`8i_BKOjARJlCknOq}u6^H|Hx2 zI(mb@QX4(EK?1e<_yYc7PT;bPU=^iE=uH&bfsJUxMnk~pIzl{u>o|dJ622g4n=xh< zm&EFhcR;R9l@{#t-Ddmd>`E&SND<wDXdj~&n_lIR=Zm)t!5~CN^>1t$Sy^6H5mXP( zK<JC!3Z*69RYXJzv5}qwlTxn#?rYZ&9vgSbYP8Ce8Axf~%R{G{;YeW?o)j-C5w3?n z!uzU4`-9ueYdEx!kP}Vq2Q(G8&x|F&OJi3QiPQvsVaN;=u+AdFr7MlwuH=UMXfeEn zKX;W3m1L}h7zX-NBDXP;qKM&6)^BquEwjy#wF9@Td<IQq+PQ(`B2+cymjWJs)TlXU zAA2ON*9*24d+*h4^j3in`aB@*<988%6ztVQdwxx)zQp+79z259y5>DdkXuNQFJ2lL z#^WXDpw*Y&p@^<NqZ>spqwtES*%)^42#vPn0KP5-2e*4?Ej~Yd28aQl{?^3J^8N95 zt0S`@n|Qfo6Gp#_j&$wW|K6)dS=bE4UHN-e6%@#UDKGmq09GSh@uj@%ow26yB*FNL z^`6`fKVsRAP~5vdVfnd`9Eg{#p|c)S9u%0*j#V+SUUt(dt9qN>BA$R%{>ByXa*Kgz z*kh@-!u?VKhg_31v|-p1Z1kQJKfNe`i#^DdXfhhSEh>!Oq5P64u4rREuoSJ;ns37j zlx1uPK*L2B^cL6zmeDVmB&+o=M0sE#@QK(8mM%b>hW$IvPv}dp^lOOCt;`BpGG&rT zVVy0JxGMWFJuRhks9{H#j2(7wdBgKz`AHcsBfoWHjgF=6%H?auzSaU|UOGTA_mWH_ zq@^L+!v2--Apoq<wMSTjpn_K_rC*#W%VERW`H@wBCS{nsMZs(!_~S$3LmgQMo1RNi z$zj9oVy!d8&Xp|{wvvZWN+$1VGWCO`tr`Y_K7ch$x5D4=lB?*fdD)FTXf5KT469PT zqZ=-$d|!n#tAg<(nUL?rG*Onl<C4i8*kdGCYWjxEUypc#kWtK`iIL$8qi7LX#SQr* z;lj`XXM=DUFsb5`h8wf8<N47DXPAQva}hjw;=W8yi&Au7mo=2_+I!Oly}IrnC`*pP z=?&2!>lz3+12;w?bj=3T6~h3G(E6js&SP4Rn&pB%B&oo=9l9ePDVu=+aDHU4B|Ls9 z$lD@d?j7}z;RiV_=7wOBpKxkST73<HB;zJHFXLrcuv_RZYTbxaN1aelbq@3j{$m$q zf2JYK?2|Kpj(FhV^Lf{*W=Vd3qvfq>8z0+b`N<PZw$m}4Mv%bVFrsR#)YaZG(%k=j zqbz&uqVDbrwBz-Ta@`WAXK-lX3T0|hYFdZZ==jp3>oKf{HakO+5n7Nsmhr4)H)X8! zI$N+EPJ1{XygpNr^`mbvbQ~;~7FgwS2GrgrT#9ic=<ky!lxu(n2^}2v@NB1!LQBYe z44nW7Xn4rmv5laSH@I$AkN`%m<wW+cOU#>5V$PwPl9uJPq(EIzP#GL}PL%uRhYpa& zjzqN<$~j^mTU3t7NuMabxC3my<5rN{ZUv^VgM3TH;fSuv&=ZzJ7JAN|LfudyvKZwe zl0|F-B=vPiWo8QN*v>}aV@*#{%|}N5B_C%cFcL=vEMIh3S})!vW!D}|T`6L)3;{K& zaM&dB92}M^Yygahj5wt6(-Jt9ccYP*SPr6V6VyVol005nDZ?}2F@M@kciXeHvZ&l( zNF|o4gauWVTDZZbdM8L&3B{$6fVAjZz9N<n<#~Qk#yY@A4-bR)Xh%JJ8IF(3{!iPb z6Daaoat^YJNYE1dI7lZ+RdKS|HcszkoOUyz9|Rw|o5o-kVmg7}<6^4AnBWsXGf!~F z?)V7WEp!*5f!aCXuIdt=)vwSB9LSnsM7iaNZ_3;P9OURCv?s+M&NsQB%1^?434TG? z{)!<n^+ck4WPW?fS<}KmLd}z}Yy%J(bjT{}7c+HTuaN1aK@QdiI{pY704N5P$R-oZ zS|L)3OQY{2gnABCIIpAa5+`zmBB$quW2dwnq7LXTQrq@WEo91f$~oKeV9?)29t&Mu zRD#8S<3*l+glU%GKD22{_90JG;{Qh>LZNrPQZ(<iJL&mwJNKGm=o_(4m_&YWi*DT| z8b|vaxhJ-8PY{3N^TT3}->&PF<$7tLvrRYn6D91($-{DsT+vkCFyB2#JL^%GMsgpG z)J%z&fI3?NI+)7a$39ZZdp?+bVm0BRw%qd)6@|{ezyQ|vi+jCSY=V(DhWpszJ9OE% z&mZn?7S`H4s)kK;xVsfuYir`9^v<V|tB3nXt;n4_VuM4^%TZoaX!~g~?xV<W`YAHi zLW=wbDDpEep|n{V!^UFbny$XC$DGS|JB)nXCL()id1<mLHkr5lE_|^7t|shGv6Chz zSB@^BjG|~OxDb-<{onPO$0R<E!DN!(42%oTK(=0&2{wRt7^uQ1F|fgV@>bt^yN7SG zRzOwB6)%t=Ia{}k>AS)M6KY~ismF~pQA&%Vj7+L>+qw($=qk8oez+bfEfgFXF8!FW zirq>-B7|XGmN(%uWS^OGC~C*ZE@RThSPHjLtOVM-h*5qI3$cVkEbX6EG7NdiEGMPN zcW>)zeA*q%@ieu3m?Ez3rzyXSG8FZhTQYuqk)38ef=JR044(JhGn6b)Z3V3@ZpZAw zd~0eobGe#!#Oqz!+miMX5_^tD^g!+S&iw5Wf0K!r`a*W|aM5sYNrj<tcRXh=dXM_+ za%2mlj(mnTfcog(zqbXFYh7C-yMYgW8YNM+jvakq4u@R)2^Zz~57Z25gc_chN$sID zoLKG5*_XvV<fhHf%eVQq??z0jn{Rc(sK`+;vPp8vCy{k+j`6ZeU%0%*DOs1ydi9`8 zSDj2&eA!G^{BLEl;ux<mr$6n4R=x%w2{U#|3*{IhwNhJk6X5|>6(fSaOhWdtjFpG* zdteUvb&`t7jUk_JOXg$S7RST4CM<D#Lo7<Th3XB);Z@1)em|D_ExF?8FR$s#oP96j z_vJ_y0BPQMe4-Hb3TA>t)kB27quxuG^;|&i7X$iaP$!UDuir{{10KJJEu!3Rh72Fb zrA6uEQ%sT)pgo&>o@G_@M7M*@BhjV+#*F&;$G&dlttv1gswd;R^Kb0<YooL5XYgc_ z9Sm@w&sfc;G@h<3FSckDk!!4s?`K)neJfR#o!4@Ktk*D3CgXs5xW?A4$~Klm&c^US zWWzzh8DS||!(n~^9G18I6_ddmQ6QiR;13uvQ}?;V>C-WyhViD8O5ovRd2Em6OBq64 zc>xEbGRw~NZ(a?T9^`yOk8JR{boHDV8*|;h=0HUw#$0{0hAf%&I+w54wVnTMkw*n) zvWS3+6zAt|63DRJ%%XxK&}G$uFN7WtoH>r+Q|S#BvQHs(LyPYkv~sHj0fhuTK8b{O zq8^}Y*dJy5sbnw99%qqHl4Z2L9X6n|iYx0l?E^&_Qh)DlMN>W1oY&+TgIggvZldb+ zbQJA3@q0;v|I>RB@<&OxnJDJsMDwD@<J2l9BcAjW{JmXJ6!D)WD}fD%l`Ucp$9lV} zMbQ5&Ddh8TlNU0NcwVUC*Ttexz|`UEta5Vq%~{ej%DN!eyiRQ=C^>N6@oh40rx>8R zo878V5^6<dVZyX{!ln`;ZuB*w)(cuGWGf80lMspvkYYAPyFw)JGH+-y7dA^StTk=# zqz)iFBawA*B$=L%eC1C7PR%q)d76fd{d(z0n44vHuFl;jmS_Vskw0XlnJB@;J4I(J zrA34FB$-h&s(n~bQEW|S7u`Fos%W`XCs>Sr6;pnmkS&=g4)FK=l~t9d8KPPKp0(jj zf$9MNASA`}cD<-}Gw>96)^5yP3s&A<SziIuFa{ckiHV>(iesS9!SIAli}-7)qHBk@ z$~ACONC_^eu0W*6fHe${nCPs4gLzi?JYJd4hnJgE1Fy@-qTRi2jB}j06NuPUp25bU z30UXYdC^EMmaPrm-0C!`V(7{lVF6U6a1zXMZF`Pmzvv>U6~obFuyWgk*4jo88+NLy z4H%r0yGn8OR_I|F?-P^Fw(`=e#8&u$GFf#a7Jcg>nJR!tHwO}HyhFI1kIj=!>Zb6X z%f2X2I*wB(*Aj(vx~17Uv6iiro8`%{J?}+DH?)gd`-{v0){gR2bYRw4dz*Ag>=bAX zc~krN-J2pj<dg*?lr}TKeenvTC|(qZvK6m-Q*i>8dRmmum{42$rmLJ}(f!fPF=MYm zrOj`J6NKMRC+LZwBy*EVlL(ZvEcK<#-}S9v==9I?F<^3Z12p@}-QgOa&Wg0A^a_Vw z3gAQmQgtGoZJ?9XO!BTe-CY+CuYG-VvIJ~+vOPL2&)Go{Ulr`gKc&-2T~Zp4B0enG zwwHf7EJCZ_q2>U+;da!<GaQPQa%u<AH_LCPDIe7$n~aW%Vp0L^u8Ii|??8XU2vg4w z-n@q*DBV3@uGY~7%=S%^gD_n}tt}t$^is6*J|q-aSDGNi!ROOSl3(Hl!9~f>01xpG zL#AaC2YCSxyexS+Kz#wvF?F#-*mmn=*$}+J*fKjxPq!f`R#WpX1O_Nep|eM8_@4~K z#MaFJKtwVBt<fdG(4<<F32L0QW_aw4vucKcS7rO6UA~<Z>Wy#3AFb2HAskjHv{j?( zGJ|949a0N2l-#~Z@^gyKX6S$5d<oE&ID<|}+wLpg{fyV2WihK~&$DWpRaL7(>l^Zn zyD%WB0`<|a>vAN8`S4gOAJMp`<SEBj!<OZl(Y;gV-XzcY1ml7^esl?%#?>qYgdC3Q zJi`=V$s`<ZmXVQ)?hE@<*sYVhowhnlJl@aQaehK)Z#j}ma2iraUmvJ8kI7*CWPmaF zFtjdBl_YH|K#-H}r@)+WP#P1jl%qn|35Nicnsmh{$Ui+({1a5G75gNU-}3PrdUe9~ zR1x$!ZWY<1S10U6;p%nv3N4F1D_|`9ozFw|0ah40l>r59e1Iwp`|5tddg{u+diz3^ zKkR(jN1xR%Mf?g!54-aaW1KLWOkPj7i%C7rjhd;RzALWa>14>>7Cj>Jxv<DGst1u> zgQ+P)>K=!ij=z^?0=4rRELHn<$y}l-7hv|fkV-$CgX8k5X8$HBFP*E0W(2sr@@oKK zA2qNFWjvp}UcPeGR1_I6C6@G8e`Qyf+P);cJTEbLpTaMVDbRR>4|p5fyl=1}q~O2P zc7M6QL+#V~o~*))Tp2rivsDxrf&PWIPHuVCC<|k1<Q2a;Es}D4Z)2^3okk_EA{#v< zH?jwgPy3!(E&Rj5*)1;c6Gdj>K^~&2LgPa*XCHy8AaZG<NfzPKsa0>8mW}x9V$=c@ zPDIf)r6HE+No`qPSjdl`u=hS`@S~On<?$iKL8;)~MS<|UUu1Z!^do3hnUq<AWMNd# z=+a`Sts2=YuYQ0O0**W@RU6x=v_R7RU27bETc}@Hs)@%v;*?ilcN>|ruRwE({B@CZ z!xdu2OmzsrG5M;9ek+D1FqKE+qsFfEI?Iinw5*Q{K<?<3RLlMb4E$$g4Lo<lmW*O< zYv-)PL^NyoLh6mb>QUip?wfaV-iF#YEQg7U9v<haW^;Qw+&mU182Sq2w-ZuOeCn>D z)|gsA2oQ-@`SlDCn_@nq(ibLrS_^@}@Z@(4F@y}#30mCY?xah+)8abNCFli~n6sA) zs!y^?K(+RV_ApN9a6sy-JM#4NJM<$l|E+8$T6(^wUqOaOH+hP8VLPh(5R)bq2B~Bp zhYIPI??j_%V70O>hrfIydcIa0dYI9tLcQ6lMbTq>?F*x3`an5<pW>$jM-h|-W+ZFf z8JPDQev5&Zl;yUq7(h`{<;3wh+}mSd0<&!*DGX^NNCczn2-54S!BM2U;bss8E6vE{ z%P0uiZkT_-s8&i9krowOb_Q|H9hc4>t7iqcv=E=OKjFxDX>p$cx{MI>W>FAz5VSTX zieW?cJ4%GGoB_L?V*XGSH<vZnQUSh)&k8dm*<TAWWxseF(HR*Aa`^+;3L|GHz@eiM zCpunKT%jWr*IRFKc|8!QpkcANg5EV4_7oM8zQWpzYK~`Ro_Ws7KlNEjz_pLc&xO>X ze#Ik`XZ|DSePQgt^r0VV)4F%X$dNK(*>BC+9=TpDCF=X8005L^N%O->b1f)iZe%`P z$36Xb#a4F^xoo@4?)Lz)YH>7kDzaE>Ggha?X$BjaWm$ZyR2|;n_t{FY3PK;{tv<`H zZI-`4!<0Hhkv*-ejuTCGj;f3h^FkaHZisFU$J(ycbV<Kf)DbOc;K;3yM>19S$40#_ z+NnB|%zsu}hQ_+HO><~R>X&8adMlDsiuN1@tLtR4z#ga_Q2M==ZlKQ82Mp3hR(#T7 zgGA#rizUx#aho)IMPlU0i5S2>^lg|lQyYdlu{TVT$qiGZMc^4g>DkuytHZZj+dK9` zAOAN9qeolMoOl01AB_E@op;XL^`GJO;fuZ9Blq=x!Rzg#cdy;I{};U7dfh6Doo#Qu zJ$!wz{mS|B(;9Yp2;bb%{e;bQ2mSL;C_-=jw)6h2`~GM3{`tYjefP_M(wv^VFaI~Z zd~xum)i_S*^-gP=KjTQ+-Qj%R?fv$mRTSaZ8Nq+z6!-QIciy?B{}TuCe8&aff8rS4 z>>O>m>$1-N^)vhFC!EXf`kD*dpVl!>=p^&F)l2PvzQT>E>96Ich>BmtW*Gs$JI?wH z@A6+_z6pfs*H}OWAQjWzqDG5lQYKgOf)e@cS=N8$qAMwVekHHR=j_}|Vn5}hL>bXs z^p0hk`NJ%I!dobP*^4(pJ;R#aUmx#!`X(iZD5LV7_73tC<TQ0DvfOB|`T&Bg81{9T z#itp&?jIHwl*2mc9oBgfQpYfIbJcQ`^=PYZGMAGbVW_E#?EGQ^{})=`^6+7foGF;6 z66<sOYkT<#JWz`KIX6v^e5`%`F8g=Hc4ppe9A#46R?>6nh>zXD6?b>o=?kYzw5r?A z`r}$CiTIwj=WM5c$X<Y>_+()1-V_yh%h%`sV#fs<s7428s5l#30W&(F^AHW)(QL-M z8W<|L7n82<8>=){?rnMNL0IPjLTK9%$y?I$Sif6cw=zcEH<UO3h82<5%X<h@$Kj!) zF!3UVC+EBr-zFJ4>9aLfn2A~UdfqKmp!pU>D9+Gk(R7Acl8!QFy@{6DI?YDDch>+f z?b)g&5p&(;W!60Gw(gfD7Ccv-d;EPbn{mzUR$nKccD5eg&Xx}(J5AyH<GnZ`hZgko z>?Zo#D95rG<gQO`-x~X>)r%P1&JQH7m&hanL%iJ!qpUL25SaJv3}d9&ZyrJ=I;eBc z{)C?rRi0C~wAx$r6Xawx8Lj%de<LTc##Yy5JNx`v+*^1Zx%b^n-deeXRhK<xIRYui z+bq6;iszfPH}Kl)nUCq;)l9!B+SnMqLw0{J>sk}to^!9_e7h}xRUOxS7wjN1ouBh^ zS4%aHJT_-99?<u*Y~&&ds*`$L<g9+?ON`RSY1)&@M&I5H(0xOQ6jz7Aj(vQVj7L2x zF^|%yy2#G(B4o}!+*>vk<%EiU$?$sZ&<_dE9(A1nRBKlkS$aWoZ$4hS9pzi$k1#AF zE#dZ!mQBNG4FxAkl@Adl(S8O$_X{DP5ac4<&ww6P+c1~1m_#2`3H>a~d>}`d9=!*p zf<<?0>C&2=VXkFNYJzF4UuTPrx%^R;Rg*OLeuQ(oL#+FlE%g6!V~I9Ns)c!>Pv+Md z5LFY6q<y$Mnch`RieC}m_WH9mk?3ENK?UqiZP5bs01pLABWGeHCC+Q*(7=b3%d0Fv zI-!JzH50{7|22m)<}Tt!FOv1S!7b32*#2DT&{H(gE%02DdDj{fbk$OYCKlu3Dz}@W z!?GqjMKW9OxLB7~+b0c==6FL2CIeEF*F|A$;F39e4_i6CNhhd<{TB7vx?_ZyvLdf% z6;G8T59Im6SJvBnVp!^l7BW;L_2)gDw5?^+3%Z0_O}APu8Xr=5msZ|9d>-x5>Xw!m zp=U@`ea^lkiL4HFs*T9IE6H2jF@m47SDDZ8O=e72feD0;Po^_+DbZ(7I(QAx9~ZOK zY#$!t{lI9TbGHsKY+4XS1G?*lCqYlj0BnH%ea!NwgZe7Hipjt}kco97nd1C=HnQfZ ztn_J8*l&|DmLU3Do4hTkEtzmD<?Nh2?h~Q3f#j<UU@yD++Cxb@J#Oj_&zs@OdvK0d zG;{Vjix(JWvNHafq0HZwRm-k%puO%|ltV)J2{&LdyNMR}qYMb!AV+J?)~gcJCzono zX;mEo8ppzYR$Ry9j8P(%((n4v_~6JOCIJnkamf!Ihn!90&=ARcsbNzQm1iaO>87vk znz`yU&b;Mo_=@06reZRdBC+<>-)bxGXc2ystLO#~vAbO8B4RpJ%`kNZ*ud?{6LMDK zdDsEz(DnprUK0a<4^BukNo)`Eh}N+9hgeyqes1G4CU6XZ*pzp7hZvFK8Co>wXtmeE zVKlFV!4{ilX;HHZEuvHVXA(tV70JWhA2CFO1L#%<U5BpCxW-G{TwGart1l>hpou&` zE>84I_&INU-?Qoil06v^)K4RnLGe*?ZUvNhtO*9}@{sb~XzOuY?6XO66)kXLD$dRT z4L@dMae=2rl2>QE>$PzM6R5O-EmAn=1*X#W22)XHm>Za8<}*raWNX<u`f1z+j(eYU zKTn>}oC=MzmcPUwnb(NFiFX#NM9IIzYj<}F1)Ag-B;8PyVH0yOfrE5+QqZw}cege- zZhfrm<zu@s8Joj7QyW8&p{GMx)*|X{06;*$zYl|8VDdC`uV3va`<U;6M|=fvbj_Ie z-#S8-dy4MY(^H_#NID-0$v=lr|L1sZ^<O6|kDr>@pDO_pu|blid?u;^rCysARfbnm zgDe*u_)!&!c%%;0tE9q%aYKiY^O9_vK4b1ku@cO#^@bM|j<v>sYl0=`=OsT!C)biq zlWQ+-7sRq!xw3yPHu-81tts!ymst!;A6#$}!+j!zLku)_qs)ogQ#k9lCmH1?MN_wt zY$tLz!3%l`!us!Cwf;-Bvgp>Bd5k-bzoH#<zEh<Mnnp172oNr{p&H%DV<yBOj?qka zl``M1isTeo-#8Fu&4ZI4WMOjTIFg?NKnZ$TS6sc?65Y6|*yFdX%1*OMCT<ROZ;iPn ztkaN*9#)`RGwcsuagfPt3vJucklo*b3J-xNXl)-YmT8nH6{)9TpeAvFUVZ4_F|y|y z4nt#BQqFr-=)g<gpcQ^-9H;;`mXC->elA9~aE96h<+00}7Vzk7TXne!N?JNVF{%t0 zt&}C0XG^fU-6LXFwh-J<(Qa`*^yr^GdhLYiC<8Cak+HWD?!QFMYOW&L*w>kFv+zqc z0x2~-{z8-h6$%W0q6Q^A%SK0A&&ckQ`L(1VbT>=$J{vXS8ayb8$6SX()itP^VH^e7 zbE}(&bV3r4>;!)<(}}$K_V;64nDk~3@6i?zJXsrnS}EhekS_WAplElDWM!#-F=&0< z3Pq5#UTBDX#BKSiB(D~g;!Ev-c1{*63)n_jU@(3-;%nRkg|!DV8)GpN%fi$}LZvKX zO8Q8Svyn{&L(~iSt{T0&S7;;pypI2bd4V7(5u+1SddT>~B5PPg)V}!d#$Zm{(IMFi z%4D1s$fGt~vNV^wy9)#$U{dnLt%QMC`!4N7O=rA~C1igAAPpORRpSgAZjpZ+vqQ_; zl#J}WrBNN%hH_<X&X>bkl1c*?{YD;PWK5^tC{>~U&=h@MT;<9*CaV|ap)@0-Z?3w# z?&53bO<Ko*tVM0GweMy|jP#sBVw7q}x4zi`6AgGXSzK+d&1OI1$69`TPKqu3h6W|_ zQxY2uPG;0$wcb|8Hf>2@SJcgkOikM0L~G(UrBL7d2nDtWqaerusF=AzWmO&DqT%v+ znT<VC&a7xMZEkpj$+VyjJL@-Siri7$h``c<Qz6-{@~erQWN55$zp+0Exl8e$N7eFJ zt<pAHpchsh%8Llul<w;9wWex^Ixe^yddF3MDf|B+g~RkwiBe2(yBpCUkb#>i-_Is} zje?0NgE^bjewm|7;dP^DNFC512znpai^GmHJE<Dx;<R>xk%wwjgR7Fz=5)z6o9ek; zeO7za^9|48V}p4Aspbq>chaBV)pszE(cdFdS)JEjPIyvNArnYVhIhQ^Eo_H&QH8(N z@w8?)^zSMCdsTbFHIp?*KzSX;6#J^e=*?(fS1-Ckk&Ip5$!yz{yQ(q!3Yt!G)-<lI zS+8qfN`sb%_M;FOapC9(K%^#X0ZUkdS7^Fa_u67O%qP%SWRg)dt{Yw;g8>-;9@fAc zppyTn_dGn%C<fK$>~bkk`NX+A)Oxt>1xHmGzQKgzXOjY$82%Kk=l(<Vn0}zF3^I2( z{86l6f=whLjqhOjE5Z-s3#bUbI`J?X1T_K*S{p6gG~2b3r>sqA?z=b|@2{?J>P}Yq zk7a~ulO}k*RRF(RTh=I=Uc;ax$F+;e!P_qrB^5mX`-3CH7#stP5ZS@HJ=mHCTg77> z>>5k%A8PFzYNdv{wP0PJH-rk!4BjkPluQ!dEhxLwD!aQ}SuFajmc|Q4OQ0j1Sv(rq zCbZo69HoQIsWOB1QE)a+3)+b^MAzPjQS_r)zOq^QULg_*bVG2+=7{JJdOeStBi;lS zF0GL@hj>%i9K${3&3BbS=fy&%vjI$>a$q0GbRE6}NPnPTyYTA^{dxnx-qNovT!-2t z8ynsXO_gyL7j?K_LrcSscu6M8SmeC7$oseW{aYP=@qCo5=MavV@NM&XDdGG@y`(7W zsquHkV;$VK)r#W0H7{&&wf*fXVH3ntAMa4yqe96Rt5EtSlycalz9yOaV@D);Pa?^) z8o2I}X1W1Upd`DUd*x_2(^|Gx+}ULh6m{A61=xR7lTgUplC3{AF1m^7jf<Rtv!{#3 z!clZB9F_1cjtgng_{vY#V72ySjNm{CEFN-ay*S9<6yLPt#czGgfl78HSmDEt@*eCc z{xNm{;heL_y{yZ3S_G>X_)5pb*9TR>8lRV-;x<{9wvg_GEKb>hGEm3g6xB!KXsJNw z>{AEt|LDAVNju?{PdL|I`bnlm35fg+VVWUO(Z@AFXxK|et!j!eQpNNBiki*<CiPJz z`gVd7h8g;{FK)*Mi%9~+(DI9R^uxFG?>@N!c%VHkI?w@Vp7>;<M2J6oF-mRF{FtBg z?*~&zob<|9zt_Z$?P)=y8A>D=4n+wZ6h6D(2?oZYs0h&YNk%3@Ypk$H%Ab-^LW?xs z-;k-AH$({ozyKlA?bpazqP1w&ZoR<xC`>FnOlU@|EEs0l-;k;L_lH>|z1~5I>JCXn zc7HJ<K6P(7o~T2E$|d)g!(wS~G2wJu-Cquio%I$gozYG1FNej(NqqduI*xRR5<p~S zCrq0Nk9gvx@&2G{l%F$YylgJldJnG?HcjqR=Gf{Od2fXW>}DPrzpw+k2sbnYIbo78 zd(Z6~_aMUxI3Y{Jb6Hak!9Ef82Dg!~N2@+Y`1KD!&{bF{;u5g9P{CMy2f*OQz0$G< zYNgl6!i04d9gamP)tT%6&Dku8r%9M4fQP_d(?gK}vH?3z4|M`4h3SCsAxQvlfQ?R; zWanoIG`X0a?<r!~`HN&BJO9n|d3ip$&xZU#oDA`|r|ml;cGY=vnBX}-PRu!flR!Nv z*mqpEcaJ_aJJAZHa*f;AvElbl5DnHm_;9^W?w7dn1==(n<XWCSVF&$`%g1)+4+K9u zN*>HWUM3G^Ah#FdyhPX2Iy_o{uJHLXd6@Ls3pWE}pntMkRm9SaJy334wy(<teRVm; zgQTBhgm387+}SA4J8!mV>s&WmXFGv<Q1Jg1LGewZyxcviBzgb0K-HuST6*i_g4|c= zH9r#zKEJbFaXjB~E8a7L#YNuF7JQ^j%q4VfU$s^LUXG4I?>dXT+j;Yhmi<lAb8Xot z9T@~erHZ=De7He@WjC<Qo^91^)-`<CmN%7Y!##8pV{NBmi$vk~_p`8{NMQkaXWJ>F z4|Xhq7#S`&*|E$!=^xp@|2@m&QJLAAF_bXhC4edZBhyOFM|ifB#mA8CCGl+{O&OxR zZh}p!SKN9<_MtDG7wW$Fz4daMh%&p54wL4UJh;&5C$$T5%*AIFqZ~HLBzo4oo3j^5 z<3mR&C&F8k86r~QcyxM*XfIK|b(j3c4ySSJ4fACfL*-C|?s3XfMgnLqz4C4qL?btf zZm(ONO?*4vdA>_=qepLYt_c=cg#!$(Z#|O@Y}E3Fc%9r7wP=#DSJM7+;IxBDwdlIO zs?mC;N9_0$G30ixcyeEso55p@CrTzMLl$f&IrgX%t?>c6fy$370cKpolpn};Y2!j9 zkK=ke3+$+W7!ZwpNP6-pKxxE>FG;+{-X<QS$`JiHo@1CFT$-Z{dp8E&E5YYr#k!tb z=l}YV9szY^oZ^+i%F35yMLC?HW&G<Tew$$Ec(l9(esr3Qk(Pf{uV)!bfw+BUnMz(} zk?@ZRZiP#}HOqX)0GFl58+^%Z<>VWoLKQ(bjlXy&1zqXnucp`$Y90&H+=Q<aDk=SM z7ZkQbdF22taso=?S3Eqv)%k;>;{eT9F%aA>zlIYbhYfDME6AzAeTU&cXUz-DXq3cc z=b9iFa}%)J>XM5Tvm$Ba0c8G77SbUeQM2_piLDetUz0coyqnP@(|_%ln=Rp@G0XUc zkYE(7z{<<qHGtT^2GFY;Ns@h*gHSD2j&&Gi)%+w209#qYrsSRye<UUvZg~7EfqB6^ zVDQj3)JA24w}Afo`+e2_^cFxk)j8(Cv&-h`{YEA|sRRSq6EI22{ey|c2V~bqtc$@| zOz=2oJdGQC$<y$AGSZI#3_Ly*-pFtI5#TUn27lx?{RmJ137hapexTnl^&v~DeOSJ6 zD-pUyX~<Yu9<fSe!^{)@>7@8G6v%HOL}YNj;kJ*Vfw@c@Qf(L0X^}4&OoQg^zMrV_ zgR>|@kk~P_@hdcXLkU;XIG9a<^|*k>(JHS@<)+0DR1+Q@Tgl*LPE*<!v^S@K)!D4S zP$f5PkuJJituxHXhBx}@W{4MbbzEX_ZIFKXbymUg+ml)-lcDJ6!_6`s$<c<7*6baW z4Tn*SG}SDVJNEueqVMy|9C{d7&>2wjh#cTYIYOzWmEf=Z6&8#J$H9t@6J7&JIQc6_ z?5dEl!}5jB^GuNhhgk6txE%a+KsKy0x$AK5_jE2fjfBEEMAnqonPU}at{YiBXW0VK z7pbyi?!>yV{Gd^vY-KLh$@a!*hS33SV8DaPD4Q(qY5YmDpNS_e!yrqo;1k;P(Q)6c z*=^Hul+Ka)wWeho-SmtWwIlTcSg7%dd&dV`6bO{s8)gxh*$MDU|3+8(`m}<LSPSo| zX@vzi7U_vRksD-lj2%-n%G8aa6JecNFWzFUsyE7r${}0&bI6LAGkN_9sMN{2i=K;` z9Q!T+TTxPMR(j5Q-s56a-u4P~JtG*{AJKIQ12GicoR>!>^7iQM3oQ=B1s_x}0cX!n zixR&i(0VR6Vsq%goYye*qs-laeD|C}uB66M!zk31GiBkR2#ySsB#=2S1)&w@xC)2e z;l8z&7YEYt#ppXlDT^s+Q<gWRrW#-b-WDy%yR>Ax*&>pn@KMtSN*|iMzzi|x3L@^i zHn7{$qrJGcq5-v&_AYc3WnnH=>S@}0n<cz{`do8gl??nv;qKXO4N_%}q3Fc>48yt~ zYkA@XlZzYfsi|`dJlAP`K9ZavoN6X^XMnA&HWG;n$55p`-qpA0y>mP7PyL>E{b_NB zAH#Un7~{k~p89UuM~a_Cog0lhOj9&8q*64-&Xq|_;rS3&$C|S^0V$_wo@_OeZtj?; zBh3|1h0cM~Gxqg=)7abXYkKK}jzkvj%+D-ED<+ayG$04favROa16F`+ZsQTY9Gcr9 zc8mUw$Yxe<LUO~6I`7GV`OMEO-%55Tf_Yms3h@wmnJAasB!)woq}~{TDoX(@BC#=Z zHts`RZtoazvLKQeltCL8D_|6xrhc>K)biM~GNE?v>)cqkT*bQ0DNZfS4smYg@1nEW zT#W-v++y0pPDBuMA9+SJTw~gBLo`&Q<NsT<6P1!c;3_VFBm>zsX$CN+y-sgoNihzd zl}x8cr*!F(7l{h#8UVFGtWJBbUzWrZ=4t;HBOhJ#V9)7-P&!K1afKZ9M0eGFx2dm0 zs5dAk7*}91`kmLsNauS99pXbu9xEUWQi^YV5E)dd3GaT>TL|e@i!IXLB^Zp9wa!Fr z?9>Y?QVyv7gZcsU^Gb}SxVjkRyQLy%j?O9U6Oe4i(l5<b3(VP7+T%)V?M#dBAhnyd znf+{)&9gPzI+yhKFpbA4yY2<sSi@Gb6-s2UCu7Nz0Md}yE}5q}I{+TI8){l9$FlKi z04&CMONi1<-PE`)XOy_<D2)%&k!%R2bxDu1B0O%BCV;Xl+v{UTi?~b?nq?;ZaVg#= z;ZeHMxMZk!@f_+A(N}dbV@RvM$x{m@Wq#De=LppbZ?I|n_F!NU@>}g}Z+H}D`Pk2I zU1usp>^bHWOZ-9u>YPvt(ebWr2opGV`o)}(H&Hann1$E}iV}r>U}nRT`UjVYZn4M3 zv`Lh0NqD4Gv-ftOcQ#73y0XiMVLMGnh)T~>uUmk$ZP`h~H7D3sN3jGa%HSCLlSztB z0yhs#rn}-px!Je8o86(>#BOe<BfSa=7E)vSrk|zVN|7VT;^%TN73`QS>ihwz(5Ye( zpPDOa^W7rwK#v8w#9X8(rX}$y{Y~`<(98B16?awq4c`#bpT#%wcQrChP1qAQs|-_i z2F+AP%|=G{i$*Qk>D|<mx?L$=-&?v{WjIA=*se|>-;=C;OTU5%J^Lr^zgLL=kPi3K z_}=8^hYB3}ibEzR-%Tl6d~E1Ar6_-&jMRMqD)7xW)32YzAC>B^&bwM2(OohxL)J{z zi8GFh84EIQP5TQVkkqhycFvnLG+Ef~I`F6#fsunFX;0XTzYWG`3XC(Wzh+(z5IX=a z{?7o|9pFC)^}BvhHyycfr;)Y2W~KKd+xM+S+we-d&$H(_9XcYe5FSFtLK*XKS;~=1 zg+uVDsDTR~ZdzFsM1oc6Y%u};D9t6kW#-)!(_ps4{;B@cnu3I$+>=?Uhc9i$VyvZF z8VlsvtW*v*Gs=X#f=uJRR4sk*j8Y^8Oo7-RGz`cqrCu$_bf9djNp<|Hph;N~sN4Cb zWT+hf5qbOSi{#v-_)#hn_&3B%pHm&7hFN;k++}^$Ex2H({31c?y0VHKbpP6<#;7ur z4FxFVi^M$1%sA#sKVaHvJ_2E0d&EcRHVf3|174TOEK|=+pJa>(V|`PMn{c3ZIuG|m z>W|)%Rbe0-4~Cn!2);-^&rv4w$UN{CPBYAv1i-;R#$U{|WU_}Gl&G`IN6kY>DlU6l zQ)~oe7MQtqmB$UTP=5YtKhb?PAb~Gc22ehcrb3DG_@)P$*hwBzW+d{Ig1LN2m(PTn zoE9KISIQm?s6&Y+3N0@m3=Xg`CyPqILeZS6=r&lr;-{CHScSDORW_|arA}gj_vPxe zTJ8Bzd~bcBS1J#ao$;m4Wf63Bhyq-3(m%dUJt3EYE0dd9SF&wGzN7%f*Qw9X8Of#& zr1nBgF>wVjdl{E`xJ#Z(UMv(bMj}#anMchiovhHj^BKpbBZLX>=@d{9TZ*Gc$G~Rp z?v0#jHq0Coq;)|mMt8}SxVB&m3=2w~w;6kSomGNic&Ic+<$I>xk8fc+WjXN12!&{i zqrS_3UIK-RbgU8p4z&t1P3*O+VGm(A-ZXxlviH6-=}$C2QPO6X8FA5yK9iDQ^&OBO zN#FaFjE6isKz*i=3v>3$D+*XtFK?)xl`{;-(4?I%ipgnGuF5Ukq>mf2R!*_#(K^Fy zVv!=5I-A{`a$q?c8C>xYRyP{~CB%Qv&L~O*ZN}evMfeY?)^*Y}zo)d8Km1b7l6*j* zkAuewj`LM_;DhEv22)=BVI^Prq4hHO^_QpE)~`PdnIuUOXKm8edxE@8trO&AC@o6a z<CIcKAIZT)zk#@6p0;J)E<f4%Ew$BxsDj5cNL3+hpoET1YZR7bOAfnFfP01F(}vxH z<dj;i_y;Br|5vtt^!`CosNAo;OG-9L)8rbOkw3GXVi2Mm--64`{1>DR`LC4d2g$`I zUtN!^#`0BU#y>4;0xCljzfj5`yx-asE4m3e2udaLN9qlt&1wmcBo?b&MpZ<or86<q zH%qJQ^!isgcF{IczlTofCJuHm2%Zx*j!l=UBs0?}nQC*mDu1wP{51{7PxH|gMxFRE zSpgEby3U|cV9{kuluJ0AHY)5VPo}@d9RB?U<`{xl3BocgS}fQENM+q&H*j=$oUQ_+ zZMT>|oeY08+8!821)W#W`Ps_4=jw*XVY-?R|6>9ywbcrTR)Ar&EYqkMzAc=$XX<Sh z=PL$61uIvCH3|c%oFbJCquHFjOydCPJ?u(KKz^={h=Bc`-pkvwKRwi02dJa`kTRr{ z3@Q&TV$ctPb=|}7$&+<D!_=o%R15R|c<p2u^)}Lkt@=I11U@N6Y5Wv>i|D3@3nRo+ z1LSmAwd9~3{QELxxAGQ)6H{2l7-aJk^5kSD8uf0bKT$E{_S}kuW^SW%vVKY8KY$dm zFpE*=p5+t~4ObEv40J^od?rH~;6t9wjtaEtG>?apmm4xnG>>uNOBFQusCdoC=WSi7 z%1S`}NC!JC`EEf;90}nys$tOp8i8<M1y!7Ep|SjZL$R9olG@KG4$Exm(p_e#Yw8}+ z*};HnxRJ{&X4Wvg?SA^(?aCb`k-_4lUm|}as{8j>S^4ej@Xkb;vME6n@6ix^0W+7D zQTKYdliN_9e><oH0mh$pmFD|7!x*0@NPh0AW{c~x7V9lWYI;Yihr><CZ+n%ru9q;z z)SMEEavWN&)lzB&XIVL?kXl6*AA{T&Ak7b8AC4N#Mi_#OBxAkmFYn|RfTFR?P~yC} zsHdj^)0e?c)H39uj94S%-U90oB&Wdnp_3Pmr3d=%&|Bc-GKSYtLD!e9RlxYyz`BaE zMtQNfxB}~vrFlMX7siy8^A<={ItsGJwiYO0U157xVEn`RP)ky#;RWbu>6V;3YGV<< zIP&g>T+N2ul6`^7RnSG*4tiVqCL4sj2j$y%-d0z&5u3<;-iO%IbgV&YOXJe8$bjO< zC(&_7xuP5)0JgbH3oQasjWns0amuXN3rxA6ET|{lQ`!|VY+vRw?VZhd!m_G2>pN)= zF<UE8P3=x5i<*1fB7dJxmai)do7#X6zM$v06u$bpcw^0nR_*?<>Ba)8+swJs3^MR_ z72hsM9gmiq7_mRc97aY%dXR4kk-(m_opNyKS*4*Qm<oTRYdq)uH56=g9l#`&p5C<Q z)1uP&6Bz##P}){#YEBonI^JVCVIDEIc#hztkll1^t#Sp~LB|{3N(NKU<$i!;a>A1` za^xbqYsGHlO{<I{+08vAH-sE&piN3tvvf4z4RhrV!c4;oSL?>A?CVE07MNB|SIh$e z>>iM$P9`1@^mce}jK~fWQ`AVhQc0_L5#qy`p2NV=e@F(EmY#%7fl3xodHX2c^P$FV zoy)JPWO(vS1}mYD>Iw}LwIvgfiqp%TT$szYrd#zwbrU%0iKaTA(XH9UY1O|S^<m+g z8|vXOTq~_jPsaPAYvb(M<Lwzy;Bdb&Ht`|%kv$t|p(pEJS~-Try~NNgo_5zts*%D; zB*ABu^hVdvGeP6kqfXY&JPWyaNfx13<)VroeU_)M=T_B!3|rAVP~k#aWs;LnRj#!N z(up7K9||qGaDNv#LKDn?1`JGGInv}=S}0dsndmOUIU>`cjdPOlB7DXGpWi9V7$r4# z3G*CHFw%>nsCcM+GWGE?sSJ&*3|XzJ`LLTk@zBNQ<_J}>6sDC&w?D2FM_O`9?2|jn z{koDaoLR-_9yl^<heX1Ac2BDYGx>01TG?ELXdEaLm;;+FA>*B^%?bjgqK_a_>K&_u z%7CfB*hRigB4x9M<y#CL)qeN9OwLL0_kGyO$L{M!Yal~CepT;e3x<;Kx%iKlRZ@H8 zTvokEU^S3EgoRV;BoEC*P6Fj<WKOhI&P?*W4-q+r?4qKS9;D<8*pew~hU{Bgy1uAP zzJ@uwseG3K7nMofak|9fURCi6b60#wfC}6j!t=^D7APw3O|la{N~#=IbFBx8eIfUj z6{0LNurmxbE0wQLe*zvh_Q(g<(u!Nj$&|IQ<EIKT7>4^#V_mqBGM60|s$7>Ydxke` z=&+KqFp0w&{lpw?&G466!fNvnm1s31MS)b8^fCc!-eW$4->W47Yd(yUUu(G-reOl# zJuR0~8@)vPVeL+2Rn24gwD?iAV)&bsDy>#>A<v+74_=_9APC1b{wd>|DioIg`O}{^ zK4r84gq^cjDOFZWot0<emD}@{hOB^Inv0L}Q5=iAI~lk9U2^5*c92~(Nt-sqrZE~0 ztT9?;V2*o9{>UD`K;tzl8G#jibsV2on>~Vm%iLpR5lU(nhuw%+uFAw;cL%>UHErt_ zuO*9S;iM%^&j?sscYu(f(1|U@Lp@t=VEzWzEnAvpOh)(;#vzs=&gp$Bj85!?hSnT* z$p>o8p)FNOKDX=>NC$BY$FlB_I1+uyDtV2-!)e(89~?|3t;Wev8LPApJ2F=B>-AuX zcr~(Az#VI*3F)@=CCN8!4c>_NU4?*JUweDxqt>|$Yp#4gOSuWn?!i)o5qMSR(n#wJ z9;0OdMYbRw>!^5>xeGL*)X-WduM64vxSB#r(O>d2D0dM7Vd|LnbakpF2Lu8@qE2<b zU@R(mVe={EJp*c$#7j?mRGnh<9?PKC>#*v(kA0kun!8~4Zdbw|&sfq6VCD_rF?G@7 z+evcDClOx>2IPDmFwE;$MdkcN-&J4xIFMt!SaULOS+~4vo5AS>gw-I*fBpHt;OXiD zS`DJ$qMC%kO1=`X!TQ?Tf3U&-Ui*(B@a0#P-$Y=Xed}5XNZhxK04{2-Ual&?RbX#^ z{pBgtMw<YOY#c*J+B3~MeNRH@5%+grmsSsQVy1QEt#p$kO(K?`#p*ex)`79zJMw!* z*lMn6<b-*Zx=Y!RAa}JYWt2dgdDzoEw%Lq_fKXzCAB5EB1K=k)zy@Uh*2$hQebU=o z(@DBr3^lh>+N=bsYR>8I92RzhQ8hCuY%9hATggbwHD_*n_oI~!Q3rE~dP<y~sUmxM z%Mi};XvHjZYLI;KAPbVJrLY&RuQ8yl(Hf;Vgl)`P^gZHjiqG1|lD!5Z3t^oVNh9#W ziLXr9=Io&I``q~!Kq-7++=Yq<H=;bBuy{6~i(bOz6ghxW#heM?1y@s5SLP*Y9&<RA zWj|w+amSfzhkagMpBvk<L&_+t+U+vh*HtLBJ4cnrIiM@dzPANz<tPB6{CVRyP{Hz4 z6w&pvTEcD}N^6<#sIn5lw5Tpw#RagB0%H(&Z0``Y<Iwj|k7p%V#j#k#3k1PV74OSV z#gjSfU2H;ROv_ddDd$M>3m*{>l#K>uanXCL{P*pv2LIjuR@bd<vdq3PS`9Qme#kEA zIlcbQQPTqWKRITosR=Y=oip?Q57TkViPPntnv};{#3*9QM7!H4Y&RW~iANZ|8Yc<R z+6SVs0lPeQUdV$%nd3gEl;f<9d6-ca-`b=y)|O>8zAi8#%xTG!%enE((?aA<FW1L= zV$E974jNOV?MmMZqHkLj9|!-MVTASdHTh><{`pD%`A_-hzvQ3)rawQ)l0V6BKg*Io zW04cKRrxKG<6N0>!v}IARnl+Kf{+8TT<TcHH)twUqt&uM+Yu#K1Rk_tq2uo;OfD2L zj54lP2P4q*Sy}B=e%IqhQ2+$~47LtoK58GhGRW@(ev=x_uGXZN4T7N+FaTXI!{?Q6 z2$)hRZ>mlCI71n9&fZk<t(6MPLel5eu$82|$%(a9S!v>VESQ~E%0B|K)WqZwatJ@6 zx($z0pI&-{bYRM<^m&EB_Iv!`0XZm(HVjC_`4ID;;|+jqh)ST7dgn*$@-Ax5-c|9N z%1z&~>lIKMO7?dQjjL%gnXKXf7FZjT40KtA4VTg!LyXRg=v~G1VHweUg8PpP%6#&V zMn6f)bAHe074tP`&z5JshPMEF$xCq^eQz<JG<Z{~9C&Shso57Eo@rO}OnW{CrwKp_ z?T`=bCh3b@=h!JxgQ9UoYVV1~aVNOtaxQ0jFneJAZrlQjq;}{y0r-7=a~WI)EjsON z@h>XJ0PjN;j*FB+E~*<RO#?9n-?s#vNa-5EG_YT_N3JviVek|B5}Se_s&<M6sp*YT zog%Z11NF!$m-!bYMbv%t0`PqT^Nsopa&ZJa#(Bv0Olv?W#$|G~H%(~zYZyY3lNJTJ ztPgYv|I=8FHrl7>pUt!9@&UcvMR{|}V|Sic{PcW+scYTW{CWml1_Cdctg15el#<W` z5cIjs@9sj`HjZx2-on(+)m={16Il;_BoiuueJZW{xz0Gau$C->)g+Lh$JbSS1r)ou z8odP~n^k<%eeBwp*c||~5r71OUQ3T+^s*_=2I3;CtcXx}cci02$tJ78w64V9ln>~P zK__=U9(>CZEFTbK6X;HwW^;d=7`GuYp&6kzc0c+|*OdfVCSQ<zX1^HoGhUV)uXs-w zx{9N(I*lEE)$$jf%rT{xfpZcX+|BRqnxVydXdnvj=^{^_*iUzNHnb`kp|z;-Bwrs| z8&UWJO`_IL(?=5w6}GVCGNpr4R?%O#C*?_XEZ1g0B~H+#>VRHYUQwcu!C$3gRBjKd zXiRJo8XE{ayzyuNyvf@>1Hc35Z>XBxttV&MWP%|sF+Mc^LT*F2!m2SH#)h^Q9N?i) zOQknUlW6Z-k&P)lAU1-|Sh-=-;V|cuiYn{A)u%{T7+Nh4qZSH`W_5LelQ(nE$esYk zghP$xr2PoEHJC}X9;7lLFyOW7d_1_y#Kj;Jz_gx?BxdJNo|r9T5Xg^K`LMb96c;>q zH-;(3hc<xHP?<P-(b?V{AUZl*gC!CNsHlQI2+MWz7MZ37L^XlPZg723gQi{*Hlk7< zufYy$uZEP0H}YTjM!vE#EUXc<ilPzqMteUaYBk-Zu5s0)bwah=<=cS_mk1C}fn=EX zn@~Y!3|^vVkAnS%DuE%f4AC{4>^Pu0!HG}upwZ*<(v~1LD7W_~eDPjQ(w5YH0ZQ64 z!nl?SY9+&u9-EyDGMF?QH1;7N`bHUw+3a6mS@NJVWz`0NBV9dW#kibPyfYl0%z8C~ z5yl+~vcPc@J!%XgG}@Z7i4=|AG@JHQ)X>ddXvqMFYvipX+Z>u;y%^a<o8>9Iv<M`* zfGILj`*wEi-P!f<|E})cpW8OF{lVY&ub@#`2OPB+Ig`x21qD&rvK=e2Eyt4MBpPiB zB0v%`2rvL>S(f>~?|JkSXi#)!zO}V==f)z?-RQ^Z)2Gklb5!8idfU!UoSiLq)7qiV zN?lul1775p@mjzz_V?lPLs}`O)hYB5{sVhgZo51_ILyD(1IlreVOncwK`xA1K%Y1D z{rkOPW~egLr+HQ5EfWc%Gt&%2puRvf;WJfw)~7Y~l4-VUEu)b+5S3ZL`n&3|hB0S| z70z2vYBI`AI5zA1wh8U#!&jvR8}&3tSjmJGl4ClN-+=IzwAGat&d9Ecg#vZ}#JGg4 zX&;vPlI(_0>n_T&Q`1|Vo3ak>kB(Fh^YXk2eJte7>*rF=XR!c&vzIB>A<5bH!$Fq9 zh*V_v#jt6-9EAZo)&;N;#K3!k>JLO>%NA>dJH?0tWSP#<fKOXQCB`6k1U$v&N9aU1 zLg5nVjnGo?kG%kay5LZ%CP|tO_p1L=cL_6j)zcVrh@sxH$WVe?lh$7M>Zcv26JP!M z;`y_-UA^XYI;<zv3dk$?;mLUbd=ImvVfae3f~`VcRdH}t05QPRiX0T}>HhlQKuTM9 zzOEYzv5?%A8bJDidNi0W8!hFzde{<Uvzj>yL87s+T3=S9WID~71}7W6I%vXkTz;Tz zn3gn)AN;RifSNcs%cko(Z*QLP6qe)2YK#6MJVE}}UZ7h<_*&KIhSDXMsXNa<G`6o- zvnq0+1A#H-@mIM1QF!tH9A55?zaq6xm?5u6&UsJA)hhMmq2Bl$rW>~x4=zO#XZX)F ze$z~F3x)~0WKC68!5N31PP4oSo39=meErQ>6f{wclrkHO6!>QP-Ry90FEz|%8DrUh zq$>6nJqVV2_)MVY%xYn^zZ{E2ycF-DoyB)6Xy?7y+gpt17w<3Q>BZs_9V_Z%nDK|O zY~#b?BE3W~gSqIjpEr5g{x3BP^BE%isGA5ptl|Q8F9U?EH~j`4A>Bb$1i>C#tMJ90 z)K2Tv#}y9)po>w?@V-|`ll|+Ph*My2-WC0YzqWoshm*jIw?MvfV*s_-B#yE^Y=d<{ zfl=fH|FA({dFEjo=E#2lN5=hiUJ*BoJ~o0#@Vvs&d-yb|;JRHZ386=Fha>D_lnpW* z>q>{!wlK_gEaYi89`h;Wb9n^rq~sPBP$=#2DaZ>ruqYTG0egZTbzahbftO#<ODZB$ z@MasqQ$ob^Xgve5*{d}8FD{JrDd~{SU7!W4^XRWeK6u1r<HM^UqU%kQ2_ez!0`|Cy zk%6{(sn2f8Y4igsPf?B4TYlFL62rAUAUgSKg>Kc)&R;w~rixM>=3Jk#siW>>QIs6N zbGu82KHE(q+-XoqQ7vKdZgdyr<DGk1ZkZhSBWC`2RKDr{=$~$>_dnE~C<O`;3}0!4 zhz!XV`SzcUa$SE#id#}!p^U*lSs#V>D)A>h&>Fe0_2};?_-L)x)Yt6;3c&Jhk&?Ga z>D?kFqgZ14X0LzrAI-$3Pg=y^e5&M=#x{QE<!apq4uTJ!w5v9f3-=G;0tDa$cd!ip z&RfLw3D9eToyXqiO@5UFW#2@>B2Qtn1;QJo>-W~1uF+k=;E`EgmQ(3+Dm;=59-4=6 z?6e>X*2<GlU<y`(Jeag-4`?UY>E_cX^%Upx933ZMm-9PixykXQ-eR}`o&pmOAIv-? z*WT%wq4Z8!n#0xO%?h~^t=BQS8Is_yh%gC*<uqG^Oo1s{4~dPV(~b1ML9?wai<>@# zWtwB?OFfM$Y7rO;A@a09Mom_;x|cF=C=BgO3$W+E2~|S`v&DF1Tivq>TLr@LrGl_= z4>Or{v+Ij4sf2>{er)0`AqTic<=8jk=dQ)aQ!0jI=l6jo6;>+<DYJOMVyMwBK7CSg zmPbJll|cBj;bf!O0VGA-1iv?fzUvas7RfMJ!2AYdX#dB?vixSo51UgcY>Wk__4%Yb z_Gh2XdTeDd&P0%)4Yr<<_Wz`uRX*m{&U|v0@^Y>V;2eUi7o9IEBE4k?rYOKdn8r!* z8^IeI|0?qGopCw$dh@q9HNg4N*<Q|ErsfScn|VadqqmOzjJ^a9slz2|(74Ynnrx5Y zK|7`%QP<#SHCDZYANg2yP_D}6&_XQ}`9>L&J5$IYi}1y5#K0D3B!X;$Utz35E6b2C z;LI^FuS={KxS0TKri!wBhDm>JH{%J;7_eC2X*gE9XT9%KTm~)oSYET=Z55~x)u@os z`A6iN1JrbNHxAqCTlD&M8DH6BnMnXQE`FSqczMLji3b}9J~QLI<Kshyp+<mx)D6NA zdq>63jZWW)vkSND`X*{;8&S>dcqOr(d9BZxyCYtgbM#=g^2FkchF_rInsl29tJ$P# z(AZL@b%n76N9$QMW$VmXny;t+kDD{ugpPRd`rc5+D%5(Ufr6YUyU83~h*Juco$09j z=}h6|ds8xChJsRtlPkdf+l@f1*BKR*wI8ClU)0IWDq}B?bu|tMgmIJ=g?m#>0W34~ zu;X=I_rZeflq)%faZrSJG2>uCe1=0$XP%hHVkToA>7;8o;1PZ3XETJJpIPvw$J#4x z0Ks%1GNg~{$Nr1907odAfsDE&9UMwu^2FPQLu$F8QOt#QopZu2lpH5frkb!18cN@? zpD2*iouNB@;GCZB@JkKBY2ik9I$!}x_pv%x_R8QjgnIIsE2A9hcEE5Q43d#>3U&~2 z<c%`H;D~glTOlBOK5-1ZD+;?i#>)%_yx38;=my~ncp-tZyM_k0-hi$SN3yzI4KR!d zhIdJeGw*V&d=_T5xYbYXL``GIDV38h7~t8!Vjr9TK;T=<w#krGY$M*!I0ijs@Pr>J z93AdW4-IUvCNFw%Mt39gkW(zm%a(kU%sWr$?_>5u)`<Sw0<jzGE7(0dcc7QnX|Cxr z-N|n9O9fScN6l$T8FK^F249LB;Fl7T$l|!~XAZ631?9gB`O6rw4*92qj3Li=3(eOP zv~Qw?XJIeHZ$H9+eA_99*8cnV=QB4?J5slqd~y>o2m&rPPsI}#Q6@4a<I35D^O)nl zqpfknqKy~mi+!koX`$<9N&t9GH{t`)DkI>=?Dx*XayF^diKf@g3l9#21qT^J3;{e_ zIfX9hV3uU8z+Uhdj9*8um2P^R0nbxz$w_l58{F8C-xN04*<^V3NUei>$NMZac((Gn z+(mTWiz}PEpRm5eVOBRYD|PnguzaY9OH{g7TPOYqikM%N_h$GQM1OLWly(4lw$`k- zOduL3S2A%6Pi@fFz%(|O>`!_I+>AL8l>#ngWrKl-7#@ov&Ig}}bEZTbS#V{eI$Wce zbLy8cPnz&*rgaT=ZpF;rTyE84{I}sXrET1yaobaV=s1LN?1-37Tgln7u#Yzc91p!8 z(v(PDNKaQnT{Y1M`yaaMl4(*-vtoam*VDqMHsOXXjNd-nXr-Fu&^@OE%qOm|?-Hkw zk(igW&xkwh3}GOEqSdM#QCnIakF@rgfeqam%$6%kl-n15JSTwihnF+NAZogrY8!!7 zh=NVzxFj~QWwt{Xi^OE|;XoQfiY^sUwA^*)K0(7-n$^q`oP@fwK<ir5yn&r_BXQX` zyLclTMG5xe9qfIj^Hsq5f|M-@?DODK9M9tI=~3U!gu)TGPfiTmaI31kO?Lbp^q((} z)}I)h(W|M_N_i_|?x4HBg%IES)(43PVidvWSDhtALv>&G6?t$<b3vlt(4#`0l6Ai; zQjA4-jLNd3C$s1wql$~C$o=Vh9sRA(cxKK1(&Jh5LVig$7QLQ{ym>4~>f1(K6DDbq zG(*cF&liw*RMM^C$=rsaqzWN2((9Q4^?NjMC|Z|wc`Pb1z;5fPH+3kO{5n~!>&(iG z4Cl5^FwqPo1@k0r@Fz5}A%~yNCT5Bakf4MFgtrP35Qlmq&t^k>3KGa31D?*$e5dn? zI-R++eKtRuu`1#zp3yJiGk6z3ZENQ$01Qj~;$s5AcO)T9=u;DlY5zXhh(8B)+pemj zm#FIYDSSL?H{!npe)0F9Cs;VSCd7+wqQ7<^X>urY#K0+J)JRNL*1<5|c&{BaLn?!D z+aVc=yit49rOwC5GSV&4L&W0$vu+6Pa+8qF5Dy5qhszpylL*URwccSf+T*KP9GW~& z;Q&RD{(wFtjl9Aaum!h!kfE8RBiC6@tLCILw3ttshy$Qmg4iK{wP{uRGFoG@Qw-2U zTpNTb<bq^2>}9YmZOG>iSaB&RlW9bs+*ro6*Sa?^F<0B4GYa7n&wbXHRTZkEd2FLf zDBG7@;8G{_xb1;;wo*CVnwB=0>D&wbsajRhn2en1SPHD>WR_04KfML^n`TX0S2ym_ zq}zTza~&urvN%VUuS+DGU8{0wt_j5H#Sb+Tm&HyXf;Dl&9U7cZnKN~_`7F23XX`d6 zV>6LD*Dj=s(`kY|k(aiu10Nhium4W3GE+do@PEz-tGl|s5pTR=?gyzk5vwZaJ2Djg zIH1@oCtO@RI3G#_$-a66lJ<jW{{igfTSnQ&+fggzS2DfA>Vf)f$nF*VOC>wFxQx`J zi_W|K2bUB50ZP503y{Nicp!Q;#=13=#IvTe{ij(sF3Hm!HRyvwr5KW3JFvPU+IXif zA1dUAnDkooZ+o==Ad(OG_k-wQBYyDlsGx+SVvaF(C=~_pS)FoO8bhqKjmzW%v33fq zMPDC&YbHj*Jjg6OgZf}pb&}!66D0}DofOsl>^fg%4B-2Arr?yslux8HkcqM~g57c; zwPSS;9|9zXq{y2reN62I=<$zdLKlVMZ#hZGv_0)EX?tvb@dSl{OjsmM*tWgAK9<Py z%-n-*`OupeNv<WdYf0nkB9KP+YIY3SIJkyJe{++&Vm(NJ4#b6?(tTc|{f5>7gT6m} zZq?}`K}=2$C$AZGdE%@!v!T6=fHJn0_^#Cf8KD#DE`jiRxWJ4jvr6hFJHa&b;=uum z3kcvxuDuduMztWS{p=sP#Op(Kh_5dUowKEv9C@<#Y{>2+Nb|v=%4vMDrQJ)<ozWA> z`<QYg_lv$R88gl3)Rnhp8&8#D<WW9Z<nu*=E^`lClxc_iLl~APP55dS4x|UW14g4u zHUsLZ&(e4e(c*|SFfpxiG&)#)I2>sow~_L3JM{N}Wy@OfL*W&%+wbCf;&9NT|FGY3 z`wjF+;{;w*AsnP=EJp4ESHSjrH2GXe_HFXlp^6G$R3Q{E(K|=9-*x(oaD5v*0DX1I z^Gvu`kPZ%v4_*P$75<A1q`P7Fw@~OmS`J-S``M>G9>!CIkF6zu_Icv<1kEYLwv!>^ zY?05}Efw}3^io3@ttQUyzOsaGvF-A8c91(A7}nK2a1|Eyww?bpuNwjnt$X(3(!*KY zdn-H8Xdp%@Erb|EBLB7#LebTdc3}r5lm^I4Oit%cJ}mT&US)NA^AgAtLupD2+%pq? z=N#37KAm9>a(T}tCGUpPGb-=e?b|i2{AzVS2GAp;D%W$|Kj*Pc1p-8nhW;Y>hEalC zjzG7rK9h2iAN85kUFb>bi(T8tY+V%i(jy^Ba3$8q>5I<JEbt@3?bXR@HE6F$jJ;xN z*(>~W|9Kl;g8iyZVGvX4dgN@?es{YYcMw0<*}c6DiW~UNEbP*}N#&;Ut9ih7`$?j< zeW@xt0VwK=c$zS)-rCELGY5usTR-oD1ul2&rrywMjo@;y|KJ}#k-<He*@4uC7GJ=n zDD-Uw1tJ=>i)@5$i!PMt#Sb&%Glzcs>lz3qz+k#jRgYE)2wbB#ub&5KEe+Y%RRqtm z9r{~7Cf`)`Tso@K3wBUdZ<M?0IlN-$&P(C!(&$2VKz>LyENfmGh__wLNp$qovx)Qq zW*vfN&QZ^))B*0tq@J^h_J2h{+%bppqQ+KXw4xqr#x4_hgWI4R&|fouMm7fs)=Djk zW>A_9^-tH0HvWP=3cV<?aCjxNZpu*VlI|nQ_p=FkdG-Zn+77ncCjO=Jg-Zv~KW6d8 zt@LkxmQnO!qbaEKV)P&o$~AiNAlQiR`>(C{UwhvF(|Z3;&--tz_uqKle`~$}*7N>f z*86`2uwuHzNlCDI-GM!-(8CUyeiU5M->N?Svg)_MCa0=sE`O=Q^0z7e1}MIkU!)pq z^FUQHk4!y;7y)s60sDBqP<0#kp{nmbw%S+&8wbHVU$wdg`;o41J+y0Ib?aXBYhLy0 z9aCNpt}>;+RcZQVuf?OHn!f83*{h^Z=5PpELtF)&T7Rvp)@u67JTnC!qbI5=fo`eh z)vMa74CjN>t%o4eluJ@Eb$a%kgmfNTf~8n$R}Gm*)^uc;=-#O`m5-ci@}a5tnsXIe z^<?%!ry4&qwSHVTZ9cnk>iwynIW^T&82P36)$b+4cg4&LN>_&*-%M&{`NuUnU!1O_ zi><4jV@X5%3X(?cry5Q+VqL5gJ0maz%iY%URtije7zb*-={n_Sh}GfxU_w<MJpatb zd%?fUV;P`2B7cW}m%-jCUd0HL<7)~mG=Bd|@Pm6@8)XzK8A-cb?eWbhLn|SJ_EF4+ zoY16ed8x#)vGf%$WmYdv<P)0rB;S(@#cu;1qu9}n_;JXe6#BmrKMx#Yzs_Xtliz29 z`R*nBcqg3}oO0HRDSP%Ut?;iZJObwJU4}ZVu{T)eqP(>8`9j@aJ@c&XNalM`ae^*Z zdg_11aUi5}S;TMZN%jFQBnbN(Xf;zH6kUp7ku>b9zply60;z)Emx$a!E(Yd@y#Hgl zn-T+Bw10S@^SM!N>xGo4F(FQ;Lu8Fc5rjNL^7%ZgrOT`ODRtiZXERO6i8o2p^XhF? z<B=7x#|5s0dP1*%Sm(}5{(ZI1sfYs1Q-4w>rQoWrl5`59q5b!137xkvxC&nmPah~( z&nNnPfmmj8ZZx`CUXBukI78V7u@w;U03+fv+^)gibEEJ>tG7}9?FA}|9$Jv~CxL}{ zm=$mjR-4F|L29SXAcEJvuOwr5?xW-mPRn%BtGrbV%<^D4nj8s{2c@T7w{r<V<% zT8juf#a+aRKup|qmGxmAb!}WzyRLlaE;@NB(_-U0z3}oeEWCdFm|W!b!c*5ZMOZIR zOXn33h(Z#m3sDs!FT}bKNg<|%ALMdlc{#9&*}m`9#yP=xt^wc`|Ea?YebiB+Z!fCL zIM>#$3;~_kmVoilqA9#gk8SA|Wx!=@X$O%Y*x;;)2Ym^o*WH7ok3gkF<X^s67i|tl z%*gPl5&V&jfIPAk37lh!M~_cmjDjzL%)bmKBitHuAd~jSu9wtVH2M-xDCUNx7=SG# z+bC{{$>?EASXm<&&^#0Tx7;Tn^R247&C<!}=^E-H0$Y(K1T}~v1wypFhtm)0BADkq zhZk^yN}M(nu?Zg~P%+}tdihZ$$Oe`l=^rItpO;Sj%}`LLKY&s?6?4!Sp3FrtaB@+* zg*`h~%B;HE34J^r>Ht_$JoRsleAY_{2-`D*k`d^mt8$L6Bh1q-)^Q~gI4m_?1V9&g zy9-_5eg2PNZ@u^BA4nhhj`TreNc;pcGy@lFx9b;*mRR+rq@q3QfT1I)tu1aWiVDWo z+N-6*M4K{d9Mghr?1Y@S=c<C>gu`0GE!dPa2pjFv#YUt>tex)s@+?hF`59AlVTY&p zMkNs_EdO_yCFvduf5H9wcmWI_rYM>fm`>dOnS(4*KWmo-{*Yc4#YQZPcqr$a>%)d9 zF^9kQT(@Af)kUUO4|T=ttjNhFRpkD(fF)@P#P^nRY%T`2)Mw0@e^&zmiN1UQ;u`ye z!R~Ok*V^Bcj;xs$A{z`)H=FHE`L3+4K^j2?6ro{}M9~R2HjwR7<v&242?j3FbdirI zw6Ypru2%VFj0r)JC%&3A=&5P(CzH+OBD=(h+_>UDlDO938#$`;&CfOAIFSoQGWJSW z6~=KOqn;7IR7t>68Sh$RHVKGDn9Nod$YE>$yQJt3x)8y#W+Z%_qM=z`iu6~f|DCU{ zcl)YbjO4p1`io4zOUO;cvo95Z-?~o;z~S)1GzT70uKf`;3l45W&!Ba^sv1Wipuj8S zcQ+5~d9%HNDVecuBowXYs%XfRMRc4JresrJD<|?V_NAAxc7A|j*$$Lk>@Lw*{d0!( zzAxC=U|<g4X$8gPS8$}|AioL8f!ym^ZqAQb_q9Rjx-p_>>B}*qGcGW@_sy0b#Mwow zQ<UdNt0D|oPzO3`MS$N42qUw1PVn7itHdPx7Fv6LQ4{!6BmrHlqx*u0obGX>Fxad2 zz8nKtgUnRbcv=H-!-d8i%lN1r6$E2NU~#}r{$0LZWDH_Ds-{3DjTqfjYrX^V7Pz5Z zLLYJV6N&@Ykq>vB8~g}X8im<pJ{et%0{j|zT8{#XWWm2jmt*+uxm%t3Hia+A%L;U^ zCuLUKrA)O!QHdk2{1U#)+8rrg^WE@)SBNCJQLoQ9x+x@SbQW4MT!f3L;(3h_8NRM; zfl1YvrvjLD#oqM2-P@w~KBsGp5G=Ozl(>JtLc@^f%?3HUbx+Xxkj!&9+A%I$MSac< z0cX;mRbGa{==%}K<TP>o{;(q|wZH%|I0123w;gmX=bpRXB8(K$FHN;@g(3wWtY?K! z>*Q+qfZD6&gk~q_h<G<OQ(1GIw&4F>W1h@9C&Y?=4kwIW?gt@L;JzKej1Q7dkTeD} zyqCUyoY-3mWtiScCVw(I9Dcx&<i0R}^k2t($~F)L?2_7zeRh7p$d<@g-{$QiybU<2 zK?ZRI(S;p5Azva=piz6FPDt(ZOI3tyLs)yD2EFGt-(@#W)rJ&fq;TBQfZZ$odEsW) zzU27G;YQqC+-S$hk|qD0m#`>EiN3z28GDcfJ2s8?7o@)OMn*}?7?utu14X!Frl@97 zp>HU##k@=kw8+cl?gWj9V9mlMr2<3enh%9fVH(Q-XNmDdVa_H*SRqNt7~#PHXwtZ< zZG4KlX&F_UakL7>D05?pKS)^yaH}X~`*tFaNEd*^%XYNZ&G@d59#gziM*uBA(!WYj z-_tuPyz?Gs?LNBES^8rK17U}jWV&&;6+EU+i$REm7rR_$RB#t^M|B4{A81n{l5E5~ zkUEpJo9Rr7PVNDq0`&MIB2{`jR#YK(vMz_R?pT)#>$)J;JS>W6P|Z@~vFSa!pe+i| zvl=RIh8oH~fV|S|)X+fsm^EfyII>?ToY^dPb{E2liq=Ax)!5~tjt>rN1MiJc*X>1( zmuIv9hUScGHwb;$Rt&>)Tnq!5ox?Vlm<Bdn6T+6*+tVUWAQD=6ETY+gQA3Ocdkd;o z)IPRbc)_?R_Lj5KU9l9@@%pDJQhdOQueg67xAV;NrhoH0<~$BcdY#HTAjYQrgI+cF zMlYnIAEjg|&{puD8l=<5*$n0R$LQ=dJI5Rw81Zvx?@y~QJ{T@qZl}k3?o6gHHfTO6 z#$H7uy11MCTq8JC&=;!Y05L09a?ibDK9fo)Oquh<M;6Q@P20x>WjK6X#K(nr=&R9Z zJqygXwyMImplc&pO*KC8SrK+K7+FqamOX8Zu?4?VfLb2^Mu2ha_(%FTi9Zx5JvZ^K zeX`nGo*+6cD8=I}UgGVofg56Cr)m;K41AGf8dO3e2K3`1EZ_)s8#Tvubj~fV;%jWN zc7Q0L`K8nR9A}_*PAbHRE{pJ1+w~#}j_+Z6nW&yO39M{>tjwt@Jv}~bv^(iq<!S5W zBsAK!@saf-+Gg-NuGX*(aF-xN00Dk;HMCuoqps~4L6wAKk@T@Xw_j^>=f+4YG-|uI ze{GobveAq3a`;@8mgtFYBD7NJ;ixnY8$mCjk<^XmV?Sq(_3jl=@0qSQLdqC+_fsHB z$I#l3NXy|ar}ln|!FbzLm#vHz(@_THPTI?|qrE(wb6Q^-w(i=TsILz|x3ZNC8}Xvh zKy)1x+N8u#Zs~O9yUUUd-Z(2tS+%Wb!&ooasm@#j>o^zp!XJT%<4V|w3HR^c`;m<$ z_wR>%5zHpnNo{uom3cW6F*FKf3%6GgvoROd)eSN8G;1(2ReAwVMyT3TJwxtpS#T@z z!8m86O7~UH?iq`0`i@!+_MASjW<=?fKs0|KQNP4%zZ?dFS}~9w^L4@b8-OX)mODe; zgM5P}mVOAWI4Q<B%MQ1FQD8=CC4JhJt8rgX`LMu*qZ{$47)l?^7iAeCmVJPkhO3BS zdV%K_tXvZKc0-p`x|ZlOV~i+HbXVvfV8>JFItV+|oSmh*R5pWp8;g}m_FRtT=577Y z_(K0MtTzL!!VU}C&IWBqfS1*Xy^?y2hGDYo{cY7ly+VJZ-`biLIBQ^+ER&Q|BcFJQ z^bNTHzmnz3AqmH|0QFKXBKtKW#?zvkL~%gm5zl}Vv5&$@A!KJG({G^&FnUyofpmXL z>_sSY(}hPsGHQt^m!f!C#8L`C(RzOY_Z7HF|KdJn{e}1wx<v)-xqS(u1iiN({sIrH z@)?!2`xYKo4loRymoF(6`O~K+$HNmF%2E_Hf$w!5Q5ohtKsHa1|Gq55E%p$DA<5C0 zT|(?nQn_EOa+syCV7yKV+2_?NF)AT$U9C`&NPN(a4U3_%{pMv=X9^nc!4{xNMDAO+ z2qeS~D4Crn-Hmc{MM#N#aofZ5EGMdy*2Ul`fLUH+cc;j^uc{A0q#p$saj*k!hSM@_ zf-;wI`CjtX(J1cLK%5r^xk0@F*#u!n#~p|~o<u}yGqZ{Lkv$9hXEBkF>GpRAc$fH0 zSWU(i<PhO<;;wnP1uPTwhJ1?RN!=!^)B2cE$;IQ6;uJKd{jx&BuC7Z5*Pfo@#(^3% zMA}8VfI50lC@NE^9np!{>1d92Kw!m@isx!yXhcqDTYLuHdSF^QeezBqfyTkm-BEG? z)ung~-RlEx1lM^=5f3;|b)IHExXD|80MFk-g>l?ALobfY_?D4X=)d9(@J(1|mv0gu z*_VAE3rZAkzkiE&;*WAcEU?r&Sr#e2*KIZ1ffHR#!#9OWQh)aX%R`SU(ST4O5q1l0 zeA9W0IbHa)q5`$gHBn;7sFfVN_E;fPu$SnltYUx2>^f|FQn!`<y`1PN0!A5<TyqB0 zG0j|gMPp?cO!-4Eg3$ocx4WYsdy#ilgkwit=Y{xD#xOS^>ht)CJDKh*p&2&PM{ver zf}gps?qIe)wA9bz`8ooxDlt4Ds^Aau-KW2#OQ@G*9BCt?e8~3b|31Y;p*3k%crKqV z9QpiHf%lB*qN<uqAp+m>c8ER}6!;LmDuC0#PNUn~^8!Zy12aSlFAHxKI_WK2M50}; zGAIsEjOK`h0_cY&ux1m<1;R1=B{09GD2za?VGa35fUZ=@x@i4wULBFxzkg76ZYj~0 zmycV16y!6M5x}glqy!8sPu^*Xp}Xz0BiaQT!0UJD{xD{B^7wMYeEJK?ZIuD?jpWiz z52)H<y+c^aIJXXd+M`?$bTv>d?3|ww76r!2e(QRJlxw(5!sAm448M1<5f))ADT3#A z4$~7|0Jp|{be4ZaJ)Fh6l@Gml`uIB-;*YHa64DeX3Ipf+b0gFzqT6!4Jg$oMvP1|y z^W}+ojtqajd|h4lOW;Gg^5FW&WH^!JJ@Tg%LU0Ng=3P$%K}~<=2ze&&8l9PGRIAFr z!|~nS-0*RU&Ad>J5+!ING)J#pI}j(iI%;k7?q@1?8v``|LZ_&XyHM}~2Lv3lhqe7h z;SnExK=I)ZXs35KlNURjA9=BZlD|Sp#Al28?gfL#-Hvw?UI}E@HkRKGSC8Syc6%Xt zg|k#1U?#TRv)a})6HvGQMcy-?d1y)FgAZ)qL@GH)R5?-mJsj)UAyhM4&&L{%&t)H5 z5&A<o7q@69jRNv;0Mn&4GEzsbfb-EtZy+}zp(G8yg#TeaeoLFT<nyZCIHCyjaUtc9 z?H~%gSckpOc3}y!EpXWsi&ezWG_*JE9v9jBufiaE<Nh&^r8ukczJDzUybv$?ey^%L zlM-)+67IVyRB(vhGuWFi_(yI_OO~j>wh}j8RfteG&B~P2Y3#dH#if;vrS40E+zIK^ z<o_s}$R<^NzF3#<Z0*)*CBX|twGlrLI~}>?MA8CUXOA;9szQ&*i>4G6K`;J35GCMV z3_;3B<6E}#dAQNf1trs)DpQ~!OI4lSSzMN(@*X3;J*wXej{W|Xle~Dn?qK?ATP^Eg zAMt9yEU;@#4^B~iPM6R|(h^CmuV+*tcb@syKIg8@UN3>R*SjeXrkww%iGD9Y>PkIu zu@^Fh4?6D@$<*YlDKQAJP2<6%qT?BkuR6P7ux#lqEB&`q{iQ<}aNxrD?^f(aXN3!h zI>n4WEPzG>QBU5mCgYvq+N>}plHL3crBiI2soYr5P`h3g*^5qyq@BhHlNezD)A&wz z|BFlytVMWW^#3IUuq|M;LsPqk-L9skl(^$n>N)l;o0g#H5YfaT87(++RQ^$^KXMm! zbB#Y;l{_2_jZWj{iuKU?bbOn4kVOR>8WO??A%mV+(;riw@+O|*vsqlH=5Eo51f4~( z*bGe(A6AJU{k=<{Y<tA%ar6#`ySwEpQ@-obV6T^S7n;>sv)G{*rd8aWMUkwU?6a!% z51f85oSI=73Gu+zYhWB#RlQrU@TiQE`0j7lR+q_d1Zy^)d*_-9stT6>2i(wR88ANR zjEY0fxIr?%<RHS`cz{N7X)fl_DlXmmxG_v|S(w!xL@v?F?M6`<QMLXn?}NP_cU$Om zM_DsaCbVL;yBYMzi(O@|L5T@v4Y`vm;R{9itx#}p9k0Gy4pgcnG(t<lQzNA0i|Ieg zq^_%L3U;Sw;zHip16y*&C}@3i>0G6^NX@-_lBss|4DLD638fpg<dnX=klO{CiNz>F zJxMF31ad#o4{3upFjE80k%XsC_JxTdCL{#EKePozQ|jbSsb9S)7pu33TSK<w+IYaz zwOS`2$9q(5AoA=5x6ggy=q$19$WR?A88*)&qDH+)q|EZkc*-Q0GwwE`vSnI!v6<k* z4!EP}Xy-TNE94#eT176P8=T=TxSQtA%v#cegsZF(LX&5%wX3>3TJMk*<4G#Eri7y0 z=gaBX)2&<LRWf~ty0kLIFVV=v87eX!Rp||IS|dMw`jn-{7wuW0Ey@-94NAvPtBSbT z_9fVTh}Iwz`L1a+?Zog@OhIXwCXH<E1k9Olwx97$awEDqDe(%(W0H-iO9nZN#-0qz zaY1NJYSZ#r8*Y*F`m5SFtJ(usH4|U&GVwL}TUX^NygFN7Eoq37vP2($kf7J+@V;SC zFY$hdQL1Bk+c;I5y^t7v7+2-7Z0Cj3$(lF#%~tFNd!wA@e4t7#G(%tZwI0KQLF-or zY!M|g$x=ypyo&pZh(C5zL`-;re3yJNX#21hrX6&t%KU@sEm`a2T*rkrnbp-oOFYD* z_w?y#LH}&wrKQ24<aHfyT)@hKM2fRMMi@fG`zgI;N{1IG%Vn14Ao><J=pY;}m0v7x z14CYXC$e&}Dd_G~wg$mzeX&JL(+U4;yP6t~KSUoYIBKQD3!HF}iso=LYWQfzDb2ad zvM2OlLvii~$^Jh`r@75S#D<|8FNz<U5N*Sbu^p-_wK6e%ZvFSBzO+Z(gkCA*{Z8~o zO<3gS!JfokxkAw2I^{RSNk2m;%M>`ElVuLDTfVNoOvC0s*diu-n^K&%Lz+{crcmZM znOZE_>45Lc{mJvnT)k57O$un8OXzB2u6sDsj;6lDhu{j5TG<NEbGSLB9>wMb85hnd zK<}sQ=Bi5S)G{>~jQu;xDYzV~nDtt*n5_lmQ5^IQ9`+$9jc6U7##W!7l+%MC+nl@! zNIM+K-STg99Uw<bk1b}4&87d29O3ABtLNERdR%vl4m;(JOJFq?uebwf6>NKE!Dk6< zD>Msc>7_pl@pd8=gw<}pWNWR`URNn;uhDC;P99QAJS0qJJdiW%R?c%&l0A-;?RtKr z7Fx%6#Ukr9G1!1|#-%%o)fRfnxI4h(y~DTMS4mi<6T2+AoS*|_NhVye-d!u1O+Xf= zm><TWt;zU-QkzPOK6rlhb(WMu2K}muJ-f|Nu9_|VTBqRwJUZxWK5Z3_0kaPKYAR(J z*JWHp0YM{m-EKE5ZBEnSIRC@2j!UWAY(<lX^mMqBi7dgWKz(^eNpAK~4*iMgYO9b; z%m%y1oB1!Z=bl3_Il0!r$n0#oT8+#Z>}qdgN@;dWMB=!<_7mD=9GD@i!r5k;yR&Bh z(};SY^>bq8BciEPiqrIT)9|^yxqtu84&RI8`u=@HMShx>IY@D1(#Q)>9z>@iSyhTO zrUU#nQQJCI=|j#fvP^}^4#wr0RQ$PKuFk7ymWowf%|Uu>@R#2>17wLPPI9ne6_*zB zoX9<s2!gTfe&v+3yDulEx}zzZ2JbA(S9#Q)i&-45VJjuj@g}atASJD>Hj~{bsX=2v zqAVk`zN7lgSWPU4^U9)}LxqIX-I(3Pl=;A}Z0;sydCSJDS=%+k?7B7W`B0luPF(l3 zwQV*cO?6z)4w)P8$Q|I|mpS0%hebN+5VuU|*jH{qQN2^RP(Q6-j%E>u?f2eSPO<{H z#^(9~T?pYbytmXhI_DJKyUwjo(C}1lz-`x7nuc!k<wUwj$dEJ+1KNmXD)UylRH1T9 zn=yh&v2PW!(P@V(s4x-o*0R3u5$eoPJujK#!HbX35X%M>)&taiItx{-kpGDl`tut` z44CgIsg+kncC)jM0)muB*AKDsSz?!|N~>)TTqo~LQ<e{lltnxc6sbN@m(Lt?2g;*$ zR5z<4hyH%I|9vn%%q~!ScNr^5uD*D1iSbPM{DJfQ;8F+Qa#tSZjd$C-Faah@c_{(d zY+$#I-~{HKSEMvTGcSMXy!L*|l>@ha%*vH6U)1u`t^R#E(3^gvTk5vE*3Im?>{Kr1 zY3yXVnbs&4Ur`!>1u(oin<LJV8-Am)4CX0@cx6L{G;RTvGi}=k550Py#=FSJ0i!)@ z1Y!_p5g!}1oqd_cAUNI<uCo;WOBVEjq{snOIiBiV*oY{uVLYm%3uksHHlJ?M`+2j^ zH&Q}U6e_wUl8MH(+A+HKKn&#`=i%%x5!)=o`=?TPpbM)TD`I&?S7g)4@}84Hm{D%< zGU5#3DmS>3m*loHQrpdrhKJN*APlq32D2z$4c|NTw7LyDfwLE#+;*Os_RX`pp~3z6 z(rK?gy69yu-=!f=|AKzHs0eL2rVZxO`q9go$8ZX@PS4KDV2p*!)Ba@{cGTyLkenyU zoM&a~=?wPbH|<EqmOs)_4LHnOxnGiWQBC*FrekuwGhvg;U1g`jLS@9PsIK>K5Upt4 zR)IpTaLesqXIJm?c3+q0uPZ#E^>jg8Wuo{+=(;;;IpJ~E>l$^;m$2RH8+FQ8W=p@Q zKZb*KdPFH&E~QaC6Ryg|p7)heAlkA+6eKfB3czwegvFfWB@C`I-~xmx&H^9KFxRo~ z;kWAKmxnhe0PdXs-GhCzQIgYjI)wO6K!AurB$4zRH%+j*l5a#EU!`GiCV{vvv=Kns zWe1JYqnk8*pHiF+b88gunls7h$a2aNvhVZknv}dKsQ;8vxUyF72x<bCWDNaA9ayD2 zo-($YckrcIwB7;{xV2k0W-cP840hN7*L6n{1;L$z(HLv2@@P@vx9J6;S0(~o0imIp z@|IM95wIbnhBGB{VSkeGSWlV|O8*T`EKfR@FI`%m9`_D})=}aQPpTg4e%49WqtF`3 z^!}dHntOt5#<%!Xsf)cHcsGvT0&b*@W2A4#AQ-E=MrO9$ST!uw%mdfTPU}E|XSvh< zmlx=%9<!(V<(F2FcCbjM?~p^~@qp`eWruWQ$87_AO&vE{jW8FAao9s@74PU4Z#!c> z9?}4t!G8YGs-dCP&d}VRRl9Y$qZvn`s-xvcsv|jX&4wH8yL9V1EJPmiHYFsbbMVOE zMi91P%2!OiSLMl%eL#}5nmZXNrkj)Y8_Utj<eA%uvmq&3@*ohPWf;<t%=6)}87P>2 zm=^04{WdOS(M#owfA4^tHb10_*N<f=d@B|6PFuBP%KG9ZnQSfVI;#6lO^Z=>tIK~$ zp(z9L<=1aF9b>?uKIAsygLh&WRle?t(acKDQsWnY>ltAwN7(YeW0h2hUFR$txty$_ z@s{>@TZd(D#I1jD>Raf`B~DQ-#XhPZ(v3Jzy^#gm6M1O!01E-IA18DvVFOV8`L$7j z1=|>fYHFhLq?94z{zHl#`cC)9Y-}fow%y-4S&JC<$vR>+d8^|;*R<*l77U9RuEh2e zgm=(KeHZA&9PW;BH6WqnmX`!QoqGE&GZ)vRaMu0i%=u;;&g3*YAFRz|_*xVu@v9^Z z*KszMJ3=(>W?qY1nHMS%PV-5p-Gl&tt)<hVa3X+g8%O^v3JV@GN8D%eF5QYTO|~Bb z@b&J%Z6NeCqmF=8>FuOkkq?e8O1ywa_Z&8-ru);U+8Wt3DIXGkuNv-H)<!uQ?OUg* z@<6k|tgq8hPGu9VCDgVp)zoM;g+5l&eU){saE-LJ=OqROpCZj3xpPgIm73BS>!%Dd zOs-`uIRS6PaT;G>MmfwR#EI;5k~)=uFkiygDFIM{V9|lxV0?B2m*R=%4iIBjM2yPF z!ms}Q>8rU2Mz9gvI$zq3P<pO2smS~4-_71vW72y(PCs{H3EfP>MvspkqbM9bNjXkP zJoI-`rkC$X+wy62oF4Yu&ZzB-+D3Wu#T|UH+``$M^pD5Ya+#1bRoP*VJ2ydh!%jQ) z266O^yR@aVQF2viE{_rJ0SN{pDNqxg(cej2hfG0~c_36|gbbt(t)zwMdETl_Lux;X zBCfE|P|nMYAdc0@bV0(u0~U%-I@|yOpo2goDRo_JYv!bE;OhHEReDZ!tTva}W~aq! zhZau<+FQlvxGZFlLZsnlY<n5&Wq5~$R_<43d9AgmCuLjx0!%g-cidksh;(HAD#J=N zaHJw4>sGlA<LlcN<p<tGGH$=siL!2y5Tb<+LO@qJqzC)adMuDE>_-U-HAo%y!zmP1 zL}EX0RGKPz>{zehL`OPs9`%O$*G##yG1b_m3+M=Px9u(b#$XacGC(R!#y!mvf&3`4 zyz^Q<L9rjb-r#bZf0TT4`xhT66kE)}m`$sqs<&4-)fFt>yuFIE+2xI3UkOc)@3x}8 zwtCI^QUk(QuB+90h3L_%6(&`m3(^sjA;iXKG7fn|+G@#e_nFxAr34eD^;O<BP!nQy zHw4r)7H=y39n6MQW<}!|F6umdT_NxxT>Qv*cT72xNbka0ZNWu&T#xf+nPcPT{Us^A z*g5XCpXonLIVrO-V95ik75zY4OR~U}WB2ddf*t<OFhilWkI@U3o=HUuSqOCG3da1w zRkbCc>C_+YV6Q4-`J%6`EmbLDOrf*cq1R(O)`Vh{+G_O*CM%gMh$cJu153zE+K(B0 zBcw2lDF@RwS-8YaGe<$L5SaW%Cd?)WUjF+xIAKyaS(b2ytnk<nx7-(7PDZF0`*$@K zH}-FI`h}i?h$XuNg6q4yD56Hxi6e2(P;r)pb5ysBM}ET(yCOVILp#b-<EW=8B^r57 z89XReLk^V$u*oY9yQefS;Ymv7XnY4>I`P>+RFlm5x~;Oa#Ir3<TaUC?1)V+O<&I?! zpzJScY~N50#^O)73SQ;C0A_=G#4Y?nc`L*;Sz(H}p~5fi!W;3*FPYIb@dYYj!XUJ^ zZ8XBoP$zjiCLAWRa2@JH@0EPnOIh<gjbEkWt$*KI<WBpS&g?4wGgZ4cuzJAB)*LB- zBKJ-ZM(TZn*u)YL_!Y8)L-bZ+W`ikA^Uyihs}gzYO(<QX-3#hKvkI^~L)TE~=D}ed zH<-^{7PR-^z1S^&6m}aGnT~6<3!;xo_5Ife2=D5vA)^k*qT1Wrh;I+{_3gGQAEuZs zm_QtJ@(ZdfCrGlI@P-I!r@iqJK!bPA7SoQ8CshMnFh4y*MJvzg#4NORpSXYjUJKGY z2uWF1P8OLA2$a9C^R!)T#K+W+y-zMO6S5^`O>Er<K7D#Xljsysxo5P`yq-d*7zPt< z#7~1p5;rh8M|+8rm(7jvM2muzXB45aimIH`DTrQ8h~OW8b8w&t_!jP^)2y&(9-p%h z9k1$nzRapMF;T8W=JZ9Du8XXXn5?tjFu|$H4ngxBlfJLF(uQ_A-WPhV1PxD>^lw#Z z?fMJ!(eKxuPk4+PgZuV_3+*ZomCl)<p8p0E#Rp0$Pr1!uK2Z~Z+qJR-zbQ^dSe{$< z5a`0aWdx?H!Z(-_mz$$>`+oT{+#OEnL)iYJCYRS2NxPUNSE$gJquj42A2`Cj_wF}% zcZ2W3{QGY|eOiD2Eu|iEBZ#+*j=jv@4`B^jgHxmEB6~Q{6r~P}Le;B+cG+}1hg-+L z*roh7SuxE+Pjz_vEefh9Gh(UHE=d8`=>6vU3ujg^8C`o|CVud-sGm|0Y3)3~U2M9l zJWp0KRyd>`V0ZIe(|zQE<XK}tm6O>YY+^Z=%i+1zsq?CwTwz?|SXPF@E=;2T8(564 zdGZ@B1j$_=!P2{Yh04ik{UYu1`S)3kx@aJSKdbut_+R3$Aus74Qbyvok!^AhYrjX- zrua*VZjIzOO!#>X$o04d#>C-g>emK#P>1=|lpACUy=1uz1a%olj%Hl6PSLGJ`ayD% zl6-vF8e^4mv%H7ld}00R)4K|7bA#I?plnDOaD5}O{|O97wmp=SMh7?L81Mpvrjd1C zJVAt%vFp>b0Xh3(U~QTD90fU1H@;K!jXv=%S@Wg2o>=4*TECg2s4r$ad<yTXnAK~= zx#Z}vyph^x(0Qf%Z^}JMbJVzm49?9@&q$kcULCLNrgAZevfkZ=t@B*;QT1VvO~)u{ zAZ8{o=?Q^Qec#%0)u&GxbPg`M%kG;a^J3q5vG?skbZ~gU=XN`3WVeC0!`&<U^^~Yq z@UP$a*Iw;LR1(pBk&=U#nsQs{<vzoDUlr@x5p6vbtSH8;UZubq0#x@HDxw{u-dUpa zdTdy>M?RDh<Zeph(g=;jJpS;D@~fn7vJ)$W0mFG79GJXy&CBE^aO0x`^o9F1g{@fN z4$H}?B&s3~&}AzSxfg|@#smOIGFV(~tg=coayqc1A=ZV%+^*{Cy2)yB+f7RZ_wakv zsy9#0s49yaN}mwyRmEN~q9b@z%|?lOf?qeNl?gUwviOioJDhfSb4rSMUBEz3o*>tH zfFuFG9hU3lMZzSsYSyq-nJYE3V&;{s5amS=LTb06L9G$U%y$m2H`g%&6p7#bW&-kb z=V4Q}fFFIuf_yo5`Rmbx=(lt@wa3U#8B!`+ksl^sy@ZedoW?(<;`cQEDFdmO-7BIC zoqypHBrRAS^8jv}w2A2rIWah;5f@<@t9E{e%|?I0v5h~fQg9XcoBn|7crS`h)Q%>& zNVQIZ10d?wpG2058t_2j{gZ-6mpoWlv)8!gVE{E{))UZJk&s*XML^8{EN|DCVvx>d z`hlgg56QGuMbP9Vr$iN`q=aggU`E<yd;<5^<#OGkPhz-BMc~mekGhMPDNz0`bSL4V z`de_H;0gV~KT(S0>OM3AS=13gw9H`%Bf=6s5R{1;Y?rtiZ}T!5)Q^Ow_nyx?44yi0 ztb9QU`AH7Zk9oJ8C{mye#A6?(qK%aq6vJ!i)I=kNG}A8!A^NlcS1Q>`MhB3_M7K(J z71<vdT%XD7*%N|b;b%1=0_MY?BY$s+XpzT1veD%JeGE>i&9{{QZF>Lyy&QOX7uBYe z!qiLPMj8z$<36A$wT#`PD}~anDTzw5rH3Qk78tK@$3af;2`a)@?&B7Pn3^;k&U1Q% z78evG+*kZ;EJzXJzM@BCAyp>MD}IJ+*uZAtrHKZl&namK-1S33BSSDkEp})vS+bvG zPF6FVOKT4M6YTZO8~UzV%QfQr0j0FQ7T;iyaI{|P&2V15>~9JeUE;0}V#=hfbAaG9 zY5ILc>{?N=lVycAppVcyXN)fLaK^sHvMIU{fh5@by4ojqd|Pj)p)acfz3=9dMGQ=! ztvtVL0&_C~k{ZyzGFM%z<+F-D>TawkS&C@^GRf0AnJ=9?xy3rEgxQOSeRi4gNk~vU zue&*jR5N%TAl(X<Xh=C}yEI%JTt-yr5&HiDoteVsn=Nm>?+-qGYUNggx?0`DaoS5; ztW*s)Lw(xzxy*bn>wPZseJ*cs-{z(Nl*q`Klhhe~G^uZ1RXO9LJ$d=~kMq+%&dwjc zJ{RTqy9XGxJ5-oTVR5Jhg}>i_fN?K~*HF&=yhgnxJ=IJK8%101Dlvc<(iWc~UKGoC zz?zYTj;*Y7%nJEL-qD<*Z~=A-!f!5yp-;<r5b+YRE)fakZV7;9q?61FhRv(HxkCh? z$}^7;+!&Ea?RFVQy5aVHl_ZV%>t>v1XX6z!?0Bm!U2?dO3MWMa+b(_TR>pZQ8OU^F zImLz*S}Su9{3(dnNC`*vq{f74!`hsCoU&fm*bL?nnJuX;M|g8dr8J}>w#j&+w24oH z&JKa~6wB}c_7V<`<}K<x5X)s8%AedxAk(o}E&aCUlmxA@B2!vA2T<?-(1}2+{hxox zZd859{y2Hh&0$7Ni@@62R~3iJ;JtwO+ow-%0s5kT>-7*e_tC?yDzH5Q!93x^cO3mX zk-=R}coAIH<g172&r!Ppg)=OCB~ScuWY>hh<u?)IYFJvH^CAM%nJ*oacWpK@hLK>X z<uYC@#Z8wQw5r6_k$TJ@r8IUwEDD+=%GQ83bzUR}iN0EHG0XRMvMF(RgCoIyUJuag zau<5NT3T)1MQiSe4~dK(B~A9QOrLx};p3?P$k3QD6d2_b%&1qUM`3P2{+zAA?=7kw zN7Ps3WEq>^HsWkKoPU}*NK#H0RgEGtiZjkD!rG!Ydbcb&JvG%)T1X*FN~WWP3#1oX z#=*~Z8XEX^r}=TzOHWOoIR+5}L>osiA~Jf|h6gw_=ZRfu|3MeL+t>B1$7{2{bI@y_ zZY^-pW&6W29uV$qdeSnOJ>sJ?lwK_X?sVIRdB4<Ddw8uj$oVq<uoUln_tVh_LSGy> zx$3{C?m#c(?tQsqQ0Xy-jd-&3tABYH9~!~HmgCV1Cms*qy!pCKw{5y&%Nw@5R;ydJ zx=QzN(qHR4w7NKhO!M&ncQ^ePO9Z5+8A}jEYw)h&BS$yHu|u7`-Kqs5FFWdNGE2jR z_Xu+B>7!<{xlR*f=88c;?mwq!$ybd%>3@h7QjgWSZE3R<aO&eF|NHA?wXQQ4&)*3v z@mv!hE@7KzE=MAt_l<bn-3Jn@^w2XmTC6}**Z44eSB2ZGgO04g@`NBu2TWuFGJ_F1 zU^LD;`8_?z-|t|&i4=^O{gV5F2mCq6Pp6eUyq_*(21p6^Z2!+9Y1(~^W3Km^27|G9 z)RQA5j1M$IT8R_yuJY|3v}^fx3BB4=bdQ{9BcA!W${(m8f4U@p7TYqXukqj4`qI8% z+wAw{@-Bz7th18v4WET>ECQIY{G;o5_H0S|%f2ur?~8|USA=^|{DSzP+0f|PQX6H3 zI_U`f7|Hg;QUVMirI|n+^hPNK+>Y9@G<nvp$+I#hPv^}M`Kc`PGR%c3vtM_tpX2CY zO!m(;G8Aq9%pCh?=GZ^i?9K8BrB>Ik%_yopF9lGLG!@$h$=9qB@|Y@X$Cd3D@1ZGY zx3hbfoMQ=vzPHdob={!@_}-uYmFBReR|73MW=y9#RC?~M^vVD*p93coZ<l_DIy`r4 z<S0<)&GK%4WVMyh!P$RLWhb<^OAGV5e~Zl+JCGDZAD6>UujNI1x&1!u8I|!?s0Bk5 zil6>}ce?+;r#nKIM{ky4ApZ`4dMSht&OP-U{tSQ$$I1{TAH$ykkQ6=EB7l0S9|S-^ zRD{SNdQ0Z4hXe`raFzQ~f-kL1;J+-rhr3z`&)eE2(QF8Z-`Y0vvZOc46E?A;|D5aW zu_K+B0G{PGbZHPcDolqm44Ztu-0B%L8ggkuS0pWO$F57$K)x>&<YY^7HvS7L<e!#K z+7=1ToZzP{`q*{%sf~L|^QNEzG1P^0`B_qbZj<BNW1L~jArCpOy<afe0k(k~W^kRC zoj`*HLK(TS2F{jH4*$<lW)b$_qeQq}j~X$nJ1G^>z*+v3-K<y9N50Gl@;AtC@91AF zK^85JX0ggyPlLV-4%UM`psJxel=&&TzEM%%UCJsW_l;9XJ`<LYR^)hW3Ck-ha(uMt z4Tm67W9*N>MY@lL>xC9|-O_~ZgBiIlnWF1f7WF;Ngv|z`^+r*%_(F-Y*=kXJ*k4vx zIfhTIi-O(F_bHw#5Pw0rmDCAF$rVVvAm`r8ml(tVOMDoJKcEC23kTLyIzH?N%cPzI z_1TYBNlLS7KjS0e!NI}*?R?_bW#6CvVVTwy;nn{(XlvLSfvRO$>1d?_@6oLyZfy_x zqoAzzC45ZO>L_6JOf=Z18BD2#<f>aE(*TB@E)bV2_y>iZ%BZT`=Xvv9l_Qoz@-K*} zzj6wsRs<F%2L;vzgeq%YS%UyQ?T&f{qhPPz3(Uj@QNKt%zY4$p_FEzUe{3&<&iS$y zRT!jsvnrCC2)U$FYAkeWm@52hx%bC%FTpU2ke&E`T^<EN^w)CCFW9?j8TZ7bc^(EA z!QL0kz2MS(y7Z(=*N$>uEXRk|Qr$xhvc7hy<v`_<!8tZ-Za;*E$nVM1t!wDk0yscm zL$`<wpMSZ`+T;Q+p>cp10yrfG5ymSG>MQYiGDom=Og(P_vr0n3CV>U&HpeDAqeT10 zfOw0Jr63#_n2zK_zQi2E*7r^OsyO9`Zx?Zzz0arFKK&3Q3EQ>bOp_vuA50F!Xx+e7 z7k{IxQe0MIL?2i$O`(7sCpgV(C!WU!km7KT7TrS4Wv<_`mKLqoUAG@Mh!lvonBV<( z)}P70CVo4Exyw<<tp8Ngl$8!vBf8Np@|1#m6<DuEqZ1BZq2Zfqs#DwvcT`K5hq-my ziTY`O7Y}%EUA|53*I7{|RG(9=y_8O|AT3W=;zctY98i@FIt05Vz!)elq-9&HXwOOb zx1}?jOnEBHNRz)PZl4ec_y8&=ln$Boq}hkObrZx%8ezQaMRm<%)>w6)J>7TI^v?K? z%g$GKpX`bSIPwdZe<1~yD=!5ixhq;5jBRSWu}v-M`#H7={ZQMsAKO%0u}xSs=62eF zFsITEbE;MQI@$>h$7sy{|9TYMPQRJIIVc=c>mSoe6E0^C0NlqZ-6y{MF3sPMFlc)p zSV5YVAnerZEEo|gTpWCHyQ+bkeb@j=HShM@WW`vT-+%WNRQ&$SvCxF*2T0r@zT9bf zdw4m)8jeZNhwy%19~j5+ZR6_=Mk33nG%9B>2IlUw8k9`iLi6-D+5tq}tx=qtMqb+e z&9)j1%nM{%PZUX_wuj^R|Le=eYja8egTrwZD_raF0&}o1$CY^2O6vfN{8wvK9Qqe3 zHuMivXXqbBeZh~K{v-F|rXJEQ;Vj{-EcirS)zmNhLZ&~bFBcMd+rEaWtTWDyCJ-uw zMZVMbncf@cCewZE-sbSFzIK{$b*zBf!L9N{`Kj+vN8jppEUgeGb}QYz4hFUx`X$e3 zQ%&EIvo`^o>*<gwatQ3fdI{~xUlwjI{ib6W{zfqNYgB;wVm!4k^MpUElq!}9X~Rui zk;?5(uWf2YHsV^PNJ+fmxgcby0x{+731Dz~RQo3>V!vw=fSIXQF+#tl>uKiE#KF!= zn%Bv-lyZJxxSEl?GrrBP;G`IFZu$UrBHYmqC2VhIi7qS-gPe&M(m+M%J}YEi)pq4Z z4qH7X(1B_~@+5MUY@$av#(;WS3zF<)c8EH@Md`<tJ?&B(fs&~2y-G_7$J?Q~7i5+I z)H=wYoPm8w0A1=Bx4IrV15x>v&*0FT5-0*MfnZTt4w2=$3axjoHZn+R$Gh)}(-Sm{ ztSC5l6D4Y5a&=NQVTPtlv4#rSbW&0LOH!zOTzFGmK`8{ftYJ19pUa>h{<)LK44vXI z=~K)t+o*NtdJ{2yIO;LrK7=@JKU}ZS8-5i(GkL>g6K>M5WHsRyLvF-8mLS$TpVW{u zlPAO%b{I}-I5ry0=xj=OS8BS@2{tz6><Q{jiwk1AiJYR&+iY`J;y|l#J~2ObNGO<3 zOc|AMu1hHd+`u`zfLMQ^fp(lgD_<BChjHQ3RYf+*IFw5+*XTNFM)GDlYO7IMwWF(S zl#FQR#0aDUcsAl$9qHXg)hOlREQgADIWnU~oFNl3_J8s_u9rJ3Ya>GkN!bTW@}f$i z;*=psZf$UTgs+u*E5IaQTj!Mn!}UAP8$r5k*s_!$gn=e8`G?9x$cU+&h~rXjefnG{ zNgM9`8Si|0t+o?4Db^+M7@3t|D+lO}Rs%S9bGOPIJC_^g2gMeCK;!i?g~rDeX2=v$ z4^!ZFT+UGVIYY4vXYj#yGJth|jg@?Wi@eLm&Hh&UPsEWAWULA*9X&a7<-A)NB|G#$ z`#VUptMy!72SAL8+KcX^OSa4`S6;u2MOEh?asL$Z;*MC#t9V=Jxs(uBXddcBK)D6t z2hykIzz$GXZx4ssjSob|K63LNI)d3xxAz1~Z0QQVJ{)Y?bY|h}3}1BP*eF<+tMSo% z6|Ghq@qUHiy3=Ca42Iz8FzP{sh11*t($FTu#j4M`6*5g9lS>MPl)N3t>|ygvue-w@ zv?_QBq8*J5MJ82ZbhFY*-o8Lds_SxMl13a^*HDH3W~G#1b{Yl2p<zlMl>!vbia7WZ zb_o5s_oYX%pqi&PM_=w`P|DnLyIW`1q!)@Ai2l%YCX5qcxu25-<Ace9@qRVwE{2N{ zKb-A?G8118>Kg3F>B^G<1X;PpI5(+reTaQDcP9BOAr(s`UDSUWS%13v47G%sTE8k{ zYWmD)Jj-4^8Rs*#4x|hD(C(W{;2q$DXt*Kd!5#;n-b@ksl-M%~C4_N~3N<|+9o^5Z zH%EeXS?y#<u(EAuBzOL&Dl)C0Ra%YxUFO4R%WN#Pl_TFsI3R_hNPbj=dv#$TAP^F2 zmDL>syh7o14dNWP(G{)wXx;{AFjcfirbOWr%oNlX21tcm=9tGX#SW(|;igbu+@Y4n zX49)?BQ@W@Uvpe6T@535?o@hmioB#07`D4#B2!+MoD>L|>s41HYtpip!XXq4e()65 zW;^`k8JtU)j2E>wXV*Exy?TyWO~;?5ZY0GXs_96xH!?3e8sDyhkq)nQ*$EbL)CCXN z$Apfsci9<fO+45|L;G)gzge@mFBM6Cu5{-n?B1ZUuj>^^UD=B&^<{%&b8maJtl<9k zuvjgUi2giXX7gl>{wQI4bhV1ES7Tngjrg#N2f{SbI#uRN66jx772$LFAug=5WFv+_ zvBc?+{FOuHhTZl}uE&iyALyG~168x;CvAdvev88g&eVMPuFx7Bae+3lIxpXm?^433 zcz8-&n+FKUcie5#pX4{2U@8!uNYs;X6mjH$#iY87=XgI|A*%=uRv%OzDLm`lGg~~_ zwMU)rdHdw_+Ml_KI)$+it6p4dJ0b2T-SWdNV>(}vt<sERXnaydr<P21nsTCcmTL@a zBW>~%31D?bMMCy;c(@vX19NBZiTo0iO0S<vq*vc+H~eqa?PAp<pRtf_4^In6{bubG zLj0#G)PsSu;#v;n#n4bxA7tPtaslX$N;2E&&PKfcd+qdQej}a&@5kn&K1t+_8O^6p z4_ERHoRrke9X0OXe{5>xDz(m;zpC^tKkPQ4lYI{nXzi{<MFd)jdVoOf=fGqzPZm)h z{af{@ua*xN^;-VMdtcJvik3rAx9%9IJU6hdf;BXZzyE<3JbJOhd>d-jqSyHI+)m3j z&?YVX3#NrnpXk@?l|1cPr2E0Q=Aqm7qsOc0A)hp~ioMj?P4o_~wU6jpyU4Hdb_g*b zGi^StC*?Xc!mq=+E+v#X=G+-a{h|&h)P+rAAOArl88JCi{8v*hcakl46CV#9j6l~< zSCjs1%7}WAb#{Sa=XM&eq1Hi0a2q&67e^x5aLoRilAd*DWlHOJBDIm$94q^zS|It` zWh3&T&7+K|(-A;C`Hi_Nz87XAdfw7#hHBwUX+~9a7f_Zz%%QC3jM6Ai7Zu(XOe$n? z%kGpH*z&qvt?fL?%DBbfm2Yk7#cSKcL~rB004NZztkO+?pnV+*^*JB-Ik!Hr!Gz7v zU`L`0n#anws#KCFq78j4eyqb=Lo|Icns^B7w1`7#hUF>xz%FX@ZS5OPS|wT&>&)!F zJ-{RoN!rQHt~G6H5YZ^uQ(q&^{mYdnUG>RIrmJp>Jhc;5KU%T!{^?3^j^<}8xZnQ* zGf1}vFaFTrmA;<<(Y|mi!}I1pxJAI|OwI$dQ$63==hx`<t@f|46uv|qy|br%1$7B1 zZEtp8S@|AwWGK?LvyMtKN7UKw(b!Uyp&;irw#a~pe@Otfom1D8M1@S7ca&~*sCAq@ zg$3+}YmS$yv%l7Gd)I7=qnF%}N1SpVJR`O%4F>1H=m3|DZ)vAM6@Bi9h&4u=0-kox zZ+f?DUoygB*RxXM#RfZvv&~(jBbvKa8zSrISmY5B>B9tV8-K2R$d%CDr#Z+@h<z$v z8Sfj;D*pp{As8@ZSZ;g-b(3_OG_86_cI>uVJxZqUnpHB*$es;-f4&+<yb<dmkAxrI zoQ(J!AE}%=0dx*e&cqo6`{bVAtO)57)#;c`!@-=jwd@vfGBDi+E%#jNGP($s)fzSv zo;rg6rg#kc3st%5Z`l$*r*K<T3%(0rlOuNY8Ut8ZTa_r7)(aV@p?aj^bfq$m6D<b{ zMKy3F68N3g$y`;%zh!T5BckQdbDK9dhRiumrXB3&%;U+LVYm@y(jYkAwTsZr8BEN3 zOl1>W7L9k=4bNcjSUT*qWQvw3zHo!lJqib%IHdIH6K0=O0@(E;pDv)#ET24jc>L4Z ztB1!=!tuqy<)=@(#zI@r<OCNjZ6`F|f?=3kPSWi<DeH3Tx-}WF!H!@mWSR_&NuY9= zd^fUEPUy;*lQ+docV!3R+WR>oHT!$Q@9w$oL8`B+rhQbb(Hpnq;O<UOD}@i7n~qk( z`fNVNq*)yR$PyD@sp3l^lUTVczn-|90=vVkkiEO8OEx{31XONb5)B^Q41x!Xnf@UP z^Ji-QTsc9#Z~Y3W4w5`t>4;c@L41rdG(Z6cq5`BayimRIe+Ay6XjIETw8Ifb47u5O zGD_6~^2FNJe400KeS~T&%+`p#K*<ftQcg|240W)=(De}nkZHy~O%&Rueq*YHjrh2V z->k$>tJo`CZs~94_E$PZnGR-F2Rqp^2YPz05(A}hKDa=`=plkI!@NEWF09EdOZfmn zZ}j<{&CGXb219IDj7ZnW;ao8AZL?l>fq(H}Mg&7F0xbHAl?SZ_wiQk4I_9*HaI}3~ z0f(pz$mJkl@uaBcw4+{D@@~{{8$YZj>f2$*{Y3+7X3bPxsPw1i1ul(x+>SBtXEM<% z2d8RiKB^u%>Ni9xU)N-s8B;$RRdpO;OR(l{EBIi03uYwa$bf^`D!;80^s;&-;Y4=) ziZx%gXRcpo4M<xE(X_QaCWw%s+Bf2_p|w{D+g8rwff3z1@OJJmxAI1Ku4>qcKUQ1d zg5Iti3^1!rN@XQ}g`1K*R3w2!J2&=4w=vn!o3hOd#TJG<`&xZatLFYt%~b?zEgL&6 zo#y^n3B7>_vX%d|vRL(&AiC~uakoh}=B%r=y-|Qq{00+7S2NG|<u|XYi7esIdYW-M zq_c{V7FrqSP4=K4R~=AngD`IO7Nqi@{l=NwJnb-At6De1mhlAn-FSlNM0mH#S>Yt@ zAf}CPPfMQH+9F&FNA04zbn~;qg9sYVFWSo(=9v@)59>MUwLwmR*Kv-tye_>TH6L^m zbdzTuT+~jl%U4Q)hPGNpm>rcD8O0s2i_N1Oyh?a8;dI4<Y)~FJMZd1qc_nk!3a=*e z=M`I)U5p{<M%kZ838<}mfb7{ID*U$6lvH~uDXuW)M;uS7KEluTQH(oqWxbtH+n+Bj z)BvK&dT=g&L~g*tR0-B)$dM*1M0=HF^*iPM0qPP~qFq=(-F2Ju_t0xHBpgjo0%b!( zDDJ)9JIw|TpRqs~IiCq5@;VvYL_<bR^}Wbu)wFz!sY8jaF?>)T9%^WVjDG|ruIn6* zr(m6@`vLmTTNXy2Jc`JscGAf;kh?{Mnxe9c`tmTJg%vu;^>R6UdA`U%D4L(7qu|TE z8hx<xW|S1z-5ZQ`O-ENZ(df&)=b7%2-M78q-=!3<pfGHp(X6UblV_DLJLU0{sQQ8n zHR%E5TljFW7oNc#zr=VS=QBsaD2M`b7Y?8e)xW$Pwb0n((-*<`kg)DycdVHRlNbkH zPAuw3#9ByIKUo8_i}ht(+q@<sLHW^*&2vf*dw_?=i6fhPL}(v(`5fWK5d|Fd5Xn(+ zyU#;c9cB@Ds|dU#0<YrdE63b9kp0T$UJLS~Ha?0TD3@PX6VFkPDN)(fgaKvF-O!_k zt>aetJ{q0_4eN?@G;AorVpfE=<OX|E&ML=M85RazTn9&mM+6T@*tjxg0IqmJLqKrj ziszckJav6~Xb5U=dpzz>D>4?_^R}Sdu|$RwrSs18MTs7@unON+@G>tGbS!q=s``0V z@v|i_fa(2{W}2+J{;K()!p3n+kh&9zVSe)__im6Cd-uwmL%tGoD#03grF|Dknx0ob ztX){4CS;c^)WqRw+<iZz_f++5RTpl5)}6}z5(#(2BSDUDQ}^9z7eIX}eRjrnsxeYj zzyg%0v&_drrzLWB`=?J~Yx#a^yol0@6XCquc~8aD+(4xz`K6A9yO;X};CPi%f-t+M zgPrqtC&BxV;gX0mNM_4MjTh}h4$C{vCP~|}oJQVo&gYL&$;5BrUEyJ$nk5v-!KWD- zP{tYwBNKfjlWeOHPr?)_)}4<P7@wG97Nx|&0z#V=I@Ndfl$#})XkoC02V<dgS$E{{ zPQ#3^=yl1G3A|3W<u&@Kf_bb{{kU2eDIJ%13Ych_(RJP~Mi~Bp$9+l1eK}&nntX|L z0<BRRC)~%r9$D;;q{5Y!w???>#BE(wT@6pBF^1${+w;nbBJ;RC@n*-w&lx8-G@NK< zSkBz$2<sjPNUR;7Iy-!c@$vJ1k`yJi-fb$hu;xJ|Aj)o&cVtzFvN>?0xt*EWHn!n} zVm__?C8f(6i)yead0@(7=F*nW&CdBeH)Tfdw8CX|);Wadq6%c@+-lfdn)K}n`8w7p zm{jQN7*+F7S?)C8=6s?i25FzPWAklDn*<QUs(ux#ib-f&I1*RMG)GJ1K_E0zQ=p)l z0)p%d_8%M^pyP-jWG4M{<3h=_gmsE$HT;huLDcUi^Ib5VLCDTL2-a=f!HX637A$)M zV&Bb2;ijXISSOr5$p)!*Fseo7!DY`3E<0kei7Al1)Ni_rV31(#(f?RVccgO?Z#1fR zNE5gP<`&Ko+7@tDz!#f#eRWmU<=qjV<J;+6>Dw}rW^+5cx7QlAGh(h|C8})eM60pS zY{LtTK%A3`O9P-)2K0=KlXiJ8?r83qDB66Pr@PDo%y(^Wx8Ckmq0_T1Q#jmZYNH>> zJezM(E;`nMzPq;yq&Ayn<K}5CmC~+?%l*0+QRZut-=36hMTRO^ggw4+BzN`3g@E9` zOk>AmeQUN*mM<ABSJ)85wB7n0y(y>9WSI>KN}T?77H6w)D*kzJfCkA6bm$_?3Hyl0 zsK}X(&%w!0Ei?)gHC+I}&{XKX%C{#^rT+Gkr+PZjL6hjTU?kHuQ(HHY>m3WE30NAR z2eZZcE31NBxtGw?lU6xnt~NnPNH?qXr%&`kX4G}kT?>l`b&UBv#oD2Am5EI@dfUm6 zJY;{)!*+m#GP1@Z02(uP)<`3e*Hrh#GD&;0@hY{rcQ-AdcLny)*%t@~=<SfpJwj`V zd#QeRPfMJHRwE`gapO%*+;mbCH~!Sb=Bw<#(J?G*4+wiLJ@J~(m@Ui_l5OrzhFfe+ zhFkcg3#FwMZG3Ur@l*f~eT2exghr``FHz1(p%u5rw%|G+Xk*B_!-sKC^_)e9K;$!a zG%z;+mrQUFgv(GOskS^6m}|<STZ?6~@@WW)xtq@2)&7R~k5p^q4d;rlFv=e!igFzl zbAg!tJG86v!;9s7D^jLf57P7Fo^7iZ9g!L!rwsNS(2vIL!V$KMygA&C(bWn$ad7Fo zOLbU=%Q;1R7&JrgtgYsqdFoz}YqUS3l2lnNUDt~pTf+Y^7N=|_0V;j;w_0+VX{+bS z#~V-3S2{=6ahcLD!n|j5Ug_2FO0Nc1dNCi$14l^qaBB$5{cQYQ+#adj7nR>-3SFe! zLnKD|_dZ?=-p~6OnKnRNLLPuwFUt^`3AlU`-+N%o9;ld#?;QyA1l}BypmKsBGw&%g zH0iZnJxjL;oCh#jhb6+q>BpT;<}uzh7V|JCL9?e<@U+=>tmbG>2x|cpe=kw~4cKV7 zM)=iFpY(*TVWPg*zjF9BR^WKuFEAwgnpon^+#hg;Zg$eM`=4JQC@1W1{`Ww@E#Rt3 z>NL8=Q?gF-HUh~?6iJz~+Vksg4iNgGSNYq2{qN^i{-1AE<$wL_fBcod9jg2R9S`F0 z&4X`L<^TETzr2;d9{lqEKwo9$2M1q&b9e1;4y@W#MOFXjzx*HnU#I%Np!%gx@n6C& zVKDLg_cQ#P+trCQCaP^4OkCPP&DXN8?0G7``i2;jhbIDKeV($h{FSUsrjMI>$Zms- zh{-(?nffVl^Wku8kLrp3Y(3E*RmlO{qtdMul}?-EeJ9t%_tnt>oIB#$uea!@MYeqE z4jp%Y_-{7eznaq)JDbPXbMaw55EOPjC(Icb4%ONtfpNc9@Li<{B(C&6rx^&~P83kY zj5wXMQ`0Q}fG$mzGl3Pgz<Be&k#7@Uubk}Vc7e;WIG=lgN0b_7|7M>)7L3I^f61GD z{q3<h_Lt#qunYQ=`EUjr_BS*sXdZh{^*>P2b3VsdME}BRw2yalt*$zqPiP<^8H6zS zZ-6;LK{abq>;2kyyg!~BJ6G7p89APhk6z59hjSSjES?UL!&WNuWxCNIAW!C^X37xt zezxCk#3Nr%ZwQV1BG@~hGZ1wrO#d~`<jH&}0U;i9A`y+4i9)38TRPlfv5Lb~O+x|q z4vkK2G=7D+9n|tkm7W}90n4o7cJ-robCm88$>`Pt&#a3nwCwcLr@#Tn#zx)WKqhDg zn#;S}0{^YY;(h!S^+a>A7>k=YT*q^f#P8w8FNfE}7WlRe2GZE0ZTzE^{3)RYl!-(b zrH>|JEhC83up69-wOnoe?0BwVV9c}a(*xa1GrOa@o|>;&cfOj=eBo!^-*W!0&}l-> zO%>O^rLX*xA#<#BR=?`6enrERd~quQRC+*pcR*EVK$RN6H41HKo-5eWIW>s?Ji%S_ z!7dBZ)U{H7F(KuWkk(8{==FD~cQ1@h@^xW2zvO&+rBz(59<$gFtG)GJK9&VO%$0M1 zzP{;4;<l%8aC~Fzu4Jk`jwj<FFjPLCIU%p8NNmHiu}04L;DboNMtOK;0b}1-e_xru zQAT_=2UaRx&g1uJZTMx&;UJN#nYRD*aXQX0@H)9>z^0W#xDO44@G7aB?1cPGAE4{= zEAI)TOZCvNxYl$3xs&ZZo2%eI>o~`rP{i)r!K=%hE=WC3q*%q^y_zGy=gav-UPdr1 zUOf0#xOcHGQdcHAo%oZw_uyM4PdL}wJ8QS<u%VmW1JW6YHv`9LXGHqA>x@W|;4gE8 zeNot+`l^xb<5Sp3^kkalz(T%)FWXa5!&F#lC}>(~i~cen`;g6!Jj*(cLf-_~-OI*z zPncU?wDv@O{F@W?Cr*@bp))%Rld1L0do#DTW-j;5+#1-DV>ama`=`GpxE%UNSB-C< z&)H1(T#CW9$tHI|VzG>!`(c}<;!IXv>uE}ep6c&`+gIP`M{lq|)?K3ge6M27$9f#q z-yPh)?=QDkt5O^B#lX7tl`~SucW}sXWSkA+C_``2sPDIIVhRo!pa}$w-0^B^(Xp)( zdwccwx;eO~(flZfbuat+g2Wb_d2}bA$A8Vmuk#`7myUy}<6p_~PA!N%*&cMS)&~+w zg^6Sb@FCRUgwkVA3XGeMW3Nh3OD#fcn5huc$Y_>byDYoH7>j&gbK*79qnO4$v(jDy zd=+X>@pQGaB7)31#VPvD&#NEJ32I7)|Fu3Zy<g`Ne^h(4&r$Ctew=TM5J6cPg+<SG z`=_}EZ%8mYCzUgIivh8>q!#zYh^OurGHZv*W6qa?eM}hq8M#1OxEi&D<FV<#o&2FB z_mB<CdeKa<3H!-!bBq+Q(>wNBBgNTaSoRZL<{)gzG>4Sk(whYhqg}`rx1S9`QMTWA zvQmEf)PA@Bt<qL>Gmm<6_q9&8QCqFyu@7c_7T=>j*=w?8uwjF6vlWJz+@}w+f1-KN zlT{S<R6iUKW5%qx{tf{&9rK-bC?8lC8-iQ~=&3+E5W0T$dqPYx#|o$Bo@S5O;(}fd z47)}7W~{s@;h0dFB}QDxIs0TjgD2W{h$-ik7KwbXIcXeutZ<r3v`ykEO|k0eHx!@X ze#W?w8Ae?qx+)cyJ<7zHO4&lESB?RXZ&SQzRVAB9RWw^wvTdPI>j5*joK)q*^v`wE zx;D@8ZDFq(v67W<#TtJe*kWRd&4?4?GzXW<ALj^#Biz9>aH-Dl%IQs0qFpaA>5t__ zgN{lTh?6ZUuS;^{$Sfeih7!wYCmAO(dN1)}tz<AY@_N`1*_v=%VLTHEG-XYL&WDrT z(>NNKE~AimSI~GeapB7TH(4zK;NY~mW2^xNvYY#6ChV-@A&cfFxwv}3*KesLR1Z68 z#6tz@Au`9<1}mRUvgNA1vHdz2SI+S{(K)1h46?*Mr_?cUiZyzzYQ}47IIoe%vI0Wb zbdeWno#CxPXQ0~b?3;%N8Y%KIwH^f^i1+s37CI@Aaar*=rlhvHU%Y1r7LRL7>R9#% z{a4U^w`-m*4Pc{5+356C%@gjv#e|n2RO2&s-iyAS+-=BIb^TK!SEl)4PHAXo?4&KR z1ZAIJ$=raF6K%PPqXVnQHvov@Bl5wr$I+oz+8M<$Q?qQgw$uoBCpnf!nLJYEJ))N~ zLGv;nT@}{temRi^;P1IFoLi(;iG}s|dLA0Sj=ou#25o*v8Z>fpRf*8lkK80kTkoDA zO@^CT+)-z5KKzX2VjS#!%SWbMBTFwK&r%CpD5spGy^`5v#;KdFqI7Vu-$LYD#B)r| zBD0toXzM0=znbV@VImOEe34pk$?SacHxtASW>a&rz-g#HHGYM-9BA>!Q)vG>yLy+m z`x>6v7!u^E6mV{P^-*bCwL>l+!9jBoOetY<z+w%4laWM)h43phy1Y=>Ksr;O&bK3z z3~};TEz}@RNONZO%@S|aFZ%E$qURj)Fn^whO?ZnPi!h@vN?zQ(NN)q~WuzyhweqBz zBrgi3SIc68yB{f`%5vp$#}gSU<8f)hN%c6AspPByMVyt-9)Hx#C(094STo@{up}5U zCR%CQ#*5LQQtns{$(stQg6{Oq1FnbDJ45E2cM|!@c~ld_DgAof&T;Y__JdUA!#fiL zu62&RT>qt$1=a{<?6^8iZ0^x#F}-b~*nP&%i#A8uQkz+rl_b8?&;W;tGl$#gq=AIZ z*mWV)Jje$BFc}B`ex5{1c<354H2J%Tt38I}f4zm(;Bn-euicYQ4mqr1p2fxA$O3gz zHGeY$l+Z=Yd~0KGfESx0!O?tvuBiI6az*`)yYs)1FzW9lfU0|2SSEw2?PO5(P%@}& z5yL9nEa6JEZu4S7o{|=3ynOeBNa00N!sVR6+ZUeOP&Zb6qA;}Jh<cZof2?ab7>8np zvc=>oX|gx3pYH`<Ve#fGl4|F5auW>28|%E6G9z~eb>-g^&Y?Y7=0L3tCalTnH8$OS z2lG%bVozcnib7({G8L8+Uc9bg4D~W;l?(Iul7Ls1a9xfv3H8?^8?F3T;ZxEgG$<BP zJFrR;)m}xDwa(SlF6Vx^bwRim${_$blWgiDSQmI~7r|wxQGL&xsO&JlW=Vr;Hw;&} zMI2gcsEgpkezQza=@Y1b5tDblgg*-OPKJL!?DJnXZdl*F5GVZ)T%qSM-&u+#%#wU< z!{AIm4UBiEQ&DC{My`64Njy>v(#iP{z{7N52QdZu_67u<bYH1FgX6=;EK3GVG(Mb6 zbRT_LwK~U<+$Sf?RneCkZV?tSGFKo$C<;ngsWWX;mQRo=*Yn1zf#eDo>a2cq67}`= zE#58<2^8=JhQl0%T9b8rcE;|xt$H#RPpZk|(-#x6FP|;4tffh=Czw(f%B^!)Zj7!R zNAz#l)k|w%3b8`(0`Xqlxa-Nw=iWW>UUt>j0*UJ_iRF*NBEAu6%<z<+z%i9{!VVq7 zY(z1pk`XI&k($S6m=49xN)WD4ZzUg}DHY-S_?MN+IKqoj;GGYtVL6dmCh+LwM+^1G zdlRY}k}{mwh^@IzO$1`9BM^JAsw*~6tS0hI4JqM7S2kODq&h6aFqiUlS%^7DdStDg z`Ks|9(-S)<2GY{fPD^oTI*YBXxb;j{3QvNIrHbL&mIY%uao>eQX%NP@u(;+8PKYRB zy=ux{fP>=eiM2?$o_zPP9==CKdsqV{R>PE-S521+bEZObhZl*53JJuqONBE-g$~}{ zuEIP)jU!#=HqG**M*T6nlV&SJv(+%o@_nUTY^T|N=MAYg7~8E#ct@Jed(@Wy4VoQj z<uhnD--TxLze}?)GeEP|HkxgGG&@6a;LO$rsi+~0+8R@u(iw`oXX0usbe#MdOFviQ zS_?wV{6EBY{Z1ZP+kfs9O&K37Q-<wVGb~+Ibq+1jNotE&tk`}7EfQHMdx%QoE6(FC zvJM@BHR3!PS!XH{qhVuRPr9TP)<+WWnK2D1(GZrR`6u|@`bY;y2NB|4<#Pl%mgk%- zvR*(7$pWii+bf6)>UXj0-k~)G@`3PxP?jp!k@1YOr5k5j@lklocem(P-S9lx3nwmC z$^#E!Y&vdt^4B`6Z_cD}2p^kq4s4oy6T;^aaoh~ctQzkr(2XSjF2o5Vlu#=s&tEbz zCEb`oKU5M<Qb+c1b8~XQ@Zg;H1Q&5?^t>B6G&{n~x#B6afQcUKhVfh0FkT2=xWP4; zxXxrcofd4(u#IbRj4mgAtF)XCYtt!w0<^og)#*yz<K=b#afzhcWmH0qNM{L;e6SZ9 zJuk?Yb95zEvCS<>quq-~C^J%{zK6r##!-;C_3q#I^?lpS`HbMp3MEPe1PBrT^<kwy zP2o8D%#OA;toZJo8)$4PIsd~&mWkWOCXd;FhicSuacykYq?U-xbPKHju?#?3Jz-Dp zIUiA^$>`ne%oipaN<7@{K;Vjx^JbYhjXVwLDth>yaF$SR7-5)O&^xQz_?A*RMgd}c z0grB4&gB~jV>7^9e4K6Y;)^L>u@%7wSBVp$$&s(#qeRLpf>IvBrdFRtIBCo)jEBaE zPK}*DtN}QBJ>W?utXuw86~9QsYjmv3<JYOJcBxR{w8sx(Or2~U|D|;2xu}Jzh<Ik4 zL(Nz7K-SDbh`|JfRJj%QSM|_G2otic5&S%~a#$^BK**T+(9x8QbSVX6V+oMCayy#< Yigrp+V&M(&rT^>y1$okg4SU!E0ET6fq5uE@ literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/themes/mobile/theme.js b/public/assets/tinymce/themes/mobile/theme.js index 326a99495..9fde21cca 120000 --- a/public/assets/tinymce/themes/mobile/theme.js +++ b/public/assets/tinymce/themes/mobile/theme.js @@ -1 +1 @@ -theme-d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514.js \ No newline at end of file +theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js \ No newline at end of file diff --git a/public/assets/tinymce/themes/mobile/theme.js.gz b/public/assets/tinymce/themes/mobile/theme.js.gz index 2c9b1e1a3..0a6496d05 120000 --- a/public/assets/tinymce/themes/mobile/theme.js.gz +++ b/public/assets/tinymce/themes/mobile/theme.js.gz @@ -1 +1 @@ -theme-d8ea7128fdf215593ad6e1fd511fc1ac196324084fb31c74eb4d0078b9935514.js.gz \ No newline at end of file +theme-a1159e0c9a6573f4987099f4d12e8eb41ac06e509382c1bf19491d8222c56796.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js b/public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js new file mode 100644 index 000000000..8e85b8e30 --- /dev/null +++ b/public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js @@ -0,0 +1 @@ +!function(){"use strict";var e,t,n,i,r,o=tinymce.util.Tools.resolve("tinymce.ThemeManager"),s=tinymce.util.Tools.resolve("tinymce.EditorManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=function(e){return!1!==u(e)},u=function(e){return e.getParam("menubar")},c=function(e){return e.getParam("toolbar_items_size")},d=function(e){return e.getParam("menu")},f=function(e){return!1===e.settings.skin},h=function(e){var t=e.getParam("resize","vertical");return!1===t?"none":"both"===t?"both":"vertical"},m=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),g=tinymce.util.Tools.resolve("tinymce.ui.Factory"),p=tinymce.util.Tools.resolve("tinymce.util.I18n"),v=function(e){return e.fire("SkinLoaded")},b=function(e){return e.fire("ResizeEditor")},y=function(e){return e.fire("BeforeRenderUI")},x=function(e,t){return function(){var n=e.find(t)[0];n&&n.focus(!0)}},w=function(e,t){e.shortcuts.add("Alt+F9","",x(t,"menubar")),e.shortcuts.add("Alt+F10,F10","",x(t,"toolbar")),e.shortcuts.add("Alt+F11","",x(t,"elementpath")),t.on("cancel",function(){e.focus()})},_=tinymce.util.Tools.resolve("tinymce.geom.Rect"),R=tinymce.util.Tools.resolve("tinymce.util.Delay"),C=function(e){return function(){return e}},k={noop:function(){},noarg:function(e){return function(){return e()}},compose:function(e,t){return function(){return e(t.apply(null,arguments))}},constant:C,identity:function(e){return e},tripleEquals:function(e,t){return e===t},curry:function(e){for(var t=new Array(arguments.length-1),n=1;n<arguments.length;n++)t[n-1]=arguments[n];return function(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];var r=t.concat(n);return e.apply(null,r)}},not:function(e){return function(){return!e.apply(null,arguments)}},die:function(e){return function(){throw new Error(e)}},apply:function(e){return e()},call:function(e){e()},never:C(!1),always:C(!0)},E=k.never,H=k.always,S=function(){return M},M=(i={fold:function(e,t){return e()},is:E,isSome:E,isNone:H,getOr:n=function(e){return e},getOrThunk:t=function(e){return e()},getOrDie:function(e){throw new Error(e||"error: getOrDie called on none.")},or:n,orThunk:t,map:S,ap:S,each:function(){},bind:S,flatten:S,exists:E,forall:H,filter:S,equals:e=function(e){return e.isNone()},equals_:e,toArray:function(){return[]},toString:k.constant("none()")},Object.freeze&&Object.freeze(i),i),T=function(e){var t=function(){return e},n=function(){return r},i=function(t){return t(e)},r={fold:function(t,n){return n(e)},is:function(t){return e===t},isSome:H,isNone:E,getOr:t,getOrThunk:t,getOrDie:t,or:n,orThunk:n,map:function(t){return T(t(e))},ap:function(t){return t.fold(S,function(t){return T(t(e))})},each:function(t){t(e)},bind:i,flatten:t,exists:i,forall:i,filter:function(t){return t(e)?r:M},equals:function(t){return t.is(e)},equals_:function(t,n){return t.fold(E,function(t){return n(e,t)})},toArray:function(){return[e]},toString:function(){return"some("+e+")"}};return r},P={some:T,none:S,from:function(e){return null===e||e===undefined?M:T(e)}},W=function(e){return e?e.getRoot().uiContainer:null},D={getUiContainerDelta:function(e){var t=W(e);if(t&&"static"!==m.DOM.getStyle(t,"position",!0)){var n=m.DOM.getPos(t),i=t.scrollLeft-n.x,r=t.scrollTop-n.y;return P.some({x:i,y:r})}return P.none()},setUiContainer:function(e,t){var n=m.DOM.select(e.settings.ui_container)[0];t.getRoot().uiContainer=n},getUiContainer:W,inheritUiContainer:function(e,t){return t.uiContainer=W(e)}},N=function(e,t,n){var i,r=[];if(t)return a.each(t.split(/[ ,]/),function(t){var o,s=function(){var n=e.selection;t.settings.stateSelector&&n.selectorChanged(t.settings.stateSelector,function(e){t.active(e)},!0),t.settings.disabledStateSelector&&n.selectorChanged(t.settings.disabledStateSelector,function(e){t.disabled(e)})};"|"===t?i=null:(i||(i={type:"buttongroup",items:[]},r.push(i)),e.buttons[t]&&(o=t,"function"==typeof(t=e.buttons[o])&&(t=t()),t.type=t.type||"button",t.size=n,t=g.create(t),i.items.push(t),e.initialized?s():e.on("init",s)))}),{type:"toolbar",layout:"flow",items:r}},A=N,B=function(e,t){var n,i,r=[];if(a.each(!1===(i=(n=e).getParam("toolbar"))?[]:a.isArray(i)?a.grep(i,function(e){return e.length>0}):function(e,t){for(var n=[],i=1;i<10;i++){var r=e["toolbar"+i];if(!r)break;n.push(r)}var o=e.toolbar?[e.toolbar]:[t];return n.length>0?n:o}(n.settings,"undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"),function(n){var i;(i=n)&&r.push(N(e,i,t))}),r.length)return{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:r}},O=m.DOM,z=function(e){return{left:e.x,top:e.y,width:e.w,height:e.h,right:e.x+e.w,bottom:e.y+e.h}},L=function(e,t){e.moveTo(t.left,t.top)},I=function(e,t,n,i,r,o){return o=z({x:t,y:n,w:o.w,h:o.h}),e&&(o=e({elementRect:z(i),contentAreaRect:z(r),panelRect:o})),o},F=function(e){var t,n=function(){return e.contextToolbars||[]},i=function(t,n){var i,r,o,s,l,u,c,d=e.getParam("inline_toolbar_position_handler");if(!e.removed){if(!t||!t.toolbar.panel)return f=e,void a.each(f.contextToolbars,function(e){e.panel&&e.panel.hide()});var f,h,m,g,p;c=["bc-tc","tc-bc","tl-bl","bl-tl","tr-br","br-tr"],l=t.toolbar.panel,n&&l.show(),h=t.element,m=O.getPos(e.getContentAreaContainer()),g=e.dom.getRect(h),"BODY"===(p=e.dom.getRoot()).nodeName&&(g.x-=p.ownerDocument.documentElement.scrollLeft||p.scrollLeft,g.y-=p.ownerDocument.documentElement.scrollTop||p.scrollTop),g.x+=m.x,g.y+=m.y,o=g,r=O.getRect(l.getEl()),s=O.getRect(e.getContentAreaContainer()||e.getBody());var v,b,y,x=D.getUiContainerDelta(l).getOr({x:0,y:0});if(o.x+=x.x,o.y+=x.y,r.x+=x.x,r.y+=x.y,s.x+=x.x,s.y+=x.y,"inline"!==O.getStyle(t.element,"display",!0)){var w=t.element.getBoundingClientRect();o.w=w.width,o.h=w.height}e.inline||(s.w=e.getDoc().documentElement.offsetWidth),e.selection.controlSelection.isResizable(t.element)&&o.w<25&&(o=_.inflate(o,0,8)),i=_.findBestRelativePosition(r,o,s,c),o=_.clamp(o,s),i?(u=_.relativePosition(r,o,i),L(l,I(d,u.x,u.y,o,s,r))):(s.h+=r.h,(o=_.intersect(s,o))?(i=_.findBestRelativePosition(r,o,s,["bc-tc","bl-tl","br-tr"]))?(u=_.relativePosition(r,o,i),L(l,I(d,u.x,u.y,o,s,r))):L(l,I(d,o.x,o.y,o,s,r)):l.hide()),v=l,y=function(e,t){return e===t},b=(b=i)?b.substr(0,2):"",a.each({t:"down",b:"up"},function(e,t){v.classes.toggle("arrow-"+e,y(t,b.substr(0,1)))}),a.each({l:"left",r:"right"},function(e,t){v.classes.toggle("arrow-"+e,y(t,b.substr(1,1)))})}},r=function(t){return function(){R.requestAnimationFrame(function(){e.selection&&i(l(e.selection.getNode()),t)})}},o=function(n){var o;if(n.toolbar.panel)return n.toolbar.panel.show(),void i(n);o=g.create({type:"floatpanel",role:"dialog",classes:"tinymce tinymce-inline arrow",ariaLabel:"Inline toolbar",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:A(e,n.toolbar.items),oncancel:function(){e.focus()}}),D.setUiContainer(e,o),function(n){if(!t){var i=r(!0),o=D.getUiContainer(n);t=e.selection.getScrollContainer()||e.getWin(),O.bind(t,"scroll",i),O.bind(o,"scroll",i),e.on("remove",function(){O.unbind(t,"scroll",i),O.unbind(o,"scroll",i)})}}(o),n.toolbar.panel=o,o.renderTo().reflow(),i(n)},s=function(){a.each(n(),function(e){e.panel&&e.panel.hide()})},l=function(t){var i,r,o,s=n();for(i=(o=e.$(t).parents().add(t)).length-1;i>=0;i--)for(r=s.length-1;r>=0;r--)if(s[r].predicate(o[i]))return{toolbar:s[r],element:o[i]};return null};e.on("click keyup setContent ObjectResized",function(t){("setcontent"!==t.type||t.selection)&&R.setEditorTimeout(e,function(){var t;(t=l(e.selection.getNode()))?(s(),o(t)):s()})}),e.on("blur hide contextmenu",s),e.on("ObjectResizeStart",function(){var t=l(e.selection.getNode());t&&t.toolbar.panel&&t.toolbar.panel.hide()}),e.on("ResizeEditor ResizeWindow",r(!0)),e.on("nodeChange",r(!1)),e.on("remove",function(){a.each(n(),function(e){e.panel&&e.panel.remove()}),e.contextToolbars={}}),e.shortcuts.add("ctrl+shift+e > ctrl+shift+p","",function(){var t=l(e.selection.getNode());t&&t.toolbar.panel&&t.toolbar.panel.items()[0].focus()})},U=(r=Array.prototype.indexOf)===undefined?function(e,t){return J(e,t)}:function(e,t){return r.call(e,t)},V=function(e,t){return U(e,t)>-1},j=function(e,t){for(var n=e.length,i=new Array(n),r=0;r<n;r++){var o=e[r];i[r]=t(o,r,e)}return i},Y=function(e,t){for(var n=0,i=e.length;n<i;n++)t(e[n],n,e)},q=function(e,t){for(var n=e.length-1;n>=0;n--)t(e[n],n,e)},$=function(e,t){for(var n=[],i=0,r=e.length;i<r;i++){var o=e[i];t(o,i,e)&&n.push(o)}return n},X=function(e,t){for(var n=0,i=e.length;n<i;n++)if(t(e[n],n,e))return P.some(n);return P.none()},J=function(e,t){for(var n=0,i=e.length;n<i;++n)if(e[n]===t)return n;return-1},G=Array.prototype.push,K=function(e){for(var t=[],n=0,i=e.length;n<i;++n){if(!Array.prototype.isPrototypeOf(e[n]))throw new Error("Arr.flatten item "+n+" was not an array, input: "+e);G.apply(t,e[n])}return t},Z=function(e,t){for(var n=0,i=e.length;n<i;++n)if(!0!==t(e[n],n,e))return!1;return!0},Q=Array.prototype.slice,ee={map:j,each:Y,eachr:q,partition:function(e,t){for(var n=[],i=[],r=0,o=e.length;r<o;r++){var s=e[r];(t(s,r,e)?n:i).push(s)}return{pass:n,fail:i}},filter:$,groupBy:function(e,t){if(0===e.length)return[];for(var n=t(e[0]),i=[],r=[],o=0,s=e.length;o<s;o++){var a=e[o],l=t(a);l!==n&&(i.push(r),r=[]),n=l,r.push(a)}return 0!==r.length&&i.push(r),i},indexOf:function(e,t){var n=U(e,t);return-1===n?P.none():P.some(n)},foldr:function(e,t,n){return q(e,function(e){n=t(n,e)}),n},foldl:function(e,t,n){return Y(e,function(e){n=t(n,e)}),n},find:function(e,t){for(var n=0,i=e.length;n<i;n++){var r=e[n];if(t(r,n,e))return P.some(r)}return P.none()},findIndex:X,flatten:K,bind:function(e,t){var n=j(e,t);return K(n)},forall:Z,exists:function(e,t){return X(e,t).isSome()},contains:V,equal:function(e,t){return e.length===t.length&&Z(e,function(e,n){return e===t[n]})},reverse:function(e){var t=Q.call(e,0);return t.reverse(),t},chunk:function(e,t){for(var n=[],i=0;i<e.length;i+=t){var r=e.slice(i,i+t);n.push(r)}return n},difference:function(e,t){return $(e,function(e){return!V(t,e)})},mapToObject:function(e,t){for(var n={},i=0,r=e.length;i<r;i++){var o=e[i];n[String(o)]=t(o,i)}return n},pure:function(e){return[e]},sort:function(e,t){var n=Q.call(e,0);return n.sort(t),n},range:function(e,t){for(var n=[],i=0;i<e;i++)n.push(t(i));return n},head:function(e){return 0===e.length?P.none():P.some(e[0])},last:function(e){return 0===e.length?P.none():P.some(e[e.length-1])}},te={file:{title:"File",items:"newdocument restoredraft | preview | print"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},view:{title:"View",items:"code | visualaid visualchars visualblocks | spellchecker | preview fullscreen"},insert:{title:"Insert",items:"image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat"},tools:{title:"Tools",items:"spellchecker spellcheckerlanguage | a11ycheck"},table:{title:"Table"},help:{title:"Help"}},ne=function(e,t){return"|"===e?{name:"|",item:{text:"|"}}:t?{name:e,item:t}:null},ie=function(e){return e&&"|"===e.item.text},re=function(e,t,n,i){var r,o,s,l,u,c,d,f;return t?(o=t[i],l=!0):o=te[i],o&&(r={text:o.title},s=[],a.each((o.items||"").split(/[ ,]/),function(t){var n=ne(t,e[t]);n&&s.push(n)}),l||a.each(e,function(e,t){var n,r;e.context!==i||(n=s,r=t,ee.findIndex(n,function(e){return e.name===r}).isSome())||("before"===e.separator&&s.push({name:"|",item:{text:"|"}}),e.prependToContext?s.unshift(ne(t,e)):s.push(ne(t,e)),"after"===e.separator&&s.push({name:"|",item:{text:"|"}}))}),r.menu=ee.map((u=s,c=n,d=ee.filter(u,function(e){return!1===c.hasOwnProperty(e.name)}),f=ee.filter(d,function(e,t,n){return!ie(e)||!ie(n[t-1])}),ee.filter(f,function(e,t,n){return!ie(e)||t>0&&t<n.length-1})),function(e){return e.item}),!r.menu.length)?null:r},oe=function(e){for(var t,n=[],i=function(e){var t,n=[],i=d(e);if(i)for(t in i)n.push(t);else for(t in te)n.push(t);return n}(e),r=a.makeMap((t=e,t.getParam("removed_menuitems","")).split(/[ ,]/)),o=u(e),s="string"==typeof o?o.split(/[ ,]/):i,l=0;l<s.length;l++){var c=s[l],f=re(e.menuItems,d(e),r,c);f&&n.push(f)}return n},se=m.DOM,ae=function(e){return{width:e.clientWidth,height:e.clientHeight}},le=function(e,t,n){var i,r,o,s;i=e.getContainer(),r=e.getContentAreaContainer().firstChild,o=ae(i),s=ae(r),null!==t&&(t=Math.max(e.getParam("min_width",100,"number"),t),t=Math.min(e.getParam("max_width",65535,"number"),t),se.setStyle(i,"width",t+(o.width-s.width)),se.setStyle(r,"width",t)),n=Math.max(e.getParam("min_height",100,"number"),n),n=Math.min(e.getParam("max_height",65535,"number"),n),se.setStyle(r,"height",n),b(e)},ue=le,ce=function(e,t,n){var i=e.getContentAreaContainer();le(e,i.clientWidth+t,i.clientHeight+n)},de=tinymce.util.Tools.resolve("tinymce.Env"),fe=function(e,t,n){var i,r=e.settings[n];r&&r((i=t.getEl("body"),{element:function(){return i}}))},he=function(e,t,n){return function(i){var r,o,s,l,u,c=i.control,d=c.parents().filter("panel")[0],f=d.find("#"+t)[0],h=(r=n,o=t,a.grep(r,function(e){return e.name===o})[0]);s=t,l=d,u=n,a.each(u,function(e){var t=l.items().filter("#"+e.name)[0];t&&t.visible()&&e.name!==s&&(fe(e,t,"onhide"),t.visible(!1))}),c.parent().items().each(function(e){e.active(!1)}),f&&f.visible()?(fe(h,f,"onhide"),f.hide(),c.active(!1)):(f?(f.show(),fe(h,f,"onshow")):(f=g.create({type:"container",name:t,layout:"stack",classes:"sidebar-panel",html:""}),d.prepend(f),fe(h,f,"onrender"),fe(h,f,"onshow")),c.active(!0)),b(e)}},me=function(e){return!(de.ie&&!(de.ie>=11)||!e.sidebars)&&e.sidebars.length>0},ge=function(e){return{type:"panel",name:"sidebar",layout:"stack",classes:"sidebar",items:[{type:"toolbar",layout:"stack",classes:"sidebar-toolbar",items:a.map(e.sidebars,function(t){var n=t.settings;return{type:"button",icon:n.icon,image:n.image,tooltip:n.tooltip,onclick:he(e,t.name,e.sidebars)}})}]}},pe=function(e){var t=function(){e._skinLoaded=!0,v(e)};return function(){e.initialized?t():e.on("init",t)}},ve=m.DOM,be=function(e){return{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",border:e,html:""}},ye=function(e,t,n){var i,r,o,s,a;if(!1===f(e)&&n.skinUiCss?ve.styleSheetLoader.load(n.skinUiCss,pe(e)):pe(e)(),i=t.panel=g.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[{type:"container",classes:"top-part",items:[!1===l(e)?null:{type:"menubar",border:"0 0 1 0",items:oe(e)},B(e,c(e))]},me(e)?(s=e,{type:"panel",layout:"stack",classes:"edit-aria-container",border:"1 0 0 0",items:[be("0"),ge(s)]}):be("1 0 0 0")]}),D.setUiContainer(e,i),"none"!==h(e)&&(r={type:"resizehandle",direction:h(e),onResizeStart:function(){var t=e.getContentAreaContainer().firstChild;o={width:t.clientWidth,height:t.clientHeight}},onResize:function(t){"both"===h(e)?ue(e,o.width+t.deltaX,o.height+t.deltaY):ue(e,null,o.height+t.deltaY)}}),e.getParam("statusbar",!0,"boolean")){var u=p.translate(["Powered by {0}",'<a href="https://www.tinymce.com/?utm_campaign=editor_referral&utm_medium=poweredby&utm_source=tinymce" rel="noopener" target="_blank" role="presentation" tabindex="-1">tinymce</a>']),d=e.getParam("branding",!0,"boolean")?{type:"label",classes:"branding",html:" "+u}:null;i.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath",editor:e},r,d]})}return y(e),e.on("SwitchMode",(a=i,function(e){a.find("*").disabled("readonly"===e.mode)})),i.renderBefore(n.targetNode).reflow(),e.getParam("readonly",!1,"boolean")&&e.setMode("readonly"),n.width&&ve.setStyle(i.getEl(),"width",n.width),e.on("remove",function(){i.remove(),i=null}),w(e,i),F(e),{iframeContainer:i.find("#iframe")[0].getEl(),editorContainer:i.getEl()}},xe=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),we=0,_e={id:function(){return"mceu_"+we++},create:function(e,t,n){var i=document.createElement(e);return m.DOM.setAttribs(i,t),"string"==typeof n?i.innerHTML=n:a.each(n,function(e){e.nodeType&&i.appendChild(e)}),i},createFragment:function(e){return m.DOM.createFragment(e)},getWindowSize:function(){return m.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var i=e.getBoundingClientRect();t=Math.max(i.width||i.right-i.left,e.offsetWidth),n=Math.max(i.height||i.bottom-i.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,t){return m.DOM.getPos(e,t||_e.getContainer())},getContainer:function(){return de.container?de.container:document.body},getViewPort:function(e){return m.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,t){return m.DOM.addClass(e,t)},removeClass:function(e,t){return m.DOM.removeClass(e,t)},hasClass:function(e,t){return m.DOM.hasClass(e,t)},toggleClass:function(e,t,n){return m.DOM.toggleClass(e,t,n)},css:function(e,t,n){return m.DOM.setStyle(e,t,n)},getRuntimeStyle:function(e,t){return m.DOM.getStyle(e,t,!0)},on:function(e,t,n,i){return m.DOM.bind(e,t,n,i)},off:function(e,t,n){return m.DOM.unbind(e,t,n)},fire:function(e,t,n){return m.DOM.fire(e,t,n)},innerHtml:function(e,t){m.DOM.setHTML(e,t)}},Re=function(e){return"static"===_e.getRuntimeStyle(e,"position")},Ce=function(e){return e.state.get("fixed")};function ke(e,t,n){var i,r,o,s,a,l,u,c,d,f;return d=Ee(),o=(r=_e.getPos(t,D.getUiContainer(e))).x,s=r.y,Ce(e)&&Re(document.body)&&(o-=d.x,s-=d.y),i=e.getEl(),a=(f=_e.getSize(i)).width,l=f.height,u=(f=_e.getSize(t)).width,c=f.height,"b"===(n=(n||"").split(""))[0]&&(s+=c),"r"===n[1]&&(o+=u),"c"===n[0]&&(s+=Math.round(c/2)),"c"===n[1]&&(o+=Math.round(u/2)),"b"===n[3]&&(s-=l),"r"===n[4]&&(o-=a),"c"===n[3]&&(s-=Math.round(l/2)),"c"===n[4]&&(o-=Math.round(a/2)),{x:o,y:s,w:a,h:l}}var Ee=function(){var e=window,t=Math.max(e.pageXOffset,document.body.scrollLeft,document.documentElement.scrollLeft),n=Math.max(e.pageYOffset,document.body.scrollTop,document.documentElement.scrollTop);return{x:t,y:n,w:t+(e.innerWidth||document.documentElement.clientWidth),h:n+(e.innerHeight||document.documentElement.clientHeight)}},He=function(e){var t,n=D.getUiContainer(e);return n&&!Ce(e)?{x:0,y:0,w:(t=n).scrollWidth-1,h:t.scrollHeight-1}:Ee()},Se={testMoveRel:function(e,t){for(var n=He(this),i=0;i<t.length;i++){var r=ke(this,e,t[i]);if(Ce(this)){if(r.x>0&&r.x+r.w<n.w&&r.y>0&&r.y+r.h<n.h)return t[i]}else if(r.x>n.x&&r.x+r.w<n.w&&r.y>n.y&&r.y+r.h<n.h)return t[i]}return t[0]},moveRel:function(e,t){"string"!=typeof t&&(t=this.testMoveRel(e,t));var n=ke(this,e,t);return this.moveTo(n.x,n.y)},moveBy:function(e,t){var n=this.layoutRect();return this.moveTo(n.x+e,n.y+t),this},moveTo:function(e,t){var n=this;function i(e,t,n){return e<0?0:e+n>t&&(e=t-n)<0?0:e}if(n.settings.constrainToViewport){var r=He(this),o=n.layoutRect();e=i(e,r.w,o.w),t=i(t,r.h,o.h)}var s=D.getUiContainer(n);return s&&Re(s)&&!Ce(n)&&(e-=s.scrollLeft,t-=s.scrollTop),s&&(e+=1,t+=1),n.state.get("rendered")?n.layoutRect({x:e,y:t}).repaint():(n.settings.x=e,n.settings.y=t),n.fire("move",{x:e,y:t}),n}},Me=tinymce.util.Tools.resolve("tinymce.util.Class"),Te=tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"),Pe=function(e){var t;if(e)return"number"==typeof e?{top:e=e||0,left:e,bottom:e,right:e}:(1===(t=(e=e.split(" ")).length)?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],10)||0,right:parseInt(e[1],10)||0,bottom:parseInt(e[2],10)||0,left:parseInt(e[3],10)||0})},We=function(e,t){function n(t){var n=parseFloat(function(t){var n=e.ownerDocument.defaultView;if(n){var i=n.getComputedStyle(e,null);return i?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),i.getPropertyValue(t)):null}return e.currentStyle[t]}(t));return isNaN(n)?0:n}return{top:n(t+"TopWidth"),right:n(t+"RightWidth"),bottom:n(t+"BottomWidth"),left:n(t+"LeftWidth")}};function De(){}function Ne(e){this.cls=[],this.cls._map={},this.onchange=e||De,this.prefix=""}a.extend(Ne.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){var t=void 0;for(t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),Ne.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)t>0&&(e+=" "),e+=this.prefix+this.cls[t];return e};var Ae,Be,Oe,ze=/^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,Le=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,Ie=/^\s*|\s*$/g,Fe=Me.extend({init:function(e){var t=this.match;function n(e,n,r){var o;function s(e){e&&n.push(e)}return s(function(e){if(e)return e=e.toLowerCase(),function(t){return"*"===e||t.type===e}}((o=ze.exec(e.replace(Ie,"")))[1])),s(function(e){if(e)return function(t){return t._name===e}}(o[2])),s(function(e){if(e)return e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}}(o[3])),s(function(e,t,n){if(e)return function(i){var r=i[e]?i[e]():"";return t?"="===t?r===n:"*="===t?r.indexOf(n)>=0:"~="===t?(" "+r+" ").indexOf(" "+n+" ")>=0:"!="===t?r!==n:"^="===t?0===r.indexOf(n):"$="===t&&r.substr(r.length-n.length)===n:!!n}}(o[4],o[5],o[6])),s(function(e){var n;if(e)return(e=/(?:not\((.+)\))|(.+)/i.exec(e))[1]?(n=i(e[1],[]),function(e){return!t(e,n)}):(e=e[2],function(t,n,i){return"first"===e?0===n:"last"===e?n===i-1:"even"===e?n%2==0:"odd"===e?n%2==1:!!t[e]&&t[e]()})}(o[7])),n.pseudo=!!o[7],n.direct=r,n}function i(e,t){var r,o,s,a=[];do{if(Le.exec(""),(o=Le.exec(e))&&(e=o[3],a.push(o[1]),o[2])){r=o[3];break}}while(o);for(r&&i(r,t),e=[],s=0;s<a.length;s++)">"!==a[s]&&e.push(n(a[s],[],">"===a[s-1]));return t.push(e),t}this._selectors=i(e,[])},match:function(e,t){var n,i,r,o,s,a,l,u,c,d,f,h,m;for(n=0,i=(t=t||this._selectors).length;n<i;n++){for(m=e,h=0,r=(o=(s=t[n]).length)-1;r>=0;r--)for(u=s[r];m;){if(u.pseudo)for(c=d=(f=m.parent().items()).length;c--&&f[c]!==m;);for(a=0,l=u.length;a<l;a++)if(!u[a](m,c,d)){a=l+1;break}if(a===l){h++;break}if(r===o-1)break;m=m.parent()}if(h===o)return!0}return!1},find:function(e){var t,n,i=[],r=this._selectors;function o(e,t,n){var r,s,a,l,u,c=t[n];for(r=0,s=e.length;r<s;r++){for(u=e[r],a=0,l=c.length;a<l;a++)if(!c[a](u,r,s)){a=l+1;break}if(a===l)n===t.length-1?i.push(u):u.items&&o(u.items(),t,n+1);else if(c.direct)return;u.items&&o(u.items(),t,n)}}if(e.items){for(t=0,n=r.length;t<n;t++)o(e.items(),r[t],0);n>1&&(i=function(e){for(var t,n=[],i=e.length;i--;)(t=e[i]).__checked||(n.push(t),t.__checked=1);for(i=n.length;i--;)delete n[i].__checked;return n}(i))}return Ae||(Ae=Fe.Collection),new Ae(i)}}),Ue=Array.prototype.push,Ve=Array.prototype.slice;Oe={length:0,init:function(e){e&&this.add(e)},add:function(e){return a.isArray(e)?Ue.apply(this,e):e instanceof Be?this.add(e.toArray()):Ue.call(this,e),this},set:function(e){var t,n=this,i=n.length;for(n.length=0,n.add(e),t=n.length;t<i;t++)delete n[t];return n},filter:function(e){var t,n,i,r,o=[];for("string"==typeof e?(e=new Fe(e),r=function(t){return e.match(t)}):r=e,t=0,n=this.length;t<n;t++)r(i=this[t])&&o.push(i);return new Be(o)},slice:function(){return new Be(Ve.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(e){return a.each(this,e),this},toArray:function(){return a.toArray(this)},indexOf:function(e){for(var t=this.length;t--&&this[t]!==e;);return t},reverse:function(){return new Be(a.toArray(this).reverse())},hasClass:function(e){return!!this[0]&&this[0].classes.contains(e)},prop:function(e,t){var n;return t!==undefined?(this.each(function(n){n[e]&&n[e](t)}),this):(n=this[0])&&n[e]?n[e]():void 0},exec:function(e){var t=a.toArray(arguments).slice(1);return this.each(function(n){n[e]&&n[e].apply(n,t)}),this},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},a.each("fire on off show hide append prepend before after reflow".split(" "),function(e){Oe[e]=function(){var t=a.toArray(arguments);return this.each(function(n){e in n&&n[e].apply(n,t)}),this}}),a.each("text name disabled active selected checked visible parent value data".split(" "),function(e){Oe[e]=function(t){return this.prop(e,t)}}),Be=Me.extend(Oe),Fe.Collection=Be;var je=Be,Ye=function(e){this.create=e.create};Ye.create=function(e,t){return new Ye({create:function(n,i){var r,o=function(e){n.set(i,e.value)};return n.on("change:"+i,function(n){e.set(t,n.value)}),e.on("change:"+t,o),(r=n._bindings)||(r=n._bindings=[],n.on("destroy",function(){for(var e=r.length;e--;)r[e]()})),r.push(function(){e.off("change:"+t,o)}),e.get(t)}})};var qe=tinymce.util.Tools.resolve("tinymce.util.Observable");function $e(e){return e.nodeType>0}var Xe,Je,Ge=Me.extend({Mixins:[qe],init:function(e){var t,n;for(t in e=e||{})(n=e[t])instanceof Ye&&(e[t]=n.create(this,t));this.data=e},set:function(e,t){var n,i,r=this.data[e];if(t instanceof Ye&&(t=t.create(this,e)),"object"==typeof e){for(n in e)this.set(n,e[n]);return this}return function o(e,t){var n,i;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(a.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if($e(e)||$e(t))return e===t;for(n in i={},t){if(!o(e[n],t[n]))return!1;i[n]=!0}for(n in e)if(!i[n]&&!o(e[n],t[n]))return!1;return!0}(r,t)||(this.data[e]=t,i={target:this,name:e,value:t,oldValue:r},this.fire("change:"+e,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(e){return Ye.create(this,e)},destroy:function(){this.fire("destroy")}}),Ke={},Ze={add:function(e){var t=e.parent();if(t){if(!t._layout||t._layout.isNative())return;Ke[t._id]||(Ke[t._id]=t),Xe||(Xe=!0,R.requestAnimationFrame(function(){var e,t;for(e in Xe=!1,Ke)(t=Ke[e]).state.get("rendered")&&t.reflow();Ke={}},document.body))}},remove:function(e){Ke[e._id]&&delete Ke[e._id]}},Qe="onmousewheel"in document,et=!1,tt=0,nt={Statics:{classPrefix:"mce-"},isRtl:function(){return Je.rtl},classPrefix:"mce-",init:function(e){var t,n,i=this;function r(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}i.settings=e=a.extend({},i.Defaults,e),i._id=e.id||"mceu_"+tt++,i._aria={role:e.role},i._elmCache={},i.$=xe,i.state=new Ge({visible:!0,active:!1,disabled:!1,value:""}),i.data=new Ge(e.data),i.classes=new Ne(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,(t=e.classes)&&(i.Defaults&&(n=i.Defaults.classes)&&t!==n&&r(n),r(t)),a.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[t])}),i.on("click",function(){if(i.disabled())return!1}),i.settings=e,i.borderBox=Pe(e.border),i.paddingBox=Pe(e.padding),i.marginBox=Pe(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){var e=D.getUiContainer(this);return e||_e.getContainer()},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e,t,n,i,r,o,s,a,l,u,c=this,d=c.settings,f=c.getEl();e=c.borderBox=c.borderBox||We(f,"border"),c.paddingBox=c.paddingBox||We(f,"padding"),c.marginBox=c.marginBox||We(f,"margin"),u=_e.getSize(f),a=d.minWidth,l=d.minHeight,r=a||u.width,o=l||u.height,n=d.width,i=d.height,s=void 0!==(s=d.autoResize)?s:!n&&!i,n=n||r,i=i||o;var h=e.left+e.right,m=e.top+e.bottom,g=d.maxWidth||65535,p=d.maxHeight||65535;return c._layoutRect=t={x:d.x||0,y:d.y||0,w:n,h:i,deltaW:h,deltaH:m,contentW:n-h,contentH:i-m,innerW:n-h,innerH:i-m,startMinWidth:a||0,startMinHeight:l||0,minW:Math.min(r,g),minH:Math.min(o,p),maxW:g,maxH:p,autoResize:s,scrollW:0},c._lastLayoutRect={},t},layoutRect:function(e){var t,n,i,r,o,s=this,a=s._layoutRect;return a||(a=s.initLayoutRect()),e?(i=a.deltaW,r=a.deltaH,e.x!==undefined&&(a.x=e.x),e.y!==undefined&&(a.y=e.y),e.minW!==undefined&&(a.minW=e.minW),e.minH!==undefined&&(a.minH=e.minH),(n=e.w)!==undefined&&(n=(n=n<a.minW?a.minW:n)>a.maxW?a.maxW:n,a.w=n,a.innerW=n-i),(n=e.h)!==undefined&&(n=(n=n<a.minH?a.minH:n)>a.maxH?a.maxH:n,a.h=n,a.innerH=n-r),(n=e.innerW)!==undefined&&(n=(n=n<a.minW-i?a.minW-i:n)>a.maxW-i?a.maxW-i:n,a.innerW=n,a.w=n+i),(n=e.innerH)!==undefined&&(n=(n=n<a.minH-r?a.minH-r:n)>a.maxH-r?a.maxH-r:n,a.innerH=n,a.h=n+r),e.contentW!==undefined&&(a.contentW=e.contentW),e.contentH!==undefined&&(a.contentH=e.contentH),(t=s._lastLayoutRect).x===a.x&&t.y===a.y&&t.w===a.w&&t.h===a.h||((o=Je.repaintControls)&&o.map&&!o.map[s._id]&&(o.push(s),o.map[s._id]=!0),t.x=a.x,t.y=a.y,t.w=a.w,t.h=a.h),s):a},repaint:function(){var e,t,n,i,r,o,s,a,l,u,c=this;l=document.createRange?function(e){return e}:Math.round,e=c.getEl().style,i=c._layoutRect,a=c._lastRepaintRect||{},o=(r=c.borderBox).left+r.right,s=r.top+r.bottom,i.x!==a.x&&(e.left=l(i.x)+"px",a.x=i.x),i.y!==a.y&&(e.top=l(i.y)+"px",a.y=i.y),i.w!==a.w&&(u=l(i.w-o),e.width=(u>=0?u:0)+"px",a.w=i.w),i.h!==a.h&&(u=l(i.h-s),e.height=(u>=0?u:0)+"px",a.h=i.h),c._hasBody&&i.innerW!==a.innerW&&(u=l(i.innerW),(n=c.getEl("body"))&&((t=n.style).width=(u>=0?u:0)+"px"),a.innerW=i.innerW),c._hasBody&&i.innerH!==a.innerH&&(u=l(i.innerH),(n=n||c.getEl("body"))&&((t=t||n.style).height=(u>=0?u:0)+"px"),a.innerH=i.innerH),c._lastRepaintRect=a,c.fire("repaint",{},!1)},updateLayoutRect:function(){var e=this;e.parent()._lastRect=null,_e.css(e.getEl(),{width:"",height:""}),e._layoutRect=e._lastRepaintRect=e._lastLayoutRect=null,e.initLayoutRect()},on:function(e,t){var n,i,r,o=this;return it(o).on(e,"string"!=typeof(n=t)?n:function(e){return i||o.parentsAndSelf().each(function(e){var t=e.settings.callbacks;if(t&&(i=t[n]))return r=e,!1}),i?i.call(r,e):(e.action=n,void this.fire("execute",e))}),o},off:function(e,t){return it(this).off(e,t),this},fire:function(e,t,n){if((t=t||{}).control||(t.control=this),t=it(this).fire(e,t),!1!==n&&this.parent)for(var i=this.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return it(this).has(e)},parents:function(e){var t,n=new je;for(t=this.parent();t;t=t.parent())n.add(t);return e&&(n=n.filter(e)),n},parentsAndSelf:function(e){return new je(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=xe("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,i=n.getEl(n.ariaTarget);return void 0===t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&i.setAttribute("role"===e?e:"aria-"+e,t),n)},encode:function(e,t){return!1!==t&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return Je.translate?Je.translate(e):e},before:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this),!0),this},after:function(e){var t=this.parent();return t&&t.insert(e,t.items().indexOf(this)),this},remove:function(){var e,t,n=this,i=n.getEl(),r=n.parent();if(n.items){var o=n.items().toArray();for(t=o.length;t--;)o[t].remove()}r&&r.items&&(e=[],r.items().each(function(t){t!==n&&e.push(t)}),r.items().set(e),r._lastRect=null),n._eventsRoot&&n._eventsRoot===n&&xe(i).off();var s=n.getRoot().controlIdLookup;return s&&delete s[n._id],i&&i.parentNode&&i.parentNode.removeChild(i),n.state.set("rendered",!1),n.state.destroy(),n.fire("remove"),n},renderBefore:function(e){return xe(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return xe(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e,t,n,i,r,o=this,s=o.settings;for(i in o.$el=xe(o.getEl()),o.state.set("rendered",!0),s)0===i.indexOf("on")&&o.on(i.substr(2),s[i]);if(o._eventsRoot){for(n=o.parent();!r&&n;n=n.parent())r=n._eventsRoot;if(r)for(i in r._nativeEvents)o._nativeEvents[i]=!0}rt(o),s.style&&(e=o.getEl())&&(e.setAttribute("style",s.style),e.style.cssText=s.style),o.settings.border&&(t=o.borderBox,o.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left}));var a=o.getRoot();for(var l in a.controlIdLookup||(a.controlIdLookup={}),a.controlIdLookup[o._id]=o,o._aria)o.aria(l,o._aria[l]);!1===o.state.get("visible")&&(o.getEl().style.display="none"),o.bindStates(),o.state.on("change:visible",function(e){var t,n=e.value;o.state.get("rendered")&&(o.getEl().style.display=!1===n?"none":"",o.getEl().getBoundingClientRect()),(t=o.parent())&&(t._lastRect=null),o.fire(n?"show":"hide"),Ze.add(o)}),o.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){var t,n,i,r,o,s,a=this.getEl(),l=a.parentNode,u=function(e,t){var n,i,r=e;for(n=i=0;r&&r!==t&&r.nodeType;)n+=r.offsetLeft||0,i+=r.offsetTop||0,r=r.offsetParent;return{x:n,y:i}}(a,l);return t=u.x,n=u.y,i=a.offsetWidth,r=a.offsetHeight,o=l.clientWidth,s=l.clientHeight,"end"===e?(t-=o-i,n-=s-r):"center"===e&&(t-=o/2-i/2,n-=s/2-r/2),l.scrollLeft=t,l.scrollTop=n,this},getRoot:function(){for(var e,t=this,n=[];t;){if(t.rootControl){e=t.rootControl;break}n.push(t),e=t,t=t.parent()}e||(e=this);for(var i=n.length;i--;)n[i].rootControl=e;return e},reflow:function(){Ze.remove(this);var e=this.parent();return e&&e._layout&&!e._layout.isNative()&&e.reflow(),this}};function it(e){return e._eventDispatcher||(e._eventDispatcher=new Te({scope:e,toggleEvent:function(t,n){n&&Te.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&rt(e))}})),e._eventDispatcher}function rt(e){var t,n,i,r,o,s;function a(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function l(){var e=r._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),r._lastHoverCtrl=null)}function u(t){var n,i,o,s=e.getParentCtrl(t.target),a=r._lastHoverCtrl,l=0;if(s!==a){if(r._lastHoverCtrl=s,(i=s.parents().toArray().reverse()).push(s),a){for((o=a.parents().toArray().reverse()).push(a),l=0;l<o.length&&i[l]===o[l];l++);for(n=o.length-1;n>=l;n--)(a=o[n]).fire("mouseleave",{target:a.getEl()})}for(n=l;n<i.length;n++)(s=i[n]).fire("mouseenter",{target:s.getEl()})}}function c(t){t.preventDefault(),"mousewheel"===t.type?(t.deltaY=-.025*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-.025*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=e.fire("wheel",t)}if(o=e._nativeEvents){for((i=e.parents().toArray()).unshift(e),t=0,n=i.length;!r&&t<n;t++)r=i[t]._eventsRoot;for(r||(r=i[i.length-1]||e),e._eventsRoot=r,n=t,t=0;t<n;t++)i[t]._eventsRoot=r;var d=r._delegates;for(s in d||(d=r._delegates={}),o){if(!o)return!1;"wheel"!==s||et?("mouseenter"===s||"mouseleave"===s?r._hasMouseEnter||(xe(r.getEl()).on("mouseleave",l).on("mouseover",u),r._hasMouseEnter=1):d[s]||(xe(r.getEl()).on(s,a),d[s]=!0),o[s]=!1):Qe?xe(e.getEl()).on("mousewheel",c):xe(e.getEl()).on("DOMMouseScroll",c)}}}a.each("text title visible disabled active value".split(" "),function(e){nt[e]=function(t){return 0===arguments.length?this.state.get(e):(void 0!==t&&this.state.set(e,t),this)}});var ot=Je=Me.extend(nt),st=function(e){return!!e.getAttribute("data-mce-tabstop")};function at(e){var t,n,i=e.root;function r(e){return e&&1===e.nodeType}try{t=document.activeElement}catch(y){t=document.body}function o(e){return r(e=e||t)?e.getAttribute("role"):null}function s(e){for(var n,i=e||t;i=i.parentNode;)if(n=o(i))return n}function a(e){var n=t;if(r(n))return n.getAttribute("aria-"+e)}function l(e){var t=e.tagName.toUpperCase();return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}function u(e){var t=[];return function n(e){if(1===e.nodeType&&"none"!==e.style.display&&!e.disabled){var i;(l(i=e)&&!i.hidden||st(i)||/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(o(i)))&&t.push(e);for(var r=0;r<e.childNodes.length;r++)n(e.childNodes[r])}}(e||i.getEl()),t}function c(e){var t,i;(i=(e=e||n).parents().toArray()).unshift(e);for(var r=0;r<i.length&&!(t=i[r]).settings.ariaRoot;r++);return t}function d(e,t){return e<0?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function f(e,n){var i=-1,r=c();n=n||u(r.getEl());for(var o=0;o<n.length;o++)n[o]===t&&(i=o);i+=e,r.lastAriaIndex=d(i,n)}function h(){"tablist"===s()?f(-1,u(t.parentNode)):n.parent().submenu?v():f(-1)}function m(){var e=o(),n=s();"tablist"===n?f(1,u(t.parentNode)):"menuitem"===e&&"menu"===n&&a("haspopup")?b():f(1)}function g(){f(-1)}function p(){var e=o(),t=s();"menuitem"===e&&"menubar"===t?b():"button"===e&&a("haspopup")?b({key:"down"}):f(1)}function v(){n.fire("cancel")}function b(e){e=e||{},n.fire("click",{target:t,aria:e})}return n=i.getParentCtrl(t),i.on("keydown",function(e){function i(e,n){l(t)||st(t)||"slider"!==o(t)&&!1!==n(e)&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:i(e,h);break;case 39:i(e,m);break;case 38:i(e,g);break;case 40:i(e,p);break;case 27:v();break;case 14:case 13:case 32:i(e,b);break;case 9:!function(e){if("tablist"===s()){var t=u(n.getEl("body"))[0];t&&t.focus()}else f(e.shiftKey?-1:1)}(e),e.preventDefault()}}),i.on("focusin",function(e){t=e.target,n=e.control}),{focusFirst:function(e){var t=c(e),n=u(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?d(t.lastAriaIndex,n):d(0,n)}}}var lt={},ut=ot.extend({init:function(e){var t=this;t._super(e),(e=t.settings).fixed&&t.state.set("fixed",!0),t._items=new je,t.isRtl()&&t.classes.add("rtl"),t.bodyClasses=new Ne(function(){t.state.get("rendered")&&(t.getEl("body").className=this.toString())}),t.bodyClasses.prefix=t.classPrefix,t.classes.add("container"),t.bodyClasses.add("container-body"),e.containerCls&&t.classes.add(e.containerCls),t._layout=g.create((e.layout||"")+"layout"),t.settings.items?t.add(t.settings.items):t.add(t.render()),t._hasBody=!0},items:function(){return this._items},find:function(e){return(e=lt[e]=lt[e]||new Fe(e)).find(this)},add:function(e){return this.items().add(this.create(e)).parent(this),this},focus:function(e){var t,n,i,r=this;if(!e||!(n=r.keyboardNav||r.parents().eq(-1)[0].keyboardNav))return i=r.find("*"),r.statusbar&&i.add(r.statusbar.items()),i.each(function(e){if(e.settings.autofocus)return t=null,!1;e.canFocus&&(t=t||e)}),t&&t.focus(),r;n.focusFirst(r)},replace:function(e,t){for(var n,i=this.items(),r=i.length;r--;)if(i[r]===e){i[r]=t;break}r>=0&&((n=t.getEl())&&n.parentNode.removeChild(n),(n=e.getEl())&&n.parentNode.removeChild(n)),t.parent(this)},create:function(e){var t,n=this,i=[];return a.isArray(e)||(e=[e]),a.each(e,function(e){e&&(e instanceof ot||("string"==typeof e&&(e={type:e}),t=a.extend({},n.settings.defaults,e),e.type=t.type=t.type||e.type||n.settings.defaultType||(t.defaults?t.defaults.type:null),e=g.create(t)),i.push(e))}),i},renderNew:function(){var e=this;return e.items().each(function(t,n){var i;t.parent(e),t.state.get("rendered")||((i=e.getEl("body")).hasChildNodes()&&n<=i.childNodes.length-1?xe(i.childNodes[n]).before(t.renderHtml()):xe(i).append(t.renderHtml()),t.postRender(),Ze.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){return this.items().set(this.create(e).concat(this.items().toArray())),this.renderNew()},insert:function(e,t,n){var i,r,o;return e=this.create(e),i=this.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(r=i.slice(0,t).toArray(),o=i.slice(t).toArray(),i.set(r.concat(e,o))),this.renderNew()},fromJSON:function(e){for(var t in e)this.find("#"+t).value(e[t]);return this},toJSON:function(){var e={};return this.find("*").each(function(t){var n=t.name(),i=t.value();n&&void 0!==i&&(e[n]=i)}),e},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e,t=this;return t.items().exec("postRender"),t._super(),t._layout.postRender(t),t.state.set("rendered",!0),t.settings.style&&t.$el.css(t.settings.style),t.settings.border&&(e=t.borderBox,t.$el.css({"border-top-width":e.top,"border-right-width":e.right,"border-bottom-width":e.bottom,"border-left-width":e.left})),t.parent()||(t.keyboardNav=at({root:t})),t},initLayoutRect:function(){var e=this._super();return this._layout.recalc(this),e},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;if(!n||n.w!==t.w||n.h!==t.h)return e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0},reflow:function(){var e;if(Ze.remove(this),this.visible()){for(ot.repaintControls=[],ot.repaintControls.map={},this.recalc(),e=ot.repaintControls.length;e--;)ot.repaintControls[e].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),ot.repaintControls=[]}return this}});function ct(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}function dt(e,t){var n,i,r,o,s,a,l,u=t.document||document;t=t||{};var c=u.getElementById(t.handle||e);r=function(e){var r,d,f,h,m,g,p,v,b,y,x,w=(r=u,b=Math.max,d=r.documentElement,f=r.body,h=b(d.scrollWidth,f.scrollWidth),m=b(d.clientWidth,f.clientWidth),g=b(d.offsetWidth,f.offsetWidth),p=b(d.scrollHeight,f.scrollHeight),v=b(d.clientHeight,f.clientHeight),{width:h<g?m:h,height:p<b(d.offsetHeight,f.offsetHeight)?v:p});ct(e),e.preventDefault(),i=e.button,y=c,a=e.screenX,l=e.screenY,x=window.getComputedStyle?window.getComputedStyle(y,null).getPropertyValue("cursor"):y.runtimeStyle.cursor,n=xe("<div></div>").css({position:"absolute",top:0,left:0,width:w.width,height:w.height,zIndex:2147483647,opacity:1e-4,cursor:x}).appendTo(u.body),xe(u).on("mousemove touchmove",s).on("mouseup touchend",o),t.start(e)},s=function(e){if(ct(e),e.button!==i)return o(e);e.deltaX=e.screenX-a,e.deltaY=e.screenY-l,e.preventDefault(),t.drag(e)},o=function(e){ct(e),xe(u).off("mousemove touchmove",s).off("mouseup touchend",o),n.remove(),t.stop&&t.stop(e)},this.destroy=function(){xe(c).off()},xe(c).on("mousedown touchstart",r)}var ft,ht,mt,gt,pt={init:function(){this.on("repaint",this.renderScroll)},renderScroll:function(){var e=this,t=2;function n(){var n,i,r;function o(r,o,s,a,l,u){var c,d,f,h,m,g,p,v;if(d=e.getEl("scroll"+r)){if(p=o.toLowerCase(),v=s.toLowerCase(),xe(e.getEl("absend")).css(p,e.layoutRect()[a]-1),!l)return void xe(d).css("display","none");xe(d).css("display","block"),c=e.getEl("body"),f=e.getEl("scroll"+r+"t"),h=c["client"+s]-2*t,m=(h-=n&&i?d["client"+u]:0)/c["scroll"+s],(g={})[p]=c["offset"+o]+t,g[v]=h,xe(d).css(g),(g={})[p]=c["scroll"+o]*m,g[v]=h*m,xe(f).css(g)}}r=e.getEl("body"),n=r.scrollWidth>r.clientWidth,i=r.scrollHeight>r.clientHeight,o("h","Left","Width","contentW",n,"Height"),o("v","Top","Height","contentH",i,"Width")}e.settings.autoScroll&&(e._hasScroll||(e._hasScroll=!0,function(){function n(n,i,r,o,s){var a,l=e._id+"-scroll"+n,u=e.classPrefix;xe(e.getEl()).append('<div id="'+l+'" class="'+u+"scrollbar "+u+"scrollbar-"+n+'"><div id="'+l+'t" class="'+u+'scrollbar-thumb"></div></div>'),e.draghelper=new dt(l+"t",{start:function(){a=e.getEl("body")["scroll"+i],xe("#"+l).addClass(u+"active")},drag:function(l){var u,c,d,f,h=e.layoutRect();c=h.contentW>h.innerW,d=h.contentH>h.innerH,f=e.getEl("body")["client"+r]-2*t,u=(f-=c&&d?e.getEl("scroll"+n)["client"+s]:0)/e.getEl("body")["scroll"+r],e.getEl("body")["scroll"+i]=a+l["delta"+o]/u},stop:function(){xe("#"+l).removeClass(u+"active")}})}e.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}(),e.on("wheel",function(t){var i=e.getEl("body");i.scrollLeft+=10*(t.deltaX||0),i.scrollTop+=10*t.deltaY,n()}),xe(e.getEl("body")).on("scroll",n)),n())}},vt=ut.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[pt],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),void 0===n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}}),bt={resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(e,t){if(e<=1||t<=1){var n=_e.getWindowSize();e=e<=1?e*n.w:e,t=t<=1?t*n.h:t}return this._layoutRect.autoResize=!1,this.layoutRect({minW:e,minH:t,w:e,h:t}).reflow()},resizeBy:function(e,t){var n=this.layoutRect();return this.resizeTo(n.w+e,n.h+t)}},yt=[],xt=[];function wt(e,t){for(;e;){if(e===t)return!0;e=e.parent()}}function _t(){ft||(ft=function(e){2!==e.button&&function(e){for(var t=yt.length;t--;){var n=yt[t],i=n.getParentCtrl(e.target);if(n.settings.autohide){if(i&&(wt(i,n)||n.parent()===i))continue;(e=n.fire("autohide",{target:e.target})).isDefaultPrevented()||n.hide()}}}(e)},xe(document).on("click touchstart",ft))}function Rt(e){var t=_e.getViewPort().y;function n(t,n){for(var i,r=0;r<yt.length;r++)if(yt[r]!==e)for(i=yt[r].parent();i&&(i=i.parent());)i===e&&yt[r].fixed(t).moveBy(0,n).repaint()}e.settings.autofix&&(e.state.get("fixed")?e._autoFixY>t&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),n(!1,e._autoFixY-t)):(e._autoFixY=e.layoutRect().y,e._autoFixY<t&&(e.fixed(!0).layoutRect({y:0}).repaint(),n(!0,t-e._autoFixY))))}function Ct(e,t){var n,i,r=kt.zIndex||65535;if(e)xt.push(t);else for(n=xt.length;n--;)xt[n]===t&&xt.splice(n,1);if(xt.length)for(n=0;n<xt.length;n++)xt[n].modal&&(r++,i=xt[n]),xt[n].getEl().style.zIndex=r,xt[n].zIndex=r,r++;var o=xe("#"+t.classPrefix+"modal-block",t.getContainerElm())[0];i?xe(o).css("z-index",i.zIndex-1):o&&(o.parentNode.removeChild(o),gt=!1),kt.currentZIndex=r}var kt=vt.extend({Mixins:[Se,bt],init:function(e){var t=this;t._super(e),t._eventsRoot=t,t.classes.add("floatpanel"),e.autohide&&(_t(),function(){if(!mt){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;mt=function(){document.all&&t===e.clientWidth&&n===e.clientHeight||(t=e.clientWidth,n=e.clientHeight,kt.hideAll())},xe(window).on("resize",mt)}}(),yt.push(t)),e.autofix&&(ht||(ht=function(){var e;for(e=yt.length;e--;)Rt(yt[e])},xe(window).on("scroll",ht)),t.on("move",function(){Rt(this)})),t.on("postrender show",function(e){if(e.control===t){var n,i=t.classPrefix;t.modal&&!gt&&((n=xe("#"+i+"modal-block",t.getContainerElm()))[0]||(n=xe('<div id="'+i+'modal-block" class="'+i+"reset "+i+'fade"></div>').appendTo(t.getContainerElm())),R.setTimeout(function(){n.addClass(i+"in"),xe(t.getEl()).addClass(i+"in")}),gt=!0),Ct(!0,t)}}),t.on("show",function(){t.parents().each(function(e){if(e.state.get("fixed"))return t.fixed(!0),!1})}),e.popover&&(t._preBodyHtml='<div class="'+t.classPrefix+'arrow"></div>',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start")),t.aria("label",e.ariaLabel),t.aria("labelledby",t._id),t.aria("describedby",t.describedBy||t._id+"-none")},fixed:function(e){var t=this;if(t.state.get("fixed")!==e){if(t.state.get("rendered")){var n=_e.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e,t=this._super();for(e=yt.length;e--&&yt[e]!==this;);return-1===e&&yt.push(this),t},hide:function(){return Et(this),Ct(!1,this),this._super()},hideAll:function(){kt.hideAll()},close:function(){return this.fire("close").isDefaultPrevented()||(this.remove(),Ct(!1,this)),this},remove:function(){Et(this),this._super()},postRender:function(){return this.settings.bodyRole&&this.getEl("body").setAttribute("role",this.settings.bodyRole),this._super()}});function Et(e){var t;for(t=yt.length;t--;)yt[t]===e&&yt.splice(t,1);for(t=xt.length;t--;)xt[t]===e&&xt.splice(t,1)}kt.hideAll=function(){for(var e=yt.length;e--;){var t=yt[e];t&&t.settings.autohide&&(t.hide(),yt.splice(e,1))}};var Ht=function(e,t){return!(!e||t.settings.ui_container)},St=function(e,t,n){var i,r,o=m.DOM,s=e.getParam("fixed_toolbar_container");s&&(r=o.select(s)[0]);var a=function(){if(i&&i.moveRel&&i.visible()&&!i._fixed){var t=e.selection.getScrollContainer(),n=e.getBody(),r=0,s=0;if(t){var a=o.getPos(n),l=o.getPos(t);r=Math.max(0,l.x-a.x),s=Math.max(0,l.y-a.y)}i.fixed(!1).moveRel(n,e.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(r,s)}},u=function(){i&&(i.show(),a(),o.addClass(e.getBody(),"mce-edit-focus"))},d=function(){i&&(i.hide(),kt.hideAll(),o.removeClass(e.getBody(),"mce-edit-focus"))},h=function(){i?i.visible()||u():(i=t.panel=g.create({type:r?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:Ht(r,e),fixed:Ht(r,e),border:1,items:[!1===l(e)?null:{type:"menubar",border:"0 0 1 0",items:oe(e)},B(e,c(e))]}),D.setUiContainer(e,i),y(e),r?i.renderTo(r).reflow():i.renderTo().reflow(),w(e,i),u(),F(e),e.on("nodeChange",a),e.on("ResizeWindow",a),e.on("activate",u),e.on("deactivate",d),e.nodeChanged())};return e.settings.content_editable=!0,e.on("focus",function(){!1===f(e)&&n.skinUiCss?o.styleSheetLoader.load(n.skinUiCss,h,h):h()}),e.on("blur hide",d),e.on("remove",function(){i&&(i.remove(),i=null)}),!1===f(e)&&n.skinUiCss?o.styleSheetLoader.load(n.skinUiCss,pe(e)):pe(e)(),{}};function Mt(e,t){var n,i,r=this,o=ot.classPrefix;r.show=function(s,a){function l(){n&&(xe(e).append('<div class="'+o+"throbber"+(t?" "+o+"throbber-inline":"")+'"></div>'),a&&a())}return r.hide(),n=!0,s?i=R.setTimeout(l,s):l(),r},r.hide=function(){var t=e.lastChild;return R.clearTimeout(i),t&&-1!==t.className.indexOf("throbber")&&t.parentNode.removeChild(t),n=!1,r}}var Tt=function(e,t){var n;e.on("ProgressState",function(e){n=n||new Mt(t.panel.getEl("body")),e.state?n.show(e.time):n.hide()})},Pt=function(e,t,n){var i=function(e){var t=e.settings,n=t.skin,i=t.skin_url;if(!1!==n){var r=n||"lightgray";i=i?e.documentBaseURI.toAbsolute(i):s.baseURL+"/skins/"+r}return i}(e);return i&&(n.skinUiCss=i+"/skin.min.css",e.contentCSS.push(i+"/content"+(e.inline?".inline":"")+".min.css")),Tt(e,t),e.getParam("inline",!1,"boolean")?St(e,t,n):ye(e,t,n)},Wt=ot.extend({Mixins:[Se],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=131070}}),Dt=ot.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&!1!==Dt.tooltips&&(t.on("mouseenter",function(n){var i=t.tooltip().moveTo(-65535);if(n.control===t){var r=i.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);i.classes.toggle("tooltip-n","bc-tc"===r),i.classes.toggle("tooltip-nw","bc-tl"===r),i.classes.toggle("tooltip-ne","bc-tr"===r),i.moveRel(t.getEl(),r)}else i.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().remove(),t._tooltip=null})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return this._tooltip||(this._tooltip=new Wt({type:"tooltip"}),D.inheritUiContainer(this,this._tooltip),this._tooltip.renderTo()),this._tooltip},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){var e=this;function t(t){e.aria("disabled",t),e.classes.toggle("disabled",t)}function n(t){e.aria("pressed",t),e.classes.toggle("active",t)}return e.state.on("change:disabled",function(e){t(e.value)}),e.state.on("change:active",function(e){n(e.value)}),e.state.get("disabled")&&t(!0),e.state.get("active")&&n(!0),e._super()},remove:function(){this._super(),this._tooltip&&(this._tooltip.remove(),this._tooltip=null)}}),Nt=Dt.extend({Defaults:{value:0},init:function(e){this._super(e),this.classes.add("progress"),this.settings.filter||(this.settings.filter=function(e){return Math.round(e)})},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div class="'+t+'bar-container"><div class="'+t+'bar"></div></div><div class="'+t+'text">0%</div></div>'},postRender:function(){return this._super(),this.value(this.settings.value),this},bindStates:function(){var e=this;function t(t){t=e.settings.filter(t),e.getEl().lastChild.innerHTML=t+"%",e.getEl().firstChild.firstChild.style.width=t+"%"}return e.state.on("change:value",function(e){t(e.value)}),t(e.state.get("value")),e._super()}}),At=function(e,t){e.getEl().lastChild.textContent=t+(e.progressBar?" "+e.progressBar.value()+"%":"")},Bt=ot.extend({Mixins:[Se],Defaults:{classes:"widget notification"},init:function(e){var t=this;t._super(e),t.maxWidth=e.maxWidth,e.text&&t.text(e.text),e.icon&&(t.icon=e.icon),e.color&&(t.color=e.color),e.type&&t.classes.add("notification-"+e.type),e.timeout&&(e.timeout<0||e.timeout>0)&&!e.closeButton?t.closeButton=!1:(t.classes.add("has-close"),t.closeButton=!0),e.progressBar&&(t.progressBar=new Nt),t.on("click",function(e){-1!==e.target.className.indexOf(t.classPrefix+"close")&&t.close()})},renderHtml:function(){var e,t=this,n=t.classPrefix,i="",r="",o="";return t.icon&&(i='<i class="'+n+"ico "+n+"i-"+t.icon+'"></i>'),e=' style="max-width: '+t.maxWidth+"px;"+(t.color?"background-color: "+t.color+';"':'"'),t.closeButton&&(r='<button type="button" class="'+n+'close" aria-hidden="true">\xd7</button>'),t.progressBar&&(o=t.progressBar.renderHtml()),'<div id="'+t._id+'" class="'+t.classes+'"'+e+' role="presentation">'+i+'<div class="'+n+'notification-inner">'+t.state.get("text")+"</div>"+o+r+'<div style="clip: rect(1px, 1px, 1px, 1px);height: 1px;overflow: hidden;position: absolute;width: 1px;" aria-live="assertive" aria-relevant="additions" aria-atomic="true"></div></div>'},postRender:function(){var e=this;return R.setTimeout(function(){e.$el.addClass(e.classPrefix+"in"),At(e,e.state.get("text"))},100),e._super()},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().firstChild.innerHTML=t.value,At(e,t.value)}),e.progressBar&&(e.progressBar.bindStates(),e.progressBar.state.on("change:value",function(t){At(e,e.state.get("text"))})),e._super()},close:function(){return this.fire("close").isDefaultPrevented()||this.remove(),this},repaint:function(){var e,t;e=this.getEl().style,t=this._layoutRect,e.left=t.x+"px",e.top=t.y+"px",e.zIndex=65534}});function Ot(e){var t=function(e){return e.inline?e.getElement():e.getContentAreaContainer()};return{open:function(n,i){var r,o=a.extend(n,{maxWidth:(r=t(e),_e.getSize(r).width)}),s=new Bt(o);return s.args=o,o.timeout>0&&(s.timer=setTimeout(function(){s.close(),i()},o.timeout)),s.on("close",function(){i()}),s.renderTo(),s},close:function(e){e.close()},reposition:function(n){var i;i=n,ee.each(i,function(e){e.moveTo(0,0)}),function(n){if(n.length>0){var i=n.slice(0,1)[0],r=t(e);i.moveRel(r,"tc-tc"),ee.each(n,function(e,t){t>0&&e.moveRel(n[t-1].getEl(),"bc-tc")})}}(n)},getArgs:function(e){return e.args}}}var zt=[],Lt="";function It(e){var t,n=xe("meta[name=viewport]")[0];!1!==de.overrideViewPort&&(n||((n=document.createElement("meta")).setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),(t=n.getAttribute("content"))&&void 0!==Lt&&(Lt=t),n.setAttribute("content",e?"width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0":Lt))}function Ft(e,t){(function(){for(var e=0;e<zt.length;e++)if(zt[e]._fullscreen)return!0;return!1})()&&!1===t&&xe([document.documentElement,document.body]).removeClass(e+"fullscreen")}var Ut=kt.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var t=this;t._super(e),t.isRtl()&&t.classes.add("rtl"),t.classes.add("window"),t.bodyClasses.add("window-body"),t.state.set("fixed",!0),e.buttons&&(t.statusbar=new vt({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:t.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),t.statusbar.classes.add("foot"),t.statusbar.parent(t)),t.on("click",function(e){var n=t.classPrefix+"close";(_e.hasClass(e.target,n)||_e.hasClass(e.target.parentNode,n))&&t.close()}),t.on("cancel",function(){t.close()}),t.aria("describedby",t.describedBy||t._id+"-none"),t.aria("label",e.title),t._fullscreen=!1},recalc:function(){var e,t,n,i,r=this,o=r.statusbar;r._fullscreen&&(r.layoutRect(_e.getWindowSize()),r.layoutRect().contentH=r.layoutRect().innerH),r._super(),e=r.layoutRect(),r.settings.title&&!r._fullscreen&&(t=e.headerW)>e.w&&(n=e.x-Math.max(0,t/2),r.layoutRect({w:t,x:n}),i=!0),o&&(o.layoutRect({w:r.layoutRect().innerW}).recalc(),(t=o.layoutRect().minW+e.deltaW)>e.w&&(n=e.x-Math.max(0,t-e.w),r.layoutRect({w:t,x:n}),i=!0)),i&&r.recalc()},initLayoutRect:function(){var e,t=this,n=t._super(),i=0;if(t.settings.title&&!t._fullscreen){e=t.getEl("head");var r=_e.getSize(e);n.headerW=r.width,n.headerH=r.height,i+=n.headerH}t.statusbar&&(i+=t.statusbar.layoutRect().h),n.deltaH+=i,n.minH+=i,n.h+=i;var o=_e.getWindowSize();return n.x=t.settings.x||Math.max(0,o.w/2-n.w/2),n.y=t.settings.y||Math.max(0,o.h/2-n.h/2),n},renderHtml:function(){var e=this,t=e._layout,n=e._id,i=e.classPrefix,r=e.settings,o="",s="",a=r.html;return e.preRender(),t.preRender(e),r.title&&(o='<div id="'+n+'-head" class="'+i+'window-head"><div id="'+n+'-title" class="'+i+'title">'+e.encode(r.title)+'</div><div id="'+n+'-dragh" class="'+i+'dragh"></div><button type="button" class="'+i+'close" aria-hidden="true"><i class="mce-ico mce-i-remove"></i></button></div>'),r.url&&(a='<iframe src="'+r.url+'" tabindex="-1"></iframe>'),void 0===a&&(a=t.renderHtml(e)),e.statusbar&&(s=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+a+"</div>"+s+"</div></div>"},fullscreen:function(e){var t,n,i=this,r=document.documentElement,o=i.classPrefix;if(e!==i._fullscreen)if(xe(window).on("resize",function(){var e;if(i._fullscreen)if(t)i._timer||(i._timer=R.setTimeout(function(){var e=_e.getWindowSize();i.moveTo(0,0).resizeTo(e.w,e.h),i._timer=0},50));else{e=(new Date).getTime();var n=_e.getWindowSize();i.moveTo(0,0).resizeTo(n.w,n.h),(new Date).getTime()-e>50&&(t=!0)}}),n=i.layoutRect(),i._fullscreen=e,e){i._initial={x:n.x,y:n.y,w:n.w,h:n.h},i.borderBox=Pe("0"),i.getEl("head").style.display="none",n.deltaH-=n.headerH+2,xe([r,document.body]).addClass(o+"fullscreen"),i.classes.add("fullscreen");var s=_e.getWindowSize();i.moveTo(0,0).resizeTo(s.w,s.h)}else i.borderBox=Pe(i.settings.border),i.getEl("head").style.display="",n.deltaH+=n.headerH,xe([r,document.body]).removeClass(o+"fullscreen"),i.classes.remove("fullscreen"),i.moveTo(i._initial.x,i._initial.y).resizeTo(i._initial.w,i._initial.h);return i.reflow()},postRender:function(){var e,t=this;setTimeout(function(){t.classes.add("in"),t.fire("open")},0),t._super(),t.statusbar&&t.statusbar.postRender(),t.focus(),this.dragHelper=new dt(t._id+"-dragh",{start:function(){e={x:t.layoutRect().x,y:t.layoutRect().y}},drag:function(n){t.moveTo(e.x+n.deltaX,e.y+n.deltaY)}}),t.on("submit",function(e){e.isDefaultPrevented()||t.close()}),zt.push(t),It(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e,t=this;for(t.dragHelper.destroy(),t._super(),t.statusbar&&this.statusbar.remove(),Ft(t.classPrefix,!1),e=zt.length;e--;)zt[e]===t&&zt.splice(e,1);It(zt.length>0)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});!function(){if(!de.desktop){var e={w:window.innerWidth,h:window.innerHeight};R.setInterval(function(){var t=window.innerWidth,n=window.innerHeight;e.w===t&&e.h===n||(e={w:t,h:n},xe(window).trigger("resize"))},100)}xe(window).on("resize",function(){var e,t,n=_e.getWindowSize();for(e=0;e<zt.length;e++)t=zt[e].layoutRect(),zt[e].moveTo(zt[e].settings.x||Math.max(0,n.w/2-t.w/2),zt[e].settings.y||Math.max(0,n.h/2-t.h/2))})}();var Vt,jt=Ut.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(e){var t,n=e.callback||function(){};function i(e,t,i){return{type:"button",text:e,subtype:i?"primary":"",onClick:function(e){e.control.parents()[1].close(),n(t)}}}switch(e.buttons){case jt.OK_CANCEL:t=[i("Ok",!0,!0),i("Cancel",!1)];break;case jt.YES_NO:case jt.YES_NO_CANCEL:t=[i("Yes",1,!0),i("No",0)],e.buttons===jt.YES_NO_CANCEL&&t.push(i("Cancel",-1));break;default:t=[i("Ok",!0,!0)]}return new Ut({padding:20,x:e.x,y:e.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:t,title:e.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:e.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:e.onClose,onCancel:function(){n(!1)}}).renderTo(document.body).reflow()},alert:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,jt.msgBox(e)},confirm:function(e,t){return"string"==typeof e&&(e={text:e}),e.callback=t,e.buttons=jt.OK_CANCEL,jt.msgBox(e)}}}),Yt=function(e){return{renderUI:function(t){return Pt(e,this,t)},resizeTo:function(t,n){return ue(e,t,n)},resizeBy:function(t,n){return ce(e,t,n)},getNotificationManagerImpl:function(){return Ot(e)},getWindowManagerImpl:function(){return{open:function(e,t,n){var i;return e.title=e.title||" ",e.url=e.url||e.file,e.url&&(e.width=parseInt(e.width||320,10),e.height=parseInt(e.height||240,10)),e.body&&(e.items={defaults:e.defaults,type:e.bodyType||"form",items:e.body,data:e.data,callbacks:e.commands}),e.url||e.buttons||(e.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),(i=new Ut(e)).on("close",function(){n(i)}),e.data&&i.on("postRender",function(){this.find("*").each(function(t){var n=t.name();n in e.data&&t.value(e.data[n])})}),i.features=e||{},i.params=t||{},i=i.renderTo(document.body).reflow()},alert:function(e,t,n){var i;return(i=jt.alert(e,function(){t()})).on("close",function(){n(i)}),i},confirm:function(e,t,n){var i;return(i=jt.confirm(e,function(e){t(e)})).on("close",function(){n(i)}),i},close:function(e){e.close()},getParams:function(e){return e.params},setParams:function(e,t){e.params=t}}}}},qt=Me.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=a.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t,n,i,r,o=this.settings;t=o.firstControlClass,n=o.lastControlClass,e.each(function(e){e.classes.remove(t).remove(n).add(o.controlClass),e.visible()&&(i||(i=e),r=e)}),i&&i.classes.add(t),r&&r.classes.add(n)},renderHtml:function(e){var t="";return this.applyClasses(e.items()),e.items().each(function(e){t+=e.renderHtml()}),t},recalc:function(){},postRender:function(){},isNative:function(){return!1}}),$t=qt.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}}),Xt=Dt.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t,n=this;n._super(e),e=n.settings,t=n.settings.size,n.on("click mousedown",function(e){e.preventDefault()}),n.on("touchstart",function(e){n.fire("click",e),e.preventDefault()}),e.subtype&&n.classes.add(e.subtype),t&&n.classes.add("btn-"+t),e.icon&&n.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e,t=this.getEl().firstChild;t&&((e=t.style).width=e.height="100%"),this._super()},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a="",l=n.settings;return(e=l.image)?(o="none","string"!=typeof e&&(e=window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",s&&(n.classes.add("btn-has-text"),a='<span class="'+r+'txt">'+n.encode(s)+"</span>"),o=o?r+"ico "+r+"i-"+o:"",t="boolean"==typeof l.active?' aria-pressed="'+l.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" tabindex="-1"'+t+'><button id="'+i+'-button" role="presentation" type="button" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+a+"</button></div>"},bindStates:function(){var e=this,t=e.$,n=e.classPrefix+"txt";function i(i){var r=t("span."+n,e.getEl());i?(r[0]||(t("button:first",e.getEl()).append('<span class="'+n+'"></span>'),r=t("span."+n,e.getEl())),r.html(e.encode(i))):r.remove(),e.classes.toggle("btn-has-text",!!i)}return e.state.on("change:text",function(e){i(e.value)}),e.state.on("change:icon",function(t){var n=t.value,r=e.classPrefix;e.settings.icon=n,n=n?r+"ico "+r+"i-"+e.settings.icon:"";var o=e.getEl().firstChild,s=o.getElementsByTagName("i")[0];n?(s&&s===o.firstChild||(s=document.createElement("i"),o.insertBefore(s,o.firstChild)),s.className=n):s&&o.removeChild(s),i(e.state.get("text"))}),e._super()}}),Jt=Xt.extend({init:function(e){e=a.extend({text:"Browse...",multiple:!1,accept:null},e),this._super(e),this.classes.add("browsebutton"),e.multiple&&this.classes.add("multiple")},postRender:function(){var e=this,t=_e.create("input",{type:"file",id:e._id+"-browse",accept:e.settings.accept});e._super(),xe(t).on("change",function(t){var n=t.target.files;e.value=function(){return n.length?e.settings.multiple?n:n[0]:null},t.preventDefault(),n.length&&e.fire("change",t)}),xe(t).on("click",function(e){e.stopPropagation()}),xe(e.getEl("button")).on("click",function(e){e.stopPropagation(),t.click()}),e.getEl().appendChild(t)},remove:function(){xe(this.getEl("button")).off(),xe(this.getEl("input")).off(),this._super()}}),Gt=ut.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),Kt=Dt.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){var e=this;function t(t){e.classes.toggle("checked",t),e.aria("checked",t)}return e.state.on("change:text",function(t){e.getEl("al").firstChild.data=e.translate(t.value)}),e.state.on("change:checked change:value",function(n){e.fire("change"),t(n.value)}),e.state.on("change:icon",function(t){var n=t.value,i=e.classPrefix;if(void 0===n)return e.settings.icon;e.settings.icon=n,n=n?i+"ico "+i+"i-"+e.settings.icon:"";var r=e.getEl().firstChild,o=r.getElementsByTagName("i")[0];n?(o&&o===r.firstChild||(o=document.createElement("i"),r.insertBefore(o,r.firstChild)),o.className=n):o&&r.removeChild(o)}),e.state.get("checked")&&t(!0),e._super()}}),Zt=tinymce.util.Tools.resolve("tinymce.util.VK"),Qt=Dt.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,r=t.getEl();if(xe.contains(r,i)||i===r)for(;i&&i!==r;)i.id&&-1!==i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){var n;13===e.keyCode&&"INPUT"===e.target.nodeName&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){if("INPUT"===e.target.nodeName){var n=t.state.get("value"),i=e.target.value;i!==n&&(t.state.set("value",i),t.fire("autocomplete",e))}}),t.on("mouseover",function(e){var n=t.tooltip().moveTo(-65535);if(t.statusLevel()&&-1!==e.target.className.indexOf(t.classPrefix+"status")){var i=t.statusMessage()||"Ok",r=n.text(i).show().testMoveRel(e.target,["bc-tc","bc-tl","bc-tr"]);n.classes.toggle("tooltip-n","bc-tc"===r),n.classes.toggle("tooltip-nw","bc-tl"===r),n.classes.toggle("tooltip-ne","bc-tr"===r),n.moveRel(e.target,r)}})},statusLevel:function(e){return arguments.length>0&&this.state.set("statusLevel",e),this.state.get("statusLevel")},statusMessage:function(e){return arguments.length>0&&this.state.set("statusMessage",e),this.state.get("statusMessage")},showMenu:function(){var e,t=this,n=t.settings;t.menu||((e=n.menu||[]).length?e={type:"menu",items:e}:e.type=e.type||"menu",t.menu=g.create(e).parent(t).renderTo(t.getContainerElm()),t.fire("createmenu"),t.menu.reflow(),t.menu.on("cancel",function(e){e.control===t.menu&&t.focus()}),t.menu.on("show hide",function(e){e.control.items().each(function(e){e.active(e.value()===t.value())})}).fire("show"),t.menu.on("select",function(e){t.value(e.control.value())}),t.on("focusin",function(e){"INPUT"===e.target.tagName.toUpperCase()&&t.menu.hide()}),t.aria("expanded",!0)),t.menu.show(),t.menu.layoutRect({w:t.layoutRect().w}),t.menu.moveRel(t.getEl(),t.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e,t,n=this,i=n.getEl(),r=n.getEl("open"),o=n.layoutRect(),s=0,a=i.firstChild;n.statusLevel()&&"none"!==n.statusLevel()&&(s=parseInt(_e.getRuntimeStyle(a,"padding-right"),10)-parseInt(_e.getRuntimeStyle(a,"padding-left"),10)),e=r?o.w-_e.getSize(r).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(t=n.layoutRect().h-2+"px"),xe(a).css({width:e-s,lineHeight:t}),n._super(),n},postRender:function(){var e=this;return xe(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e,t,n,i=this,r=i._id,o=i.settings,s=i.classPrefix,a=i.state.get("value")||"",l="",u="";return"spellcheck"in o&&(u+=' spellcheck="'+o.spellcheck+'"'),o.maxLength&&(u+=' maxlength="'+o.maxLength+'"'),o.size&&(u+=' size="'+o.size+'"'),o.subtype&&(u+=' type="'+o.subtype+'"'),n='<i id="'+r+'-status" class="mce-status mce-ico" style="display: none"></i>',i.disabled()&&(u+=' disabled="disabled"'),(e=o.icon)&&"caret"!==e&&(e=s+"ico "+s+"i-"+o.icon),t=i.state.get("text"),(e||t)&&(l='<div id="'+r+'-open" class="'+s+"btn "+s+'open" tabIndex="-1" role="button"><button id="'+r+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!==e?'<i class="'+e+'"></i>':'<i class="'+s+'caret"></i>')+(t?(e?" ":"")+t:"")+"</button></div>",i.classes.add("has-open")),'<div id="'+r+'" class="'+i.classes+'"><input id="'+r+'-inp" class="'+s+'textbox" value="'+i.encode(a,!1)+'" hidefocus="1"'+u+' placeholder="'+i.encode(o.placeholder)+'" />'+n+l+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},showAutoComplete:function(e,t){var n=this;if(0!==e.length){n.menu?n.menu.items().remove():n.menu=g.create({type:"menu",classes:"combobox-menu",layout:"flow"}).parent(n).renderTo(),a.each(e,function(e){var i,r;n.menu.add({text:e.title,url:e.previewUrl,match:t,classes:"menu-item-ellipsis",onclick:(i=e.value,r=e.title,function(){n.fire("selectitem",{title:r,value:i})})})}),n.menu.renderNew(),n.hideMenu(),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()});var i=n.layoutRect().w;n.menu.layoutRect({w:i,minW:0,maxW:i}),n.menu.repaint(),n.menu.reflow(),n.menu.show(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])}else n.hideMenu()},hideMenu:function(){this.menu&&this.menu.hide()},bindStates:function(){var e=this;e.state.on("change:value",function(t){e.getEl("inp").value!==t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e.state.on("change:statusLevel",function(t){var n=e.getEl("status"),i=e.classPrefix,r=t.value;_e.css(n,"display","none"===r?"none":""),_e.toggleClass(n,i+"i-checkmark","ok"===r),_e.toggleClass(n,i+"i-warning","warn"===r),_e.toggleClass(n,i+"i-error","error"===r),e.classes.toggle("has-status","none"!==r),e.repaint()}),_e.on(e.getEl("status"),"mouseleave",function(){e.tooltip().hide()}),e.on("cancel",function(t){e.menu&&e.menu.visible()&&(t.stopPropagation(),e.hideMenu())});var t=function(e,t){t&&t.items().length>0&&t.items().eq(e)[0].focus()};return e.on("keydown",function(n){var i=n.keyCode;"INPUT"===n.target.nodeName&&(i===Zt.DOWN?(n.preventDefault(),e.fire("autocomplete"),t(0,e.menu)):i===Zt.UP&&(n.preventDefault(),t(-1,e.menu)))}),e._super()},remove:function(){xe(this.getEl("inp")).off(),this.menu&&this.menu.remove(),this._super()}}),en=Qt.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl("open"),n=t?t.getElementsByTagName("i")[0]:null;if(n)try{n.style.background=e}catch(i){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.state.get("rendered")&&e.repaintColor(t.value)}),e._super()}}),tn=Xt.extend({showPanel:function(){var e=this,t=e.settings;if(e.classes.add("opened"),e.panel)e.panel.show();else{var n=t.panel;n.type&&(n={layout:"grid",items:n}),n.role=n.role||"dialog",n.popover=!0,n.autohide=!0,n.ariaRoot=!0,e.panel=new kt(n).on("hide",function(){e.classes.remove("opened")}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}var i=e.panel.testMoveRel(e.getEl(),t.popoverAlign||(e.isRtl()?["bc-tc","bc-tl","bc-tr"]:["bc-tc","bc-tr","bc-tl"]));e.panel.classes.toggle("start","bc-tl"===i),e.panel.classes.toggle("end","bc-tr"===i),e.panel.moveRel(e.getEl(),i)},hidePanel:function(){this.panel&&this.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}}),nn=m.DOM,rn=tn.extend({init:function(e){this._super(e),this.classes.add("splitbtn"),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,i=e.state.get("text"),r=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"",s="";return i&&(e.classes.add("btn-has-text"),s='<span class="'+n+'txt">'+e.encode(i)+"</span>"),'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+s+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(n){n.aria&&"down"===n.aria.key||n.control!==e||nn.getParent(n.target,"."+e.classPrefix+"open")||(n.stopImmediatePropagation(),t.call(e,n))}),delete e.settings.onclick,e._super()}}),on=tinymce.util.Tools.resolve("tinymce.util.Color"),sn=Dt.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){var e,t,n,i,r,o=this,s=o.color();function a(e,t){var n,i,r=_e.getPos(e);return n=t.pageX-r.x,i=t.pageY-r.y,{x:n=Math.max(0,Math.min(n/e.clientWidth,1)),y:i=Math.max(0,Math.min(i/e.clientHeight,1))}}function l(e,t){var s=(360-e.h)/360;_e.css(n,{top:100*s+"%"}),t||_e.css(r,{left:e.s+"%",top:100-e.v+"%"}),i.style.background=on({s:100,v:100,h:e.h}).toHex(),o.color().parse({s:e.s,v:e.v,h:e.h})}function u(t){var n;n=a(i,t),e.s=100*n.x,e.v=100*(1-n.y),l(e),o.fire("change")}function c(n){var i;i=a(t,n),(e=s.toHsv()).h=360*(1-i.y),l(e,!0),o.fire("change")}t=o.getEl("h"),n=o.getEl("hp"),i=o.getEl("sv"),r=o.getEl("svp"),o._repaint=function(){l(e=s.toHsv())},o._super(),o._svdraghelper=new dt(o._id+"-sv",{start:u,drag:u}),o._hdraghelper=new dt(o._id+"-h",{start:c,drag:c}),o._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){if(!arguments.length)return this.color().toHex();this.color().parse(e),this._rendered&&this._repaint()},color:function(){return this._color||(this._color=on()),this._color},renderHtml:function(){var e,t=this._id,n=this.classPrefix,i="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000";return e='<div id="'+t+'-h" class="'+n+'colorpicker-h" style="background: -ms-linear-gradient(top,'+i+");background: linear-gradient(to bottom,"+i+');">'+function(){var e,t,r,o,s="";for(r="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",e=0,t=(o=i.split(",")).length-1;e<t;e++)s+='<div class="'+n+'colorpicker-h-chunk" style="height:'+100/t+"%;"+r+o[e]+",endColorstr="+o[e+1]+");-ms-"+r+o[e]+",endColorstr="+o[e+1]+')"></div>';return s}()+'<div id="'+t+'-hp" class="'+n+'colorpicker-h-marker"></div></div>','<div id="'+t+'" class="'+this.classes+'"><div id="'+t+'-sv" class="'+n+'colorpicker-sv"><div class="'+n+'colorpicker-overlay1"><div class="'+n+'colorpicker-overlay2"><div id="'+t+'-svp" class="'+n+'colorpicker-selector1"><div class="'+n+'colorpicker-selector2"></div></div></div></div></div>'+e+"</div>"}}),an=Dt.extend({init:function(e){e=a.extend({height:100,text:"Drop an image here",multiple:!1,accept:null},e),this._super(e),this.classes.add("dropzone"),e.multiple&&this.classes.add("multiple")},renderHtml:function(){var e,t,n=this.settings;return e={id:this._id,hidefocus:"1"},t=_e.create("div",e,"<span>"+this.translate(n.text)+"</span>"),n.height&&_e.css(t,"height",n.height+"px"),n.width&&_e.css(t,"width",n.width+"px"),t.className=this.classes,t.outerHTML},postRender:function(){var e=this,t=function(t){t.preventDefault(),e.classes.toggle("dragenter"),e.getEl().className=e.classes};e._super(),e.$el.on("dragover",function(e){e.preventDefault()}),e.$el.on("dragenter",t),e.$el.on("dragleave",t),e.$el.on("drop",function(t){if(t.preventDefault(),!e.state.get("disabled")){var n=function(t){var n=e.settings.accept;if("string"!=typeof n)return t;var i=new RegExp("("+n.split(/\s*,\s*/).join("|")+")$","i");return a.grep(t,function(e){return i.test(e.name)})}(t.dataTransfer.files);e.value=function(){return n.length?e.settings.multiple?n:n[0]:null},n.length&&e.fire("change",t)}})},remove:function(){this.$el.off(),this._super()}}),ln=Dt.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n;(n=e.target.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){return this.getEl().firstChild.focus(),this},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'">'+this._getDataPathHtml(this.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t,n,i=e||[],r="",o=this.classPrefix;for(t=0,n=i.length;t<n;t++)r+=(t>0?'<div class="'+o+'divider" aria-hidden="true"> '+this.settings.delimiter+" </div>":"")+'<div role="button" class="'+o+"path-item"+(t===n-1?" "+o+"last":"")+'" data-index="'+t+'" tabindex="-1" id="'+this._id+"-"+t+'" aria-level="'+(t+1)+'">'+i[t].name+"</div>";return r||(r='<div class="'+o+'path-item">\xa0</div>'),r}}),un=ln.extend({postRender:function(){var e=this,t=e.settings.editor;function n(e){if(1===e.nodeType){if("BR"===e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}return!1!==t.settings.elementpath&&(e.on("select",function(e){t.focus(),t.selection.select(this.row()[e.index].element),t.nodeChanged()}),t.on("nodeChange",function(i){for(var r=[],o=i.parents,s=o.length;s--;)if(1===o[s].nodeType&&!n(o[s])){var a=t.fire("ResolveName",{name:o[s].nodeName.toLowerCase(),target:o[s]});if(a.isDefaultPrevented()||r.push({name:a.name,element:o[s]}),a.isPropagationStopped())break}e.row(r)})),e._super()}}),cn=ut.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}}),dn=ut.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:15,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,t=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),t.each(function(t){var n,i=t.settings.label;i&&((n=new cn(a.extend({items:{type:"label",id:t._id+"-l",text:i,flex:0,forId:t._id,disabled:t.disabled()}},e.settings.formItemDefaults))).type="formitem",t.aria("labelledby",t._id+"-l"),"undefined"==typeof t.settings.flex&&(t.settings.flex=1),e.replace(t,n),n.add(t))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){this._super(),this.fromJSON(this.settings.data)},bindStates:function(){var e=this;function t(){var t,n,i=0,r=[];if(!1!==e.settings.labelGapCalc)for(("children"===e.settings.labelGapCalc?e.find("formitem"):e.items()).filter("formitem").each(function(e){var t=e.items()[0],n=t.getEl().clientWidth;i=n>i?n:i,r.push(t)}),n=e.settings.labelGap||0,t=r.length;t--;)r[t].settings.minWidth=i+n}e._super(),e.on("show",t),t()}}),fn=dn.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}}),hn=0,mn=function(e){var t=(new Date).getTime();return e+"_"+Math.floor(1e9*Math.random())+ ++hn+String(t)},gn=function(e){if(null===e||e===undefined)throw new Error("Node cannot be null or undefined");return{dom:k.constant(e)}},pn={fromHtml:function(e,t){var n=(t||document).createElement("div");if(n.innerHTML=e,!n.hasChildNodes()||n.childNodes.length>1)throw console.error("HTML does not have a single root node",e),"HTML must have a single root node";return gn(n.childNodes[0])},fromTag:function(e,t){var n=(t||document).createElement(e);return gn(n)},fromText:function(e,t){var n=(t||document).createTextNode(e);return gn(n)},fromDom:gn,fromPoint:function(e,t,n){return P.from(e.dom().elementFromPoint(t,n)).map(gn)}},vn=function(e){var t,n=!1;return function(){return n||(n=!0,t=e.apply(null,arguments)),t}},bn=8,yn=9,xn=1,wn=3,_n=function(e){return e.dom().nodeName.toLowerCase()},Rn=function(e){return e.dom().nodeType},Cn=function(e){return function(t){return Rn(t)===e}},kn=Cn(xn),En=Cn(wn),Hn=Cn(yn),Sn={name:_n,type:Rn,value:function(e){return e.dom().nodeValue},isElement:kn,isText:En,isDocument:Hn,isComment:function(e){return Rn(e)===bn||"#comment"===_n(e)}},Mn=(vn(function(){return Mn(pn.fromDom(document))}),function(e){var t=e.dom().body;if(null===t||t===undefined)throw"Body is not available yet";return pn.fromDom(t)}),Tn=function(e){return function(t){return function(e){if(null===e)return"null";var t=typeof e;return"object"===t&&Array.prototype.isPrototypeOf(e)?"array":"object"===t&&String.prototype.isPrototypeOf(e)?"string":t}(t)===e}},Pn={isString:Tn("string"),isObject:Tn("object"),isArray:Tn("array"),isNull:Tn("null"),isBoolean:Tn("boolean"),isUndefined:Tn("undefined"),isFunction:Tn("function"),isNumber:Tn("number")},Wn=(Vt=Object.keys)===undefined?function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}:Vt,Dn=function(e,t){for(var n=Wn(e),i=0,r=n.length;i<r;i++){var o=n[i];t(e[o],o,e)}},Nn=function(e,t){var n={};return Dn(e,function(i,r){var o=t(i,r,e);n[o.k]=o.v}),n},An=function(e,t){var n=[];return Dn(e,function(e,i){n.push(t(e,i))}),n},Bn=function(e){return An(e,function(e){return e})},On={bifilter:function(e,t){var n={},i={};return Dn(e,function(e,r){(t(e,r)?n:i)[r]=e}),{t:n,f:i}},each:Dn,map:function(e,t){return Nn(e,function(e,n,i){return{k:n,v:t(e,n,i)}})},mapToArray:An,tupleMap:Nn,find:function(e,t){for(var n=Wn(e),i=0,r=n.length;i<r;i++){var o=n[i],s=e[o];if(t(s,o,e))return P.some(s)}return P.none()},keys:Wn,values:Bn,size:function(e){return Bn(e).length}},zn=function(e){return e.slice(0).sort()},Ln={sort:zn,reqMessage:function(e,t){throw new Error("All required keys ("+zn(e).join(", ")+") were not specified. Specified keys were: "+zn(t).join(", ")+".")},unsuppMessage:function(e){throw new Error("Unsupported keys for object: "+zn(e).join(", "))},validateStrArr:function(e,t){if(!Pn.isArray(t))throw new Error("The "+e+" fields must be an array. Was: "+t+".");ee.each(t,function(t){if(!Pn.isString(t))throw new Error("The value "+t+" in the "+e+" fields was not a string.")})},invalidTypeMessage:function(e,t){throw new Error("All values need to be of type: "+t+". Keys ("+zn(e).join(", ")+") were not.")},checkDupes:function(e){var t=zn(e);ee.find(t,function(e,n){return n<t.length-1&&e===t[n+1]}).each(function(e){throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")})}},In={immutable:function(){var e=arguments;return function(){for(var t=new Array(arguments.length),n=0;n<t.length;n++)t[n]=arguments[n];if(e.length!==t.length)throw new Error('Wrong number of arguments to struct. Expected "['+e.length+']", got '+t.length+" arguments");var i={};return ee.each(e,function(e,n){i[e]=k.constant(t[n])}),i}},immutableBag:function(e,t){var n=e.concat(t);if(0===n.length)throw new Error("You must specify at least one required or optional field.");return Ln.validateStrArr("required",e),Ln.validateStrArr("optional",t),Ln.checkDupes(n),function(i){var r=On.keys(i);ee.forall(e,function(e){return ee.contains(r,e)})||Ln.reqMessage(e,r);var o=ee.filter(r,function(e){return!ee.contains(n,e)});o.length>0&&Ln.unsuppMessage(o);var s={};return ee.each(e,function(e){s[e]=k.constant(i[e])}),ee.each(t,function(e){s[e]=k.constant(Object.prototype.hasOwnProperty.call(i,e)?P.some(i[e]):P.none())}),s}}},Fn=("undefined"!=typeof window?window:Function("return this;")(),function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++){var i=e[n];if(i.test(t))return i}return undefined}(e,t);if(!n)return{major:0,minor:0};var i=function(e){return Number(t.replace(n,"$"+e))};return Vn(i(1),i(2))}),Un=function(){return Vn(0,0)},Vn=function(e,t){return{major:e,minor:t}},jn={nu:Vn,detect:function(e,t){var n=String(t).toLowerCase();return 0===e.length?Un():Fn(e,n)},unknown:Un},Yn="Firefox",qn=function(e,t){return function(){return t===e}},$n=function(e){var t=e.current;return{current:t,version:e.version,isEdge:qn("Edge",t),isChrome:qn("Chrome",t),isIE:qn("IE",t),isOpera:qn("Opera",t),isFirefox:qn(Yn,t),isSafari:qn("Safari",t)}},Xn={unknown:function(){return $n({current:undefined,version:jn.unknown()})},nu:$n,edge:k.constant("Edge"),chrome:k.constant("Chrome"),ie:k.constant("IE"),opera:k.constant("Opera"),firefox:k.constant(Yn),safari:k.constant("Safari")},Jn="Windows",Gn="Android",Kn="Solaris",Zn="FreeBSD",Qn=function(e,t){return function(){return t===e}},ei=function(e){var t=e.current;return{current:t,version:e.version,isWindows:Qn(Jn,t),isiOS:Qn("iOS",t),isAndroid:Qn(Gn,t),isOSX:Qn("OSX",t),isLinux:Qn("Linux",t),isSolaris:Qn(Kn,t),isFreeBSD:Qn(Zn,t)}},ti={unknown:function(){return ei({current:undefined,version:jn.unknown()})},nu:ei,windows:k.constant(Jn),ios:k.constant("iOS"),android:k.constant(Gn),linux:k.constant("Linux"),osx:k.constant("OSX"),solaris:k.constant(Kn),freebsd:k.constant(Zn)},ni=function(e,t){var n=String(t).toLowerCase();return ee.find(e,function(e){return e.search(n)})},ii=function(e,t){return ni(e,t).map(function(e){var n=jn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},ri=function(e,t){return ni(e,t).map(function(e){var n=jn.detect(e.versionRegexes,t);return{current:e.name,version:n}})},oi=function(e,t){return-1!==e.indexOf(t)},si=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,ai=function(e){return function(t){return oi(t,e)}},li=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:function(e){return oi(e,"edge/")&&oi(e,"chrome")&&oi(e,"safari")&&oi(e,"applewebkit")}},{name:"Chrome",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,si],search:function(e){return oi(e,"chrome")&&!oi(e,"chromeframe")}},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:function(e){return oi(e,"msie")||oi(e,"trident")}},{name:"Opera",versionRegexes:[si,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:ai("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:ai("firefox")},{name:"Safari",versionRegexes:[si,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:function(e){return(oi(e,"safari")||oi(e,"mobile/"))&&oi(e,"applewebkit")}}],ui=[{name:"Windows",search:ai("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:function(e){return oi(e,"iphone")||oi(e,"ipad")},versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:ai("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"OSX",search:ai("os x"),versionRegexes:[/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:ai("linux"),versionRegexes:[]},{name:"Solaris",search:ai("sunos"),versionRegexes:[]},{name:"FreeBSD",search:ai("freebsd"),versionRegexes:[]}],ci={browsers:k.constant(li),oses:k.constant(ui)},di=function(e){var t,n,i,r,o,s,a,l,u,c,d,f=ci.browsers(),h=ci.oses(),m=ii(f,e).fold(Xn.unknown,Xn.nu),g=ri(h,e).fold(ti.unknown,ti.nu);return{browser:m,os:g,deviceType:(n=m,i=e,r=(t=g).isiOS()&&!0===/ipad/i.test(i),o=t.isiOS()&&!r,s=t.isAndroid()&&3===t.version.major,a=t.isAndroid()&&4===t.version.major,l=r||s||a&&!0===/mobile/i.test(i),u=t.isiOS()||t.isAndroid(),c=u&&!l,d=n.isSafari()&&t.isiOS()&&!1===/safari/i.test(i),{isiPad:k.constant(r),isiPhone:k.constant(o),isTablet:k.constant(l),isPhone:k.constant(c),isTouch:k.constant(u),isAndroid:t.isAndroid,isiOS:t.isiOS,isWebView:k.constant(d)})}},fi=vn(function(){var e=navigator.userAgent;return di(e)}),hi=xn,mi=yn,gi=function(e){return e.nodeType!==hi&&e.nodeType!==mi||0===e.childElementCount},pi={all:function(e,t){var n=t===undefined?document:t.dom();return gi(n)?[]:ee.map(n.querySelectorAll(e),pn.fromDom)},is:function(e,t){var n=e.dom();if(n.nodeType!==hi)return!1;if(n.matches!==undefined)return n.matches(t);if(n.msMatchesSelector!==undefined)return n.msMatchesSelector(t);if(n.webkitMatchesSelector!==undefined)return n.webkitMatchesSelector(t);if(n.mozMatchesSelector!==undefined)return n.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")},one:function(e,t){var n=t===undefined?document:t.dom();return gi(n)?P.none():P.from(n.querySelector(e)).map(pn.fromDom)}},vi=(fi().browser.isIE(),In.immutable("element","offset"),function(e,t){return pi.all(t,e)}),bi=a.trim,yi=function(e){return function(t){if(t&&1===t.nodeType){if(t.contentEditable===e)return!0;if(t.getAttribute("data-mce-contenteditable")===e)return!0}return!1}},xi=yi("true"),wi=yi("false"),_i=function(e,t,n,i,r){return{type:e,title:t,url:n,level:i,attach:r}},Ri=function(e){return e.innerText||e.textContent},Ci=function(e){return(t=e)&&"A"===t.nodeName&&(t.id||t.name)&&Ei(e);var t},ki=function(e){return e&&/^(H[1-6])$/.test(e.nodeName)},Ei=function(e){return function(e){for(;e=e.parentNode;){var t=e.contentEditable;if(t&&"inherit"!==t)return xi(e)}return!1}(e)&&!wi(e)},Hi=function(e){return ki(e)&&Ei(e)},Si=function(e){var t,n,i=(t=e).id?t.id:mn("h");return _i("header",Ri(e),"#"+i,ki(n=e)?parseInt(n.nodeName.substr(1),10):0,function(){e.id=i})},Mi=function(e){var t=e.id||e.name,n=Ri(e);return _i("anchor",n||"#"+t,"#"+t,0,k.noop)},Ti=function(e){var t,n;return t="h1,h2,h3,h4,h5,h6,a:not([href])",n=e,ee.map(vi(pn.fromDom(n),t),function(e){return e.dom()})},Pi=function(e){return bi(e.title).length>0},Wi=function(e){var t,n,i=Ti(e);return ee.filter((n=i,ee.map(ee.filter(n,Hi),Si)).concat((t=i,ee.map(ee.filter(t,Ci),Mi))),Pi)},Di={},Ni=function(e){return{title:e.title,value:{title:{raw:e.title},url:e.url,attach:e.attach}}},Ai=function(e,t){return{title:e,value:{title:e,url:t,attach:k.noop}}},Bi=function(e,t,n){var i=t in e?e[t]:n;return!1===i?null:i},Oi=function(e,t,n,i){var r,o,s,l,u={title:"-"},c=function(e){var i=e.hasOwnProperty(n)?e[n]:[],r=ee.filter(i,function(e){return n=e,i=t,!ee.exists(i,function(e){return e.url===n});var n,i});return a.map(r,function(e){return{title:e,value:{title:e,url:e,attach:k.noop}}})},d=function(e){var n,i=ee.filter(t,function(t){return t.type===e});return n=i,a.map(n,Ni)};return!1===i.typeahead_urls?[]:"file"===n?(r=[zi(e,c(Di)),zi(e,d("header")),zi(e,(o=d("anchor"),s=Bi(i,"anchor_top","#top"),l=Bi(i,"anchor_bottom","#bottom"),null!==s&&o.unshift(Ai("<top>",s)),null!==l&&o.push(Ai("<bottom>",l)),o))],ee.foldl(r,function(e,t){return 0===e.length||0===t.length?e.concat(t):e.concat(u,t)},[])):zi(e,c(Di))},zi=function(e,t){var n=e.toLowerCase(),i=a.grep(t,function(e){return-1!==e.title.toLowerCase().indexOf(n)});return 1===i.length&&i[0].title===e?[]:i},Li=function(e,t,n,i){var r=function(r){var o=Wi(n),s=Oi(r,o,i,t);e.showAutoComplete(s,r)};e.on("autocomplete",function(){r(e.value())}),e.on("selectitem",function(t){var n=t.value;e.value(n.url);var r,o=(r=n.title).raw?r.raw:r;"image"===i?e.fire("change",{meta:{alt:o,attach:n.attach}}):e.fire("change",{meta:{text:o,attach:n.attach}}),e.focus()}),e.on("click",function(t){0===e.value().length&&"INPUT"===t.target.nodeName&&r("")}),e.on("PostRender",function(){e.getRoot().on("submit",function(t){var n,r,o;t.isDefaultPrevented()||(n=e.value(),o=Di[r=i],/^https?/.test(n)&&(o?-1===ee.indexOf(o,n)&&(Di[r]=o.slice(0,5).concat(n)):Di[r]=[n]))})})},Ii=function(e,t,n){var i=t.filepicker_validator_handler;i&&e.state.on("change:value",function(t){var r;0!==(r=t.value).length?i({url:r,type:n},function(t){var n,i,r,o=(i=(n=t).status,r=n.message,"valid"===i?{status:"ok",message:r}:"unknown"===i?{status:"warn",message:r}:"invalid"===i?{status:"warn",message:r}:{status:"none",message:""});e.statusMessage(o.message),e.statusLevel(o.status)}):e.statusLevel("none")})},Fi=Qt.extend({Statics:{clearHistory:function(){Di={}}},init:function(e){var t,n,i,r=this,o=window.tinymce?window.tinymce.activeEditor:s.activeEditor,l=o.settings,u=e.filetype;e.spellcheck=!1,(i=l.file_picker_types||l.file_browser_callback_types)&&(i=a.makeMap(i,/[, ]/)),i&&!i[u]||(!(n=l.file_picker_callback)||i&&!i[u]?!(n=l.file_browser_callback)||i&&!i[u]||(t=function(){n(r.getEl("inp").id,r.value(),u,window)}):t=function(){var e=r.fire("beforecall").meta;e=a.extend({filetype:u},e),n.call(o,function(e,t){r.value(e).fire("change",{meta:t})},r.value(),e)}),t&&(e.icon="browse",e.onaction=t),r._super(e),r.classes.add("filepicker"),Li(r,l,o.getBody(),u),Ii(r,l,u)}}),Ui=$t.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}}),Vi=$t.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,k,E,H,S,M,T,P,W,D,N,A,B,O,z=[],L=Math.max,I=Math.min;for(i=e.items().filter(":visible"),r=e.layoutRect(),o=e.paddingBox,s=e.settings,f=e.isRtl()?s.direction||"row-reversed":s.direction,a=s.align,l=e.isRtl()?s.pack||"end":s.pack,u=s.spacing||0,"row-reversed"!==f&&"column-reverse"!==f||(i=i.set(i.toArray().reverse()),f=f.split("-")[0]),"column"===f?(C="y",_="h",R="minH",k="maxH",H="innerH",E="top",S="deltaH",M="contentH",N="left",W="w",T="x",P="innerW",D="minW",A="right",B="deltaW",O="contentW"):(C="x",_="w",R="minW",k="maxW",H="innerW",E="left",S="deltaW",M="contentW",N="top",W="h",T="y",P="innerH",D="minH",A="bottom",B="deltaH",O="contentH"),d=r[H]-o[E]-o[E],w=c=0,t=0,n=i.length;t<n;t++)m=(h=i[t]).layoutRect(),d-=t<n-1?u:0,(g=h.settings.flex)>0&&(c+=g,m[k]&&z.push(h),m.flex=g),d-=m[R],(p=o[N]+m[D]+o[A])>w&&(w=p);if((y={})[R]=d<0?r[R]-d+r[S]:r[H]-d+r[S],y[D]=w+r[B],y[M]=r[H]-d,y[O]=w,y.minW=I(y.minW,r.maxW),y.minH=I(y.minH,r.maxH),y.minW=L(y.minW,r.startMinWidth),y.minH=L(y.minH,r.startMinHeight),!r.autoResize||y.minW===r.minW&&y.minH===r.minH){for(b=d/c,t=0,n=z.length;t<n;t++)v=(m=(h=z[t]).layoutRect())[k],(p=m[R]+m.flex*b)>v?(d-=m[k]-m[R],c-=m.flex,m.flex=0,m.maxFlexSize=v):m.maxFlexSize=0;for(b=d/c,x=o[E],y={},0===c&&("end"===l?x=d+o[E]:"center"===l?(x=Math.round(r[H]/2-(r[H]-d)/2)+o[E])<0&&(x=o[E]):"justify"===l&&(x=o[E],u=Math.floor(d/(i.length-1)))),y[T]=o[N],t=0,n=i.length;t<n;t++)p=(m=(h=i[t]).layoutRect()).maxFlexSize||m[R],"center"===a?y[T]=Math.round(r[P]/2-m[W]/2):"stretch"===a?(y[W]=L(m[D]||0,r[P]-o[N]-o[A]),y[T]=o[N]):"end"===a&&(y[T]=r[P]-m[W]-o.top),m.flex>0&&(p+=m.flex*b),y[_]=p,y[C]=x,h.layoutRect(y),h.recalc&&h.recalc(),x+=p+u}else if(y.w=y.minW,y.h=y.minH,e.layoutRect(y),this.recalc(e),null===e._lastRect){var F=e.parent();F&&(F._lastRect=null,F.recalc())}}}),ji=qt.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}}),Yi=function(e,t){return pi.one(t,e)},qi=function(e,t){return function(){e.execCommand("mceToggleFormat",!1,t)}},$i=function(e,t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}},Xi=function(e){e.addMenuItem("align",{text:"Align",menu:[{text:"Left",icon:"alignleft",onclick:qi(e,"alignleft")},{text:"Center",icon:"aligncenter",onclick:qi(e,"aligncenter")},{text:"Right",icon:"alignright",onclick:qi(e,"alignright")},{text:"Justify",icon:"alignjustify",onclick:qi(e,"alignjustify")}]}),a.each({alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{active:!1,tooltip:t[0],cmd:t[1],onPostRender:$i(e,n)})})},Ji=function(e){return function(t,n){return P.from(n).map(pn.fromDom).filter(Sn.isElement).bind(function(n){return function(e,t,n){for(;n!==t;){if(n.style[e]){var i=n.style[e];return""!==i?P.some(i):P.none()}n=n.parentNode}return P.none()}(e,t,n.dom()).or((i=e,r=n.dom(),P.from(m.DOM.getStyle(r,i,!0))));var i,r}).getOr("")}},Gi={getFontSize:Ji("fontSize"),getFontFamily:k.compose(function(e){return e.replace(/[\'\"\\]/g,"").replace(/,\s+/g,",")},Ji("fontFamily")),toPt:function(e,t){return/[0-9.]+px$/.test(e)?(n=72*parseInt(e,10)/96,i=t||0,r=Math.pow(10,i),Math.round(n*r)/r+"pt"):e;var n,i,r}},Ki=function(e){return e?e.split(",")[0]:""},Zi=function(e,t){return function(){var n=this;e.on("init nodeChange",function(i){var r,o,s,l=Gi.getFontFamily(e.getBody(),i.element),u=(r=t,o=l,a.each(r,function(e){e.value.toLowerCase()===o.toLowerCase()&&(s=e.value)}),a.each(r,function(e){s||Ki(e.value).toLowerCase()!==Ki(o).toLowerCase()||(s=e.value)}),s);n.value(u||null),!u&&l&&n.text(Ki(l))})}},Qi=function(e){e.addButton("fontselect",function(){var t,n=(t=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(e.settings.font_formats||"Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),a.map(t,function(e){return{text:{raw:e[0]},value:e[1],textStyle:-1===e[1].indexOf("dings")?"font-family:"+e[1]:""}}));return{type:"listbox",text:"Font Family",tooltip:"Font Family",values:n,fixedWidth:!0,onPostRender:Zi(e,n),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}})},er=function(e){Qi(e)},tr=function(e,t,n){var i;return a.each(e,function(e){e.value===n?i=n:e.value===t&&(i=t)}),i},nr=function(e){e.addButton("fontsizeselect",function(){var t,n,i,r=(t=e.settings.fontsize_formats||"8pt 10pt 12pt 14pt 18pt 24pt 36pt",a.map(t.split(" "),function(e){var t=e,n=e,i=e.split("=");return i.length>1&&(t=i[0],n=i[1]),{text:t,value:n}}));return{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:r,fixedWidth:!0,onPostRender:(n=e,i=r,function(){var e=this;n.on("init nodeChange",function(t){var r,o,s,a;if(r=Gi.getFontSize(n.getBody(),t.element))for(s=3;!a&&s>=0;s--)o=Gi.toPt(r,s),a=tr(i,o,r);e.value(a||null),a||e.text(o)})}),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}})},ir=function(e){nr(e)},rr=function(e,t){var n=t.length;return a.each(t,function(t){t.menu&&(t.hidden=0===rr(e,t.menu));var i=t.format;i&&(t.hidden=!e.formatter.canApply(i)),t.hidden&&n--}),n},or=function(e,t){var n=t.items().length;return t.items().each(function(t){t.menu&&t.visible(or(e,t.menu)>0),!t.menu&&t.settings.menu&&t.visible(rr(e,t.settings.menu)>0);var i=t.settings.format;i&&t.visible(e.formatter.canApply(i)),t.visible()||n--}),n},sr=function(e){var t,n,i,r,o,s,l,u,c=(n=0,i=[],r=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}],o=function(e){var t=[];if(e)return a.each(e,function(e){var r={text:e.title,icon:e.icon};if(e.items)r.menu=o(e.items);else{var s=e.format||"custom"+n++;e.format||(e.name=s,i.push(e)),r.format=s,r.cmd=e.cmd}t.push(r)}),t},(t=e).on("init",function(){a.each(i,function(e){t.formatter.register(e.name,e)})}),{type:"menu",items:t.settings.style_formats_merge?t.settings.style_formats?o(r.concat(t.settings.style_formats)):o(r):o(t.settings.style_formats||r),onPostRender:function(e){t.fire("renderFormatsMenu",{control:e.control})},itemDefaults:{preview:!0,textStyle:function(){if(this.settings.format)return t.formatter.getCssText(this.settings.format)},onPostRender:function(){var e=this;e.parent().on("show",function(){var n,i;(n=e.settings.format)&&(e.disabled(!t.formatter.canApply(n)),e.active(t.formatter.match(n))),(i=e.settings.cmd)&&e.active(t.queryCommandState(i))})},onclick:function(){this.settings.format&&qi(t,this.settings.format)(),this.settings.cmd&&t.execCommand(this.settings.cmd)}}});s=c,e.addMenuItem("formats",{text:"Formats",menu:s}),u=c,(l=e).addButton("styleselect",{type:"menubutton",text:"Formats",menu:u,onShowMenu:function(){l.settings.style_formats_autohide&&or(l,this.menu)}})},ar=function(e,t){return function(){var n,i,r,o=[];return a.each(t,function(t){o.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:t[0][0],values:o,fixedWidth:!0,onselect:function(t){if(t.control){var n=t.control.value();qi(e,n)()}},onPostRender:(n=e,i=o,function(){var e=this;n.on("nodeChange",function(t){var o=n.formatter,s=null;a.each(t.parents,function(e){if(a.each(i,function(t){if(r?o.matchNode(e,r,{value:t.value})&&(s=t.value):o.matchNode(e,t.value)&&(s=t.value),s)return!1}),s)return!1}),e.value(s)})})}}},lr=function(e){var t,n,i=function(e){for(var t=(e=e.replace(/;$/,"").split(";")).length;t--;)e[t]=e[t].split("=");return e}(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");e.addMenuItem("blockformats",{text:"Blocks",menu:(t=e,n=i,a.map(n,function(e){return{text:e[0],onclick:qi(t,e[1]),textStyle:function(){return t.formatter.getCssText(e[1])}}}))}),e.addButton("formatselect",ar(e,i))},ur=function(e,t){var n,i;if("string"==typeof t)i=t.split(" ");else if(a.isArray(t))return ee.flatten(a.map(t,function(t){return ur(e,t)}));return n=a.grep(i,function(t){return"|"===t||t in e.menuItems}),a.map(n,function(t){return"|"===t?{text:"-"}:e.menuItems[t]})},cr=function(e){return e&&"-"===e.text},dr=function(e){var t=ee.filter(e,function(e,t,n){return!cr(e)||!cr(n[t-1])});return ee.filter(t,function(e,t,n){return!cr(e)||t>0&&t<n.length-1})},fr=function(e){var t,n,i,r,o=e.settings.insert_button_items;return dr(o?ur(e,o):(t=e,n="insert",i=[{text:"-"}],r=a.grep(t.menuItems,function(e){return e.context===n}),a.each(r,function(e){"before"===e.separator&&i.push({text:"|"}),e.prependToContext?i.unshift(e):i.push(e),"after"===e.separator&&i.push({text:"|"})}),i))},hr=function(e){var t;(t=e).addButton("insert",{type:"menubutton",icon:"insert",menu:[],oncreatemenu:function(){this.menu.add(fr(t)),this.menu.renderNew()}})},mr=function(e){var t,n,i;t=e,a.each({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(e,n){t.addButton(n,{active:!1,tooltip:e,onPostRender:$i(t,n),onclick:qi(t,n)})}),n=e,a.each({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"],removeformat:["Clear formatting","RemoveFormat"],remove:["Remove","Delete"]},function(e,t){n.addButton(t,{tooltip:e[0],cmd:e[1]})}),i=e,a.each({blockquote:["Blockquote","mceBlockQuote"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"]},function(e,t){i.addButton(t,{active:!1,tooltip:e[0],cmd:e[1],onPostRender:$i(i,t)})})},gr=function(e){var t;mr(e),t=e,a.each({bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline","Meta+U"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"],newdocument:["New document","mceNewDocument"],cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"]},function(e,n){t.addMenuItem(n,{text:e[0],icon:n,shortcut:e[2],cmd:e[1]})}),t.addMenuItem("codeformat",{text:"Code",icon:"code",onclick:qi(t,"code")})},pr=function(e,t){return function(){var n=this,i=function(){var n="redo"===t?"hasRedo":"hasUndo";return!!e.undoManager&&e.undoManager[n]()};n.disabled(!i()),e.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode",function(){n.disabled(e.readonly||!i())})}},vr=function(e){var t,n;(t=e).addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:pr(t,"undo"),cmd:"undo"}),t.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:pr(t,"redo"),cmd:"redo"}),(n=e).addButton("undo",{tooltip:"Undo",onPostRender:pr(n,"undo"),cmd:"undo"}),n.addButton("redo",{tooltip:"Redo",onPostRender:pr(n,"redo"),cmd:"redo"})},br=function(e){var t,n;(t=e).addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:(n=t,function(){var e=this;n.on("VisualAid",function(t){e.active(t.hasVisual)}),e.active(n.hasVisual)}),cmd:"mceToggleVisualAid"})},yr={setup:function(e){var t;e.rtl&&(ot.rtl=!0),e.on("mousedown",function(){kt.hideAll()}),(t=e).settings.ui_container&&(de.container=Yi(pn.fromDom(document.body),t.settings.ui_container).fold(k.constant(null),function(e){return e.dom()})),Dt.tooltips=!de.iOS,ot.translate=function(e){return s.translate(e)},lr(e),Xi(e),gr(e),vr(e),ir(e),er(e),sr(e),br(e),hr(e)}},xr=$t.extend({recalc:function(e){var t,n,i,r,o,s,a,l,u,c,d,f,h,m,g,p,v,b,y,x,w,_,R,C,k,E,H,S,M=[],T=[];t=e.settings,r=e.items().filter(":visible"),o=e.layoutRect(),i=t.columns||Math.ceil(Math.sqrt(r.length)),n=Math.ceil(r.length/i),b=t.spacingH||t.spacing||0,y=t.spacingV||t.spacing||0,x=t.alignH||t.align,w=t.alignV||t.align,p=e.paddingBox,S="reverseRows"in t?t.reverseRows:e.isRtl(),x&&"string"==typeof x&&(x=[x]),w&&"string"==typeof w&&(w=[w]);for(d=0;d<i;d++)M.push(0);for(f=0;f<n;f++)T.push(0);for(f=0;f<n;f++)for(d=0;d<i&&(c=r[f*i+d]);d++)C=(u=c.layoutRect()).minW,k=u.minH,M[d]=C>M[d]?C:M[d],T[f]=k>T[f]?k:T[f];for(E=o.innerW-p.left-p.right,_=0,d=0;d<i;d++)_+=M[d]+(d>0?b:0),E-=(d>0?b:0)+M[d];for(H=o.innerH-p.top-p.bottom,R=0,f=0;f<n;f++)R+=T[f]+(f>0?y:0),H-=(f>0?y:0)+T[f];if(_+=p.left+p.right,R+=p.top+p.bottom,(l={}).minW=_+(o.w-o.innerW),l.minH=R+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW===o.minW&&l.minH===o.minH){var P;o.autoResize&&((l=e.layoutRect(l)).contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH),P="start"===t.packV?0:H>0?Math.floor(H/n):0;var W=0,D=t.flexWidths;if(D)for(d=0;d<D.length;d++)W+=D[d];else W=i;var N=E/W;for(d=0;d<i;d++)M[d]+=D?D[d]*N:N;for(m=p.top,f=0;f<n;f++){for(h=p.left,a=T[f]+P,d=0;d<i&&(c=r[S?f*i+i-1-d:f*i+d]);d++)g=c.settings,u=c.layoutRect(),s=Math.max(M[d],u.startMinWidth),u.x=h,u.y=m,"center"===(v=g.alignH||(x?x[d]||x[0]:null))?u.x=h+s/2-u.w/2:"right"===v?u.x=h+s-u.w:"stretch"===v&&(u.w=s),"center"===(v=g.alignV||(w?w[d]||w[0]:null))?u.y=m+a/2-u.h/2:"bottom"===v?u.y=m+a-u.h:"stretch"===v&&(u.h=a),c.layoutRect(u),h+=s+b,c.recalc&&c.recalc();m+=a+y}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var A=e.parent();A&&(A._lastRect=null,A.recalc())}}}),wr=Dt.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,i=this.getEl().contentWindow.document.body;return i?(i.innerHTML=e,t&&t()):R.setTimeout(function(){n.html(e)}),this}}),_r=Dt.extend({init:function(e){this._super(e),this.classes.add("widget").add("infobox"),this.canFocus=!1},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},help:function(e){this.state.set("help",e)},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+e.encode(e.state.get("text"))+'<button role="button" tabindex="-1"><i class="'+t+"ico "+t+'i-help"></i></button></div></div>'},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl("body").firstChild.data=e.encode(t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e.state.on("change:help",function(t){e.classes.toggle("has-help",t.value),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Rr=Dt.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,t=e._super();return e.settings.multiline&&(_e.getSize(e.getEl()).width>t.maxW&&(t.minW=t.maxW,e.classes.add("multiline")),e.getEl().style.width=t.minW+"px",t.startMinH=t.h=t.minH=Math.min(t.maxH,_e.getSize(e.getEl()).height)),t},repaint:function(){return this.settings.multiline||(this.getEl().style.lineHeight=this.layoutRect().h+"px"),this._super()},severity:function(e){this.classes.remove("error"),this.classes.remove("warning"),this.classes.remove("success"),this.classes.add(e)},renderHtml:function(){var e,t,n=this,i=n.settings.forId,r=n.settings.html?n.settings.html:n.encode(n.state.get("text"));return!i&&(t=n.settings.forName)&&(e=n.getRoot().find("#"+t)[0])&&(i=e._id),i?'<label id="'+n._id+'" class="'+n.classes+'"'+(i?' for="'+i+'"':"")+">"+r+"</label>":'<span id="'+n._id+'" class="'+n.classes+'">'+r+"</span>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value)),e.state.get("rendered")&&e.updateLayoutRect()}),e._super()}}),Cr=ut.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){this._super(e),this.classes.add("toolbar")},postRender:function(){return this.items().each(function(e){e.classes.add("toolbar-item")}),this._super()}}),kr=Cr.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}}),Er=Xt.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(e){var t,n=this;if(n.menu&&n.menu.visible()&&!1!==e)return n.hideMenu();n.menu||(t=n.state.get("menu")||[],n.classes.add("opened"),t.length?t={type:"menu",animate:!0,items:t}:(t.type=t.type||"menu",t.animate=!0),t.renderTo?n.menu=t.parent(n).show().renderTo():n.menu=g.create(t).parent(n).renderTo(),n.fire("createmenu"),n.menu.reflow(),n.menu.on("cancel",function(e){e.control.parent()===n.menu&&(e.stopPropagation(),n.focus(),n.hideMenu())}),n.menu.on("select",function(){n.focus()}),n.menu.on("show hide",function(e){e.control===n.menu&&(n.activeMenu("show"===e.type),n.classes.toggle("opened","show"===e.type)),n.aria("expanded","show"===e.type)}).fire("show")),n.menu.show(),n.menu.layoutRect({w:n.layoutRect().w}),n.menu.repaint(),n.menu.moveRel(n.getEl(),n.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]),n.fire("showmenu")},hideMenu:function(){this.menu&&(this.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),this.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e,t=this,n=t._id,i=t.classPrefix,r=t.settings.icon,o=t.state.get("text"),s="";return(e=t.settings.image)?(r="none","string"!=typeof e&&(e=window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o&&(t.classes.add("btn-has-text"),s='<span class="'+i+'txt">'+t.encode(o)+"</span>"),r=t.settings.icon?i+"ico "+i+"i-"+r:"",t.aria("role",t.parent()instanceof kr?"menuitem":"button"),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1" aria-labelledby="'+n+'"><button id="'+n+'-open" role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+e+"></i>":"")+s+' <i class="'+i+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}(t.target,e.getEl())&&(e.focus(),e.showMenu(!t.aria),t.aria&&e.menu.items().filter(":visible")[0].focus())}),e.on("mouseenter",function(t){var n,i=t.control,r=e.parent();i&&r&&i instanceof Er&&i.parent()===r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!==i&&(e.menu&&e.menu.visible()&&(n=!0),e.hideMenu())}),n&&(i.focus(),i.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}}),Hr=kt.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){if(e.autohide=!0,e.constrainToViewport=!0,"function"==typeof e.items&&(e.itemsFactory=e.items,e.items=[]),e.itemDefaults)for(var t=e.items,n=t.length;n--;)t[n]=a.extend({},e.itemDefaults,t[n]);this._super(e),this.classes.add("menu"),e.animate&&11!==de.ie&&this.classes.add("animate")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){this.hideAll(),this.fire("select")},load:function(){var e,t=this;function n(){t.throbber&&(t.throbber.hide(),t.throbber=null)}t.settings.itemsFactory&&(t.throbber||(t.throbber=new Mt(t.getEl("body"),!0),0===t.items().length?(t.throbber.show(),t.fire("loading")):t.throbber.show(100,function(){t.items().remove(),t.fire("loading")}),t.on("hide close",n)),t.requestTime=e=(new Date).getTime(),t.settings.itemsFactory(function(i){0!==i.length?t.requestTime===e&&(t.getEl().style.width="",t.getEl("body").style.width="",n(),t.items().remove(),t.getEl("body").innerHTML="",t.add(i),t.renderNew(),t.fire("loaded")):t.hide()}))},hideAll:function(){return this.find("menuitem").exec("hideMenu"),this._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;if(n.icon||n.image||n.selectable)return e._hasIcons=!0,!1}),e.settings.itemsFactory&&e.on("postrender",function(){e.settings.itemsFactory&&e.load()}),e.on("show hide",function(t){t.control===e&&("show"===t.type?R.setTimeout(function(){e.classes.add("in")},0):e.classes.remove("in"))}),e._super()}}),Sr=Er.extend({init:function(e){var t,n,i,r,o=this;o._super(e),e=o.settings,o._values=t=e.values,t&&("undefined"!=typeof e.value&&function s(t){for(var r=0;r<t.length;r++){if(n=t[r].selected||e.value===t[r].value)return i=i||t[r].text,o.state.set("value",t[r].value),!0;if(t[r].menu&&s(t[r].menu))return!0}}(t),!n&&t.length>0&&(i=t[0].text,o.state.set("value",t[0].value)),o.state.set("menu",t)),o.state.set("text",e.text||i),o.classes.add("listbox"),o.on("select",function(t){var n=t.control;r&&(t.lastControl=r),e.multiple?n.active(!n.active()):o.value(t.control.value()),r=n})},bindStates:function(){var e=this;return e.on("show",function(t){var n,i;n=t.control,i=e.value(),n instanceof Hr&&n.items().each(function(e){e.hasMenus()||e.active(e.value()===i)})}),e.state.on("change:value",function(t){var n=function i(e,t){var n;if(e)for(var r=0;r<e.length;r++){if(e[r].value===t)return e[r];if(e[r].menu&&(n=i(e[r].menu,t)))return n}}(e.state.get("menu"),t.value);n?e.text(n.text):e.text(e.settings.text)}),e._super()}}),Mr=Dt.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t,n=this;n._super(e),e=n.settings,n.classes.add("menu-item"),e.menu&&n.classes.add("menu-item-expand"),e.preview&&n.classes.add("menu-item-preview"),"-"!==(t=n.state.get("text"))&&"|"!==t||(n.classes.add("menu-item-sep"),n.aria("role","separator"),n.state.set("text","-")),e.selectable&&(n.aria("role","menuitemcheckbox"),n.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||n.classes.add("menu-item-normal"),n.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&n.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e,t=this,n=t.settings,i=t.parent();if(i.items().each(function(e){e!==t&&e.hideMenu()}),n.menu){(e=t.menu)?e.show():((e=n.menu).length?e={type:"menu",items:e}:e.type=e.type||"menu",i.settings.itemDefaults&&(e.itemDefaults=i.settings.itemDefaults),(e=t.menu=g.create(e).parent(t).renderTo()).reflow(),e.on("cancel",function(n){n.stopPropagation(),t.focus(),e.hide()}),e.on("show hide",function(e){e.control.items&&e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),e.on("hide",function(n){n.control===e&&t.classes.remove("selected")}),e.submenu=!0),e._parentMenu=i,e.classes.add("menu-sub");var r=e.testMoveRel(t.getEl(),t.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);e.moveRel(t.getEl(),r),e.rel=r,r="menu-sub-"+r,e.classes.remove(e._lastRel).add(r),e._lastRel=r,t.classes.add("selected"),t.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){var e,t=this,n=t._id,i=t.settings,r=t.classPrefix,o=t.state.get("text"),s=t.settings.icon,a="",l=i.shortcut,u=t.encode(i.url);function c(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function d(e){var t=i.match||"";return t?e.replace(new RegExp(c(t),"gi"),function(e){return"!mce~match["+e+"]mce~match!"}):e}function f(e){return e.replace(new RegExp(c("!mce~match["),"g"),"<b>").replace(new RegExp(c("]mce~match!"),"g"),"</b>")}return s&&t.parent().classes.add("menu-has-icons"),i.image&&(a=" style=\"background-image: url('"+i.image+"')\""),l&&(l=function(e){var t,n,i={};for(i=de.mac?{alt:"⌥",ctrl:"⌘",shift:"⇧",meta:"⌘"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)(n=i[e[t].toLowerCase()])&&(e[t]=n);return e.join("+")}(l)),s=r+"ico "+r+"i-"+(t.settings.icon||"none"),e="-"!==o?'<i class="'+s+'"'+a+"></i>\xa0":"",o=f(t.encode(d(o))),u=f(t.encode(d(u))),'<div id="'+n+'" class="'+t.classes+'" tabindex="-1">'+e+("-"!==o?'<span id="'+n+'-text" class="'+r+'text">'+o+"</span>":"")+(l?'<div id="'+n+'-shortcut" class="'+r+'menu-shortcut">'+l+"</div>":"")+(i.menu?'<div class="'+r+'caret"></div>':"")+(u?'<div class="'+r+'menu-item-link">'+u+"</div>":"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var i=e.getEl("text");i&&(i.setAttribute("style",n),e._textStyle=n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),R.requestAnimationFrame(function(){e.parent().hideAll()})))}),e._super(),e},hover:function(){return this.parent().items().each(function(e){e.classes.remove("selected")}),this.classes.toggle("selected",!0),this},active:function(e){return function(e,t){var n=e._textStyle;if(n){var i=e.getEl("text");i.setAttribute("style",n),t&&(i.style.color="",i.style.backgroundColor="")}}(this,e),void 0!==e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}}),Tr=Kt.extend({Defaults:{classes:"radio",role:"radio"}}),Pr=Dt.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"===e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new dt(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!==e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}});function Wr(e){var t="";if(e)for(var n=0;n<e.length;n++)t+='<option value="'+e[n]+'">'+e[n]+"</option>";return t}var Dr=Dt.extend({Defaults:{classes:"selectbox",role:"selectbox",options:[]},init:function(e){var t=this;t._super(e),t.settings.size&&(t.size=t.settings.size),t.settings.options&&(t._options=t.settings.options),t.on("keydown",function(e){var n;13===e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))})},options:function(e){return arguments.length?(this.state.set("options",e),this):this.state.get("options")},renderHtml:function(){var e,t=this,n="";return e=Wr(t._options),t.size&&(n=' size = "'+t.size+'"'),'<select id="'+t._id+'" class="'+t.classes+'"'+n+">"+e+"</select>"},bindStates:function(){var e=this;return e.state.on("change:options",function(t){e.getEl().innerHTML=Wr(t.value)}),e._super()}});function Nr(e,t,n){return e<t&&(e=t),e>n&&(e=n),e}function Ar(e,t,n){e.setAttribute("aria-"+t,n)}function Br(e,t){var n,i,r,o,s;"v"===e.settings.orientation?(r="top",i="height",n="h"):(r="left",i="width",n="w"),s=e.getEl("handle"),o=((e.layoutRect()[n]||100)-_e.getSize(s)[i])*((t-e._minValue)/(e._maxValue-e._minValue))+"px",s.style[r]=o,s.style.height=e.layoutRect().h+"px",Ar(s,"valuenow",t),Ar(s,"valuetext",""+e.settings.previewFilter(t)),Ar(s,"valuemin",e._minValue),Ar(s,"valuemax",e._maxValue)}var Or=Dt.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"===e.orientation&&t.classes.add("vertical"),t._minValue=Pn.isNumber(e.minValue)?e.minValue:0,t._maxValue=Pn.isNumber(e.maxValue)?e.maxValue:100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this._id,t=this.classPrefix;return'<div id="'+e+'" class="'+this.classes+'"><div id="'+e+'-handle" class="'+t+'slider-handle" role="slider" tabindex="-1"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var e,t,n,i,r,o,s,a,l,u,c,d,f,h,m=this;e=m._minValue,t=m._maxValue,"v"===m.settings.orientation?(n="screenY",i="top",r="height",o="h"):(n="screenX",i="left",r="width",o="w"),m._super(),function(e,t){function n(n){var i,r,o;i=Nr(i=(((i=m.value())+(o=e))/(t-o)+.05*n)*(t-(r=e))-r,e,t),m.value(i),m.fire("dragstart",{value:i}),m.fire("drag",{value:i}),m.fire("dragend",{value:i})}m.on("keydown",function(e){switch(e.keyCode){case 37:case 38:n(-1);break;case 39:case 40:n(1)}})}(e,t),s=e,a=t,l=m.getEl("handle"),m._dragHelper=new dt(m._id,{handle:m._id+"-handle",start:function(e){u=e[n],c=parseInt(m.getEl("handle").style[i],10),d=(m.layoutRect()[o]||100)-_e.getSize(l)[r],m.fire("dragstart",{value:h})},drag:function(e){var t=e[n]-u;f=Nr(c+t,0,d),l.style[i]=f+"px",h=s+f/d*(a-s),m.value(h),m.tooltip().text(""+m.settings.previewFilter(h)).show().moveRel(l,"bc tc"),m.fire("drag",{value:h})},stop:function(){m.tooltip().hide(),m.fire("dragend",{value:h})}})},repaint:function(){this._super(),Br(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){Br(e,t.value)}),e._super()}}),zr=Dt.extend({renderHtml:function(){return this.classes.add("spacer"),this.canFocus=!1,'<div id="'+this._id+'" class="'+this.classes+'"></div>'}}),Lr=Er.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e,t,n=this.getEl(),i=this.layoutRect();return this._super(),e=n.firstChild,t=n.lastChild,xe(e).css({width:i.w-_e.getSize(t).width,height:i.h-2}),xe(t).css({height:i.h-2}),this},activeMenu:function(e){xe(this.getEl().lastChild).toggleClass(this.classPrefix+"active",e)},renderHtml:function(){var e,t,n=this,i=n._id,r=n.classPrefix,o=n.state.get("icon"),s=n.state.get("text"),a=n.settings,l="";return(e=a.image)?(o="none","string"!=typeof e&&(e=window.getSelection?e[0]:e[1]),e=" style=\"background-image: url('"+e+"')\""):e="",o=a.icon?r+"ico "+r+"i-"+o:"",s&&(n.classes.add("btn-has-text"),l='<span class="'+r+'txt">'+n.encode(s)+"</span>"),t="boolean"==typeof a.active?' aria-pressed="'+a.active+'"':"",'<div id="'+i+'" class="'+n.classes+'" role="button"'+t+' tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(o?'<i class="'+o+'"'+e+"></i>":"")+l+'</button><button type="button" class="'+r+'open" hidefocus="1" tabindex="-1">'+(n._menuBtnText?(o?"\xa0":"")+n._menuBtnText:"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this.settings.onclick;return this.on("click",function(t){var n=t.target;if(t.control===this)for(;n;){if(t.aria&&"down"!==t.aria.key||"BUTTON"===n.nodeName&&-1===n.className.indexOf("open"))return t.stopImmediatePropagation(),void(e&&e.call(this,t));n=n.parentNode}}),delete this.settings.onclick,this._super()}}),Ir=ji.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}}),Fr=vt.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var t;this.activeTabId&&(t=this.getEl(this.activeTabId),xe(t).removeClass(this.classPrefix+"active"),t.setAttribute("aria-selected","false")),this.activeTabId="t"+e,(t=this.getEl("t"+e)).setAttribute("aria-selected","true"),xe(t).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!==n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",i=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,r){var o=e._id+"-t"+r;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+i+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+i+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(n&&n.id===e._id+"-head")for(var i=n.childNodes.length;i--;)n.childNodes[i]===t.target&&e.activateTab(i)})},initLayoutRect:function(){var e,t,n,i=this;t=(t=_e.getSize(i.getEl("head")).width)<0?0:t,n=0,i.items().each(function(e){t=Math.max(t,e.layoutRect().minW),n=Math.max(n,e.layoutRect().minH)}),i.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=t,e.settings.h=n,e.layoutRect({x:0,y:0,w:t,h:n})});var r=_e.getSize(i.getEl("head")).height;return i.settings.minWidth=t,i.settings.minHeight=n+r,(e=i._super()).deltaH+=r,e.innerH=e.h-e.deltaH,e}}),Ur=Dt.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13===e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){if(e.toJSON)return n=e,!1}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e,t,n,i,r,o=this,s=0;e=o.getEl().style,t=o._layoutRect,r=o._lastRepaintRect||{};var a=document;return!o.settings.multiline&&a.all&&(!a.documentMode||a.documentMode<=8)&&(e.lineHeight=t.h-s+"px"),i=(n=o.borderBox).left+n.right+8,s=n.top+n.bottom+(o.settings.multiline?8:0),t.x!==r.x&&(e.left=t.x+"px",r.x=t.x),t.y!==r.y&&(e.top=t.y+"px",r.y=t.y),t.w!==r.w&&(e.width=t.w-i+"px",r.w=t.w),t.h!==r.h&&(e.height=t.h-s+"px",r.h=t.h),o._lastRepaintRect=r,o.fire("repaint",{},!1),o},renderHtml:function(){var e,t,n=this,i=n.settings;return e={id:n._id,hidefocus:"1"},a.each(["rows","spellcheck","maxLength","size","readonly","min","max","step","list","pattern","placeholder","required","multiple"],function(t){e[t]=i[t]}),n.disabled()&&(e.disabled="disabled"),i.subtype&&(e.type=i.subtype),(t=_e.create(i.multiline?"textarea":"input",e)).value=n.state.get("value"),t.className=n.classes,t.outerHTML},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e.getEl().value=e.state.get("value"),e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!==t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}}),Vr=function(){return{Selector:Fe,Collection:je,ReflowQueue:Ze,Control:ot,Factory:g,KeyboardNavigation:at,Container:ut,DragHelper:dt,Scrollable:pt,Panel:vt,Movable:Se,Resizable:bt,FloatPanel:kt,Window:Ut,MessageBox:jt,Tooltip:Wt,Widget:Dt,Progress:Nt,Notification:Bt,Layout:qt,AbsoluteLayout:$t,Button:Xt,ButtonGroup:Gt,Checkbox:Kt,ComboBox:Qt,ColorBox:en,PanelButton:tn,ColorButton:rn,ColorPicker:sn,Path:ln,ElementPath:un,FormItem:cn,Form:dn,FieldSet:fn,FilePicker:Fi,FitLayout:Ui,FlexLayout:Vi,FlowLayout:ji,FormatControls:yr,GridLayout:xr,Iframe:wr,InfoBox:_r,Label:Rr,Toolbar:Cr,MenuBar:kr,MenuButton:Er,MenuItem:Mr,Throbber:Mt,Menu:Hr,ListBox:Sr,Radio:Tr,ResizeHandle:Pr,SelectBox:Dr,Slider:Or,Spacer:zr,SplitButton:Lr,StackLayout:Ir,TabPanel:Fr,TextBox:Ur,DropZone:an,BrowseButton:Jt}},jr=function(e){e.ui?a.each(Vr(),function(t,n){e.ui[n]=t}):e.ui=Vr()};a.each(Vr(),function(e,t){g.add(t,e)}),jr(window.tinymce?window.tinymce:{}),o.add("modern",function(e){return yr.setup(e),Yt(e)})}(); diff --git a/public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js.gz b/public/assets/tinymce/themes/modern/theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..605067029d56db6863bfa8da482f24c17ff57ee4 GIT binary patch literal 43134 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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/themes/modern/theme.js b/public/assets/tinymce/themes/modern/theme.js index 57383d89b..1525fcadd 120000 --- a/public/assets/tinymce/themes/modern/theme.js +++ b/public/assets/tinymce/themes/modern/theme.js @@ -1 +1 @@ -theme-1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e.js \ No newline at end of file +theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js \ No newline at end of file diff --git a/public/assets/tinymce/themes/modern/theme.js.gz b/public/assets/tinymce/themes/modern/theme.js.gz index 9ae2511d3..0001e4d25 120000 --- a/public/assets/tinymce/themes/modern/theme.js.gz +++ b/public/assets/tinymce/themes/modern/theme.js.gz @@ -1 +1 @@ -theme-1264a4f7fa62c114e186cefe8cf04d61a922a983615e2c19197a60f4a59ec24e.js.gz \ No newline at end of file +theme-356a215d1163245a5deba410bcbf9af2b62a1960298a453bb1d974ed324f11f2.js.gz \ No newline at end of file diff --git a/public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js b/public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js new file mode 100644 index 000000000..490bc84f0 --- /dev/null +++ b/public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js @@ -0,0 +1,26106 @@ +// 4.7.9 (2018-02-27) +(function () { +(function () { + 'use strict'; + + var noop = function () { + }; + var noarg = function (f) { + return function () { + return f(); + }; + }; + var compose = function (fa, fb) { + return function () { + return fa(fb.apply(null, arguments)); + }; + }; + var constant = function (value) { + return function () { + return value; + }; + }; + var identity = function (x) { + return x; + }; + var tripleEquals = function (a, b) { + return a === b; + }; + var curry = function (f) { + var args = new Array(arguments.length - 1); + for (var i = 1; i < arguments.length; i++) + args[i - 1] = arguments[i]; + return function () { + var newArgs = new Array(arguments.length); + for (var j = 0; j < newArgs.length; j++) + newArgs[j] = arguments[j]; + var all = args.concat(newArgs); + return f.apply(null, all); + }; + }; + var not = function (f) { + return function () { + return !f.apply(null, arguments); + }; + }; + var die = function (msg) { + return function () { + throw new Error(msg); + }; + }; + var apply = function (f) { + return f(); + }; + var call = function (f) { + f(); + }; + var never = constant(false); + var always = constant(true); + var $_enfhkv6je5o2ply = { + noop: noop, + noarg: noarg, + compose: compose, + constant: constant, + identity: identity, + tripleEquals: tripleEquals, + curry: curry, + not: not, + die: die, + apply: apply, + call: call, + never: never, + always: always + }; + + var never$1 = $_enfhkv6je5o2ply.never; + var always$1 = $_enfhkv6je5o2ply.always; + var none = function () { + return NONE; + }; + var NONE = function () { + var eq = function (o) { + return o.isNone(); + }; + var call = function (thunk) { + return thunk(); + }; + var id = function (n) { + return n; + }; + var noop = function () { + }; + var me = { + fold: function (n, s) { + return n(); + }, + is: never$1, + isSome: never$1, + isNone: always$1, + getOr: id, + getOrThunk: call, + getOrDie: function (msg) { + throw new Error(msg || 'error: getOrDie called on none.'); + }, + or: id, + orThunk: call, + map: none, + ap: none, + each: noop, + bind: none, + flatten: none, + exists: never$1, + forall: always$1, + filter: none, + equals: eq, + equals_: eq, + toArray: function () { + return []; + }, + toString: $_enfhkv6je5o2ply.constant('none()') + }; + if (Object.freeze) + Object.freeze(me); + return me; + }(); + var some = function (a) { + var constant_a = function () { + return a; + }; + var self = function () { + return me; + }; + var map = function (f) { + return some(f(a)); + }; + var bind = function (f) { + return f(a); + }; + var me = { + fold: function (n, s) { + return s(a); + }, + is: function (v) { + return a === v; + }, + isSome: always$1, + isNone: never$1, + getOr: constant_a, + getOrThunk: constant_a, + getOrDie: constant_a, + or: self, + orThunk: self, + map: map, + ap: function (optfab) { + return optfab.fold(none, function (fab) { + return some(fab(a)); + }); + }, + each: function (f) { + f(a); + }, + bind: bind, + flatten: constant_a, + exists: bind, + forall: bind, + filter: function (f) { + return f(a) ? me : NONE; + }, + equals: function (o) { + return o.is(a); + }, + equals_: function (o, elementEq) { + return o.fold(never$1, function (b) { + return elementEq(a, b); + }); + }, + toArray: function () { + return [a]; + }, + toString: function () { + return 'some(' + a + ')'; + } + }; + return me; + }; + var from = function (value) { + return value === null || value === undefined ? NONE : some(value); + }; + var Option = { + some: some, + none: none, + from: from + }; + + var rawIndexOf = function () { + var pIndexOf = Array.prototype.indexOf; + var fastIndex = function (xs, x) { + return pIndexOf.call(xs, x); + }; + var slowIndex = function (xs, x) { + return slowIndexOf(xs, x); + }; + return pIndexOf === undefined ? slowIndex : fastIndex; + }(); + var indexOf = function (xs, x) { + var r = rawIndexOf(xs, x); + return r === -1 ? Option.none() : Option.some(r); + }; + var contains = function (xs, x) { + return rawIndexOf(xs, x) > -1; + }; + var exists = function (xs, pred) { + return findIndex(xs, pred).isSome(); + }; + var range = function (num, f) { + var r = []; + for (var i = 0; i < num; i++) { + r.push(f(i)); + } + return r; + }; + var chunk = function (array, size) { + var r = []; + for (var i = 0; i < array.length; i += size) { + var s = array.slice(i, i + size); + r.push(s); + } + return r; + }; + var map = function (xs, f) { + var len = xs.length; + var r = new Array(len); + for (var i = 0; i < len; i++) { + var x = xs[i]; + r[i] = f(x, i, xs); + } + return r; + }; + var each = function (xs, f) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + f(x, i, xs); + } + }; + var eachr = function (xs, f) { + for (var i = xs.length - 1; i >= 0; i--) { + var x = xs[i]; + f(x, i, xs); + } + }; + var partition = function (xs, pred) { + var pass = []; + var fail = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var arr = pred(x, i, xs) ? pass : fail; + arr.push(x); + } + return { + pass: pass, + fail: fail + }; + }; + var filter = function (xs, pred) { + var r = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + r.push(x); + } + } + return r; + }; + var groupBy = function (xs, f) { + if (xs.length === 0) { + return []; + } else { + var wasType = f(xs[0]); + var r = []; + var group = []; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + var type = f(x); + if (type !== wasType) { + r.push(group); + group = []; + } + wasType = type; + group.push(x); + } + if (group.length !== 0) { + r.push(group); + } + return r; + } + }; + var foldr = function (xs, f, acc) { + eachr(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var foldl = function (xs, f, acc) { + each(xs, function (x) { + acc = f(acc, x); + }); + return acc; + }; + var find = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return Option.some(x); + } + } + return Option.none(); + }; + var findIndex = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + if (pred(x, i, xs)) { + return Option.some(i); + } + } + return Option.none(); + }; + var slowIndexOf = function (xs, x) { + for (var i = 0, len = xs.length; i < len; ++i) { + if (xs[i] === x) { + return i; + } + } + return -1; + }; + var push = Array.prototype.push; + var flatten = function (xs) { + var r = []; + for (var i = 0, len = xs.length; i < len; ++i) { + if (!Array.prototype.isPrototypeOf(xs[i])) + throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs); + push.apply(r, xs[i]); + } + return r; + }; + var bind = function (xs, f) { + var output = map(xs, f); + return flatten(output); + }; + var forall = function (xs, pred) { + for (var i = 0, len = xs.length; i < len; ++i) { + var x = xs[i]; + if (pred(x, i, xs) !== true) { + return false; + } + } + return true; + }; + var equal = function (a1, a2) { + return a1.length === a2.length && forall(a1, function (x, i) { + return x === a2[i]; + }); + }; + var slice = Array.prototype.slice; + var reverse = function (xs) { + var r = slice.call(xs, 0); + r.reverse(); + return r; + }; + var difference = function (a1, a2) { + return filter(a1, function (x) { + return !contains(a2, x); + }); + }; + var mapToObject = function (xs, f) { + var r = {}; + for (var i = 0, len = xs.length; i < len; i++) { + var x = xs[i]; + r[String(x)] = f(x, i); + } + return r; + }; + var pure = function (x) { + return [x]; + }; + var sort = function (xs, comparator) { + var copy = slice.call(xs, 0); + copy.sort(comparator); + return copy; + }; + var head = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[0]); + }; + var last = function (xs) { + return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]); + }; + var $_bwcteb4je5o2pl4 = { + map: map, + each: each, + eachr: eachr, + partition: partition, + filter: filter, + groupBy: groupBy, + indexOf: indexOf, + foldr: foldr, + foldl: foldl, + find: find, + findIndex: findIndex, + flatten: flatten, + bind: bind, + forall: forall, + exists: exists, + contains: contains, + equal: equal, + reverse: reverse, + chunk: chunk, + difference: difference, + mapToObject: mapToObject, + pure: pure, + sort: sort, + range: range, + head: head, + last: last + }; + + var global = typeof window !== 'undefined' ? window : Function('return this;')(); + + var path = function (parts, scope) { + var o = scope !== undefined && scope !== null ? scope : global; + for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i) + o = o[parts[i]]; + return o; + }; + var resolve = function (p, scope) { + var parts = p.split('.'); + return path(parts, scope); + }; + var step = function (o, part) { + if (o[part] === undefined || o[part] === null) + o[part] = {}; + return o[part]; + }; + var forge = function (parts, target) { + var o = target !== undefined ? target : global; + for (var i = 0; i < parts.length; ++i) + o = step(o, parts[i]); + return o; + }; + var namespace = function (name, target) { + var parts = name.split('.'); + return forge(parts, target); + }; + var $_m1ooucje5o2ppc = { + path: path, + resolve: resolve, + forge: forge, + namespace: namespace + }; + + var unsafe = function (name, scope) { + return $_m1ooucje5o2ppc.resolve(name, scope); + }; + var getOrDie = function (name, scope) { + var actual = unsafe(name, scope); + if (actual === undefined || actual === null) + throw name + ' not available on this browser'; + return actual; + }; + var $_lmz5vbje5o2pp9 = { getOrDie: getOrDie }; + + var url = function () { + return $_lmz5vbje5o2pp9.getOrDie('URL'); + }; + var createObjectURL = function (blob) { + return url().createObjectURL(blob); + }; + var revokeObjectURL = function (u) { + url().revokeObjectURL(u); + }; + var $_g0v736aje5o2pp8 = { + createObjectURL: createObjectURL, + revokeObjectURL: revokeObjectURL + }; + + var nav = navigator; + var userAgent = nav.userAgent; + var opera; + var webkit; + var ie; + var ie11; + var ie12; + var gecko; + var mac; + var iDevice; + var android; + var fileApi; + var phone; + var tablet; + var windowsPhone; + var matchMediaQuery = function (query) { + return 'matchMedia' in window ? matchMedia(query).matches : false; + }; + opera = false; + android = /Android/.test(userAgent); + webkit = /WebKit/.test(userAgent); + ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName); + ie = ie && /MSIE (\w+)\./.exec(userAgent)[1]; + ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false; + ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false; + ie = ie || ie11 || ie12; + gecko = !webkit && !ie11 && /Gecko/.test(userAgent); + mac = userAgent.indexOf('Mac') !== -1; + iDevice = /(iPad|iPhone)/.test(userAgent); + fileApi = 'FormData' in window && 'FileReader' in window && 'URL' in window && !!$_g0v736aje5o2pp8.createObjectURL; + phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice); + tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice); + windowsPhone = userAgent.indexOf('Windows Phone') !== -1; + if (ie12) { + webkit = false; + } + var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534; + var $_9bd8pn9je5o2pp2 = { + opera: opera, + webkit: webkit, + ie: ie, + gecko: gecko, + mac: mac, + iOS: iDevice, + android: android, + contentEditable: contentEditable, + transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7', + caretAfter: ie !== 8, + range: window.getSelection && 'Range' in window, + documentMode: ie && !ie12 ? document.documentMode || 7 : 10, + fileApi: fileApi, + ceFalse: ie === false || ie > 8, + cacheSuffix: '', + container: null, + overrideViewPort: null, + experimentalShadowDom: false, + canHaveCSP: ie === false || ie > 11, + desktop: !phone && !tablet, + windowsPhone: windowsPhone + }; + + var promise = function () { + function bind(fn, thisArg) { + return function () { + fn.apply(thisArg, arguments); + }; + } + var isArray = Array.isArray || function (value) { + return Object.prototype.toString.call(value) === '[object Array]'; + }; + var Promise = function (fn) { + if (typeof this !== 'object') { + throw new TypeError('Promises must be constructed via new'); + } + if (typeof fn !== 'function') { + throw new TypeError('not a function'); + } + this._state = null; + this._value = null; + this._deferreds = []; + doResolve(fn, bind(resolve, this), bind(reject, this)); + }; + var asap = Promise.immediateFn || typeof setImmediate === 'function' && setImmediate || function (fn) { + setTimeout(fn, 1); + }; + function handle(deferred) { + var me = this; + if (this._state === null) { + this._deferreds.push(deferred); + return; + } + asap(function () { + var cb = me._state ? deferred.onFulfilled : deferred.onRejected; + if (cb === null) { + (me._state ? deferred.resolve : deferred.reject)(me._value); + return; + } + var ret; + try { + ret = cb(me._value); + } catch (e) { + deferred.reject(e); + return; + } + deferred.resolve(ret); + }); + } + function resolve(newValue) { + try { + if (newValue === this) { + throw new TypeError('A promise cannot be resolved with itself.'); + } + if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) { + var then = newValue.then; + if (typeof then === 'function') { + doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this)); + return; + } + } + this._state = true; + this._value = newValue; + finale.call(this); + } catch (e) { + reject.call(this, e); + } + } + function reject(newValue) { + this._state = false; + this._value = newValue; + finale.call(this); + } + function finale() { + for (var i = 0, len = this._deferreds.length; i < len; i++) { + handle.call(this, this._deferreds[i]); + } + this._deferreds = null; + } + function Handler(onFulfilled, onRejected, resolve, reject) { + this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null; + this.onRejected = typeof onRejected === 'function' ? onRejected : null; + this.resolve = resolve; + this.reject = reject; + } + function doResolve(fn, onFulfilled, onRejected) { + var done = false; + try { + fn(function (value) { + if (done) { + return; + } + done = true; + onFulfilled(value); + }, function (reason) { + if (done) { + return; + } + done = true; + onRejected(reason); + }); + } catch (ex) { + if (done) { + return; + } + done = true; + onRejected(ex); + } + } + Promise.prototype.catch = function (onRejected) { + return this.then(null, onRejected); + }; + Promise.prototype.then = function (onFulfilled, onRejected) { + var me = this; + return new Promise(function (resolve, reject) { + handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject)); + }); + }; + Promise.all = function () { + var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments); + return new Promise(function (resolve, reject) { + if (args.length === 0) { + return resolve([]); + } + var remaining = args.length; + function res(i, val) { + try { + if (val && (typeof val === 'object' || typeof val === 'function')) { + var then = val.then; + if (typeof then === 'function') { + then.call(val, function (val) { + res(i, val); + }, reject); + return; + } + } + args[i] = val; + if (--remaining === 0) { + resolve(args); + } + } catch (ex) { + reject(ex); + } + } + for (var i = 0; i < args.length; i++) { + res(i, args[i]); + } + }); + }; + Promise.resolve = function (value) { + if (value && typeof value === 'object' && value.constructor === Promise) { + return value; + } + return new Promise(function (resolve) { + resolve(value); + }); + }; + Promise.reject = function (value) { + return new Promise(function (resolve, reject) { + reject(value); + }); + }; + Promise.race = function (values) { + return new Promise(function (resolve, reject) { + for (var i = 0, len = values.length; i < len; i++) { + values[i].then(resolve, reject); + } + }); + }; + return Promise; + }; + var promiseObj = window.Promise ? window.Promise : promise(); + + var requestAnimationFramePromise; + var requestAnimationFrame = function (callback, element) { + var i, requestAnimationFrameFunc = window.requestAnimationFrame; + var vendors = [ + 'ms', + 'moz', + 'webkit' + ]; + var featurefill = function (callback) { + window.setTimeout(callback, 0); + }; + for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) { + requestAnimationFrameFunc = window[vendors[i] + 'RequestAnimationFrame']; + } + if (!requestAnimationFrameFunc) { + requestAnimationFrameFunc = featurefill; + } + requestAnimationFrameFunc(callback, element); + }; + var wrappedSetTimeout = function (callback, time) { + if (typeof time !== 'number') { + time = 0; + } + return setTimeout(callback, time); + }; + var wrappedSetInterval = function (callback, time) { + if (typeof time !== 'number') { + time = 1; + } + return setInterval(callback, time); + }; + var wrappedClearTimeout = function (id) { + return clearTimeout(id); + }; + var wrappedClearInterval = function (id) { + return clearInterval(id); + }; + var debounce = function (callback, time) { + var timer, func; + func = function () { + var args = arguments; + clearTimeout(timer); + timer = wrappedSetTimeout(function () { + callback.apply(this, args); + }, time); + }; + func.stop = function () { + clearTimeout(timer); + }; + return func; + }; + var $_db41wogje5o2ps3 = { + requestAnimationFrame: function (callback, element) { + if (requestAnimationFramePromise) { + requestAnimationFramePromise.then(callback); + return; + } + requestAnimationFramePromise = new promiseObj(function (resolve) { + if (!element) { + element = document.body; + } + requestAnimationFrame(resolve, element); + }).then(callback); + }, + setTimeout: wrappedSetTimeout, + setInterval: wrappedSetInterval, + setEditorTimeout: function (editor, callback, time) { + return wrappedSetTimeout(function () { + if (!editor.removed) { + callback(); + } + }, time); + }, + setEditorInterval: function (editor, callback, time) { + var timer; + timer = wrappedSetInterval(function () { + if (!editor.removed) { + callback(); + } else { + clearInterval(timer); + } + }, time); + return timer; + }, + debounce: debounce, + throttle: debounce, + clearInterval: wrappedClearInterval, + clearTimeout: wrappedClearTimeout + }; + + var eventExpandoPrefix = 'mce-data-'; + var mouseEventRe = /^(?:mouse|contextmenu)|click/; + var deprecated = { + keyLocation: 1, + layerX: 1, + layerY: 1, + returnValue: 1, + webkitMovementX: 1, + webkitMovementY: 1, + keyIdentifier: 1 + }; + var hasIsDefaultPrevented = function (event) { + return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse; + }; + var returnFalse = function () { + return false; + }; + var returnTrue = function () { + return true; + }; + var addEvent = function (target, name, callback, capture) { + if (target.addEventListener) { + target.addEventListener(name, callback, capture || false); + } else if (target.attachEvent) { + target.attachEvent('on' + name, callback); + } + }; + var removeEvent = function (target, name, callback, capture) { + if (target.removeEventListener) { + target.removeEventListener(name, callback, capture || false); + } else if (target.detachEvent) { + target.detachEvent('on' + name, callback); + } + }; + var getTargetFromShadowDom = function (event, defaultTarget) { + var path, target = defaultTarget; + path = event.path; + if (path && path.length > 0) { + target = path[0]; + } + if (event.composedPath) { + path = event.composedPath(); + if (path && path.length > 0) { + target = path[0]; + } + } + return target; + }; + var fix = function (originalEvent, data) { + var name; + var event = data || {}; + for (name in originalEvent) { + if (!deprecated[name]) { + event[name] = originalEvent[name]; + } + } + if (!event.target) { + event.target = event.srcElement || document; + } + if ($_9bd8pn9je5o2pp2.experimentalShadowDom) { + event.target = getTargetFromShadowDom(originalEvent, event.target); + } + if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) { + var eventDoc = event.target.ownerDocument || document; + var doc = eventDoc.documentElement; + var body = eventDoc.body; + event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); + event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); + } + event.preventDefault = function () { + event.isDefaultPrevented = returnTrue; + if (originalEvent) { + if (originalEvent.preventDefault) { + originalEvent.preventDefault(); + } else { + originalEvent.returnValue = false; + } + } + }; + event.stopPropagation = function () { + event.isPropagationStopped = returnTrue; + if (originalEvent) { + if (originalEvent.stopPropagation) { + originalEvent.stopPropagation(); + } else { + originalEvent.cancelBubble = true; + } + } + }; + event.stopImmediatePropagation = function () { + event.isImmediatePropagationStopped = returnTrue; + event.stopPropagation(); + }; + if (hasIsDefaultPrevented(event) === false) { + event.isDefaultPrevented = returnFalse; + event.isPropagationStopped = returnFalse; + event.isImmediatePropagationStopped = returnFalse; + } + if (typeof event.metaKey === 'undefined') { + event.metaKey = false; + } + return event; + }; + var bindOnReady = function (win, callback, eventUtils) { + var doc = win.document, event = { type: 'ready' }; + if (eventUtils.domLoaded) { + callback(event); + return; + } + var isDocReady = function () { + return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body; + }; + var readyHandler = function () { + if (!eventUtils.domLoaded) { + eventUtils.domLoaded = true; + callback(event); + } + }; + var waitForDomLoaded = function () { + if (isDocReady()) { + removeEvent(doc, 'readystatechange', waitForDomLoaded); + readyHandler(); + } + }; + var tryScroll = function () { + try { + doc.documentElement.doScroll('left'); + } catch (ex) { + $_db41wogje5o2ps3.setTimeout(tryScroll); + return; + } + readyHandler(); + }; + if (doc.addEventListener && !($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11)) { + if (isDocReady()) { + readyHandler(); + } else { + addEvent(win, 'DOMContentLoaded', readyHandler); + } + } else { + addEvent(doc, 'readystatechange', waitForDomLoaded); + if (doc.documentElement.doScroll && win.self === win.top) { + tryScroll(); + } + } + addEvent(win, 'load', readyHandler); + }; + var EventUtils = function () { + var self = this; + var events = {}, count, expando, hasFocusIn, hasMouseEnterLeave, mouseEnterLeave; + expando = eventExpandoPrefix + (+new Date()).toString(32); + hasMouseEnterLeave = 'onmouseenter' in document.documentElement; + hasFocusIn = 'onfocusin' in document.documentElement; + mouseEnterLeave = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + count = 1; + self.domLoaded = false; + self.events = events; + var executeHandlers = function (evt, id) { + var callbackList, i, l, callback; + var container = events[id]; + callbackList = container && container[evt.type]; + if (callbackList) { + for (i = 0, l = callbackList.length; i < l; i++) { + callback = callbackList[i]; + if (callback && callback.func.call(callback.scope, evt) === false) { + evt.preventDefault(); + } + if (evt.isImmediatePropagationStopped()) { + return; + } + } + } + }; + self.bind = function (target, names, callback, scope) { + var id, callbackList, i, name, fakeName, nativeHandler, capture; + var win = window; + var defaultNativeHandler = function (evt) { + executeHandlers(fix(evt || win.event), id); + }; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return; + } + if (!target[expando]) { + id = count++; + target[expando] = id; + events[id] = {}; + } else { + id = target[expando]; + } + scope = scope || target; + names = names.split(' '); + i = names.length; + while (i--) { + name = names[i]; + nativeHandler = defaultNativeHandler; + fakeName = capture = false; + if (name === 'DOMContentLoaded') { + name = 'ready'; + } + if (self.domLoaded && name === 'ready' && target.readyState === 'complete') { + callback.call(scope, fix({ type: name })); + continue; + } + if (!hasMouseEnterLeave) { + fakeName = mouseEnterLeave[name]; + if (fakeName) { + nativeHandler = function (evt) { + var current, related; + current = evt.currentTarget; + related = evt.relatedTarget; + if (related && current.contains) { + related = current.contains(related); + } else { + while (related && related !== current) { + related = related.parentNode; + } + } + if (!related) { + evt = fix(evt || win.event); + evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter'; + evt.target = current; + executeHandlers(evt, id); + } + }; + } + } + if (!hasFocusIn && (name === 'focusin' || name === 'focusout')) { + capture = true; + fakeName = name === 'focusin' ? 'focus' : 'blur'; + nativeHandler = function (evt) { + evt = fix(evt || win.event); + evt.type = evt.type === 'focus' ? 'focusin' : 'focusout'; + executeHandlers(evt, id); + }; + } + callbackList = events[id][name]; + if (!callbackList) { + events[id][name] = callbackList = [{ + func: callback, + scope: scope + }]; + callbackList.fakeName = fakeName; + callbackList.capture = capture; + callbackList.nativeHandler = nativeHandler; + if (name === 'ready') { + bindOnReady(target, nativeHandler, self); + } else { + addEvent(target, fakeName || name, nativeHandler, capture); + } + } else { + if (name === 'ready' && self.domLoaded) { + callback({ type: name }); + } else { + callbackList.push({ + func: callback, + scope: scope + }); + } + } + } + target = callbackList = 0; + return callback; + }; + self.unbind = function (target, names, callback) { + var id, callbackList, i, ci, name, eventMap; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + id = target[expando]; + if (id) { + eventMap = events[id]; + if (names) { + names = names.split(' '); + i = names.length; + while (i--) { + name = names[i]; + callbackList = eventMap[name]; + if (callbackList) { + if (callback) { + ci = callbackList.length; + while (ci--) { + if (callbackList[ci].func === callback) { + var nativeHandler = callbackList.nativeHandler; + var fakeName = callbackList.fakeName, capture = callbackList.capture; + callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1)); + callbackList.nativeHandler = nativeHandler; + callbackList.fakeName = fakeName; + callbackList.capture = capture; + eventMap[name] = callbackList; + } + } + } + if (!callback || callbackList.length === 0) { + delete eventMap[name]; + removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture); + } + } + } + } else { + for (name in eventMap) { + callbackList = eventMap[name]; + removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture); + } + eventMap = {}; + } + for (name in eventMap) { + return self; + } + delete events[id]; + try { + delete target[expando]; + } catch (ex) { + target[expando] = null; + } + } + return self; + }; + self.fire = function (target, name, args) { + var id; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + args = fix(null, args); + args.type = name; + args.target = target; + do { + id = target[expando]; + if (id) { + executeHandlers(args, id); + } + target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow; + } while (target && !args.isPropagationStopped()); + return self; + }; + self.clean = function (target) { + var i, children; + var unbind = self.unbind; + if (!target || target.nodeType === 3 || target.nodeType === 8) { + return self; + } + if (target[expando]) { + unbind(target); + } + if (!target.getElementsByTagName) { + target = target.document; + } + if (target && target.getElementsByTagName) { + unbind(target); + children = target.getElementsByTagName('*'); + i = children.length; + while (i--) { + target = children[i]; + if (target[expando]) { + unbind(target); + } + } + } + return self; + }; + self.destroy = function () { + events = {}; + }; + self.cancel = function (e) { + if (e) { + e.preventDefault(); + e.stopImmediatePropagation(); + } + return false; + }; + }; + EventUtils.Event = new EventUtils(); + EventUtils.Event.bind(window, 'ready', function () { + }); + + var i; + var support; + var Expr; + var getText; + var isXML; + var tokenize; + var compile; + var select; + var outermostContext; + var sortInput; + var hasDuplicate; + var setDocument; + var document$1; + var docElem; + var documentIsHTML; + var rbuggyQSA; + var rbuggyMatches; + var matches; + var contains$1; + var expando = 'sizzle' + -new Date(); + var preferredDoc = window.document; + var dirruns = 0; + var done = 0; + var classCache = createCache(); + var tokenCache = createCache(); + var compilerCache = createCache(); + var sortOrder = function (a, b) { + if (a === b) { + hasDuplicate = true; + } + return 0; + }; + var strundefined = typeof undefined; + var MAX_NEGATIVE = 1 << 31; + var hasOwn = {}.hasOwnProperty; + var arr = []; + var pop = arr.pop; + var push_native = arr.push; + var push$1 = arr.push; + var slice$1 = arr.slice; + var indexOf$1 = arr.indexOf || function (elem) { + var i = 0, len = this.length; + for (; i < len; i++) { + if (this[i] === elem) { + return i; + } + } + return -1; + }; + var booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped'; + var whitespace = '[\\x20\\t\\r\\n\\f]'; + var identifier = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+'; + var attributes = '\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + identifier + '))|)' + whitespace + '*\\]'; + var pseudos = ':(' + identifier + ')(?:\\((' + '(\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|' + '((?:\\\\.|[^\\\\()[\\]]|' + attributes + ')*)|' + '.*' + ')\\)|)'; + var rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\])(?:\\\\.)*)' + whitespace + '+$', 'g'); + var rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*'); + var rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*'); + var rattributeQuotes = new RegExp('=' + whitespace + '*([^\\]\'"]*?)' + whitespace + '*\\]', 'g'); + var rpseudo = new RegExp(pseudos); + var ridentifier = new RegExp('^' + identifier + '$'); + var matchExpr = { + ID: new RegExp('^#(' + identifier + ')'), + CLASS: new RegExp('^\\.(' + identifier + ')'), + TAG: new RegExp('^(' + identifier + '|[*])'), + ATTR: new RegExp('^' + attributes), + PSEUDO: new RegExp('^' + pseudos), + CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(' + whitespace + '*(even|odd|(([+-]|)(\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\d+)|))' + whitespace + '*\\)|)', 'i'), + bool: new RegExp('^(?:' + booleans + ')$', 'i'), + needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(' + whitespace + '*((?:-\\d)?\\d*)' + whitespace + '*\\)|)(?=[^-]|$)', 'i') + }; + var rinputs = /^(?:input|select|textarea|button)$/i; + var rheader = /^h\d$/i; + var rnative = /^[^{]+\{\s*\[native \w/; + var rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/; + var rsibling = /[+~]/; + var rescape = /'|\\/g; + var runescape = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'); + var funescape = function (_, escaped, escapedWhitespace) { + var high = '0x' + escaped - 65536; + return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); + }; + try { + push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes); + arr[preferredDoc.childNodes.length].nodeType; + } catch (e) { + push$1 = { + apply: arr.length ? function (target, els) { + push_native.apply(target, slice$1.call(els)); + } : function (target, els) { + var j = target.length, i = 0; + while (target[j++] = els[i++]) { + } + target.length = j - 1; + } + }; + } + var Sizzle = function (selector, context, results, seed) { + var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector; + if ((context ? context.ownerDocument || context : preferredDoc) !== document$1) { + setDocument(context); + } + context = context || document$1; + results = results || []; + if (!selector || typeof selector !== 'string') { + return results; + } + if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) { + return []; + } + if (documentIsHTML && !seed) { + if (match = rquickExpr.exec(selector)) { + if (m = match[1]) { + if (nodeType === 9) { + elem = context.getElementById(m); + if (elem && elem.parentNode) { + if (elem.id === m) { + results.push(elem); + return results; + } + } else { + return results; + } + } else { + if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) { + results.push(elem); + return results; + } + } + } else if (match[2]) { + push$1.apply(results, context.getElementsByTagName(selector)); + return results; + } else if ((m = match[3]) && support.getElementsByClassName) { + push$1.apply(results, context.getElementsByClassName(m)); + return results; + } + } + if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') { + groups = tokenize(selector); + if (old = context.getAttribute('id')) { + nid = old.replace(rescape, '\\$&'); + } else { + context.setAttribute('id', nid); + } + nid = '[id=\'' + nid + '\'] '; + i = groups.length; + while (i--) { + groups[i] = nid + toSelector(groups[i]); + } + newContext = rsibling.test(selector) && testContext(context.parentNode) || context; + newSelector = groups.join(','); + } + if (newSelector) { + try { + push$1.apply(results, newContext.querySelectorAll(newSelector)); + return results; + } catch (qsaError) { + } finally { + if (!old) { + context.removeAttribute('id'); + } + } + } + } + } + return select(selector.replace(rtrim, '$1'), context, results, seed); + }; + function createCache() { + var keys = []; + function cache(key, value) { + if (keys.push(key + ' ') > Expr.cacheLength) { + delete cache[keys.shift()]; + } + return cache[key + ' '] = value; + } + return cache; + } + function markFunction(fn) { + fn[expando] = true; + return fn; + } + function siblingCheck(a, b) { + var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE); + if (diff) { + return diff; + } + if (cur) { + while (cur = cur.nextSibling) { + if (cur === b) { + return -1; + } + } + } + return a ? 1 : -1; + } + function createInputPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === 'input' && elem.type === type; + }; + } + function createButtonPseudo(type) { + return function (elem) { + var name = elem.nodeName.toLowerCase(); + return (name === 'input' || name === 'button') && elem.type === type; + }; + } + function createPositionalPseudo(fn) { + return markFunction(function (argument) { + argument = +argument; + return markFunction(function (seed, matches) { + var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; + while (i--) { + if (seed[j = matchIndexes[i]]) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); + } + function testContext(context) { + return context && typeof context.getElementsByTagName !== strundefined && context; + } + support = Sizzle.support = {}; + isXML = Sizzle.isXML = function (elem) { + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== 'HTML' : false; + }; + setDocument = Sizzle.setDocument = function (node) { + var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent = doc.defaultView; + function getTop(win) { + try { + return win.top; + } catch (ex) { + } + return null; + } + if (doc === document$1 || doc.nodeType !== 9 || !doc.documentElement) { + return document$1; + } + document$1 = doc; + docElem = doc.documentElement; + documentIsHTML = !isXML(doc); + if (parent && parent !== getTop(parent)) { + if (parent.addEventListener) { + parent.addEventListener('unload', function () { + setDocument(); + }, false); + } else if (parent.attachEvent) { + parent.attachEvent('onunload', function () { + setDocument(); + }); + } + } + support.attributes = true; + support.getElementsByTagName = true; + support.getElementsByClassName = rnative.test(doc.getElementsByClassName); + support.getById = true; + Expr.find.ID = function (id, context) { + if (typeof context.getElementById !== strundefined && documentIsHTML) { + var m = context.getElementById(id); + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter.ID = function (id) { + var attrId = id.replace(runescape, funescape); + return function (elem) { + return elem.getAttribute('id') === attrId; + }; + }; + Expr.find.TAG = support.getElementsByTagName ? function (tag, context) { + if (typeof context.getElementsByTagName !== strundefined) { + return context.getElementsByTagName(tag); + } + } : function (tag, context) { + var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag); + if (tag === '*') { + while (elem = results[i++]) { + if (elem.nodeType === 1) { + tmp.push(elem); + } + } + return tmp; + } + return results; + }; + Expr.find.CLASS = support.getElementsByClassName && function (className, context) { + if (documentIsHTML) { + return context.getElementsByClassName(className); + } + }; + rbuggyMatches = []; + rbuggyQSA = []; + support.disconnectedMatch = true; + rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|')); + rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|')); + hasCompare = rnative.test(docElem.compareDocumentPosition); + contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) { + var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; + return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); + } : function (a, b) { + if (b) { + while (b = b.parentNode) { + if (b === a) { + return true; + } + } + } + return false; + }; + sortOrder = hasCompare ? function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if (compare) { + return compare; + } + compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1; + if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { + if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) { + return -1; + } + if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) { + return 1; + } + return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0; + } + return compare & 4 ? -1 : 1; + } : function (a, b) { + if (a === b) { + hasDuplicate = true; + return 0; + } + var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b]; + if (!aup || !bup) { + return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0; + } else if (aup === bup) { + return siblingCheck(a, b); + } + cur = a; + while (cur = cur.parentNode) { + ap.unshift(cur); + } + cur = b; + while (cur = cur.parentNode) { + bp.unshift(cur); + } + while (ap[i] === bp[i]) { + i++; + } + return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0; + }; + return doc; + }; + Sizzle.matches = function (expr, elements) { + return Sizzle(expr, null, null, elements); + }; + Sizzle.matchesSelector = function (elem, expr) { + if ((elem.ownerDocument || elem) !== document$1) { + setDocument(elem); + } + expr = expr.replace(rattributeQuotes, '=\'$1\']'); + if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { + try { + var ret = matches.call(elem, expr); + if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) { + return ret; + } + } catch (e) { + } + } + return Sizzle(expr, document$1, null, [elem]).length > 0; + }; + Sizzle.contains = function (context, elem) { + if ((context.ownerDocument || context) !== document$1) { + setDocument(context); + } + return contains$1(context, elem); + }; + Sizzle.attr = function (elem, name) { + if ((elem.ownerDocument || elem) !== document$1) { + setDocument(elem); + } + var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined; + return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; + }; + Sizzle.error = function (msg) { + throw new Error('Syntax error, unrecognized expression: ' + msg); + }; + Sizzle.uniqueSort = function (results) { + var elem, duplicates = [], j = 0, i = 0; + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice(0); + results.sort(sortOrder); + if (hasDuplicate) { + while (elem = results[i++]) { + if (elem === results[i]) { + j = duplicates.push(i); + } + } + while (j--) { + results.splice(duplicates[j], 1); + } + } + sortInput = null; + return results; + }; + getText = Sizzle.getText = function (elem) { + var node, ret = '', i = 0, nodeType = elem.nodeType; + if (!nodeType) { + while (node = elem[i++]) { + ret += getText(node); + } + } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { + if (typeof elem.textContent === 'string') { + return elem.textContent; + } else { + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + ret += getText(elem); + } + } + } else if (nodeType === 3 || nodeType === 4) { + return elem.nodeValue; + } + return ret; + }; + Expr = Sizzle.selectors = { + cacheLength: 50, + createPseudo: markFunction, + match: matchExpr, + attrHandle: {}, + find: {}, + relative: { + '>': { + dir: 'parentNode', + first: true + }, + ' ': { dir: 'parentNode' }, + '+': { + dir: 'previousSibling', + first: true + }, + '~': { dir: 'previousSibling' } + }, + preFilter: { + ATTR: function (match) { + match[1] = match[1].replace(runescape, funescape); + match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape); + if (match[2] === '~=') { + match[3] = ' ' + match[3] + ' '; + } + return match.slice(0, 4); + }, + CHILD: function (match) { + match[1] = match[1].toLowerCase(); + if (match[1].slice(0, 3) === 'nth') { + if (!match[3]) { + Sizzle.error(match[0]); + } + match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd')); + match[5] = +(match[7] + match[8] || match[3] === 'odd'); + } else if (match[3]) { + Sizzle.error(match[0]); + } + return match; + }, + PSEUDO: function (match) { + var excess, unquoted = !match[6] && match[2]; + if (matchExpr.CHILD.test(match[0])) { + return null; + } + if (match[3]) { + match[2] = match[4] || match[5] || ''; + } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) { + match[0] = match[0].slice(0, excess); + match[2] = unquoted.slice(0, excess); + } + return match.slice(0, 3); + } + }, + filter: { + TAG: function (nodeNameSelector) { + var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); + return nodeNameSelector === '*' ? function () { + return true; + } : function (elem) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + CLASS: function (className) { + var pattern = classCache[className + ' ']; + return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) { + return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || ''); + }); + }, + ATTR: function (name, operator, check) { + return function (elem) { + var result = Sizzle.attr(elem, name); + if (result == null) { + return operator === '!='; + } + if (!operator) { + return true; + } + result += ''; + return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false; + }; + }, + CHILD: function (type, what, argument, first, last) { + var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type'; + return first === 1 && last === 0 ? function (elem) { + return !!elem.parentNode; + } : function (elem, context, xml) { + var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType; + if (parent) { + if (simple) { + while (dir) { + node = elem; + while (node = node[dir]) { + if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) { + return false; + } + } + start = dir = type === 'only' && !start && 'nextSibling'; + } + return true; + } + start = [forward ? parent.firstChild : parent.lastChild]; + if (forward && useCache) { + outerCache = parent[expando] || (parent[expando] = {}); + cache = outerCache[type] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[nodeIndex]; + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if (node.nodeType === 1 && ++diff && node === elem) { + outerCache[type] = [ + dirruns, + nodeIndex, + diff + ]; + break; + } + } + } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) { + diff = cache[1]; + } else { + while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) { + if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) { + if (useCache) { + (node[expando] || (node[expando] = {}))[type] = [ + dirruns, + diff + ]; + } + if (node === elem) { + break; + } + } + } + } + diff -= last; + return diff === first || diff % first === 0 && diff / first >= 0; + } + }; + }, + PSEUDO: function (pseudo, argument) { + var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo); + if (fn[expando]) { + return fn(argument); + } + if (fn.length > 1) { + args = [ + pseudo, + pseudo, + '', + argument + ]; + return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) { + var idx, matched = fn(seed, argument), i = matched.length; + while (i--) { + idx = indexOf$1.call(seed, matched[i]); + seed[idx] = !(matches[idx] = matched[i]); + } + }) : function (elem) { + return fn(elem, 0, args); + }; + } + return fn; + } + }, + pseudos: { + not: markFunction(function (selector) { + var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1')); + return matcher[expando] ? markFunction(function (seed, matches, context, xml) { + var elem, unmatched = matcher(seed, null, xml, []), i = seed.length; + while (i--) { + if (elem = unmatched[i]) { + seed[i] = !(matches[i] = elem); + } + } + }) : function (elem, context, xml) { + input[0] = elem; + matcher(input, null, xml, results); + return !results.pop(); + }; + }), + has: markFunction(function (selector) { + return function (elem) { + return Sizzle(selector, elem).length > 0; + }; + }), + contains: markFunction(function (text) { + text = text.replace(runescape, funescape); + return function (elem) { + return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1; + }; + }), + lang: markFunction(function (lang) { + if (!ridentifier.test(lang || '')) { + Sizzle.error('unsupported lang: ' + lang); + } + lang = lang.replace(runescape, funescape).toLowerCase(); + return function (elem) { + var elemLang; + do { + if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) { + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf(lang + '-') === 0; + } + } while ((elem = elem.parentNode) && elem.nodeType === 1); + return false; + }; + }), + target: function (elem) { + var hash = window.location && window.location.hash; + return hash && hash.slice(1) === elem.id; + }, + root: function (elem) { + return elem === docElem; + }, + focus: function (elem) { + return elem === document$1.activeElement && (!document$1.hasFocus || document$1.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + enabled: function (elem) { + return elem.disabled === false; + }, + disabled: function (elem) { + return elem.disabled === true; + }, + checked: function (elem) { + var nodeName = elem.nodeName.toLowerCase(); + return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected; + }, + selected: function (elem) { + if (elem.parentNode) { + elem.parentNode.selectedIndex; + } + return elem.selected === true; + }, + empty: function (elem) { + for (elem = elem.firstChild; elem; elem = elem.nextSibling) { + if (elem.nodeType < 6) { + return false; + } + } + return true; + }, + parent: function (elem) { + return !Expr.pseudos.empty(elem); + }, + header: function (elem) { + return rheader.test(elem.nodeName); + }, + input: function (elem) { + return rinputs.test(elem.nodeName); + }, + button: function (elem) { + var name = elem.nodeName.toLowerCase(); + return name === 'input' && elem.type === 'button' || name === 'button'; + }, + text: function (elem) { + var attr; + return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text'); + }, + first: createPositionalPseudo(function () { + return [0]; + }), + last: createPositionalPseudo(function (matchIndexes, length) { + return [length - 1]; + }), + eq: createPositionalPseudo(function (matchIndexes, length, argument) { + return [argument < 0 ? argument + length : argument]; + }), + even: createPositionalPseudo(function (matchIndexes, length) { + var i = 0; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + odd: createPositionalPseudo(function (matchIndexes, length) { + var i = 1; + for (; i < length; i += 2) { + matchIndexes.push(i); + } + return matchIndexes; + }), + lt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; --i >= 0;) { + matchIndexes.push(i); + } + return matchIndexes; + }), + gt: createPositionalPseudo(function (matchIndexes, length, argument) { + var i = argument < 0 ? argument + length : argument; + for (; ++i < length;) { + matchIndexes.push(i); + } + return matchIndexes; + }) + } + }; + Expr.pseudos.nth = Expr.pseudos.eq; + for (i in { + radio: true, + checkbox: true, + file: true, + password: true, + image: true + }) { + Expr.pseudos[i] = createInputPseudo(i); + } + for (i in { + submit: true, + reset: true + }) { + Expr.pseudos[i] = createButtonPseudo(i); + } + function setFilters() { + } + setFilters.prototype = Expr.filters = Expr.pseudos; + Expr.setFilters = new setFilters(); + tokenize = Sizzle.tokenize = function (selector, parseOnly) { + var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' ']; + if (cached) { + return parseOnly ? 0 : cached.slice(0); + } + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + while (soFar) { + if (!matched || (match = rcomma.exec(soFar))) { + if (match) { + soFar = soFar.slice(match[0].length) || soFar; + } + groups.push(tokens = []); + } + matched = false; + if (match = rcombinators.exec(soFar)) { + matched = match.shift(); + tokens.push({ + value: matched, + type: match[0].replace(rtrim, ' ') + }); + soFar = soFar.slice(matched.length); + } + for (type in Expr.filter) { + if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice(matched.length); + } + } + if (!matched) { + break; + } + } + return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0); + }; + function toSelector(tokens) { + var i = 0, len = tokens.length, selector = ''; + for (; i < len; i++) { + selector += tokens[i].value; + } + return selector; + } + function addCombinator(matcher, combinator, base) { + var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++; + return combinator.first ? function (elem, context, xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + return matcher(elem, context, xml); + } + } + } : function (elem, context, xml) { + var oldCache, outerCache, newCache = [ + dirruns, + doneName + ]; + if (xml) { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + if (matcher(elem, context, xml)) { + return true; + } + } + } + } else { + while (elem = elem[dir]) { + if (elem.nodeType === 1 || checkNonElements) { + outerCache = elem[expando] || (elem[expando] = {}); + if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) { + return newCache[2] = oldCache[2]; + } else { + outerCache[dir] = newCache; + if (newCache[2] = matcher(elem, context, xml)) { + return true; + } + } + } + } + } + }; + } + function elementMatcher(matchers) { + return matchers.length > 1 ? function (elem, context, xml) { + var i = matchers.length; + while (i--) { + if (!matchers[i](elem, context, xml)) { + return false; + } + } + return true; + } : matchers[0]; + } + function multipleContexts(selector, contexts, results) { + var i = 0, len = contexts.length; + for (; i < len; i++) { + Sizzle(selector, contexts[i], results); + } + return results; + } + function condense(unmatched, map, filter, context, xml) { + var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null; + for (; i < len; i++) { + if (elem = unmatched[i]) { + if (!filter || filter(elem, context, xml)) { + newUnmatched.push(elem); + if (mapped) { + map.push(i); + } + } + } + } + return newUnmatched; + } + function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { + if (postFilter && !postFilter[expando]) { + postFilter = setMatcher(postFilter); + } + if (postFinder && !postFinder[expando]) { + postFinder = setMatcher(postFinder, postSelector); + } + return markFunction(function (seed, results, context, xml) { + var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn; + if (matcher) { + matcher(matcherIn, matcherOut, context, xml); + } + if (postFilter) { + temp = condense(matcherOut, postMap); + postFilter(temp, [], context, xml); + i = temp.length; + while (i--) { + if (elem = temp[i]) { + matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem); + } + } + } + if (seed) { + if (postFinder || preFilter) { + if (postFinder) { + temp = []; + i = matcherOut.length; + while (i--) { + if (elem = matcherOut[i]) { + temp.push(matcherIn[i] = elem); + } + } + postFinder(null, matcherOut = [], temp, xml); + } + i = matcherOut.length; + while (i--) { + if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) { + seed[temp] = !(results[temp] = elem); + } + } + } + } else { + matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut); + if (postFinder) { + postFinder(null, results, matcherOut, xml); + } else { + push$1.apply(results, matcherOut); + } + } + }); + } + function matcherFromTokens(tokens) { + var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) { + return elem === checkContext; + }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) { + return indexOf$1.call(checkContext, elem) > -1; + }, implicitRelative, true), matchers = [function (elem, context, xml) { + return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); + }]; + for (; i < len; i++) { + if (matcher = Expr.relative[tokens[i].type]) { + matchers = [addCombinator(elementMatcher(matchers), matcher)]; + } else { + matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); + if (matcher[expando]) { + j = ++i; + for (; j < len; j++) { + if (Expr.relative[tokens[j].type]) { + break; + } + } + return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens)); + } + matchers.push(matcher); + } + } + return elementMatcher(matchers); + } + function matcherFromGroupMatchers(elementMatchers, setMatchers) { + var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) { + var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length; + if (outermost) { + outermostContext = context !== document$1 && context; + } + for (; i !== len && (elem = elems[i]) != null; i++) { + if (byElement && elem) { + j = 0; + while (matcher = elementMatchers[j++]) { + if (matcher(elem, context, xml)) { + results.push(elem); + break; + } + } + if (outermost) { + dirruns = dirrunsUnique; + } + } + if (bySet) { + if (elem = !matcher && elem) { + matchedCount--; + } + if (seed) { + unmatched.push(elem); + } + } + } + matchedCount += i; + if (bySet && i !== matchedCount) { + j = 0; + while (matcher = setMatchers[j++]) { + matcher(unmatched, setMatched, context, xml); + } + if (seed) { + if (matchedCount > 0) { + while (i--) { + if (!(unmatched[i] || setMatched[i])) { + setMatched[i] = pop.call(results); + } + } + } + setMatched = condense(setMatched); + } + push$1.apply(results, setMatched); + if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { + Sizzle.uniqueSort(results); + } + } + if (outermost) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + return unmatched; + }; + return bySet ? markFunction(superMatcher) : superMatcher; + } + compile = Sizzle.compile = function (selector, match) { + var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' ']; + if (!cached) { + if (!match) { + match = tokenize(selector); + } + i = match.length; + while (i--) { + cached = matcherFromTokens(match[i]); + if (cached[expando]) { + setMatchers.push(cached); + } else { + elementMatchers.push(cached); + } + } + cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); + cached.selector = selector; + } + return cached; + }; + select = Sizzle.select = function (selector, context, results, seed) { + var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector); + results = results || []; + if (match.length === 1) { + tokens = match[0] = match[0].slice(0); + if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { + context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0]; + if (!context) { + return results; + } else if (compiled) { + context = context.parentNode; + } + selector = selector.slice(tokens.shift().value.length); + } + i = matchExpr.needsContext.test(selector) ? 0 : tokens.length; + while (i--) { + token = tokens[i]; + if (Expr.relative[type = token.type]) { + break; + } + if (find = Expr.find[type]) { + if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) { + tokens.splice(i, 1); + selector = seed.length && toSelector(tokens); + if (!selector) { + push$1.apply(results, seed); + return results; + } + break; + } + } + } + } + (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context); + return results; + }; + support.sortStable = expando.split('').sort(sortOrder).join('') === expando; + support.detectDuplicates = !!hasDuplicate; + setDocument(); + support.sortDetached = true; + + var isArray = Array.isArray || function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + var toArray = function (obj) { + var array = obj, i, l; + if (!isArray(obj)) { + array = []; + for (i = 0, l = obj.length; i < l; i++) { + array[i] = obj[i]; + } + } + return array; + }; + var each$1 = function (o, cb, s) { + var n, l; + if (!o) { + return 0; + } + s = s || o; + if (o.length !== undefined) { + for (n = 0, l = o.length; n < l; n++) { + if (cb.call(s, o[n], n, o) === false) { + return 0; + } + } + } else { + for (n in o) { + if (o.hasOwnProperty(n)) { + if (cb.call(s, o[n], n, o) === false) { + return 0; + } + } + } + } + return 1; + }; + var map$1 = function (array, callback) { + var out = []; + each$1(array, function (item, index) { + out.push(callback(item, index, array)); + }); + return out; + }; + var filter$1 = function (a, f) { + var o = []; + each$1(a, function (v, index) { + if (!f || f(v, index, a)) { + o.push(v); + } + }); + return o; + }; + var indexOf$2 = function (a, v) { + var i, l; + if (a) { + for (i = 0, l = a.length; i < l; i++) { + if (a[i] === v) { + return i; + } + } + } + return -1; + }; + var reduce = function (collection, iteratee, accumulator, thisArg) { + var i = 0; + if (arguments.length < 3) { + accumulator = collection[0]; + } + for (; i < collection.length; i++) { + accumulator = iteratee.call(thisArg, accumulator, collection[i], i); + } + return accumulator; + }; + var findIndex$1 = function (array, predicate, thisArg) { + var i, l; + for (i = 0, l = array.length; i < l; i++) { + if (predicate.call(thisArg, array[i], i, array)) { + return i; + } + } + return -1; + }; + var find$1 = function (array, predicate, thisArg) { + var idx = findIndex$1(array, predicate, thisArg); + if (idx !== -1) { + return array[idx]; + } + return undefined; + }; + var last$1 = function (collection) { + return collection[collection.length - 1]; + }; + var $_c2vc3pkje5o2puw = { + isArray: isArray, + toArray: toArray, + each: each$1, + map: map$1, + filter: filter$1, + indexOf: indexOf$2, + reduce: reduce, + findIndex: findIndex$1, + find: find$1, + last: last$1 + }; + + var whiteSpaceRegExp = /^\s*|\s*$/g; + var trim = function (str) { + return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, ''); + }; + var is = function (obj, type) { + if (!type) { + return obj !== undefined; + } + if (type === 'array' && $_c2vc3pkje5o2puw.isArray(obj)) { + return true; + } + return typeof obj === type; + }; + var makeMap = function (items, delim, map) { + var i; + items = items || []; + delim = delim || ','; + if (typeof items === 'string') { + items = items.split(delim); + } + map = map || {}; + i = items.length; + while (i--) { + map[items[i]] = {}; + } + return map; + }; + var hasOwnProperty = function (obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); + }; + var create = function (s, p, root) { + var self = this; + var sp, ns, cn, scn, c, de = 0; + s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s); + cn = s[3].match(/(^|\.)(\w+)$/i)[2]; + ns = self.createNS(s[3].replace(/\.\w+$/, ''), root); + if (ns[cn]) { + return; + } + if (s[2] === 'static') { + ns[cn] = p; + if (this.onCreate) { + this.onCreate(s[2], s[3], ns[cn]); + } + return; + } + if (!p[cn]) { + p[cn] = function () { + }; + de = 1; + } + ns[cn] = p[cn]; + self.extend(ns[cn].prototype, p); + if (s[5]) { + sp = self.resolve(s[5]).prototype; + scn = s[5].match(/\.(\w+)$/i)[1]; + c = ns[cn]; + if (de) { + ns[cn] = function () { + return sp[scn].apply(this, arguments); + }; + } else { + ns[cn] = function () { + this.parent = sp[scn]; + return c.apply(this, arguments); + }; + } + ns[cn].prototype[cn] = ns[cn]; + self.each(sp, function (f, n) { + ns[cn].prototype[n] = sp[n]; + }); + self.each(p, function (f, n) { + if (sp[n]) { + ns[cn].prototype[n] = function () { + this.parent = sp[n]; + return f.apply(this, arguments); + }; + } else { + if (n !== cn) { + ns[cn].prototype[n] = f; + } + } + }); + } + self.each(p.static, function (f, n) { + ns[cn][n] = f; + }); + }; + var extend = function (obj, ext) { + var x = []; + for (var _i = 2; _i < arguments.length; _i++) { + x[_i - 2] = arguments[_i]; + } + var i, l, name; + var args = arguments; + var value; + for (i = 1, l = args.length; i < l; i++) { + ext = args[i]; + for (name in ext) { + if (ext.hasOwnProperty(name)) { + value = ext[name]; + if (value !== undefined) { + obj[name] = value; + } + } + } + } + return obj; + }; + var walk = function (o, f, n, s) { + s = s || this; + if (o) { + if (n) { + o = o[n]; + } + $_c2vc3pkje5o2puw.each(o, function (o, i) { + if (f.call(s, o, i, n) === false) { + return false; + } + walk(o, f, n, s); + }); + } + }; + var createNS = function (n, o) { + var i, v; + o = o || window; + n = n.split('.'); + for (i = 0; i < n.length; i++) { + v = n[i]; + if (!o[v]) { + o[v] = {}; + } + o = o[v]; + } + return o; + }; + var resolve$1 = function (n, o) { + var i, l; + o = o || window; + n = n.split('.'); + for (i = 0, l = n.length; i < l; i++) { + o = o[n[i]]; + if (!o) { + break; + } + } + return o; + }; + var explode = function (s, d) { + if (!s || is(s, 'array')) { + return s; + } + return $_c2vc3pkje5o2puw.map(s.split(d || ','), trim); + }; + var _addCacheSuffix = function (url) { + var cacheSuffix = $_9bd8pn9je5o2pp2.cacheSuffix; + if (cacheSuffix) { + url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix; + } + return url; + }; + var $_a5gegtjje5o2pum = { + trim: trim, + isArray: $_c2vc3pkje5o2puw.isArray, + is: is, + toArray: $_c2vc3pkje5o2puw.toArray, + makeMap: makeMap, + each: $_c2vc3pkje5o2puw.each, + map: $_c2vc3pkje5o2puw.map, + grep: $_c2vc3pkje5o2puw.filter, + inArray: $_c2vc3pkje5o2puw.indexOf, + hasOwn: hasOwnProperty, + extend: extend, + create: create, + walk: walk, + createNS: createNS, + resolve: resolve$1, + explode: explode, + _addCacheSuffix: _addCacheSuffix + }; + + var doc = document; + var push$2 = Array.prototype.push; + var slice$2 = Array.prototype.slice; + var rquickExpr$1 = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/; + var Event = EventUtils.Event; + var skipUniques = $_a5gegtjje5o2pum.makeMap('children,contents,next,prev'); + var isDefined = function (obj) { + return typeof obj !== 'undefined'; + }; + var isString = function (obj) { + return typeof obj === 'string'; + }; + var isWindow = function (obj) { + return obj && obj === obj.window; + }; + var createFragment = function (html, fragDoc) { + var frag, node, container; + fragDoc = fragDoc || doc; + container = fragDoc.createElement('div'); + frag = fragDoc.createDocumentFragment(); + container.innerHTML = html; + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }; + var domManipulate = function (targetNodes, sourceItem, callback, reverse) { + var i; + if (isString(sourceItem)) { + sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0])); + } else if (sourceItem.length && !sourceItem.nodeType) { + sourceItem = DomQuery.makeArray(sourceItem); + if (reverse) { + for (i = sourceItem.length - 1; i >= 0; i--) { + domManipulate(targetNodes, sourceItem[i], callback, reverse); + } + } else { + for (i = 0; i < sourceItem.length; i++) { + domManipulate(targetNodes, sourceItem[i], callback, reverse); + } + } + return targetNodes; + } + if (sourceItem.nodeType) { + i = targetNodes.length; + while (i--) { + callback.call(targetNodes[i], sourceItem); + } + } + return targetNodes; + }; + var hasClass = function (node, className) { + return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1; + }; + var wrap = function (elements, wrapper, all) { + var lastParent, newWrapper; + wrapper = DomQuery(wrapper)[0]; + elements.each(function () { + var self = this; + if (!all || lastParent !== self.parentNode) { + lastParent = self.parentNode; + newWrapper = wrapper.cloneNode(false); + self.parentNode.insertBefore(newWrapper, self); + newWrapper.appendChild(self); + } else { + newWrapper.appendChild(self); + } + }); + return elements; + }; + var numericCssMap = $_a5gegtjje5o2pum.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' '); + var booleanMap = $_a5gegtjje5o2pum.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' '); + var propFix = { + for: 'htmlFor', + class: 'className', + readonly: 'readOnly' + }; + var cssFix = { float: 'cssFloat' }; + var attrHooks = {}; + var cssHooks = {}; + var DomQuery = function (selector, context) { + return new DomQuery.fn.init(selector, context); + }; + var inArray = function (item, array) { + var i; + if (array.indexOf) { + return array.indexOf(item); + } + i = array.length; + while (i--) { + if (array[i] === item) { + return i; + } + } + return -1; + }; + var whiteSpaceRegExp$1 = /^\s*|\s*$/g; + var trim$1 = function (str) { + return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, ''); + }; + var each$2 = function (obj, callback) { + var length, key, i, value; + if (obj) { + length = obj.length; + if (length === undefined) { + for (key in obj) { + if (obj.hasOwnProperty(key)) { + value = obj[key]; + if (callback.call(value, key, value) === false) { + break; + } + } + } + } else { + for (i = 0; i < length; i++) { + value = obj[i]; + if (callback.call(value, i, value) === false) { + break; + } + } + } + } + return obj; + }; + var grep = function (array, callback) { + var out = []; + each$2(array, function (i, item) { + if (callback(item, i)) { + out.push(item); + } + }); + return out; + }; + var getElementDocument = function (element) { + if (!element) { + return doc; + } + if (element.nodeType === 9) { + return element; + } + return element.ownerDocument; + }; + DomQuery.fn = DomQuery.prototype = { + constructor: DomQuery, + selector: '', + context: null, + length: 0, + init: function (selector, context) { + var self = this; + var match, node; + if (!selector) { + return self; + } + if (selector.nodeType) { + self.context = self[0] = selector; + self.length = 1; + return self; + } + if (context && context.nodeType) { + self.context = context; + } else { + if (context) { + return DomQuery(selector).attr(context); + } + self.context = context = document; + } + if (isString(selector)) { + self.selector = selector; + if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) { + match = [ + null, + selector, + null + ]; + } else { + match = rquickExpr$1.exec(selector); + } + if (match) { + if (match[1]) { + node = createFragment(selector, getElementDocument(context)).firstChild; + while (node) { + push$2.call(self, node); + node = node.nextSibling; + } + } else { + node = getElementDocument(context).getElementById(match[2]); + if (!node) { + return self; + } + if (node.id !== match[2]) { + return self.find(selector); + } + self.length = 1; + self[0] = node; + } + } else { + return DomQuery(context).find(selector); + } + } else { + this.add(selector, false); + } + return self; + }, + toArray: function () { + return $_a5gegtjje5o2pum.toArray(this); + }, + add: function (items, sort) { + var self = this; + var nodes, i; + if (isString(items)) { + return self.add(DomQuery(items)); + } + if (sort !== false) { + nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items))); + self.length = nodes.length; + for (i = 0; i < nodes.length; i++) { + self[i] = nodes[i]; + } + } else { + push$2.apply(self, DomQuery.makeArray(items)); + } + return self; + }, + attr: function (name, value) { + var self = this; + var hook; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.attr(name, value); + }); + } else if (isDefined(value)) { + this.each(function () { + var hook; + if (this.nodeType === 1) { + hook = attrHooks[name]; + if (hook && hook.set) { + hook.set(this, value); + return; + } + if (value === null) { + this.removeAttribute(name, 2); + } else { + this.setAttribute(name, value, 2); + } + } + }); + } else { + if (self[0] && self[0].nodeType === 1) { + hook = attrHooks[name]; + if (hook && hook.get) { + return hook.get(self[0], name); + } + if (booleanMap[name]) { + return self.prop(name) ? name : undefined; + } + value = self[0].getAttribute(name, 2); + if (value === null) { + value = undefined; + } + } + return value; + } + return self; + }, + removeAttr: function (name) { + return this.attr(name, null); + }, + prop: function (name, value) { + var self = this; + name = propFix[name] || name; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.prop(name, value); + }); + } else if (isDefined(value)) { + this.each(function () { + if (this.nodeType === 1) { + this[name] = value; + } + }); + } else { + if (self[0] && self[0].nodeType && name in self[0]) { + return self[0][name]; + } + return value; + } + return self; + }, + css: function (name, value) { + var self = this; + var elm, hook; + var camel = function (name) { + return name.replace(/-(\D)/g, function (a, b) { + return b.toUpperCase(); + }); + }; + var dashed = function (name) { + return name.replace(/[A-Z]/g, function (a) { + return '-' + a; + }); + }; + if (typeof name === 'object') { + each$2(name, function (name, value) { + self.css(name, value); + }); + } else { + if (isDefined(value)) { + name = camel(name); + if (typeof value === 'number' && !numericCssMap[name]) { + value = value.toString() + 'px'; + } + self.each(function () { + var style = this.style; + hook = cssHooks[name]; + if (hook && hook.set) { + hook.set(this, value); + return; + } + try { + this.style[cssFix[name] || name] = value; + } catch (ex) { + } + if (value === null || value === '') { + if (style.removeProperty) { + style.removeProperty(dashed(name)); + } else { + style.removeAttribute(name); + } + } + }); + } else { + elm = self[0]; + hook = cssHooks[name]; + if (hook && hook.get) { + return hook.get(elm); + } + if (elm.ownerDocument.defaultView) { + try { + return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name)); + } catch (ex) { + return undefined; + } + } else if (elm.currentStyle) { + return elm.currentStyle[camel(name)]; + } + } + } + return self; + }, + remove: function () { + var self = this; + var node, i = this.length; + while (i--) { + node = self[i]; + Event.clean(node); + if (node.parentNode) { + node.parentNode.removeChild(node); + } + } + return this; + }, + empty: function () { + var self = this; + var node, i = this.length; + while (i--) { + node = self[i]; + while (node.firstChild) { + node.removeChild(node.firstChild); + } + } + return this; + }, + html: function (value) { + var self = this; + var i; + if (isDefined(value)) { + i = self.length; + try { + while (i--) { + self[i].innerHTML = value; + } + } catch (ex) { + DomQuery(self[i]).empty().append(value); + } + return self; + } + return self[0] ? self[0].innerHTML : ''; + }, + text: function (value) { + var self = this; + var i; + if (isDefined(value)) { + i = self.length; + while (i--) { + if ('innerText' in self[i]) { + self[i].innerText = value; + } else { + self[0].textContent = value; + } + } + return self; + } + return self[0] ? self[0].innerText || self[0].textContent : ''; + }, + append: function () { + return domManipulate(this, arguments, function (node) { + if (this.nodeType === 1 || this.host && this.host.nodeType === 1) { + this.appendChild(node); + } + }); + }, + prepend: function () { + return domManipulate(this, arguments, function (node) { + if (this.nodeType === 1 || this.host && this.host.nodeType === 1) { + this.insertBefore(node, this.firstChild); + } + }, true); + }, + before: function () { + var self = this; + if (self[0] && self[0].parentNode) { + return domManipulate(self, arguments, function (node) { + this.parentNode.insertBefore(node, this); + }); + } + return self; + }, + after: function () { + var self = this; + if (self[0] && self[0].parentNode) { + return domManipulate(self, arguments, function (node) { + this.parentNode.insertBefore(node, this.nextSibling); + }, true); + } + return self; + }, + appendTo: function (val) { + DomQuery(val).append(this); + return this; + }, + prependTo: function (val) { + DomQuery(val).prepend(this); + return this; + }, + replaceWith: function (content) { + return this.before(content).remove(); + }, + wrap: function (content) { + return wrap(this, content); + }, + wrapAll: function (content) { + return wrap(this, content, true); + }, + wrapInner: function (content) { + this.each(function () { + DomQuery(this).contents().wrapAll(content); + }); + return this; + }, + unwrap: function () { + return this.parent().each(function () { + DomQuery(this).replaceWith(this.childNodes); + }); + }, + clone: function () { + var result = []; + this.each(function () { + result.push(this.cloneNode(true)); + }); + return DomQuery(result); + }, + addClass: function (className) { + return this.toggleClass(className, true); + }, + removeClass: function (className) { + return this.toggleClass(className, false); + }, + toggleClass: function (className, state) { + var self = this; + if (typeof className !== 'string') { + return self; + } + if (className.indexOf(' ') !== -1) { + each$2(className.split(' '), function () { + self.toggleClass(this, state); + }); + } else { + self.each(function (index, node) { + var existingClassName, classState; + classState = hasClass(node, className); + if (classState !== state) { + existingClassName = node.className; + if (classState) { + node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' ')); + } else { + node.className += existingClassName ? ' ' + className : className; + } + } + }); + } + return self; + }, + hasClass: function (className) { + return hasClass(this[0], className); + }, + each: function (callback) { + return each$2(this, callback); + }, + on: function (name, callback) { + return this.each(function () { + Event.bind(this, name, callback); + }); + }, + off: function (name, callback) { + return this.each(function () { + Event.unbind(this, name, callback); + }); + }, + trigger: function (name) { + return this.each(function () { + if (typeof name === 'object') { + Event.fire(this, name.type, name); + } else { + Event.fire(this, name); + } + }); + }, + show: function () { + return this.css('display', ''); + }, + hide: function () { + return this.css('display', 'none'); + }, + slice: function () { + return new DomQuery(slice$2.apply(this, arguments)); + }, + eq: function (index) { + return index === -1 ? this.slice(index) : this.slice(index, +index + 1); + }, + first: function () { + return this.eq(0); + }, + last: function () { + return this.eq(-1); + }, + find: function (selector) { + var i, l; + var ret = []; + for (i = 0, l = this.length; i < l; i++) { + DomQuery.find(selector, this[i], ret); + } + return DomQuery(ret); + }, + filter: function (selector) { + if (typeof selector === 'function') { + return DomQuery(grep(this.toArray(), function (item, i) { + return selector(i, item); + })); + } + return DomQuery(DomQuery.filter(selector, this.toArray())); + }, + closest: function (selector) { + var result = []; + if (selector instanceof DomQuery) { + selector = selector[0]; + } + this.each(function (i, node) { + while (node) { + if (typeof selector === 'string' && DomQuery(node).is(selector)) { + result.push(node); + break; + } else if (node === selector) { + result.push(node); + break; + } + node = node.parentNode; + } + }); + return DomQuery(result); + }, + offset: function (offset) { + var elm, doc, docElm; + var x = 0, y = 0, pos; + if (!offset) { + elm = this[0]; + if (elm) { + doc = elm.ownerDocument; + docElm = doc.documentElement; + if (elm.getBoundingClientRect) { + pos = elm.getBoundingClientRect(); + x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft; + y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop; + } + } + return { + left: x, + top: y + }; + } + return this.css(offset); + }, + push: push$2, + sort: [].sort, + splice: [].splice + }; + $_a5gegtjje5o2pum.extend(DomQuery, { + extend: $_a5gegtjje5o2pum.extend, + makeArray: function (object) { + if (isWindow(object) || object.nodeType) { + return [object]; + } + return $_a5gegtjje5o2pum.toArray(object); + }, + inArray: inArray, + isArray: $_a5gegtjje5o2pum.isArray, + each: each$2, + trim: trim$1, + grep: grep, + find: Sizzle, + expr: Sizzle.selectors, + unique: Sizzle.uniqueSort, + text: Sizzle.getText, + contains: Sizzle.contains, + filter: function (expr, elems, not) { + var i = elems.length; + if (not) { + expr = ':not(' + expr + ')'; + } + while (i--) { + if (elems[i].nodeType !== 1) { + elems.splice(i, 1); + } + } + if (elems.length === 1) { + elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : []; + } else { + elems = DomQuery.find.matches(expr, elems); + } + return elems; + } + }); + var dir = function (el, prop, until) { + var matched = []; + var cur = el[prop]; + if (typeof until !== 'string' && until instanceof DomQuery) { + until = until[0]; + } + while (cur && cur.nodeType !== 9) { + if (until !== undefined) { + if (cur === until) { + break; + } + if (typeof until === 'string' && DomQuery(cur).is(until)) { + break; + } + } + if (cur.nodeType === 1) { + matched.push(cur); + } + cur = cur[prop]; + } + return matched; + }; + var sibling = function (node, siblingName, nodeType, until) { + var result = []; + if (until instanceof DomQuery) { + until = until[0]; + } + for (; node; node = node[siblingName]) { + if (nodeType && node.nodeType !== nodeType) { + continue; + } + if (until !== undefined) { + if (node === until) { + break; + } + if (typeof until === 'string' && DomQuery(node).is(until)) { + break; + } + } + result.push(node); + } + return result; + }; + var firstSibling = function (node, siblingName, nodeType) { + for (node = node[siblingName]; node; node = node[siblingName]) { + if (node.nodeType === nodeType) { + return node; + } + } + return null; + }; + each$2({ + parent: function (node) { + var parent = node.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function (node) { + return dir(node, 'parentNode'); + }, + next: function (node) { + return firstSibling(node, 'nextSibling', 1); + }, + prev: function (node) { + return firstSibling(node, 'previousSibling', 1); + }, + children: function (node) { + return sibling(node.firstChild, 'nextSibling', 1); + }, + contents: function (node) { + return $_a5gegtjje5o2pum.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes); + } + }, function (name, fn) { + DomQuery.fn[name] = function (selector) { + var self = this; + var result = []; + self.each(function () { + var nodes = fn.call(result, this, selector, result); + if (nodes) { + if (DomQuery.isArray(nodes)) { + result.push.apply(result, nodes); + } else { + result.push(nodes); + } + } + }); + if (this.length > 1) { + if (!skipUniques[name]) { + result = DomQuery.unique(result); + } + if (name.indexOf('parents') === 0) { + result = result.reverse(); + } + } + result = DomQuery(result); + if (selector) { + return result.filter(selector); + } + return result; + }; + }); + each$2({ + parentsUntil: function (node, until) { + return dir(node, 'parentNode', until); + }, + nextUntil: function (node, until) { + return sibling(node, 'nextSibling', 1, until).slice(1); + }, + prevUntil: function (node, until) { + return sibling(node, 'previousSibling', 1, until).slice(1); + } + }, function (name, fn) { + DomQuery.fn[name] = function (selector, filter) { + var self = this; + var result = []; + self.each(function () { + var nodes = fn.call(result, this, selector, result); + if (nodes) { + if (DomQuery.isArray(nodes)) { + result.push.apply(result, nodes); + } else { + result.push(nodes); + } + } + }); + if (this.length > 1) { + result = DomQuery.unique(result); + if (name.indexOf('parents') === 0 || name === 'prevUntil') { + result = result.reverse(); + } + } + result = DomQuery(result); + if (filter) { + return result.filter(filter); + } + return result; + }; + }); + DomQuery.fn.is = function (selector) { + return !!selector && this.filter(selector).length > 0; + }; + DomQuery.fn.init.prototype = DomQuery.fn; + DomQuery.overrideDefaults = function (callback) { + var defaults; + var sub = function (selector, context) { + defaults = defaults || callback(); + if (arguments.length === 0) { + selector = defaults.element; + } + if (!context) { + context = defaults.context; + } + return new sub.fn.init(selector, context); + }; + DomQuery.extend(sub, this); + return sub; + }; + var appendHooks = function (targetHooks, prop, hooks) { + each$2(hooks, function (name, func) { + targetHooks[name] = targetHooks[name] || {}; + targetHooks[name][prop] = func; + }); + }; + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 8) { + appendHooks(attrHooks, 'get', { + maxlength: function (elm) { + var value = elm.maxLength; + if (value === 2147483647) { + return undefined; + } + return value; + }, + size: function (elm) { + var value = elm.size; + if (value === 20) { + return undefined; + } + return value; + }, + class: function (elm) { + return elm.className; + }, + style: function (elm) { + var value = elm.style.cssText; + if (value.length === 0) { + return undefined; + } + return value; + } + }); + appendHooks(attrHooks, 'set', { + class: function (elm, value) { + elm.className = value; + }, + style: function (elm, value) { + elm.style.cssText = value; + } + }); + } + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 9) { + cssFix.float = 'styleFloat'; + appendHooks(cssHooks, 'set', { + opacity: function (elm, value) { + var style = elm.style; + if (value === null || value === '') { + style.removeAttribute('filter'); + } else { + style.zoom = 1; + style.filter = 'alpha(opacity=' + value * 100 + ')'; + } + } + }); + } + DomQuery.attrHooks = attrHooks; + DomQuery.cssHooks = cssHooks; + + var cached = function (f) { + var called = false; + var r; + return function () { + if (!called) { + called = true; + r = f.apply(null, arguments); + } + return r; + }; + }; + var $_g85o1xnje5o2pvw = { cached: cached }; + + var firstMatch = function (regexes, s) { + for (var i = 0; i < regexes.length; i++) { + var x = regexes[i]; + if (x.test(s)) + return x; + } + return undefined; + }; + var find$2 = function (regexes, agent) { + var r = firstMatch(regexes, agent); + if (!r) + return { + major: 0, + minor: 0 + }; + var group = function (i) { + return Number(agent.replace(r, '$' + i)); + }; + return nu(group(1), group(2)); + }; + var detect = function (versionRegexes, agent) { + var cleanedAgent = String(agent).toLowerCase(); + if (versionRegexes.length === 0) + return unknown(); + return find$2(versionRegexes, cleanedAgent); + }; + var unknown = function () { + return nu(0, 0); + }; + var nu = function (major, minor) { + return { + major: major, + minor: minor + }; + }; + var $_df13jvqje5o2pw3 = { + nu: nu, + detect: detect, + unknown: unknown + }; + + var edge = 'Edge'; + var chrome = 'Chrome'; + var ie$1 = 'IE'; + var opera$1 = 'Opera'; + var firefox = 'Firefox'; + var safari = 'Safari'; + var isBrowser = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$1 = function () { + return nu$1({ + current: undefined, + version: $_df13jvqje5o2pw3.unknown() + }); + }; + var nu$1 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isEdge: isBrowser(edge, current), + isChrome: isBrowser(chrome, current), + isIE: isBrowser(ie$1, current), + isOpera: isBrowser(opera$1, current), + isFirefox: isBrowser(firefox, current), + isSafari: isBrowser(safari, current) + }; + }; + var $_3tg2x6pje5o2pvz = { + unknown: unknown$1, + nu: nu$1, + edge: $_enfhkv6je5o2ply.constant(edge), + chrome: $_enfhkv6je5o2ply.constant(chrome), + ie: $_enfhkv6je5o2ply.constant(ie$1), + opera: $_enfhkv6je5o2ply.constant(opera$1), + firefox: $_enfhkv6je5o2ply.constant(firefox), + safari: $_enfhkv6je5o2ply.constant(safari) + }; + + var windows = 'Windows'; + var ios = 'iOS'; + var android$1 = 'Android'; + var linux = 'Linux'; + var osx = 'OSX'; + var solaris = 'Solaris'; + var freebsd = 'FreeBSD'; + var isOS = function (name, current) { + return function () { + return current === name; + }; + }; + var unknown$2 = function () { + return nu$2({ + current: undefined, + version: $_df13jvqje5o2pw3.unknown() + }); + }; + var nu$2 = function (info) { + var current = info.current; + var version = info.version; + return { + current: current, + version: version, + isWindows: isOS(windows, current), + isiOS: isOS(ios, current), + isAndroid: isOS(android$1, current), + isOSX: isOS(osx, current), + isLinux: isOS(linux, current), + isSolaris: isOS(solaris, current), + isFreeBSD: isOS(freebsd, current) + }; + }; + var $_w4a0lrje5o2pw4 = { + unknown: unknown$2, + nu: nu$2, + windows: $_enfhkv6je5o2ply.constant(windows), + ios: $_enfhkv6je5o2ply.constant(ios), + android: $_enfhkv6je5o2ply.constant(android$1), + linux: $_enfhkv6je5o2ply.constant(linux), + osx: $_enfhkv6je5o2ply.constant(osx), + solaris: $_enfhkv6je5o2ply.constant(solaris), + freebsd: $_enfhkv6je5o2ply.constant(freebsd) + }; + + function DeviceType (os, browser, userAgent) { + var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true; + var isiPhone = os.isiOS() && !isiPad; + var isAndroid3 = os.isAndroid() && os.version.major === 3; + var isAndroid4 = os.isAndroid() && os.version.major === 4; + var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true; + var isTouch = os.isiOS() || os.isAndroid(); + var isPhone = isTouch && !isTablet; + var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false; + return { + isiPad: $_enfhkv6je5o2ply.constant(isiPad), + isiPhone: $_enfhkv6je5o2ply.constant(isiPhone), + isTablet: $_enfhkv6je5o2ply.constant(isTablet), + isPhone: $_enfhkv6je5o2ply.constant(isPhone), + isTouch: $_enfhkv6je5o2ply.constant(isTouch), + isAndroid: os.isAndroid, + isiOS: os.isiOS, + isWebView: $_enfhkv6je5o2ply.constant(iOSwebview) + }; + } + + var detect$1 = function (candidates, userAgent) { + var agent = String(userAgent).toLowerCase(); + return $_bwcteb4je5o2pl4.find(candidates, function (candidate) { + return candidate.search(agent); + }); + }; + var detectBrowser = function (browsers, userAgent) { + return detect$1(browsers, userAgent).map(function (browser) { + var version = $_df13jvqje5o2pw3.detect(browser.versionRegexes, userAgent); + return { + current: browser.name, + version: version + }; + }); + }; + var detectOs = function (oses, userAgent) { + return detect$1(oses, userAgent).map(function (os) { + var version = $_df13jvqje5o2pw3.detect(os.versionRegexes, userAgent); + return { + current: os.name, + version: version + }; + }); + }; + var $_4evi4wtje5o2pwb = { + detectBrowser: detectBrowser, + detectOs: detectOs + }; + + var addToStart = function (str, prefix) { + return prefix + str; + }; + var addToEnd = function (str, suffix) { + return str + suffix; + }; + var removeFromStart = function (str, numChars) { + return str.substring(numChars); + }; + var removeFromEnd = function (str, numChars) { + return str.substring(0, str.length - numChars); + }; + var $_3qinixwje5o2pwr = { + addToStart: addToStart, + addToEnd: addToEnd, + removeFromStart: removeFromStart, + removeFromEnd: removeFromEnd + }; + + var first = function (str, count) { + return str.substr(0, count); + }; + var last$2 = function (str, count) { + return str.substr(str.length - count, str.length); + }; + var head$1 = function (str) { + return str === '' ? Option.none() : Option.some(str.substr(0, 1)); + }; + var tail = function (str) { + return str === '' ? Option.none() : Option.some(str.substring(1)); + }; + var $_7ingkmxje5o2pws = { + first: first, + last: last$2, + head: head$1, + tail: tail + }; + + var checkRange = function (str, substr, start) { + if (substr === '') + return true; + if (str.length < substr.length) + return false; + var x = str.substr(start, start + substr.length); + return x === substr; + }; + var supplant = function (str, obj) { + var isStringOrNumber = function (a) { + var t = typeof a; + return t === 'string' || t === 'number'; + }; + return str.replace(/\${([^{}]*)}/g, function (a, b) { + var value = obj[b]; + return isStringOrNumber(value) ? value : a; + }); + }; + var removeLeading = function (str, prefix) { + return startsWith(str, prefix) ? $_3qinixwje5o2pwr.removeFromStart(str, prefix.length) : str; + }; + var removeTrailing = function (str, prefix) { + return endsWith(str, prefix) ? $_3qinixwje5o2pwr.removeFromEnd(str, prefix.length) : str; + }; + var ensureLeading = function (str, prefix) { + return startsWith(str, prefix) ? str : $_3qinixwje5o2pwr.addToStart(str, prefix); + }; + var ensureTrailing = function (str, prefix) { + return endsWith(str, prefix) ? str : $_3qinixwje5o2pwr.addToEnd(str, prefix); + }; + var contains$2 = function (str, substr) { + return str.indexOf(substr) !== -1; + }; + var capitalize = function (str) { + return $_7ingkmxje5o2pws.head(str).bind(function (head) { + return $_7ingkmxje5o2pws.tail(str).map(function (tail) { + return head.toUpperCase() + tail; + }); + }).getOr(str); + }; + var startsWith = function (str, prefix) { + return checkRange(str, prefix, 0); + }; + var endsWith = function (str, suffix) { + return checkRange(str, suffix, str.length - suffix.length); + }; + var trim$2 = function (str) { + return str.replace(/^\s+|\s+$/g, ''); + }; + var lTrim = function (str) { + return str.replace(/^\s+/g, ''); + }; + var rTrim = function (str) { + return str.replace(/\s+$/g, ''); + }; + var $_6dh61xvje5o2pwo = { + supplant: supplant, + startsWith: startsWith, + removeLeading: removeLeading, + removeTrailing: removeTrailing, + ensureLeading: ensureLeading, + ensureTrailing: ensureTrailing, + endsWith: endsWith, + contains: contains$2, + trim: trim$2, + lTrim: lTrim, + rTrim: rTrim, + capitalize: capitalize + }; + + var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/; + var checkContains = function (target) { + return function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, target); + }; + }; + var browsers = [ + { + name: 'Edge', + versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], + search: function (uastring) { + var monstrosity = $_6dh61xvje5o2pwo.contains(uastring, 'edge/') && $_6dh61xvje5o2pwo.contains(uastring, 'chrome') && $_6dh61xvje5o2pwo.contains(uastring, 'safari') && $_6dh61xvje5o2pwo.contains(uastring, 'applewebkit'); + return monstrosity; + } + }, + { + name: 'Chrome', + versionRegexes: [ + /.*?chrome\/([0-9]+)\.([0-9]+).*/, + normalVersionRegex + ], + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'chrome') && !$_6dh61xvje5o2pwo.contains(uastring, 'chromeframe'); + } + }, + { + name: 'IE', + versionRegexes: [ + /.*?msie\ ?([0-9]+)\.([0-9]+).*/, + /.*?rv:([0-9]+)\.([0-9]+).*/ + ], + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'msie') || $_6dh61xvje5o2pwo.contains(uastring, 'trident'); + } + }, + { + name: 'Opera', + versionRegexes: [ + normalVersionRegex, + /.*?opera\/([0-9]+)\.([0-9]+).*/ + ], + search: checkContains('opera') + }, + { + name: 'Firefox', + versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], + search: checkContains('firefox') + }, + { + name: 'Safari', + versionRegexes: [ + normalVersionRegex, + /.*?cpu os ([0-9]+)_([0-9]+).*/ + ], + search: function (uastring) { + return ($_6dh61xvje5o2pwo.contains(uastring, 'safari') || $_6dh61xvje5o2pwo.contains(uastring, 'mobile/')) && $_6dh61xvje5o2pwo.contains(uastring, 'applewebkit'); + } + } + ]; + var oses = [ + { + name: 'Windows', + search: checkContains('win'), + versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'iOS', + search: function (uastring) { + return $_6dh61xvje5o2pwo.contains(uastring, 'iphone') || $_6dh61xvje5o2pwo.contains(uastring, 'ipad'); + }, + versionRegexes: [ + /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, + /.*cpu os ([0-9]+)_([0-9]+).*/, + /.*cpu iphone os ([0-9]+)_([0-9]+).*/ + ] + }, + { + name: 'Android', + search: checkContains('android'), + versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] + }, + { + name: 'OSX', + search: checkContains('os x'), + versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] + }, + { + name: 'Linux', + search: checkContains('linux'), + versionRegexes: [] + }, + { + name: 'Solaris', + search: checkContains('sunos'), + versionRegexes: [] + }, + { + name: 'FreeBSD', + search: checkContains('freebsd'), + versionRegexes: [] + } + ]; + var $_5dts3kuje5o2pwh = { + browsers: $_enfhkv6je5o2ply.constant(browsers), + oses: $_enfhkv6je5o2ply.constant(oses) + }; + + var detect$2 = function (userAgent) { + var browsers = $_5dts3kuje5o2pwh.browsers(); + var oses = $_5dts3kuje5o2pwh.oses(); + var browser = $_4evi4wtje5o2pwb.detectBrowser(browsers, userAgent).fold($_3tg2x6pje5o2pvz.unknown, $_3tg2x6pje5o2pvz.nu); + var os = $_4evi4wtje5o2pwb.detectOs(oses, userAgent).fold($_w4a0lrje5o2pw4.unknown, $_w4a0lrje5o2pw4.nu); + var deviceType = DeviceType(os, browser, userAgent); + return { + browser: browser, + os: os, + deviceType: deviceType + }; + }; + var $_7glnnooje5o2pvy = { detect: detect$2 }; + + var detect$3 = $_g85o1xnje5o2pvw.cached(function () { + var userAgent = navigator.userAgent; + return $_7glnnooje5o2pvy.detect(userAgent); + }); + var $_2hq237mje5o2pvu = { detect: detect$3 }; + + var fromHtml = function (html, scope) { + var doc = scope || document; + var div = doc.createElement('div'); + div.innerHTML = html; + if (!div.hasChildNodes() || div.childNodes.length > 1) { + console.error('HTML does not have a single root node', html); + throw 'HTML must have a single root node'; + } + return fromDom(div.childNodes[0]); + }; + var fromTag = function (tag, scope) { + var doc = scope || document; + var node = doc.createElement(tag); + return fromDom(node); + }; + var fromText = function (text, scope) { + var doc = scope || document; + var node = doc.createTextNode(text); + return fromDom(node); + }; + var fromDom = function (node) { + if (node === null || node === undefined) + throw new Error('Node cannot be null or undefined'); + return { dom: $_enfhkv6je5o2ply.constant(node) }; + }; + var fromPoint = function (doc, x, y) { + return Option.from(doc.dom().elementFromPoint(x, y)).map(fromDom); + }; + var $_5tcb2dyje5o2pwu = { + fromHtml: fromHtml, + fromTag: fromTag, + fromText: fromText, + fromDom: fromDom, + fromPoint: fromPoint + }; + + var $_62vbac10je5o2px2 = { + ATTRIBUTE: 2, + CDATA_SECTION: 4, + COMMENT: 8, + DOCUMENT: 9, + DOCUMENT_TYPE: 10, + DOCUMENT_FRAGMENT: 11, + ELEMENT: 1, + TEXT: 3, + PROCESSING_INSTRUCTION: 7, + ENTITY_REFERENCE: 5, + ENTITY: 6, + NOTATION: 12 + }; + + var name = function (element) { + var r = element.dom().nodeName; + return r.toLowerCase(); + }; + var type = function (element) { + return element.dom().nodeType; + }; + var value = function (element) { + return element.dom().nodeValue; + }; + var isType = function (t) { + return function (element) { + return type(element) === t; + }; + }; + var isComment = function (element) { + return type(element) === $_62vbac10je5o2px2.COMMENT || name(element) === '#comment'; + }; + var isElement = isType($_62vbac10je5o2px2.ELEMENT); + var isText = isType($_62vbac10je5o2px2.TEXT); + var isDocument = isType($_62vbac10je5o2px2.DOCUMENT); + var $_95wn8qzje5o2px0 = { + name: name, + type: type, + value: value, + isElement: isElement, + isText: isText, + isDocument: isDocument, + isComment: isComment + }; + + var typeOf = function (x) { + if (x === null) + return 'null'; + var t = typeof x; + if (t === 'object' && Array.prototype.isPrototypeOf(x)) + return 'array'; + if (t === 'object' && String.prototype.isPrototypeOf(x)) + return 'string'; + return t; + }; + var isType$1 = function (type) { + return function (value) { + return typeOf(value) === type; + }; + }; + var $_be3q8w12je5o2pxj = { + isString: isType$1('string'), + isObject: isType$1('object'), + isArray: isType$1('array'), + isNull: isType$1('null'), + isBoolean: isType$1('boolean'), + isUndefined: isType$1('undefined'), + isFunction: isType$1('function'), + isNumber: isType$1('number') + }; + + var keys = function () { + var fastKeys = Object.keys; + var slowKeys = function (o) { + var r = []; + for (var i in o) { + if (o.hasOwnProperty(i)) { + r.push(i); + } + } + return r; + }; + return fastKeys === undefined ? slowKeys : fastKeys; + }(); + var each$3 = function (obj, f) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + f(x, i, obj); + } + }; + var objectMap = function (obj, f) { + return tupleMap(obj, function (x, i, obj) { + return { + k: i, + v: f(x, i, obj) + }; + }); + }; + var tupleMap = function (obj, f) { + var r = {}; + each$3(obj, function (x, i) { + var tuple = f(x, i, obj); + r[tuple.k] = tuple.v; + }); + return r; + }; + var bifilter = function (obj, pred) { + var t = {}; + var f = {}; + each$3(obj, function (x, i) { + var branch = pred(x, i) ? t : f; + branch[i] = x; + }); + return { + t: t, + f: f + }; + }; + var mapToArray = function (obj, f) { + var r = []; + each$3(obj, function (value, name) { + r.push(f(value, name)); + }); + return r; + }; + var find$3 = function (obj, pred) { + var props = keys(obj); + for (var k = 0, len = props.length; k < len; k++) { + var i = props[k]; + var x = obj[i]; + if (pred(x, i, obj)) { + return Option.some(x); + } + } + return Option.none(); + }; + var values = function (obj) { + return mapToArray(obj, function (v) { + return v; + }); + }; + var size = function (obj) { + return values(obj).length; + }; + var $_8v44sy13je5o2pxm = { + bifilter: bifilter, + each: each$3, + map: objectMap, + mapToArray: mapToArray, + tupleMap: tupleMap, + find: find$3, + keys: keys, + values: values, + size: size + }; + + var rawSet = function (dom, key, value) { + if ($_be3q8w12je5o2pxj.isString(value) || $_be3q8w12je5o2pxj.isBoolean(value) || $_be3q8w12je5o2pxj.isNumber(value)) { + dom.setAttribute(key, value + ''); + } else { + console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom); + throw new Error('Attribute value was not simple'); + } + }; + var set = function (element, key, value) { + rawSet(element.dom(), key, value); + }; + var setAll = function (element, attrs) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(attrs, function (v, k) { + rawSet(dom, k, v); + }); + }; + var get = function (element, key) { + var v = element.dom().getAttribute(key); + return v === null ? undefined : v; + }; + var has = function (element, key) { + var dom = element.dom(); + return dom && dom.hasAttribute ? dom.hasAttribute(key) : false; + }; + var remove = function (element, key) { + element.dom().removeAttribute(key); + }; + var hasNone = function (element) { + var attrs = element.dom().attributes; + return attrs === undefined || attrs === null || attrs.length === 0; + }; + var clone = function (element) { + return $_bwcteb4je5o2pl4.foldl(element.dom().attributes, function (acc, attr) { + acc[attr.name] = attr.value; + return acc; + }, {}); + }; + var transferOne = function (source, destination, attr) { + if (has(source, attr) && !has(destination, attr)) + set(destination, attr, get(source, attr)); + }; + var transfer = function (source, destination, attrs) { + if (!$_95wn8qzje5o2px0.isElement(source) || !$_95wn8qzje5o2px0.isElement(destination)) + return; + $_bwcteb4je5o2pl4.each(attrs, function (attr) { + transferOne(source, destination, attr); + }); + }; + var $_3uo9pl14je5o2pxq = { + clone: clone, + set: set, + setAll: setAll, + get: get, + has: has, + remove: remove, + hasNone: hasNone, + transfer: transfer + }; + + var inBody = function (element) { + var dom = $_95wn8qzje5o2px0.isText(element) ? element.dom().parentNode : element.dom(); + return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom); + }; + var body = $_g85o1xnje5o2pvw.cached(function () { + return getBody($_5tcb2dyje5o2pwu.fromDom(document)); + }); + var getBody = function (doc) { + var body = doc.dom().body; + if (body === null || body === undefined) + throw 'Body is not available yet'; + return $_5tcb2dyje5o2pwu.fromDom(body); + }; + var $_484buq15je5o2py8 = { + body: body, + getBody: getBody, + inBody: inBody + }; + + var isSupported = function (dom) { + return dom.style !== undefined; + }; + var $_g9o6j616je5o2pyb = { isSupported: isSupported }; + + var internalSet = function (dom, property, value) { + if (!$_be3q8w12je5o2pxj.isString(value)) { + console.error('Invalid call to CSS.set. Property ', property, ':: Value ', value, ':: Element ', dom); + throw new Error('CSS value must be a string: ' + value); + } + if ($_g9o6j616je5o2pyb.isSupported(dom)) + dom.style.setProperty(property, value); + }; + var internalRemove = function (dom, property) { + if ($_g9o6j616je5o2pyb.isSupported(dom)) + dom.style.removeProperty(property); + }; + var set$1 = function (element, property, value) { + var dom = element.dom(); + internalSet(dom, property, value); + }; + var setAll$1 = function (element, css) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(css, function (v, k) { + internalSet(dom, k, v); + }); + }; + var setOptions = function (element, css) { + var dom = element.dom(); + $_8v44sy13je5o2pxm.each(css, function (v, k) { + v.fold(function () { + internalRemove(dom, k); + }, function (value) { + internalSet(dom, k, value); + }); + }); + }; + var get$1 = function (element, property) { + var dom = element.dom(); + var styles = window.getComputedStyle(dom); + var r = styles.getPropertyValue(property); + var v = r === '' && !$_484buq15je5o2py8.inBody(element) ? getUnsafeProperty(dom, property) : r; + return v === null ? undefined : v; + }; + var getUnsafeProperty = function (dom, property) { + return $_g9o6j616je5o2pyb.isSupported(dom) ? dom.style.getPropertyValue(property) : ''; + }; + var getRaw = function (element, property) { + var dom = element.dom(); + var raw = getUnsafeProperty(dom, property); + return Option.from(raw).filter(function (r) { + return r.length > 0; + }); + }; + var getAllRaw = function (element) { + var css = {}; + var dom = element.dom(); + if ($_g9o6j616je5o2pyb.isSupported(dom)) { + for (var i = 0; i < dom.style.length; i++) { + var ruleName = dom.style.item(i); + css[ruleName] = dom.style[ruleName]; + } + } + return css; + }; + var isValidValue = function (tag, property, value) { + var element = $_5tcb2dyje5o2pwu.fromTag(tag); + set$1(element, property, value); + var style = getRaw(element, property); + return style.isSome(); + }; + var remove$1 = function (element, property) { + var dom = element.dom(); + internalRemove(dom, property); + if ($_3uo9pl14je5o2pxq.has(element, 'style') && $_6dh61xvje5o2pwo.trim($_3uo9pl14je5o2pxq.get(element, 'style')) === '') { + $_3uo9pl14je5o2pxq.remove(element, 'style'); + } + }; + var preserve = function (element, f) { + var oldStyles = $_3uo9pl14je5o2pxq.get(element, 'style'); + var result = f(element); + var restore = oldStyles === undefined ? $_3uo9pl14je5o2pxq.remove : $_3uo9pl14je5o2pxq.set; + restore(element, 'style', oldStyles); + return result; + }; + var copy = function (source, target) { + var sourceDom = source.dom(); + var targetDom = target.dom(); + if ($_g9o6j616je5o2pyb.isSupported(sourceDom) && $_g9o6j616je5o2pyb.isSupported(targetDom)) { + targetDom.style.cssText = sourceDom.style.cssText; + } + }; + var reflow = function (e) { + return e.dom().offsetWidth; + }; + var transferOne$1 = function (source, destination, style) { + getRaw(source, style).each(function (value) { + if (getRaw(destination, style).isNone()) + set$1(destination, style, value); + }); + }; + var transfer$1 = function (source, destination, styles) { + if (!$_95wn8qzje5o2px0.isElement(source) || !$_95wn8qzje5o2px0.isElement(destination)) + return; + $_bwcteb4je5o2pl4.each(styles, function (style) { + transferOne$1(source, destination, style); + }); + }; + var $_1ioope11je5o2px4 = { + copy: copy, + set: set$1, + preserve: preserve, + setAll: setAll$1, + setOptions: setOptions, + remove: remove$1, + get: get$1, + getRaw: getRaw, + getAllRaw: getAllRaw, + isValidValue: isValidValue, + reflow: reflow, + transfer: transfer$1 + }; + + function Immutable () { + var fields = arguments; + return function () { + var values = new Array(arguments.length); + for (var i = 0; i < values.length; i++) + values[i] = arguments[i]; + if (fields.length !== values.length) + throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments'); + var struct = {}; + $_bwcteb4je5o2pl4.each(fields, function (name, i) { + struct[name] = $_enfhkv6je5o2ply.constant(values[i]); + }); + return struct; + }; + } + + var sort$1 = function (arr) { + return arr.slice(0).sort(); + }; + var reqMessage = function (required, keys) { + throw new Error('All required keys (' + sort$1(required).join(', ') + ') were not specified. Specified keys were: ' + sort$1(keys).join(', ') + '.'); + }; + var unsuppMessage = function (unsupported) { + throw new Error('Unsupported keys for object: ' + sort$1(unsupported).join(', ')); + }; + var validateStrArr = function (label, array) { + if (!$_be3q8w12je5o2pxj.isArray(array)) + throw new Error('The ' + label + ' fields must be an array. Was: ' + array + '.'); + $_bwcteb4je5o2pl4.each(array, function (a) { + if (!$_be3q8w12je5o2pxj.isString(a)) + throw new Error('The value ' + a + ' in the ' + label + ' fields was not a string.'); + }); + }; + var invalidTypeMessage = function (incorrect, type) { + throw new Error('All values need to be of type: ' + type + '. Keys (' + sort$1(incorrect).join(', ') + ') were not.'); + }; + var checkDupes = function (everything) { + var sorted = sort$1(everything); + var dupe = $_bwcteb4je5o2pl4.find(sorted, function (s, i) { + return i < sorted.length - 1 && s === sorted[i + 1]; + }); + dupe.each(function (d) { + throw new Error('The field: ' + d + ' occurs more than once in the combined fields: [' + sorted.join(', ') + '].'); + }); + }; + var $_avjnh51bje5o2pyw = { + sort: sort$1, + reqMessage: reqMessage, + unsuppMessage: unsuppMessage, + validateStrArr: validateStrArr, + invalidTypeMessage: invalidTypeMessage, + checkDupes: checkDupes + }; + + function MixedBag (required, optional) { + var everything = required.concat(optional); + if (everything.length === 0) + throw new Error('You must specify at least one required or optional field.'); + $_avjnh51bje5o2pyw.validateStrArr('required', required); + $_avjnh51bje5o2pyw.validateStrArr('optional', optional); + $_avjnh51bje5o2pyw.checkDupes(everything); + return function (obj) { + var keys = $_8v44sy13je5o2pxm.keys(obj); + var allReqd = $_bwcteb4je5o2pl4.forall(required, function (req) { + return $_bwcteb4je5o2pl4.contains(keys, req); + }); + if (!allReqd) + $_avjnh51bje5o2pyw.reqMessage(required, keys); + var unsupported = $_bwcteb4je5o2pl4.filter(keys, function (key) { + return !$_bwcteb4je5o2pl4.contains(everything, key); + }); + if (unsupported.length > 0) + $_avjnh51bje5o2pyw.unsuppMessage(unsupported); + var r = {}; + $_bwcteb4je5o2pl4.each(required, function (req) { + r[req] = $_enfhkv6je5o2ply.constant(obj[req]); + }); + $_bwcteb4je5o2pl4.each(optional, function (opt) { + r[opt] = $_enfhkv6je5o2ply.constant(Object.prototype.hasOwnProperty.call(obj, opt) ? Option.some(obj[opt]) : Option.none()); + }); + return r; + }; + } + + var $_86drv18je5o2pyn = { + immutable: Immutable, + immutableBag: MixedBag + }; + + var toArray$1 = function (target, f) { + var r = []; + var recurse = function (e) { + r.push(e); + return f(e); + }; + var cur = f(target); + do { + cur = cur.bind(recurse); + } while (cur.isSome()); + return r; + }; + var $_zryvs1cje5o2pyz = { toArray: toArray$1 }; + + var node = function () { + var f = $_lmz5vbje5o2pp9.getOrDie('Node'); + return f; + }; + var compareDocumentPosition = function (a, b, match) { + return (a.compareDocumentPosition(b) & match) !== 0; + }; + var documentPositionPreceding = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING); + }; + var documentPositionContainedBy = function (a, b) { + return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY); + }; + var $_3s8zkc1eje5o2pz7 = { + documentPositionPreceding: documentPositionPreceding, + documentPositionContainedBy: documentPositionContainedBy + }; + + var ELEMENT = $_62vbac10je5o2px2.ELEMENT; + var DOCUMENT = $_62vbac10je5o2px2.DOCUMENT; + var is$1 = function (element, selector) { + var elem = element.dom(); + if (elem.nodeType !== ELEMENT) + return false; + else if (elem.matches !== undefined) + return elem.matches(selector); + else if (elem.msMatchesSelector !== undefined) + return elem.msMatchesSelector(selector); + else if (elem.webkitMatchesSelector !== undefined) + return elem.webkitMatchesSelector(selector); + else if (elem.mozMatchesSelector !== undefined) + return elem.mozMatchesSelector(selector); + else + throw new Error('Browser lacks native selectors'); + }; + var bypassSelector = function (dom) { + return dom.nodeType !== ELEMENT && dom.nodeType !== DOCUMENT || dom.childElementCount === 0; + }; + var all = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? [] : $_bwcteb4je5o2pl4.map(base.querySelectorAll(selector), $_5tcb2dyje5o2pwu.fromDom); + }; + var one = function (selector, scope) { + var base = scope === undefined ? document : scope.dom(); + return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map($_5tcb2dyje5o2pwu.fromDom); + }; + var $_87zu5k1fje5o2pz9 = { + all: all, + is: is$1, + one: one + }; + + var eq = function (e1, e2) { + return e1.dom() === e2.dom(); + }; + var isEqualNode = function (e1, e2) { + return e1.dom().isEqualNode(e2.dom()); + }; + var member = function (element, elements) { + return $_bwcteb4je5o2pl4.exists(elements, $_enfhkv6je5o2ply.curry(eq, element)); + }; + var regularContains = function (e1, e2) { + var d1 = e1.dom(), d2 = e2.dom(); + return d1 === d2 ? false : d1.contains(d2); + }; + var ieContains = function (e1, e2) { + return $_3s8zkc1eje5o2pz7.documentPositionContainedBy(e1.dom(), e2.dom()); + }; + var browser = $_2hq237mje5o2pvu.detect().browser; + var contains$3 = browser.isIE() ? ieContains : regularContains; + var $_7oppmo1dje5o2pz1 = { + eq: eq, + isEqualNode: isEqualNode, + member: member, + contains: contains$3, + is: $_87zu5k1fje5o2pz9.is + }; + + var owner = function (element) { + return $_5tcb2dyje5o2pwu.fromDom(element.dom().ownerDocument); + }; + var documentElement = function (element) { + var doc = owner(element); + return $_5tcb2dyje5o2pwu.fromDom(doc.dom().documentElement); + }; + var defaultView = function (element) { + var el = element.dom(); + var defaultView = el.ownerDocument.defaultView; + return $_5tcb2dyje5o2pwu.fromDom(defaultView); + }; + var parent = function (element) { + var dom = element.dom(); + return Option.from(dom.parentNode).map($_5tcb2dyje5o2pwu.fromDom); + }; + var findIndex$2 = function (element) { + return parent(element).bind(function (p) { + var kin = children(p); + return $_bwcteb4je5o2pl4.findIndex(kin, function (elem) { + return $_7oppmo1dje5o2pz1.eq(element, elem); + }); + }); + }; + var parents = function (element, isRoot) { + var stop = $_be3q8w12je5o2pxj.isFunction(isRoot) ? isRoot : $_enfhkv6je5o2ply.constant(false); + var dom = element.dom(); + var ret = []; + while (dom.parentNode !== null && dom.parentNode !== undefined) { + var rawParent = dom.parentNode; + var parent = $_5tcb2dyje5o2pwu.fromDom(rawParent); + ret.push(parent); + if (stop(parent) === true) + break; + else + dom = rawParent; + } + return ret; + }; + var siblings = function (element) { + var filterSelf = function (elements) { + return $_bwcteb4je5o2pl4.filter(elements, function (x) { + return !$_7oppmo1dje5o2pz1.eq(element, x); + }); + }; + return parent(element).map(children).map(filterSelf).getOr([]); + }; + var offsetParent = function (element) { + var dom = element.dom(); + return Option.from(dom.offsetParent).map($_5tcb2dyje5o2pwu.fromDom); + }; + var prevSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.previousSibling).map($_5tcb2dyje5o2pwu.fromDom); + }; + var nextSibling = function (element) { + var dom = element.dom(); + return Option.from(dom.nextSibling).map($_5tcb2dyje5o2pwu.fromDom); + }; + var prevSiblings = function (element) { + return $_bwcteb4je5o2pl4.reverse($_zryvs1cje5o2pyz.toArray(element, prevSibling)); + }; + var nextSiblings = function (element) { + return $_zryvs1cje5o2pyz.toArray(element, nextSibling); + }; + var children = function (element) { + var dom = element.dom(); + return $_bwcteb4je5o2pl4.map(dom.childNodes, $_5tcb2dyje5o2pwu.fromDom); + }; + var child = function (element, index) { + var children = element.dom().childNodes; + return Option.from(children[index]).map($_5tcb2dyje5o2pwu.fromDom); + }; + var firstChild = function (element) { + return child(element, 0); + }; + var lastChild = function (element) { + return child(element, element.dom().childNodes.length - 1); + }; + var childNodesCount = function (element) { + return element.dom().childNodes.length; + }; + var hasChildNodes = function (element) { + return element.dom().hasChildNodes(); + }; + var spot = $_86drv18je5o2pyn.immutable('element', 'offset'); + var leaf = function (element, offset) { + var cs = children(element); + return cs.length > 0 && offset < cs.length ? spot(cs[offset], 0) : spot(element, offset); + }; + var $_a6mttx17je5o2pyd = { + owner: owner, + defaultView: defaultView, + documentElement: documentElement, + parent: parent, + findIndex: findIndex$2, + parents: parents, + siblings: siblings, + prevSibling: prevSibling, + offsetParent: offsetParent, + prevSiblings: prevSiblings, + nextSibling: nextSibling, + nextSiblings: nextSiblings, + children: children, + child: child, + firstChild: firstChild, + lastChild: lastChild, + childNodesCount: childNodesCount, + hasChildNodes: hasChildNodes, + leaf: leaf + }; + + var browser$1 = $_2hq237mje5o2pvu.detect().browser; + var firstElement = function (nodes) { + return $_bwcteb4je5o2pl4.find(nodes, $_95wn8qzje5o2px0.isElement); + }; + var getTableCaptionDeltaY = function (elm) { + if (browser$1.isFirefox() && $_95wn8qzje5o2px0.name(elm) === 'table') { + return firstElement($_a6mttx17je5o2pyd.children(elm)).filter(function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'caption'; + }).bind(function (caption) { + return firstElement($_a6mttx17je5o2pyd.nextSiblings(caption)).map(function (body) { + var bodyTop = body.dom().offsetTop; + var captionTop = caption.dom().offsetTop; + var captionHeight = caption.dom().offsetHeight; + return bodyTop <= captionTop ? -captionHeight : 0; + }); + }).getOr(0); + } else { + return 0; + } + }; + var getPos = function (body, elm, rootElm) { + var x = 0, y = 0, offsetParent; + var doc = body.ownerDocument; + var pos; + rootElm = rootElm ? rootElm : body; + if (elm) { + if (rootElm === body && elm.getBoundingClientRect && $_1ioope11je5o2px4.get($_5tcb2dyje5o2pwu.fromDom(body), 'position') === 'static') { + pos = elm.getBoundingClientRect(); + x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft; + y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop; + return { + x: x, + y: y + }; + } + offsetParent = elm; + while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) { + x += offsetParent.offsetLeft || 0; + y += offsetParent.offsetTop || 0; + offsetParent = offsetParent.offsetParent; + } + offsetParent = elm.parentNode; + while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) { + x -= offsetParent.scrollLeft || 0; + y -= offsetParent.scrollTop || 0; + offsetParent = offsetParent.parentNode; + } + y += getTableCaptionDeltaY($_5tcb2dyje5o2pwu.fromDom(elm)); + } + return { + x: x, + y: y + }; + }; + var $_5uqvv2lje5o2pvj = { getPos: getPos }; + + var nu$3 = function (baseFn) { + var data = Option.none(); + var callbacks = []; + var map = function (f) { + return nu$3(function (nCallback) { + get(function (data) { + nCallback(f(data)); + }); + }); + }; + var get = function (nCallback) { + if (isReady()) + call(nCallback); + else + callbacks.push(nCallback); + }; + var set = function (x) { + data = Option.some(x); + run(callbacks); + callbacks = []; + }; + var isReady = function () { + return data.isSome(); + }; + var run = function (cbs) { + $_bwcteb4je5o2pl4.each(cbs, call); + }; + var call = function (cb) { + data.each(function (x) { + setTimeout(function () { + cb(x); + }, 0); + }); + }; + baseFn(set); + return { + get: get, + map: map, + isReady: isReady + }; + }; + var pure$1 = function (a) { + return nu$3(function (callback) { + callback(a); + }); + }; + var LazyValue = { + nu: nu$3, + pure: pure$1 + }; + + var bounce = function (f) { + return function () { + var args = Array.prototype.slice.call(arguments); + var me = this; + setTimeout(function () { + f.apply(me, args); + }, 0); + }; + }; + var $_bz4se01jje5o2pzu = { bounce: bounce }; + + var nu$4 = function (baseFn) { + var get = function (callback) { + baseFn($_bz4se01jje5o2pzu.bounce(callback)); + }; + var map = function (fab) { + return nu$4(function (callback) { + get(function (a) { + var value = fab(a); + callback(value); + }); + }); + }; + var bind = function (aFutureB) { + return nu$4(function (callback) { + get(function (a) { + aFutureB(a).get(callback); + }); + }); + }; + var anonBind = function (futureB) { + return nu$4(function (callback) { + get(function (a) { + futureB.get(callback); + }); + }); + }; + var toLazy = function () { + return LazyValue.nu(get); + }; + return { + map: map, + bind: bind, + anonBind: anonBind, + toLazy: toLazy, + get: get + }; + }; + var pure$2 = function (a) { + return nu$4(function (callback) { + callback(a); + }); + }; + var Future = { + nu: nu$4, + pure: pure$2 + }; + + var par = function (asyncValues, nu) { + return nu(function (callback) { + var r = []; + var count = 0; + var cb = function (i) { + return function (value) { + r[i] = value; + count++; + if (count >= asyncValues.length) { + callback(r); + } + }; + }; + if (asyncValues.length === 0) { + callback([]); + } else { + $_bwcteb4je5o2pl4.each(asyncValues, function (asyncValue, i) { + asyncValue.get(cb(i)); + }); + } + }); + }; + var $_7idrm1lje5o2pzx = { par: par }; + + var par$1 = function (futures) { + return $_7idrm1lje5o2pzx.par(futures, Future.nu); + }; + var mapM = function (array, fn) { + var futures = $_bwcteb4je5o2pl4.map(array, fn); + return par$1(futures); + }; + var compose$1 = function (f, g) { + return function (a) { + return g(a).bind(f); + }; + }; + var $_bqrv8i1kje5o2pzv = { + par: par$1, + mapM: mapM, + compose: compose$1 + }; + + var value$1 = function (o) { + var is = function (v) { + return o === v; + }; + var or = function (opt) { + return value$1(o); + }; + var orThunk = function (f) { + return value$1(o); + }; + var map = function (f) { + return value$1(f(o)); + }; + var each = function (f) { + f(o); + }; + var bind = function (f) { + return f(o); + }; + var fold = function (_, onValue) { + return onValue(o); + }; + var exists = function (f) { + return f(o); + }; + var forall = function (f) { + return f(o); + }; + var toOption = function () { + return Option.some(o); + }; + return { + is: is, + isValue: $_enfhkv6je5o2ply.always, + isError: $_enfhkv6je5o2ply.never, + getOr: $_enfhkv6je5o2ply.constant(o), + getOrThunk: $_enfhkv6je5o2ply.constant(o), + getOrDie: $_enfhkv6je5o2ply.constant(o), + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: each, + bind: bind, + exists: exists, + forall: forall, + toOption: toOption + }; + }; + var error = function (message) { + var getOrThunk = function (f) { + return f(); + }; + var getOrDie = function () { + return $_enfhkv6je5o2ply.die(message)(); + }; + var or = function (opt) { + return opt; + }; + var orThunk = function (f) { + return f(); + }; + var map = function (f) { + return error(message); + }; + var bind = function (f) { + return error(message); + }; + var fold = function (onError, _) { + return onError(message); + }; + return { + is: $_enfhkv6je5o2ply.never, + isValue: $_enfhkv6je5o2ply.never, + isError: $_enfhkv6je5o2ply.always, + getOr: $_enfhkv6je5o2ply.identity, + getOrThunk: getOrThunk, + getOrDie: getOrDie, + or: or, + orThunk: orThunk, + fold: fold, + map: map, + each: $_enfhkv6je5o2ply.noop, + bind: bind, + exists: $_enfhkv6je5o2ply.never, + forall: $_enfhkv6je5o2ply.always, + toOption: Option.none + }; + }; + var Result = { + value: value$1, + error: error + }; + + function StyleSheetLoader (document, settings) { + var idCount = 0; + var loadedStates = {}; + var maxLoadTime; + settings = settings || {}; + maxLoadTime = settings.maxLoadTime || 5000; + var appendToHead = function (node) { + document.getElementsByTagName('head')[0].appendChild(node); + }; + var load = function (url, loadedCallback, errorCallback) { + var link, style, startTime, state; + var passed = function () { + var callbacks = state.passed; + var i = callbacks.length; + while (i--) { + callbacks[i](); + } + state.status = 2; + state.passed = []; + state.failed = []; + }; + var failed = function () { + var callbacks = state.failed; + var i = callbacks.length; + while (i--) { + callbacks[i](); + } + state.status = 3; + state.passed = []; + state.failed = []; + }; + var isOldWebKit = function () { + var webKitChunks = navigator.userAgent.match(/WebKit\/(\d*)/); + return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536); + }; + var wait = function (testCallback, waitCallback) { + if (!testCallback()) { + if (new Date().getTime() - startTime < maxLoadTime) { + $_db41wogje5o2ps3.setTimeout(waitCallback); + } else { + failed(); + } + } + }; + var waitForWebKitLinkLoaded = function () { + wait(function () { + var styleSheets = document.styleSheets; + var styleSheet, i = styleSheets.length, owner; + while (i--) { + styleSheet = styleSheets[i]; + owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement; + if (owner && owner.id === link.id) { + passed(); + return true; + } + } + }, waitForWebKitLinkLoaded); + }; + var waitForGeckoLinkLoaded = function () { + wait(function () { + try { + var cssRules = style.sheet.cssRules; + passed(); + return !!cssRules; + } catch (ex) { + } + }, waitForGeckoLinkLoaded); + }; + url = $_a5gegtjje5o2pum._addCacheSuffix(url); + if (!loadedStates[url]) { + state = { + passed: [], + failed: [] + }; + loadedStates[url] = state; + } else { + state = loadedStates[url]; + } + if (loadedCallback) { + state.passed.push(loadedCallback); + } + if (errorCallback) { + state.failed.push(errorCallback); + } + if (state.status === 1) { + return; + } + if (state.status === 2) { + passed(); + return; + } + if (state.status === 3) { + failed(); + return; + } + state.status = 1; + link = document.createElement('link'); + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.id = 'u' + idCount++; + link.async = false; + link.defer = false; + startTime = new Date().getTime(); + if ('onload' in link && !isOldWebKit()) { + link.onload = waitForWebKitLinkLoaded; + link.onerror = failed; + } else { + if (navigator.userAgent.indexOf('Firefox') > 0) { + style = document.createElement('style'); + style.textContent = '@import "' + url + '"'; + waitForGeckoLinkLoaded(); + appendToHead(style); + return; + } + waitForWebKitLinkLoaded(); + } + appendToHead(link); + link.href = url; + }; + var loadF = function (url) { + return Future.nu(function (resolve) { + load(url, $_enfhkv6je5o2ply.compose(resolve, $_enfhkv6je5o2ply.constant(Result.value(url))), $_enfhkv6je5o2ply.compose(resolve, $_enfhkv6je5o2ply.constant(Result.error(url)))); + }); + }; + var unbox = function (result) { + return result.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var loadAll = function (urls, success, failure) { + $_bqrv8i1kje5o2pzv.par($_bwcteb4je5o2pl4.map(urls, loadF)).get(function (result) { + var parts = $_bwcteb4je5o2pl4.partition(result, function (r) { + return r.isValue(); + }); + if (parts.fail.length > 0) { + failure(parts.fail.map(unbox)); + } else { + success(parts.pass.map(unbox)); + } + }); + }; + return { + load: load, + loadAll: loadAll + }; + } + + function TreeWalker (startNode, rootNode) { + var node = startNode; + var findSibling = function (node, startName, siblingName, shallow) { + var sibling, parent; + if (node) { + if (!shallow && node[startName]) { + return node[startName]; + } + if (node !== rootNode) { + sibling = node[siblingName]; + if (sibling) { + return sibling; + } + for (parent = node.parentNode; parent && parent !== rootNode; parent = parent.parentNode) { + sibling = parent[siblingName]; + if (sibling) { + return sibling; + } + } + } + } + }; + var findPreviousNode = function (node, startName, siblingName, shallow) { + var sibling, parent, child; + if (node) { + sibling = node[siblingName]; + if (rootNode && sibling === rootNode) { + return; + } + if (sibling) { + if (!shallow) { + for (child = sibling[startName]; child; child = child[startName]) { + if (!child[startName]) { + return child; + } + } + } + return sibling; + } + parent = node.parentNode; + if (parent && parent !== rootNode) { + return parent; + } + } + }; + this.current = function () { + return node; + }; + this.next = function (shallow) { + node = findSibling(node, 'firstChild', 'nextSibling', shallow); + return node; + }; + this.prev = function (shallow) { + node = findSibling(node, 'lastChild', 'previousSibling', shallow); + return node; + }; + this.prev2 = function (shallow) { + node = findPreviousNode(node, 'lastChild', 'previousSibling', shallow); + return node; + }; + } + + var blocks = [ + 'article', + 'aside', + 'details', + 'div', + 'dt', + 'figcaption', + 'footer', + 'form', + 'fieldset', + 'header', + 'hgroup', + 'html', + 'main', + 'nav', + 'section', + 'summary', + 'body', + 'p', + 'dl', + 'multicol', + 'dd', + 'figure', + 'address', + 'center', + 'blockquote', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'listing', + 'xmp', + 'pre', + 'plaintext', + 'menu', + 'dir', + 'ul', + 'ol', + 'li', + 'hr', + 'table', + 'tbody', + 'thead', + 'tfoot', + 'th', + 'tr', + 'td', + 'caption' + ]; + var voids = [ + 'area', + 'base', + 'basefont', + 'br', + 'col', + 'frame', + 'hr', + 'img', + 'input', + 'isindex', + 'link', + 'meta', + 'param', + 'embed', + 'source', + 'wbr', + 'track' + ]; + var tableCells = [ + 'td', + 'th' + ]; + var tableSections = [ + 'thead', + 'tbody', + 'tfoot' + ]; + var textBlocks = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'p', + 'div', + 'address', + 'pre', + 'form', + 'blockquote', + 'center', + 'dir', + 'fieldset', + 'header', + 'footer', + 'article', + 'section', + 'hgroup', + 'aside', + 'nav', + 'figure' + ]; + var headings = [ + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6' + ]; + var listItems = [ + 'li', + 'dd', + 'dt' + ]; + var lists = [ + 'ul', + 'ol', + 'dl' + ]; + var lazyLookup = function (items) { + var lookup; + return function (node) { + lookup = lookup ? lookup : $_bwcteb4je5o2pl4.mapToObject(items, $_enfhkv6je5o2ply.constant(true)); + return lookup.hasOwnProperty($_95wn8qzje5o2px0.name(node)); + }; + }; + var isHeading = lazyLookup(headings); + var isBlock = lazyLookup(blocks); + var isInline = function (node) { + return $_95wn8qzje5o2px0.isElement(node) && !isBlock(node); + }; + var isBr = function (node) { + return $_95wn8qzje5o2px0.isElement(node) && $_95wn8qzje5o2px0.name(node) === 'br'; + }; + var isTextBlock = lazyLookup(textBlocks); + var isList = lazyLookup(lists); + var isListItem = lazyLookup(listItems); + var isVoid = lazyLookup(voids); + var isTableSection = lazyLookup(tableSections); + var isTableCell = lazyLookup(tableCells); + + var isNodeType = function (type) { + return function (node) { + return !!node && node.nodeType === type; + }; + }; + var isElement$1 = isNodeType(1); + var matchNodeNames = function (names) { + var items = names.toLowerCase().split(' '); + return function (node) { + var i, name; + if (node && node.nodeType) { + name = node.nodeName.toLowerCase(); + for (i = 0; i < items.length; i++) { + if (name === items[i]) { + return true; + } + } + } + return false; + }; + }; + var matchStyleValues = function (name, values) { + var items = values.toLowerCase().split(' '); + return function (node) { + var i, cssValue; + if (isElement$1(node)) { + for (i = 0; i < items.length; i++) { + cssValue = node.ownerDocument.defaultView.getComputedStyle(node, null).getPropertyValue(name); + if (cssValue === items[i]) { + return true; + } + } + } + return false; + }; + }; + var hasPropValue = function (propName, propValue) { + return function (node) { + return isElement$1(node) && node[propName] === propValue; + }; + }; + var hasAttribute = function (attrName, attrValue) { + return function (node) { + return isElement$1(node) && node.hasAttribute(attrName); + }; + }; + var hasAttributeValue = function (attrName, attrValue) { + return function (node) { + return isElement$1(node) && node.getAttribute(attrName) === attrValue; + }; + }; + var isBogus = function (node) { + return isElement$1(node) && node.hasAttribute('data-mce-bogus'); + }; + var isBogusAll = function (node) { + return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all'; + }; + var isTable = function (node) { + return isElement$1(node) && node.tagName === 'TABLE'; + }; + var hasContentEditableState = function (value) { + return function (node) { + if (isElement$1(node)) { + if (node.contentEditable === value) { + return true; + } + if (node.getAttribute('data-mce-contenteditable') === value) { + return true; + } + } + return false; + }; + }; + var isText$1 = isNodeType(3); + var isComment$1 = isNodeType(8); + var isDocument$1 = isNodeType(9); + var isBr$1 = matchNodeNames('br'); + var isContentEditableTrue = hasContentEditableState('true'); + var isContentEditableFalse = hasContentEditableState('false'); + var $_9owqcy1qje5o2q0e = { + isText: isText$1, + isElement: isElement$1, + isComment: isComment$1, + isDocument: isDocument$1, + isBr: isBr$1, + isContentEditableTrue: isContentEditableTrue, + isContentEditableFalse: isContentEditableFalse, + matchNodeNames: matchNodeNames, + hasPropValue: hasPropValue, + hasAttribute: hasAttribute, + hasAttributeValue: hasAttributeValue, + matchStyleValues: matchStyleValues, + isBogus: isBogus, + isBogusAll: isBogusAll, + isTable: isTable + }; + + var surroundedBySpans = function (node) { + var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN'; + var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN'; + return previousIsSpan && nextIsSpan; + }; + var isBookmarkNode = function (node) { + return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark'; + }; + var trimNode = function (dom, node) { + var i, children = node.childNodes; + if ($_9owqcy1qje5o2q0e.isElement(node) && isBookmarkNode(node)) { + return; + } + for (i = children.length - 1; i >= 0; i--) { + trimNode(dom, children[i]); + } + if ($_9owqcy1qje5o2q0e.isDocument(node) === false) { + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + var trimmedLength = $_a5gegtjje5o2pum.trim(node.nodeValue).length; + if (dom.isBlock(node.parentNode) || trimmedLength > 0) { + return; + } + if (trimmedLength === 0 && surroundedBySpans(node)) { + return; + } + } else if ($_9owqcy1qje5o2q0e.isElement(node)) { + children = node.childNodes; + if (children.length === 1 && isBookmarkNode(children[0])) { + node.parentNode.insertBefore(children[0], node); + } + if (children.length || isVoid($_5tcb2dyje5o2pwu.fromDom(node))) { + return; + } + } + dom.remove(node); + } + return node; + }; + var $_cfe5l31oje5o2q05 = { trimNode: trimNode }; + + var makeMap$1 = $_a5gegtjje5o2pum.makeMap; + var namedEntities; + var baseEntities; + var reverseEntities; + var attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; + var rawCharsRegExp = /[<>&\"\']/g; + var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi; + var asciiMap = { + 128: '\u20AC', + 130: '\u201A', + 131: '\u0192', + 132: '\u201E', + 133: '\u2026', + 134: '\u2020', + 135: '\u2021', + 136: '\u02c6', + 137: '\u2030', + 138: '\u0160', + 139: '\u2039', + 140: '\u0152', + 142: '\u017d', + 145: '\u2018', + 146: '\u2019', + 147: '\u201C', + 148: '\u201D', + 149: '\u2022', + 150: '\u2013', + 151: '\u2014', + 152: '\u02DC', + 153: '\u2122', + 154: '\u0161', + 155: '\u203A', + 156: '\u0153', + 158: '\u017e', + 159: '\u0178' + }; + baseEntities = { + '"': '"', + '\'': ''', + '<': '<', + '>': '>', + '&': '&', + '`': '`' + }; + reverseEntities = { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + ''': '\'' + }; + var nativeDecode = function (text) { + var elm; + elm = $_5tcb2dyje5o2pwu.fromTag('div').dom(); + elm.innerHTML = text; + return elm.textContent || elm.innerText || text; + }; + var buildEntitiesLookup = function (items, radix) { + var i, chr, entity; + var lookup = {}; + if (items) { + items = items.split(','); + radix = radix || 10; + for (i = 0; i < items.length; i += 2) { + chr = String.fromCharCode(parseInt(items[i], radix)); + if (!baseEntities[chr]) { + entity = '&' + items[i + 1] + ';'; + lookup[chr] = entity; + lookup[entity] = chr; + } + } + return lookup; + } + }; + namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32); + var encodeRaw = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + return baseEntities[chr] || chr; + }); + }; + var encodeAllRaw = function (text) { + return ('' + text).replace(rawCharsRegExp, function (chr) { + return baseEntities[chr] || chr; + }); + }; + var encodeNumeric = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + if (chr.length > 1) { + return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';'; + } + return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';'; + }); + }; + var encodeNamed = function (text, attr, entities) { + entities = entities || namedEntities; + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + return baseEntities[chr] || entities[chr] || chr; + }); + }; + var getEncodeFunc = function (name, entities) { + var entitiesMap = buildEntitiesLookup(entities) || namedEntities; + var encodeNamedAndNumeric = function (text, attr) { + return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) { + if (baseEntities[chr] !== undefined) { + return baseEntities[chr]; + } + if (entitiesMap[chr] !== undefined) { + return entitiesMap[chr]; + } + if (chr.length > 1) { + return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';'; + } + return '&#' + chr.charCodeAt(0) + ';'; + }); + }; + var encodeCustomNamed = function (text, attr) { + return encodeNamed(text, attr, entitiesMap); + }; + var nameMap = makeMap$1(name.replace(/\+/g, ',')); + if (nameMap.named && nameMap.numeric) { + return encodeNamedAndNumeric; + } + if (nameMap.named) { + if (entities) { + return encodeCustomNamed; + } + return encodeNamed; + } + if (nameMap.numeric) { + return encodeNumeric; + } + return encodeRaw; + }; + var decode = function (text) { + return text.replace(entityRegExp, function (all, numeric) { + if (numeric) { + if (numeric.charAt(0).toLowerCase() === 'x') { + numeric = parseInt(numeric.substr(1), 16); + } else { + numeric = parseInt(numeric, 10); + } + if (numeric > 65535) { + numeric -= 65536; + return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023)); + } + return asciiMap[numeric] || String.fromCharCode(numeric); + } + return reverseEntities[all] || namedEntities[all] || nativeDecode(all); + }); + }; + var $_fzh4ld1rje5o2q0t = { + encodeRaw: encodeRaw, + encodeAllRaw: encodeAllRaw, + encodeNumeric: encodeNumeric, + encodeNamed: encodeNamed, + getEncodeFunc: getEncodeFunc, + decode: decode + }; + + var mapCache = {}; + var dummyObj = {}; + var makeMap$2 = $_a5gegtjje5o2pum.makeMap; + var each$4 = $_a5gegtjje5o2pum.each; + var extend$1 = $_a5gegtjje5o2pum.extend; + var explode$1 = $_a5gegtjje5o2pum.explode; + var inArray$1 = $_a5gegtjje5o2pum.inArray; + var split = function (items, delim) { + items = $_a5gegtjje5o2pum.trim(items); + return items ? items.split(delim || ' ') : []; + }; + var compileSchema = function (type) { + var schema = {}; + var globalAttributes, blockContent; + var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent; + var add = function (name, attributes, children) { + var ni, attributesOrder, element; + var arrayToMap = function (array, obj) { + var map = {}; + var i, l; + for (i = 0, l = array.length; i < l; i++) { + map[array[i]] = obj || {}; + } + return map; + }; + children = children || []; + attributes = attributes || ''; + if (typeof children === 'string') { + children = split(children); + } + name = split(name); + ni = name.length; + while (ni--) { + attributesOrder = split([ + globalAttributes, + attributes + ].join(' ')); + element = { + attributes: arrayToMap(attributesOrder), + attributesOrder: attributesOrder, + children: arrayToMap(children, dummyObj) + }; + schema[name[ni]] = element; + } + }; + var addAttrs = function (name, attributes) { + var ni, schemaItem, i, l; + name = split(name); + ni = name.length; + attributes = split(attributes); + while (ni--) { + schemaItem = schema[name[ni]]; + for (i = 0, l = attributes.length; i < l; i++) { + schemaItem.attributes[attributes[i]] = {}; + schemaItem.attributesOrder.push(attributes[i]); + } + } + }; + if (mapCache[type]) { + return mapCache[type]; + } + globalAttributes = 'id accesskey class dir lang style tabindex title role'; + blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul'; + phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment'; + if (type !== 'html4') { + globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate'; + blockContent += ' article aside details dialog figure header footer hgroup section nav'; + phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen'; + } + if (type !== 'html5-strict') { + globalAttributes += ' xml:lang'; + html4PhrasingContent = 'acronym applet basefont big font strike tt'; + phrasingContent = [ + phrasingContent, + html4PhrasingContent + ].join(' '); + each$4(split(html4PhrasingContent), function (name) { + add(name, '', phrasingContent); + }); + html4BlockContent = 'center dir isindex noframes'; + blockContent = [ + blockContent, + html4BlockContent + ].join(' '); + flowContent = [ + blockContent, + phrasingContent + ].join(' '); + each$4(split(html4BlockContent), function (name) { + add(name, '', flowContent); + }); + } + flowContent = flowContent || [ + blockContent, + phrasingContent + ].join(' '); + add('html', 'manifest', 'head body'); + add('head', '', 'base command link meta noscript script style title'); + add('title hr noscript br'); + add('base', 'href target'); + add('link', 'href rel media hreflang type sizes hreflang'); + add('meta', 'name http-equiv content charset'); + add('style', 'media type scoped'); + add('script', 'src async defer type charset'); + add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent); + add('address dt dd div caption', '', flowContent); + add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent); + add('blockquote', 'cite', flowContent); + add('ol', 'reversed start type', 'li'); + add('ul', '', 'li'); + add('li', 'value', flowContent); + add('dl', '', 'dt dd'); + add('a', 'href target rel media hreflang type', phrasingContent); + add('q', 'cite', phrasingContent); + add('ins del', 'cite datetime', flowContent); + add('img', 'src sizes srcset alt usemap ismap width height'); + add('iframe', 'src name width height', flowContent); + add('embed', 'src type width height'); + add('object', 'data type typemustmatch name usemap form width height', [ + flowContent, + 'param' + ].join(' ')); + add('param', 'name value'); + add('map', 'name', [ + flowContent, + 'area' + ].join(' ')); + add('area', 'alt coords shape href target rel media hreflang type'); + add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : '')); + add('colgroup', 'span', 'col'); + add('col', 'span'); + add('tbody thead tfoot', '', 'tr'); + add('tr', '', 'td th'); + add('td', 'colspan rowspan headers', flowContent); + add('th', 'colspan rowspan headers scope abbr', flowContent); + add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent); + add('fieldset', 'disabled form name', [ + flowContent, + 'legend' + ].join(' ')); + add('label', 'form for', phrasingContent); + add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width'); + add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent); + add('select', 'disabled form multiple name required size', 'option optgroup'); + add('optgroup', 'disabled label', 'option'); + add('option', 'disabled label selected value'); + add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap'); + add('menu', 'type label', [ + flowContent, + 'li' + ].join(' ')); + add('noscript', '', flowContent); + if (type !== 'html4') { + add('wbr'); + add('ruby', '', [ + phrasingContent, + 'rt rp' + ].join(' ')); + add('figcaption', '', flowContent); + add('mark rt rp summary bdi', '', phrasingContent); + add('canvas', 'width height', flowContent); + add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [ + flowContent, + 'track source' + ].join(' ')); + add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [ + flowContent, + 'track source' + ].join(' ')); + add('picture', '', 'img source'); + add('source', 'src srcset type media sizes'); + add('track', 'kind src srclang label default'); + add('datalist', '', [ + phrasingContent, + 'option' + ].join(' ')); + add('article section nav aside header footer', '', flowContent); + add('hgroup', '', 'h1 h2 h3 h4 h5 h6'); + add('figure', '', [ + flowContent, + 'figcaption' + ].join(' ')); + add('time', 'datetime', phrasingContent); + add('dialog', 'open', flowContent); + add('command', 'type label icon disabled checked radiogroup command'); + add('output', 'for form name', phrasingContent); + add('progress', 'value max', phrasingContent); + add('meter', 'value min max low high optimum', phrasingContent); + add('details', 'open', [ + flowContent, + 'summary' + ].join(' ')); + add('keygen', 'autofocus challenge disabled form keytype name'); + } + if (type !== 'html5-strict') { + addAttrs('script', 'language xml:space'); + addAttrs('style', 'xml:space'); + addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace'); + addAttrs('embed', 'align name hspace vspace'); + addAttrs('param', 'valuetype type'); + addAttrs('a', 'charset name rev shape coords'); + addAttrs('br', 'clear'); + addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace'); + addAttrs('img', 'name longdesc align border hspace vspace'); + addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align'); + addAttrs('font basefont', 'size color face'); + addAttrs('input', 'usemap align'); + addAttrs('select', 'onchange'); + addAttrs('textarea'); + addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align'); + addAttrs('ul', 'type compact'); + addAttrs('li', 'type'); + addAttrs('ol dl menu dir', 'compact'); + addAttrs('pre', 'width xml:space'); + addAttrs('hr', 'align noshade size width'); + addAttrs('isindex', 'prompt'); + addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor'); + addAttrs('col', 'width align char charoff valign'); + addAttrs('colgroup', 'width align char charoff valign'); + addAttrs('thead', 'align char charoff valign'); + addAttrs('tr', 'align char charoff valign bgcolor'); + addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height'); + addAttrs('form', 'accept'); + addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height'); + addAttrs('tfoot', 'align char charoff valign'); + addAttrs('tbody', 'align char charoff valign'); + addAttrs('area', 'nohref'); + addAttrs('body', 'background bgcolor text link vlink alink'); + } + if (type !== 'html4') { + addAttrs('input button select textarea', 'autofocus'); + addAttrs('input textarea', 'placeholder'); + addAttrs('a', 'download'); + addAttrs('link script img', 'crossorigin'); + addAttrs('iframe', 'sandbox seamless allowfullscreen'); + } + each$4(split('a form meter progress dfn'), function (name) { + if (schema[name]) { + delete schema[name].children[name]; + } + }); + delete schema.caption.children.table; + delete schema.script; + mapCache[type] = schema; + return schema; + }; + var compileElementMap = function (value, mode) { + var styles; + if (value) { + styles = {}; + if (typeof value === 'string') { + value = { '*': value }; + } + each$4(value, function (value, key) { + styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/); + }); + } + return styles; + }; + function Schema(settings) { + var elements = {}; + var children = {}; + var patternElements = []; + var validStyles; + var invalidStyles; + var schemaItems; + var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses; + var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap; + var customElementsMap = {}, specialElements = {}; + var createLookupTable = function (option, defaultValue, extendWith) { + var value = settings[option]; + if (!value) { + value = mapCache[option]; + if (!value) { + value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' ')); + value = extend$1(value, extendWith); + mapCache[option] = value; + } + } else { + value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/)); + } + return value; + }; + settings = settings || {}; + schemaItems = compileSchema(settings.schema); + if (settings.verify_html === false) { + settings.valid_elements = '*[*]'; + } + validStyles = compileElementMap(settings.valid_styles); + invalidStyles = compileElementMap(settings.invalid_styles, 'map'); + validClasses = compileElementMap(settings.valid_classes, 'map'); + whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code'); + selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr'); + shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track'); + boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls'); + nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap); + moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap); + textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside nav figure'); + blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption', textBlockElementsMap); + textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp'); + each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) { + specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi'); + }); + var patternToRegExp = function (str) { + return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$'); + }; + var addValidElements = function (validElements) { + var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value; + var elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/, attrRuleRegExp = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/; + if (validElements) { + validElements = split(validElements, ','); + if (elements['@']) { + globalAttributes = elements['@'].attributes; + globalAttributesOrder = elements['@'].attributesOrder; + } + for (ei = 0, el = validElements.length; ei < el; ei++) { + matches = elementRuleRegExp.exec(validElements[ei]); + if (matches) { + prefix = matches[1]; + elementName = matches[2]; + outputName = matches[3]; + attrData = matches[5]; + attributes = {}; + attributesOrder = []; + element = { + attributes: attributes, + attributesOrder: attributesOrder + }; + if (prefix === '#') { + element.paddEmpty = true; + } + if (prefix === '-') { + element.removeEmpty = true; + } + if (matches[4] === '!') { + element.removeEmptyAttrs = true; + } + if (globalAttributes) { + for (key in globalAttributes) { + attributes[key] = globalAttributes[key]; + } + attributesOrder.push.apply(attributesOrder, globalAttributesOrder); + } + if (attrData) { + attrData = split(attrData, '|'); + for (ai = 0, al = attrData.length; ai < al; ai++) { + matches = attrRuleRegExp.exec(attrData[ai]); + if (matches) { + attr = {}; + attrType = matches[1]; + attrName = matches[2].replace(/[\\:]:/g, ':'); + prefix = matches[3]; + value = matches[4]; + if (attrType === '!') { + element.attributesRequired = element.attributesRequired || []; + element.attributesRequired.push(attrName); + attr.required = true; + } + if (attrType === '-') { + delete attributes[attrName]; + attributesOrder.splice(inArray$1(attributesOrder, attrName), 1); + continue; + } + if (prefix) { + if (prefix === '=') { + element.attributesDefault = element.attributesDefault || []; + element.attributesDefault.push({ + name: attrName, + value: value + }); + attr.defaultValue = value; + } + if (prefix === ':') { + element.attributesForced = element.attributesForced || []; + element.attributesForced.push({ + name: attrName, + value: value + }); + attr.forcedValue = value; + } + if (prefix === '<') { + attr.validValues = makeMap$2(value, '?'); + } + } + if (hasPatternsRegExp.test(attrName)) { + element.attributePatterns = element.attributePatterns || []; + attr.pattern = patternToRegExp(attrName); + element.attributePatterns.push(attr); + } else { + if (!attributes[attrName]) { + attributesOrder.push(attrName); + } + attributes[attrName] = attr; + } + } + } + } + if (!globalAttributes && elementName === '@') { + globalAttributes = attributes; + globalAttributesOrder = attributesOrder; + } + if (outputName) { + element.outputName = elementName; + elements[outputName] = element; + } + if (hasPatternsRegExp.test(elementName)) { + element.pattern = patternToRegExp(elementName); + patternElements.push(element); + } else { + elements[elementName] = element; + } + } + } + } + }; + var setValidElements = function (validElements) { + elements = {}; + patternElements = []; + addValidElements(validElements); + each$4(schemaItems, function (element, name) { + children[name] = element.children; + }); + }; + var addCustomElements = function (customElements) { + var customElementRegExp = /^(~)?(.+)$/; + if (customElements) { + mapCache.text_block_elements = mapCache.block_elements = null; + each$4(split(customElements, ','), function (rule) { + var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2]; + children[name] = children[cloneName]; + customElementsMap[name] = cloneName; + if (!inline) { + blockElementsMap[name.toUpperCase()] = {}; + blockElementsMap[name] = {}; + } + if (!elements[name]) { + var customRule = elements[cloneName]; + customRule = extend$1({}, customRule); + delete customRule.removeEmptyAttrs; + delete customRule.removeEmpty; + elements[name] = customRule; + } + each$4(children, function (element, elmName) { + if (element[cloneName]) { + children[elmName] = element = extend$1({}, children[elmName]); + element[name] = element[cloneName]; + } + }); + }); + } + }; + var addValidChildren = function (validChildren) { + var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/; + mapCache[settings.schema] = null; + if (validChildren) { + each$4(split(validChildren, ','), function (rule) { + var matches = childRuleRegExp.exec(rule); + var parent, prefix; + if (matches) { + prefix = matches[1]; + if (prefix) { + parent = children[matches[2]]; + } else { + parent = children[matches[2]] = { '#comment': {} }; + } + parent = children[matches[2]]; + each$4(split(matches[3], '|'), function (child) { + if (prefix === '-') { + delete parent[child]; + } else { + parent[child] = {}; + } + }); + } + }); + } + }; + var getElementRule = function (name) { + var element = elements[name], i; + if (element) { + return element; + } + i = patternElements.length; + while (i--) { + element = patternElements[i]; + if (element.pattern.test(name)) { + return element; + } + } + }; + if (!settings.valid_elements) { + each$4(schemaItems, function (element, name) { + elements[name] = { + attributes: element.attributes, + attributesOrder: element.attributesOrder + }; + children[name] = element.children; + }); + if (settings.schema !== 'html5') { + each$4(split('strong/b em/i'), function (item) { + item = split(item, '/'); + elements[item[1]].outputName = item[0]; + }); + } + each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) { + if (elements[name]) { + elements[name].removeEmpty = true; + } + }); + each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) { + elements[name].paddEmpty = true; + }); + each$4(split('span'), function (name) { + elements[name].removeEmptyAttrs = true; + }); + } else { + setValidElements(settings.valid_elements); + } + addCustomElements(settings.custom_elements); + addValidChildren(settings.valid_children); + addValidElements(settings.extended_valid_elements); + addValidChildren('+ol[ul|ol],+ul[ul|ol]'); + each$4({ + dd: 'dl', + dt: 'dl', + li: 'ul ol', + td: 'tr', + th: 'tr', + tr: 'tbody thead tfoot', + tbody: 'table', + thead: 'table', + tfoot: 'table', + legend: 'fieldset', + area: 'map', + param: 'video audio object' + }, function (parents, item) { + if (elements[item]) { + elements[item].parentsRequired = split(parents); + } + }); + if (settings.invalid_elements) { + each$4(explode$1(settings.invalid_elements), function (item) { + if (elements[item]) { + delete elements[item]; + } + }); + } + if (!getElementRule('span')) { + addValidElements('span[!data-mce-type|*]'); + } + var getValidStyles = function () { + return validStyles; + }; + var getInvalidStyles = function () { + return invalidStyles; + }; + var getValidClasses = function () { + return validClasses; + }; + var getBoolAttrs = function () { + return boolAttrMap; + }; + var getBlockElements = function () { + return blockElementsMap; + }; + var getTextBlockElements = function () { + return textBlockElementsMap; + }; + var getTextInlineElements = function () { + return textInlineElementsMap; + }; + var getShortEndedElements = function () { + return shortEndedElementsMap; + }; + var getSelfClosingElements = function () { + return selfClosingElementsMap; + }; + var getNonEmptyElements = function () { + return nonEmptyElementsMap; + }; + var getMoveCaretBeforeOnEnterElements = function () { + return moveCaretBeforeOnEnterElementsMap; + }; + var getWhiteSpaceElements = function () { + return whiteSpaceElementsMap; + }; + var getSpecialElements = function () { + return specialElements; + }; + var isValidChild = function (name, child) { + var parent = children[name.toLowerCase()]; + return !!(parent && parent[child.toLowerCase()]); + }; + var isValid = function (name, attr) { + var attrPatterns, i; + var rule = getElementRule(name); + if (rule) { + if (attr) { + if (rule.attributes[attr]) { + return true; + } + attrPatterns = rule.attributePatterns; + if (attrPatterns) { + i = attrPatterns.length; + while (i--) { + if (attrPatterns[i].pattern.test(name)) { + return true; + } + } + } + } else { + return true; + } + } + return false; + }; + var getCustomElements = function () { + return customElementsMap; + }; + return { + children: children, + elements: elements, + getValidStyles: getValidStyles, + getValidClasses: getValidClasses, + getBlockElements: getBlockElements, + getInvalidStyles: getInvalidStyles, + getShortEndedElements: getShortEndedElements, + getTextBlockElements: getTextBlockElements, + getTextInlineElements: getTextInlineElements, + getBoolAttrs: getBoolAttrs, + getElementRule: getElementRule, + getSelfClosingElements: getSelfClosingElements, + getNonEmptyElements: getNonEmptyElements, + getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements, + getWhiteSpaceElements: getWhiteSpaceElements, + getSpecialElements: getSpecialElements, + isValidChild: isValidChild, + isValid: isValid, + getCustomElements: getCustomElements, + addValidElements: addValidElements, + setValidElements: setValidElements, + addCustomElements: addCustomElements, + addValidChildren: addValidChildren + }; + } + + var toHex = function (match, r, g, b) { + var hex = function (val) { + val = parseInt(val, 10).toString(16); + return val.length > 1 ? val : '0' + val; + }; + return '#' + hex(r) + hex(g) + hex(b); + }; + function Styles (settings, schema) { + var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi; + var urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi; + var styleRegExp = /\s*([^:]+):\s*([^;]+);?/g; + var trimRightRegExp = /\s+$/; + var i; + var encodingLookup = {}; + var encodingItems; + var validStyles; + var invalidStyles; + var invisibleChar = '\uFEFF'; + settings = settings || {}; + if (schema) { + validStyles = schema.getValidStyles(); + invalidStyles = schema.getInvalidStyles(); + } + encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' '); + for (i = 0; i < encodingItems.length; i++) { + encodingLookup[encodingItems[i]] = invisibleChar + i; + encodingLookup[invisibleChar + i] = encodingItems[i]; + } + return { + toHex: function (color) { + return color.replace(rgbRegExp, toHex); + }, + parse: function (css) { + var styles = {}; + var matches, name, value, isEncoded; + var urlConverter = settings.url_converter; + var urlConverterScope = settings.url_converter_scope || this; + var compress = function (prefix, suffix, noJoin) { + var top, right, bottom, left; + top = styles[prefix + '-top' + suffix]; + if (!top) { + return; + } + right = styles[prefix + '-right' + suffix]; + if (!right) { + return; + } + bottom = styles[prefix + '-bottom' + suffix]; + if (!bottom) { + return; + } + left = styles[prefix + '-left' + suffix]; + if (!left) { + return; + } + var box = [ + top, + right, + bottom, + left + ]; + i = box.length - 1; + while (i--) { + if (box[i] !== box[i + 1]) { + break; + } + } + if (i > -1 && noJoin) { + return; + } + styles[prefix + suffix] = i === -1 ? box[0] : box.join(' '); + delete styles[prefix + '-top' + suffix]; + delete styles[prefix + '-right' + suffix]; + delete styles[prefix + '-bottom' + suffix]; + delete styles[prefix + '-left' + suffix]; + }; + var canCompress = function (key) { + var value = styles[key], i; + if (!value) { + return; + } + value = value.split(' '); + i = value.length; + while (i--) { + if (value[i] !== value[0]) { + return false; + } + } + styles[key] = value[0]; + return true; + }; + var compress2 = function (target, a, b, c) { + if (!canCompress(a)) { + return; + } + if (!canCompress(b)) { + return; + } + if (!canCompress(c)) { + return; + } + styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c]; + delete styles[a]; + delete styles[b]; + delete styles[c]; + }; + var encode = function (str) { + isEncoded = true; + return encodingLookup[str]; + }; + var decode = function (str, keepSlashes) { + if (isEncoded) { + str = str.replace(/\uFEFF[0-9]/g, function (str) { + return encodingLookup[str]; + }); + } + if (!keepSlashes) { + str = str.replace(/\\([\'\";:])/g, '$1'); + } + return str; + }; + var decodeSingleHexSequence = function (escSeq) { + return String.fromCharCode(parseInt(escSeq.slice(1), 16)); + }; + var decodeHexSequences = function (value) { + return value.replace(/\\[0-9a-f]+/gi, decodeSingleHexSequence); + }; + var processUrl = function (match, url, url2, url3, str, str2) { + str = str || str2; + if (str) { + str = decode(str); + return '\'' + str.replace(/\'/g, '\\\'') + '\''; + } + url = decode(url || url2 || url3); + if (!settings.allow_script_urls) { + var scriptUrl = url.replace(/[\s\r\n]+/g, ''); + if (/(java|vb)script:/i.test(scriptUrl)) { + return ''; + } + if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) { + return ''; + } + } + if (urlConverter) { + url = urlConverter.call(urlConverterScope, url, 'style'); + } + return 'url(\'' + url.replace(/\'/g, '\\\'') + '\')'; + }; + if (css) { + css = css.replace(/[\u0000-\u001F]/g, ''); + css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function (str) { + return str.replace(/[;:]/g, encode); + }); + while (matches = styleRegExp.exec(css)) { + styleRegExp.lastIndex = matches.index + matches[0].length; + name = matches[1].replace(trimRightRegExp, '').toLowerCase(); + value = matches[2].replace(trimRightRegExp, ''); + if (name && value) { + name = decodeHexSequences(name); + value = decodeHexSequences(value); + if (name.indexOf(invisibleChar) !== -1 || name.indexOf('"') !== -1) { + continue; + } + if (!settings.allow_script_urls && (name === 'behavior' || /expression\s*\(|\/\*|\*\//.test(value))) { + continue; + } + if (name === 'font-weight' && value === '700') { + value = 'bold'; + } else if (name === 'color' || name === 'background-color') { + value = value.toLowerCase(); + } + value = value.replace(rgbRegExp, toHex); + value = value.replace(urlOrStrRegExp, processUrl); + styles[name] = isEncoded ? decode(value, true) : value; + } + } + compress('border', '', true); + compress('border', '-width'); + compress('border', '-color'); + compress('border', '-style'); + compress('padding', ''); + compress('margin', ''); + compress2('border', 'border-width', 'border-style', 'border-color'); + if (styles.border === 'medium none') { + delete styles.border; + } + if (styles['border-image'] === 'none') { + delete styles['border-image']; + } + } + return styles; + }, + serialize: function (styles, elementName) { + var css = '', name, value; + var serializeStyles = function (name) { + var styleList, i, l, value; + styleList = validStyles[name]; + if (styleList) { + for (i = 0, l = styleList.length; i < l; i++) { + name = styleList[i]; + value = styles[name]; + if (value) { + css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; + } + } + } + }; + var isValid = function (name, elementName) { + var styleMap; + styleMap = invalidStyles['*']; + if (styleMap && styleMap[name]) { + return false; + } + styleMap = invalidStyles[elementName]; + if (styleMap && styleMap[name]) { + return false; + } + return true; + }; + if (elementName && validStyles) { + serializeStyles('*'); + serializeStyles(elementName); + } else { + for (name in styles) { + value = styles[name]; + if (value && (!invalidStyles || isValid(name, elementName))) { + css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';'; + } + } + } + return css; + } + }; + } + + var each$5 = $_a5gegtjje5o2pum.each; + var is$2 = $_a5gegtjje5o2pum.is; + var grep$1 = $_a5gegtjje5o2pum.grep; + var isIE = $_9bd8pn9je5o2pp2.ie; + var simpleSelectorRe = /^([a-z0-9],?)+$/i; + var whiteSpaceRegExp$2 = /^[ \t\r\n]*$/; + var setupAttrHooks = function (domUtils, settings) { + var attrHooks = {}; + var keepValues = settings.keep_values; + var keepUrlHook; + keepUrlHook = { + set: function ($elm, value, name) { + if (settings.url_converter) { + value = settings.url_converter.call(settings.url_converter_scope || domUtils, value, name, $elm[0]); + } + $elm.attr('data-mce-' + name, value).attr(name, value); + }, + get: function ($elm, name) { + return $elm.attr('data-mce-' + name) || $elm.attr(name); + } + }; + attrHooks = { + style: { + set: function ($elm, value) { + if (value !== null && typeof value === 'object') { + $elm.css(value); + return; + } + if (keepValues) { + $elm.attr('data-mce-style', value); + } + $elm.attr('style', value); + }, + get: function ($elm) { + var value = $elm.attr('data-mce-style') || $elm.attr('style'); + value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName); + return value; + } + } + }; + if (keepValues) { + attrHooks.href = attrHooks.src = keepUrlHook; + } + return attrHooks; + }; + var updateInternalStyleAttr = function (domUtils, $elm) { + var value = $elm.attr('style'); + value = domUtils.serializeStyle(domUtils.parseStyle(value), $elm[0].nodeName); + if (!value) { + value = null; + } + $elm.attr('data-mce-style', value); + }; + var nodeIndex = function (node, normalized) { + var idx = 0, lastNodeType, nodeType; + if (node) { + for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) { + nodeType = node.nodeType; + if (normalized && nodeType === 3) { + if (nodeType === lastNodeType || !node.nodeValue.length) { + continue; + } + } + idx++; + lastNodeType = nodeType; + } + } + return idx; + }; + var DOMUtils = function (doc, settings) { + var self = this; + var blockElementsMap; + self.doc = doc; + self.win = window; + self.files = {}; + self.counter = 0; + self.stdMode = !isIE || doc.documentMode >= 8; + self.boxModel = !isIE || doc.compatMode === 'CSS1Compat' || self.stdMode; + self.styleSheetLoader = StyleSheetLoader(doc); + self.boundEvents = []; + self.settings = settings = settings || {}; + self.schema = settings.schema ? settings.schema : Schema({}); + self.styles = Styles({ + url_converter: settings.url_converter, + url_converter_scope: settings.url_converter_scope + }, settings.schema); + self.fixDoc(doc); + self.events = settings.ownEvents ? new EventUtils(settings.proxy) : EventUtils.Event; + self.attrHooks = setupAttrHooks(self, settings); + blockElementsMap = self.schema.getBlockElements(); + self.$ = DomQuery.overrideDefaults(function () { + return { + context: doc, + element: self.getRoot() + }; + }); + self.isBlock = function (node) { + if (!node) { + return false; + } + var type = node.nodeType; + if (type) { + return !!(type === 1 && blockElementsMap[node.nodeName]); + } + return !!blockElementsMap[node]; + }; + }; + DOMUtils.prototype = { + $$: function (elm) { + if (typeof elm === 'string') { + elm = this.get(elm); + } + return this.$(elm); + }, + root: null, + fixDoc: function (doc) { + }, + clone: function (node, deep) { + var self = this; + var clone, doc; + if (!isIE || node.nodeType !== 1 || deep) { + return node.cloneNode(deep); + } + doc = self.doc; + if (!deep) { + clone = doc.createElement(node.nodeName); + each$5(self.getAttribs(node), function (attr) { + self.setAttrib(clone, attr.nodeName, self.getAttrib(node, attr.nodeName)); + }); + return clone; + } + return clone.firstChild; + }, + getRoot: function () { + var self = this; + return self.settings.root_element || self.doc.body; + }, + getViewPort: function (win) { + var doc, rootElm; + win = !win ? this.win : win; + doc = win.document; + rootElm = this.boxModel ? doc.documentElement : doc.body; + return { + x: win.pageXOffset || rootElm.scrollLeft, + y: win.pageYOffset || rootElm.scrollTop, + w: win.innerWidth || rootElm.clientWidth, + h: win.innerHeight || rootElm.clientHeight + }; + }, + getRect: function (elm) { + var self = this; + var pos, size; + elm = self.get(elm); + pos = self.getPos(elm); + size = self.getSize(elm); + return { + x: pos.x, + y: pos.y, + w: size.w, + h: size.h + }; + }, + getSize: function (elm) { + var self = this; + var w, h; + elm = self.get(elm); + w = self.getStyle(elm, 'width'); + h = self.getStyle(elm, 'height'); + if (w.indexOf('px') === -1) { + w = 0; + } + if (h.indexOf('px') === -1) { + h = 0; + } + return { + w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth, + h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight + }; + }, + getParent: function (node, selector, root) { + return this.getParents(node, selector, root, false); + }, + getParents: function (node, selector, root, collect) { + var self = this; + var selectorVal; + var result = []; + node = self.get(node); + collect = collect === undefined; + root = root || (self.getRoot().nodeName !== 'BODY' ? self.getRoot().parentNode : null); + if (is$2(selector, 'string')) { + selectorVal = selector; + if (selector === '*') { + selector = function (node) { + return node.nodeType === 1; + }; + } else { + selector = function (node) { + return self.is(node, selectorVal); + }; + } + } + while (node) { + if (node === root || !node.nodeType || node.nodeType === 9) { + break; + } + if (!selector || selector(node)) { + if (collect) { + result.push(node); + } else { + return node; + } + } + node = node.parentNode; + } + return collect ? result : null; + }, + get: function (elm) { + var name; + if (elm && this.doc && typeof elm === 'string') { + name = elm; + elm = this.doc.getElementById(elm); + if (elm && elm.id !== name) { + return this.doc.getElementsByName(name)[1]; + } + } + return elm; + }, + getNext: function (node, selector) { + return this._findSib(node, selector, 'nextSibling'); + }, + getPrev: function (node, selector) { + return this._findSib(node, selector, 'previousSibling'); + }, + select: function (selector, scope) { + var self = this; + return Sizzle(selector, self.get(scope) || self.settings.root_element || self.doc, []); + }, + is: function (elm, selector) { + var i; + if (!elm) { + return false; + } + if (elm.length === undefined) { + if (selector === '*') { + return elm.nodeType === 1; + } + if (simpleSelectorRe.test(selector)) { + selector = selector.toLowerCase().split(/,/); + elm = elm.nodeName.toLowerCase(); + for (i = selector.length - 1; i >= 0; i--) { + if (selector[i] === elm) { + return true; + } + } + return false; + } + } + if (elm.nodeType && elm.nodeType !== 1) { + return false; + } + var elms = elm.nodeType ? [elm] : elm; + return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0; + }, + add: function (parentElm, name, attrs, html, create) { + var self = this; + return this.run(parentElm, function (parentElm) { + var newElm; + newElm = is$2(name, 'string') ? self.doc.createElement(name) : name; + self.setAttribs(newElm, attrs); + if (html) { + if (html.nodeType) { + newElm.appendChild(html); + } else { + self.setHTML(newElm, html); + } + } + return !create ? parentElm.appendChild(newElm) : newElm; + }); + }, + create: function (name, attrs, html) { + return this.add(this.doc.createElement(name), name, attrs, html, 1); + }, + createHTML: function (name, attrs, html) { + var outHtml = '', key; + outHtml += '<' + name; + for (key in attrs) { + if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') { + outHtml += ' ' + key + '="' + this.encode(attrs[key]) + '"'; + } + } + if (typeof html !== 'undefined') { + return outHtml + '>' + html + '</' + name + '>'; + } + return outHtml + ' />'; + }, + createFragment: function (html) { + var frag, node; + var doc = this.doc; + var container; + container = doc.createElement('div'); + frag = doc.createDocumentFragment(); + if (html) { + container.innerHTML = html; + } + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }, + remove: function (node, keepChildren) { + node = this.$$(node); + if (keepChildren) { + node.each(function () { + var child; + while (child = this.firstChild) { + if (child.nodeType === 3 && child.data.length === 0) { + this.removeChild(child); + } else { + this.parentNode.insertBefore(child, this); + } + } + }).remove(); + } else { + node.remove(); + } + return node.length > 1 ? node.toArray() : node[0]; + }, + setStyle: function (elm, name, value) { + elm = this.$$(elm).css(name, value); + if (this.settings.update_styles) { + updateInternalStyleAttr(this, elm); + } + }, + getStyle: function (elm, name, computed) { + elm = this.$$(elm); + if (computed) { + return elm.css(name); + } + name = name.replace(/-(\D)/g, function (a, b) { + return b.toUpperCase(); + }); + if (name === 'float') { + name = $_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 12 ? 'styleFloat' : 'cssFloat'; + } + return elm[0] && elm[0].style ? elm[0].style[name] : undefined; + }, + setStyles: function (elm, styles) { + elm = this.$$(elm).css(styles); + if (this.settings.update_styles) { + updateInternalStyleAttr(this, elm); + } + }, + removeAllAttribs: function (e) { + return this.run(e, function (e) { + var i; + var attrs = e.attributes; + for (i = attrs.length - 1; i >= 0; i--) { + e.removeAttributeNode(attrs.item(i)); + } + }); + }, + setAttrib: function (elm, name, value) { + var self = this; + var originalValue, hook; + var settings = self.settings; + if (value === '') { + value = null; + } + elm = self.$$(elm); + originalValue = elm.attr(name); + if (!elm.length) { + return; + } + hook = self.attrHooks[name]; + if (hook && hook.set) { + hook.set(elm, value, name); + } else { + elm.attr(name, value); + } + if (originalValue !== value && settings.onSetAttrib) { + settings.onSetAttrib({ + attrElm: elm, + attrName: name, + attrValue: value + }); + } + }, + setAttribs: function (elm, attrs) { + var self = this; + self.$$(elm).each(function (i, node) { + each$5(attrs, function (value, name) { + self.setAttrib(node, name, value); + }); + }); + }, + getAttrib: function (elm, name, defaultVal) { + var self = this; + var hook, value; + elm = self.$$(elm); + if (elm.length) { + hook = self.attrHooks[name]; + if (hook && hook.get) { + value = hook.get(elm, name); + } else { + value = elm.attr(name); + } + } + if (typeof value === 'undefined') { + value = defaultVal || ''; + } + return value; + }, + getPos: function (elm, rootElm) { + return $_5uqvv2lje5o2pvj.getPos(this.doc.body, this.get(elm), rootElm); + }, + parseStyle: function (cssText) { + return this.styles.parse(cssText); + }, + serializeStyle: function (styles, name) { + return this.styles.serialize(styles, name); + }, + addStyle: function (cssText) { + var self = this; + var doc = self.doc; + var head, styleElm; + if (self !== DOMUtils.DOM && doc === document) { + var addedStyles = DOMUtils.DOM.addedStyles; + addedStyles = addedStyles || []; + if (addedStyles[cssText]) { + return; + } + addedStyles[cssText] = true; + DOMUtils.DOM.addedStyles = addedStyles; + } + styleElm = doc.getElementById('mceDefaultStyles'); + if (!styleElm) { + styleElm = doc.createElement('style'); + styleElm.id = 'mceDefaultStyles'; + styleElm.type = 'text/css'; + head = doc.getElementsByTagName('head')[0]; + if (head.firstChild) { + head.insertBefore(styleElm, head.firstChild); + } else { + head.appendChild(styleElm); + } + } + if (styleElm.styleSheet) { + styleElm.styleSheet.cssText += cssText; + } else { + styleElm.appendChild(doc.createTextNode(cssText)); + } + }, + loadCSS: function (url) { + var self = this; + var doc = self.doc; + var head; + if (self !== DOMUtils.DOM && doc === document) { + DOMUtils.DOM.loadCSS(url); + return; + } + if (!url) { + url = ''; + } + head = doc.getElementsByTagName('head')[0]; + each$5(url.split(','), function (url) { + var link; + url = $_a5gegtjje5o2pum._addCacheSuffix(url); + if (self.files[url]) { + return; + } + self.files[url] = true; + link = self.create('link', { + rel: 'stylesheet', + href: url + }); + if (isIE && doc.documentMode && doc.recalc) { + link.onload = function () { + if (doc.recalc) { + doc.recalc(); + } + link.onload = null; + }; + } + head.appendChild(link); + }); + }, + addClass: function (elm, cls) { + this.$$(elm).addClass(cls); + }, + removeClass: function (elm, cls) { + this.toggleClass(elm, cls, false); + }, + hasClass: function (elm, cls) { + return this.$$(elm).hasClass(cls); + }, + toggleClass: function (elm, cls, state) { + this.$$(elm).toggleClass(cls, state).each(function () { + if (this.className === '') { + DomQuery(this).attr('class', null); + } + }); + }, + show: function (elm) { + this.$$(elm).show(); + }, + hide: function (elm) { + this.$$(elm).hide(); + }, + isHidden: function (elm) { + return this.$$(elm).css('display') === 'none'; + }, + uniqueId: function (prefix) { + return (!prefix ? 'mce_' : prefix) + this.counter++; + }, + setHTML: function (elm, html) { + elm = this.$$(elm); + if (isIE) { + elm.each(function (i, target) { + if (target.canHaveHTML === false) { + return; + } + while (target.firstChild) { + target.removeChild(target.firstChild); + } + try { + target.innerHTML = '<br>' + html; + target.removeChild(target.firstChild); + } catch (ex) { + DomQuery('<div></div>').html('<br>' + html).contents().slice(1).appendTo(target); + } + return html; + }); + } else { + elm.html(html); + } + }, + getOuterHTML: function (elm) { + elm = this.get(elm); + return elm.nodeType === 1 && 'outerHTML' in elm ? elm.outerHTML : DomQuery('<div></div>').append(DomQuery(elm).clone()).html(); + }, + setOuterHTML: function (elm, html) { + var self = this; + self.$$(elm).each(function () { + try { + if ('outerHTML' in this) { + this.outerHTML = html; + return; + } + } catch (ex) { + } + self.remove(DomQuery(this).html(html), true); + }); + }, + decode: $_fzh4ld1rje5o2q0t.decode, + encode: $_fzh4ld1rje5o2q0t.encodeAllRaw, + insertAfter: function (node, referenceNode) { + referenceNode = this.get(referenceNode); + return this.run(node, function (node) { + var parent, nextSibling; + parent = referenceNode.parentNode; + nextSibling = referenceNode.nextSibling; + if (nextSibling) { + parent.insertBefore(node, nextSibling); + } else { + parent.appendChild(node); + } + return node; + }); + }, + replace: function (newElm, oldElm, keepChildren) { + var self = this; + return self.run(oldElm, function (oldElm) { + if (is$2(oldElm, 'array')) { + newElm = newElm.cloneNode(true); + } + if (keepChildren) { + each$5(grep$1(oldElm.childNodes), function (node) { + newElm.appendChild(node); + }); + } + return oldElm.parentNode.replaceChild(newElm, oldElm); + }); + }, + rename: function (elm, name) { + var self = this; + var newElm; + if (elm.nodeName !== name.toUpperCase()) { + newElm = self.create(name); + each$5(self.getAttribs(elm), function (attrNode) { + self.setAttrib(newElm, attrNode.nodeName, self.getAttrib(elm, attrNode.nodeName)); + }); + self.replace(newElm, elm, 1); + } + return newElm || elm; + }, + findCommonAncestor: function (a, b) { + var ps = a, pe; + while (ps) { + pe = b; + while (pe && ps !== pe) { + pe = pe.parentNode; + } + if (ps === pe) { + break; + } + ps = ps.parentNode; + } + if (!ps && a.ownerDocument) { + return a.ownerDocument.documentElement; + } + return ps; + }, + toHex: function (rgbVal) { + return this.styles.toHex($_a5gegtjje5o2pum.trim(rgbVal)); + }, + run: function (elm, func, scope) { + var self = this; + var result; + if (typeof elm === 'string') { + elm = self.get(elm); + } + if (!elm) { + return false; + } + scope = scope || this; + if (!elm.nodeType && (elm.length || elm.length === 0)) { + result = []; + each$5(elm, function (elm, i) { + if (elm) { + if (typeof elm === 'string') { + elm = self.get(elm); + } + result.push(func.call(scope, elm, i)); + } + }); + return result; + } + return func.call(scope, elm); + }, + getAttribs: function (elm) { + var attrs; + elm = this.get(elm); + if (!elm) { + return []; + } + if (isIE) { + attrs = []; + if (elm.nodeName === 'OBJECT') { + return elm.attributes; + } + if (elm.nodeName === 'OPTION' && this.getAttrib(elm, 'selected')) { + attrs.push({ + specified: 1, + nodeName: 'selected' + }); + } + var attrRegExp = /<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi; + elm.cloneNode(false).outerHTML.replace(attrRegExp, '').replace(/[\w:\-]+/gi, function (a) { + attrs.push({ + specified: 1, + nodeName: a + }); + }); + return attrs; + } + return elm.attributes; + }, + isEmpty: function (node, elements) { + var self = this; + var i, attributes, type, whitespace, walker, name, brCount = 0; + node = node.firstChild; + if (node) { + walker = new TreeWalker(node, node.parentNode); + elements = elements || (self.schema ? self.schema.getNonEmptyElements() : null); + whitespace = self.schema ? self.schema.getWhiteSpaceElements() : {}; + do { + type = node.nodeType; + if (type === 1) { + var bogusVal = node.getAttribute('data-mce-bogus'); + if (bogusVal) { + node = walker.next(bogusVal === 'all'); + continue; + } + name = node.nodeName.toLowerCase(); + if (elements && elements[name]) { + if (name === 'br') { + brCount++; + node = walker.next(); + continue; + } + return false; + } + attributes = self.getAttribs(node); + i = attributes.length; + while (i--) { + name = attributes[i].nodeName; + if (name === 'name' || name === 'data-mce-bookmark') { + return false; + } + } + } + if (type === 8) { + return false; + } + if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) { + return false; + } + if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) { + return false; + } + node = walker.next(); + } while (node); + } + return brCount <= 1; + }, + createRng: function () { + return this.doc.createRange(); + }, + nodeIndex: nodeIndex, + split: function (parentElm, splitElm, replacementElm) { + var self = this; + var r = self.createRng(), bef, aft, pa; + if (parentElm && splitElm) { + r.setStart(parentElm.parentNode, self.nodeIndex(parentElm)); + r.setEnd(splitElm.parentNode, self.nodeIndex(splitElm)); + bef = r.extractContents(); + r = self.createRng(); + r.setStart(splitElm.parentNode, self.nodeIndex(splitElm) + 1); + r.setEnd(parentElm.parentNode, self.nodeIndex(parentElm) + 1); + aft = r.extractContents(); + pa = parentElm.parentNode; + pa.insertBefore($_cfe5l31oje5o2q05.trimNode(self, bef), parentElm); + if (replacementElm) { + pa.insertBefore(replacementElm, parentElm); + } else { + pa.insertBefore(splitElm, parentElm); + } + pa.insertBefore($_cfe5l31oje5o2q05.trimNode(self, aft), parentElm); + self.remove(parentElm); + return replacementElm || splitElm; + } + }, + bind: function (target, name, func, scope) { + var self = this; + if ($_a5gegtjje5o2pum.isArray(target)) { + var i = target.length; + while (i--) { + target[i] = self.bind(target[i], name, func, scope); + } + return target; + } + if (self.settings.collect && (target === self.doc || target === self.win)) { + self.boundEvents.push([ + target, + name, + func, + scope + ]); + } + return self.events.bind(target, name, func, scope || self); + }, + unbind: function (target, name, func) { + var self = this; + var i; + if ($_a5gegtjje5o2pum.isArray(target)) { + i = target.length; + while (i--) { + target[i] = self.unbind(target[i], name, func); + } + return target; + } + if (self.boundEvents && (target === self.doc || target === self.win)) { + i = self.boundEvents.length; + while (i--) { + var item = self.boundEvents[i]; + if (target === item[0] && (!name || name === item[1]) && (!func || func === item[2])) { + this.events.unbind(item[0], item[1], item[2]); + } + } + } + return this.events.unbind(target, name, func); + }, + fire: function (target, name, evt) { + return this.events.fire(target, name, evt); + }, + getContentEditable: function (node) { + var contentEditable; + if (!node || node.nodeType !== 1) { + return null; + } + contentEditable = node.getAttribute('data-mce-contenteditable'); + if (contentEditable && contentEditable !== 'inherit') { + return contentEditable; + } + return node.contentEditable !== 'inherit' ? node.contentEditable : null; + }, + getContentEditableParent: function (node) { + var root = this.getRoot(); + var state = null; + for (; node && node !== root; node = node.parentNode) { + state = this.getContentEditable(node); + if (state !== null) { + break; + } + } + return state; + }, + destroy: function () { + var self = this; + if (self.boundEvents) { + var i = self.boundEvents.length; + while (i--) { + var item = self.boundEvents[i]; + this.events.unbind(item[0], item[1], item[2]); + } + self.boundEvents = null; + } + if (Sizzle.setDocument) { + Sizzle.setDocument(); + } + self.win = self.doc = self.root = self.events = self.frag = null; + }, + isChildOf: function (node, parent) { + while (node) { + if (parent === node) { + return true; + } + node = node.parentNode; + } + return false; + }, + dumpRng: function (r) { + return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset; + }, + _findSib: function (node, selector, name) { + var self = this; + var func = selector; + if (node) { + if (typeof func === 'string') { + func = function (node) { + return self.is(node, selector); + }; + } + for (node = node[name]; node; node = node[name]) { + if (func(node)) { + return node; + } + } + } + return null; + } + }; + DOMUtils.DOM = new DOMUtils(document); + DOMUtils.nodeIndex = nodeIndex; + + var DOM = DOMUtils.DOM; + var each$6 = $_a5gegtjje5o2pum.each; + var grep$2 = $_a5gegtjje5o2pum.grep; + var isFunction = function (f) { + return typeof f === 'function'; + }; + var ScriptLoader = function () { + var QUEUED = 0; + var LOADING = 1; + var LOADED = 2; + var FAILED = 3; + var states = {}; + var queue = []; + var scriptLoadedCallbacks = {}; + var queueLoadedCallbacks = []; + var loading = 0; + var loadScript = function (url, success, failure) { + var dom = DOM; + var elm, id; + var done = function () { + dom.remove(id); + if (elm) { + elm.onreadystatechange = elm.onload = elm = null; + } + success(); + }; + var error = function () { + if (isFunction(failure)) { + failure(); + } else { + if (typeof console !== 'undefined' && console.log) { + console.log('Failed to load script: ' + url); + } + } + }; + id = dom.uniqueId(); + elm = document.createElement('script'); + elm.id = id; + elm.type = 'text/javascript'; + elm.src = $_a5gegtjje5o2pum._addCacheSuffix(url); + if ('onreadystatechange' in elm) { + elm.onreadystatechange = function () { + if (/loaded|complete/.test(elm.readyState)) { + done(); + } + }; + } else { + elm.onload = done; + } + elm.onerror = error; + (document.getElementsByTagName('head')[0] || document.body).appendChild(elm); + }; + this.isDone = function (url) { + return states[url] === LOADED; + }; + this.markDone = function (url) { + states[url] = LOADED; + }; + this.add = this.load = function (url, success, scope, failure) { + var state = states[url]; + if (state === undefined) { + queue.push(url); + states[url] = QUEUED; + } + if (success) { + if (!scriptLoadedCallbacks[url]) { + scriptLoadedCallbacks[url] = []; + } + scriptLoadedCallbacks[url].push({ + success: success, + failure: failure, + scope: scope || this + }); + } + }; + this.remove = function (url) { + delete states[url]; + delete scriptLoadedCallbacks[url]; + }; + this.loadQueue = function (success, scope, failure) { + this.loadScripts(queue, success, scope, failure); + }; + this.loadScripts = function (scripts, success, scope, failure) { + var loadScripts; + var failures = []; + var execCallbacks = function (name, url) { + each$6(scriptLoadedCallbacks[url], function (callback) { + if (isFunction(callback[name])) { + callback[name].call(callback.scope); + } + }); + scriptLoadedCallbacks[url] = undefined; + }; + queueLoadedCallbacks.push({ + success: success, + failure: failure, + scope: scope || this + }); + loadScripts = function () { + var loadingScripts = grep$2(scripts); + scripts.length = 0; + each$6(loadingScripts, function (url) { + if (states[url] === LOADED) { + execCallbacks('success', url); + return; + } + if (states[url] === FAILED) { + execCallbacks('failure', url); + return; + } + if (states[url] !== LOADING) { + states[url] = LOADING; + loading++; + loadScript(url, function () { + states[url] = LOADED; + loading--; + execCallbacks('success', url); + loadScripts(); + }, function () { + states[url] = FAILED; + loading--; + failures.push(url); + execCallbacks('failure', url); + loadScripts(); + }); + } + }); + if (!loading) { + var notifyCallbacks = queueLoadedCallbacks.slice(0); + queueLoadedCallbacks.length = 0; + each$6(notifyCallbacks, function (callback) { + if (failures.length === 0) { + if (isFunction(callback.success)) { + callback.success.call(callback.scope); + } + } else { + if (isFunction(callback.failure)) { + callback.failure.call(callback.scope, failures); + } + } + }); + } + }; + loadScripts(); + }; + }; + ScriptLoader.ScriptLoader = new ScriptLoader(); + + var each$7 = $_a5gegtjje5o2pum.each; + var AddOnManager = function () { + var self = this; + self.items = []; + self.urls = {}; + self.lookup = {}; + self._listeners = []; + }; + AddOnManager.prototype = { + get: function (name) { + if (this.lookup[name]) { + return this.lookup[name].instance; + } + return undefined; + }, + dependencies: function (name) { + var result; + if (this.lookup[name]) { + result = this.lookup[name].dependencies; + } + return result || []; + }, + requireLangPack: function (name, languages) { + var language = AddOnManager.language; + if (language && AddOnManager.languageLoad !== false) { + if (languages) { + languages = ',' + languages + ','; + if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) { + language = language.substr(0, 2); + } else if (languages.indexOf(',' + language + ',') === -1) { + return; + } + } + ScriptLoader.ScriptLoader.add(this.urls[name] + '/langs/' + language + '.js'); + } + }, + add: function (id, addOn, dependencies) { + this.items.push(addOn); + this.lookup[id] = { + instance: addOn, + dependencies: dependencies + }; + var result = $_bwcteb4je5o2pl4.partition(this._listeners, function (listener) { + return listener.name === id; + }); + this._listeners = result.fail; + each$7(result.pass, function (listener) { + listener.callback(); + }); + return addOn; + }, + remove: function (name) { + delete this.urls[name]; + delete this.lookup[name]; + }, + createUrl: function (baseUrl, dep) { + if (typeof dep === 'object') { + return dep; + } + return { + prefix: baseUrl.prefix, + resource: dep, + suffix: baseUrl.suffix + }; + }, + addComponents: function (pluginName, scripts) { + var pluginUrl = this.urls[pluginName]; + each$7(scripts, function (script) { + ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script); + }); + }, + load: function (name, addOnUrl, success, scope, failure) { + var self = this; + var url = addOnUrl; + var loadDependencies = function () { + var dependencies = self.dependencies(name); + each$7(dependencies, function (dep) { + var newUrl = self.createUrl(addOnUrl, dep); + self.load(newUrl.resource, newUrl, undefined, undefined); + }); + if (success) { + if (scope) { + success.call(scope); + } else { + success.call(ScriptLoader); + } + } + }; + if (self.urls[name]) { + return; + } + if (typeof addOnUrl === 'object') { + url = addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix; + } + if (url.indexOf('/') !== 0 && url.indexOf('://') === -1) { + url = AddOnManager.baseURL + '/' + url; + } + self.urls[name] = url.substring(0, url.lastIndexOf('/')); + if (self.lookup[name]) { + loadDependencies(); + } else { + ScriptLoader.ScriptLoader.add(url, loadDependencies, scope, failure); + } + }, + waitFor: function (name, callback) { + if (this.lookup.hasOwnProperty(name)) { + callback(); + } else { + this._listeners.push({ + name: name, + callback: callback + }); + } + } + }; + AddOnManager.PluginManager = new AddOnManager(); + AddOnManager.ThemeManager = new AddOnManager(); + + var ZWSP = '\uFEFF'; + var isZwsp = function (chr) { + return chr === ZWSP; + }; + var trim$3 = function (text) { + return text.replace(new RegExp(ZWSP, 'g'), ''); + }; + var $_4md31c21je5o2q5f = { + isZwsp: isZwsp, + ZWSP: ZWSP, + trim: trim$3 + }; + + var isElement$2 = $_9owqcy1qje5o2q0e.isElement; + var isText$2 = $_9owqcy1qje5o2q0e.isText; + var isCaretContainerBlock = function (node) { + if (isText$2(node)) { + node = node.parentNode; + } + return isElement$2(node) && node.hasAttribute('data-mce-caret'); + }; + var isCaretContainerInline = function (node) { + return isText$2(node) && $_4md31c21je5o2q5f.isZwsp(node.data); + }; + var isCaretContainer = function (node) { + return isCaretContainerBlock(node) || isCaretContainerInline(node); + }; + var hasContent = function (node) { + return node.firstChild !== node.lastChild || !$_9owqcy1qje5o2q0e.isBr(node.firstChild); + }; + var insertInline = function (node, before) { + var doc, sibling, textNode, parentNode; + doc = node.ownerDocument; + textNode = doc.createTextNode($_4md31c21je5o2q5f.ZWSP); + parentNode = node.parentNode; + if (!before) { + sibling = node.nextSibling; + if (isText$2(sibling)) { + if (isCaretContainer(sibling)) { + return sibling; + } + if (startsWithCaretContainer(sibling)) { + sibling.splitText(1); + return sibling; + } + } + if (node.nextSibling) { + parentNode.insertBefore(textNode, node.nextSibling); + } else { + parentNode.appendChild(textNode); + } + } else { + sibling = node.previousSibling; + if (isText$2(sibling)) { + if (isCaretContainer(sibling)) { + return sibling; + } + if (endsWithCaretContainer(sibling)) { + return sibling.splitText(sibling.data.length - 1); + } + } + parentNode.insertBefore(textNode, node); + } + return textNode; + }; + var isBeforeInline = function (pos) { + var container = pos.container(); + return pos && $_9owqcy1qje5o2q0e.isText(container) && container.data.charAt(pos.offset()) === $_4md31c21je5o2q5f.ZWSP; + }; + var isAfterInline = function (pos) { + var container = pos.container(); + return pos && $_9owqcy1qje5o2q0e.isText(container) && container.data.charAt(pos.offset() - 1) === $_4md31c21je5o2q5f.ZWSP; + }; + var createBogusBr = function () { + var br = document.createElement('br'); + br.setAttribute('data-mce-bogus', '1'); + return br; + }; + var insertBlock = function (blockName, node, before) { + var doc, blockNode, parentNode; + doc = node.ownerDocument; + blockNode = doc.createElement(blockName); + blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after'); + blockNode.setAttribute('data-mce-bogus', 'all'); + blockNode.appendChild(createBogusBr()); + parentNode = node.parentNode; + if (!before) { + if (node.nextSibling) { + parentNode.insertBefore(blockNode, node.nextSibling); + } else { + parentNode.appendChild(blockNode); + } + } else { + parentNode.insertBefore(blockNode, node); + } + return blockNode; + }; + var startsWithCaretContainer = function (node) { + return isText$2(node) && node.data[0] === $_4md31c21je5o2q5f.ZWSP; + }; + var endsWithCaretContainer = function (node) { + return isText$2(node) && node.data[node.data.length - 1] === $_4md31c21je5o2q5f.ZWSP; + }; + var trimBogusBr = function (elm) { + var brs = elm.getElementsByTagName('br'); + var lastBr = brs[brs.length - 1]; + if ($_9owqcy1qje5o2q0e.isBogus(lastBr)) { + lastBr.parentNode.removeChild(lastBr); + } + }; + var showCaretContainerBlock = function (caretContainer) { + if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) { + trimBogusBr(caretContainer); + caretContainer.removeAttribute('data-mce-caret'); + caretContainer.removeAttribute('data-mce-bogus'); + caretContainer.removeAttribute('style'); + caretContainer.removeAttribute('_moz_abspos'); + return caretContainer; + } + return null; + }; + var isRangeInCaretContainerBlock = function (range) { + return isCaretContainerBlock(range.startContainer); + }; + + var isContentEditableTrue$1 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$1 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isBr$2 = $_9owqcy1qje5o2q0e.isBr; + var isText$3 = $_9owqcy1qje5o2q0e.isText; + var isInvalidTextElement = $_9owqcy1qje5o2q0e.matchNodeNames('script style textarea'); + var isAtomicInline = $_9owqcy1qje5o2q0e.matchNodeNames('img input textarea hr iframe video audio object'); + var isTable$1 = $_9owqcy1qje5o2q0e.matchNodeNames('table'); + var isCaretContainer$1 = isCaretContainer; + var isCaretCandidate = function (node) { + if (isCaretContainer$1(node)) { + return false; + } + if (isText$3(node)) { + if (isInvalidTextElement(node.parentNode)) { + return false; + } + return true; + } + return isAtomicInline(node) || isBr$2(node) || isTable$1(node) || isContentEditableFalse$1(node); + }; + var isInEditable = function (node, root) { + for (node = node.parentNode; node && node !== root; node = node.parentNode) { + if (isContentEditableFalse$1(node)) { + return false; + } + if (isContentEditableTrue$1(node)) { + return true; + } + } + return true; + }; + var isAtomicContentEditableFalse = function (node) { + if (!isContentEditableFalse$1(node)) { + return false; + } + return $_c2vc3pkje5o2puw.reduce(node.getElementsByTagName('*'), function (result, elm) { + return result || isContentEditableTrue$1(elm); + }, false) !== true; + }; + var isAtomic = function (node) { + return isAtomicInline(node) || isAtomicContentEditableFalse(node); + }; + var isEditableCaretCandidate = function (node, root) { + return isCaretCandidate(node) && isInEditable(node, root); + }; + + var round = Math.round; + var clone$1 = function (rect) { + if (!rect) { + return { + left: 0, + top: 0, + bottom: 0, + right: 0, + width: 0, + height: 0 + }; + } + return { + left: round(rect.left), + top: round(rect.top), + bottom: round(rect.bottom), + right: round(rect.right), + width: round(rect.width), + height: round(rect.height) + }; + }; + var collapse = function (rect, toStart) { + rect = clone$1(rect); + if (toStart) { + rect.right = rect.left; + } else { + rect.left = rect.left + rect.width; + rect.right = rect.left; + } + rect.width = 0; + return rect; + }; + var isEqual = function (rect1, rect2) { + return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right; + }; + var isValidOverflow = function (overflowY, rect1, rect2) { + return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2; + }; + var isAbove = function (rect1, rect2) { + if (rect1.bottom - rect1.height / 2 < rect2.top) { + return true; + } + if (rect1.top > rect2.bottom) { + return false; + } + return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2); + }; + var isBelow = function (rect1, rect2) { + if (rect1.top > rect2.bottom) { + return true; + } + if (rect1.bottom < rect2.top) { + return false; + } + return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2); + }; + var containsXY = function (rect, clientX, clientY) { + return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom; + }; + + var getSelectedNode = function (range) { + var startContainer = range.startContainer, startOffset = range.startOffset; + if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) { + return startContainer.childNodes[startOffset]; + } + return null; + }; + var getNode = function (container, offset) { + if (container.nodeType === 1 && container.hasChildNodes()) { + if (offset >= container.childNodes.length) { + offset = container.childNodes.length - 1; + } + container = container.childNodes[offset]; + } + return container; + }; + + var extendingChars = new RegExp('[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a' + '\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0' + '\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08E3-\u0902\u093a\u093c' + '\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3' + '\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc' + '\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57' + '\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56' + '\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44' + '\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9' + '\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97' + '\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074' + '\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5' + '\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18' + '\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1ABE\u1b00-\u1b03\u1b34' + '\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9' + '\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9' + '\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20DD-\u20E0\u20e1\u20E2-\u20E4\u20e5-\u20f0\u2cef-\u2cf1' + '\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\uA670-\uA672\ua674-\ua67d\uA69E-\ua69f\ua6f0-\ua6f1' + '\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc' + '\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1' + '\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\uFE2F\uff9e-\uff9f]'); + var isExtendingChar = function (ch) { + return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch); + }; + + var slice$3 = [].slice; + var constant$1 = function (value) { + return function () { + return value; + }; + }; + var negate = function (predicate) { + return function (x) { + return !predicate(x); + }; + }; + var compose$2 = function (f, g) { + return function (x) { + return f(g(x)); + }; + }; + var or = function () { + var x = []; + for (var _i = 0; _i < arguments.length; _i++) { + x[_i] = arguments[_i]; + } + var args = slice$3.call(arguments); + return function (x) { + for (var i = 0; i < args.length; i++) { + if (args[i](x)) { + return true; + } + } + return false; + }; + }; + var and = function () { + var x = []; + for (var _i = 0; _i < arguments.length; _i++) { + x[_i] = arguments[_i]; + } + var args = slice$3.call(arguments); + return function (x) { + for (var i = 0; i < args.length; i++) { + if (!args[i](x)) { + return false; + } + } + return true; + }; + }; + var curry$1 = function (fn) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var args = slice$3.call(arguments); + if (args.length - 1 >= fn.length) { + return fn.apply(this, args.slice(1)); + } + return function () { + var tempArgs = args.concat([].slice.call(arguments)); + return curry$1.apply(this, tempArgs); + }; + }; + var noop$1 = function () { + }; + var $_ghq3nq25je5o2q5q = { + constant: constant$1, + negate: negate, + and: and, + or: or, + curry: curry$1, + compose: compose$2, + noop: noop$1 + }; + + var isElement$3 = $_9owqcy1qje5o2q0e.isElement; + var isCaretCandidate$1 = isCaretCandidate; + var isBlock$1 = $_9owqcy1qje5o2q0e.matchStyleValues('display', 'block table'); + var isFloated = $_9owqcy1qje5o2q0e.matchStyleValues('float', 'left right'); + var isValidElementCaretCandidate = $_ghq3nq25je5o2q5q.and(isElement$3, isCaretCandidate$1, $_ghq3nq25je5o2q5q.negate(isFloated)); + var isNotPre = $_ghq3nq25je5o2q5q.negate($_9owqcy1qje5o2q0e.matchStyleValues('white-space', 'pre pre-line pre-wrap')); + var isText$4 = $_9owqcy1qje5o2q0e.isText; + var isBr$3 = $_9owqcy1qje5o2q0e.isBr; + var nodeIndex$1 = DOMUtils.nodeIndex; + var resolveIndex = getNode; + var createRange = function (doc) { + return 'createRange' in doc ? doc.createRange() : DOMUtils.DOM.createRng(); + }; + var isWhiteSpace = function (chr) { + return chr && /[\r\n\t ]/.test(chr); + }; + var isRange = function (rng) { + return !!rng.setStart && !!rng.setEnd; + }; + var isHiddenWhiteSpaceRange = function (range) { + var container = range.startContainer; + var offset = range.startOffset; + var text; + if (isWhiteSpace(range.toString()) && isNotPre(container.parentNode) && $_9owqcy1qje5o2q0e.isText(container)) { + text = container.data; + if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) { + return true; + } + } + return false; + }; + var getBrClientRect = function (brNode) { + var doc = brNode.ownerDocument; + var rng = createRange(doc); + var nbsp = doc.createTextNode('\xA0'); + var parentNode = brNode.parentNode; + var clientRect; + parentNode.insertBefore(nbsp, brNode); + rng.setStart(nbsp, 0); + rng.setEnd(nbsp, 1); + clientRect = clone$1(rng.getBoundingClientRect()); + parentNode.removeChild(nbsp); + return clientRect; + }; + var getBoundingClientRectWebKitText = function (rng) { + var sc = rng.startContainer; + var ec = rng.endContainer; + var so = rng.startOffset; + var eo = rng.endOffset; + if (sc === ec && $_9owqcy1qje5o2q0e.isText(ec) && so === 0 && eo === 1) { + var newRng = rng.cloneRange(); + newRng.setEndAfter(ec); + return getBoundingClientRect(newRng); + } else { + return null; + } + }; + var isZeroRect = function (r) { + return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0; + }; + var getBoundingClientRect = function (item) { + var clientRect, clientRects; + clientRects = item.getClientRects(); + if (clientRects.length > 0) { + clientRect = clone$1(clientRects[0]); + } else { + clientRect = clone$1(item.getBoundingClientRect()); + } + if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) { + return getBrClientRect(item); + } + if (isZeroRect(clientRect) && isRange(item)) { + return getBoundingClientRectWebKitText(item); + } + return clientRect; + }; + var collapseAndInflateWidth = function (clientRect, toStart) { + var newClientRect = collapse(clientRect, toStart); + newClientRect.width = 1; + newClientRect.right = newClientRect.left + 1; + return newClientRect; + }; + var getCaretPositionClientRects = function (caretPosition) { + var clientRects = []; + var beforeNode, node; + var addUniqueAndValidRect = function (clientRect) { + if (clientRect.height === 0) { + return; + } + if (clientRects.length > 0) { + if (isEqual(clientRect, clientRects[clientRects.length - 1])) { + return; + } + } + clientRects.push(clientRect); + }; + var addCharacterOffset = function (container, offset) { + var range = createRange(container.ownerDocument); + if (offset < container.data.length) { + if (isExtendingChar(container.data[offset])) { + return clientRects; + } + if (isExtendingChar(container.data[offset - 1])) { + range.setStart(container, offset); + range.setEnd(container, offset + 1); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false)); + return clientRects; + } + } + } + if (offset > 0) { + range.setStart(container, offset - 1); + range.setEnd(container, offset); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false)); + } + } + if (offset < container.data.length) { + range.setStart(container, offset); + range.setEnd(container, offset + 1); + if (!isHiddenWhiteSpaceRange(range)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), true)); + } + } + }; + if (isText$4(caretPosition.container())) { + addCharacterOffset(caretPosition.container(), caretPosition.offset()); + return clientRects; + } + if (isElement$3(caretPosition.container())) { + if (caretPosition.isAtEnd()) { + node = resolveIndex(caretPosition.container(), caretPosition.offset()); + if (isText$4(node)) { + addCharacterOffset(node, node.data.length); + } + if (isValidElementCaretCandidate(node) && !isBr$3(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false)); + } + } else { + node = resolveIndex(caretPosition.container(), caretPosition.offset()); + if (isText$4(node)) { + addCharacterOffset(node, 0); + } + if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false)); + return clientRects; + } + beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1); + if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) { + if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false)); + } + } + if (isValidElementCaretCandidate(node)) { + addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true)); + } + } + } + return clientRects; + }; + function CaretPosition(container, offset, clientRects) { + var isAtStart = function () { + if (isText$4(container)) { + return offset === 0; + } + return offset === 0; + }; + var isAtEnd = function () { + if (isText$4(container)) { + return offset >= container.data.length; + } + return offset >= container.childNodes.length; + }; + var toRange = function () { + var range; + range = createRange(container.ownerDocument); + range.setStart(container, offset); + range.setEnd(container, offset); + return range; + }; + var getClientRects = function () { + if (!clientRects) { + clientRects = getCaretPositionClientRects(CaretPosition(container, offset)); + } + return clientRects; + }; + var isVisible = function () { + return getClientRects().length > 0; + }; + var isEqual$$1 = function (caretPosition) { + return caretPosition && container === caretPosition.container() && offset === caretPosition.offset(); + }; + var getNode$$1 = function (before) { + return resolveIndex(container, before ? offset - 1 : offset); + }; + return { + container: $_ghq3nq25je5o2q5q.constant(container), + offset: $_ghq3nq25je5o2q5q.constant(offset), + toRange: toRange, + getClientRects: getClientRects, + isVisible: isVisible, + isAtStart: isAtStart, + isAtEnd: isAtEnd, + isEqual: isEqual$$1, + getNode: getNode$$1 + }; + } + (function (CaretPosition) { + CaretPosition.fromRangeStart = function (range) { + return CaretPosition(range.startContainer, range.startOffset); + }; + CaretPosition.fromRangeEnd = function (range) { + return CaretPosition(range.endContainer, range.endOffset); + }; + CaretPosition.after = function (node) { + return CaretPosition(node.parentNode, nodeIndex$1(node) + 1); + }; + CaretPosition.before = function (node) { + return CaretPosition(node.parentNode, nodeIndex$1(node)); + }; + CaretPosition.isAtStart = function (pos) { + return pos ? pos.isAtStart() : false; + }; + CaretPosition.isAtEnd = function (pos) { + return pos ? pos.isAtEnd() : false; + }; + CaretPosition.isTextPosition = function (pos) { + return pos ? $_9owqcy1qje5o2q0e.isText(pos.container()) : false; + }; + }(CaretPosition || (CaretPosition = {}))); + var CaretPosition$1 = CaretPosition; + + var isElement$4 = $_9owqcy1qje5o2q0e.isElement; + var isText$5 = $_9owqcy1qje5o2q0e.isText; + var removeNode = function (node) { + var parentNode = node.parentNode; + if (parentNode) { + parentNode.removeChild(node); + } + }; + var getNodeValue = function (node) { + try { + return node.nodeValue; + } catch (ex) { + return ''; + } + }; + var setNodeValue = function (node, text) { + if (text.length === 0) { + removeNode(node); + } else { + node.nodeValue = text; + } + }; + var trimCount = function (text) { + var trimmedText = $_4md31c21je5o2q5f.trim(text); + return { + count: text.length - trimmedText.length, + text: trimmedText + }; + }; + var removeUnchanged = function (caretContainer, pos) { + remove$2(caretContainer); + return pos; + }; + var removeTextAndReposition = function (caretContainer, pos) { + var before = trimCount(caretContainer.data.substr(0, pos.offset())); + var after = trimCount(caretContainer.data.substr(pos.offset())); + var text = before.text + after.text; + if (text.length > 0) { + setNodeValue(caretContainer, text); + return CaretPosition$1(caretContainer, pos.offset() - before.count); + } else { + return pos; + } + }; + var removeElementAndReposition = function (caretContainer, pos) { + var parentNode = pos.container(); + var newPosition = $_bwcteb4je5o2pl4.indexOf(parentNode.childNodes, caretContainer).map(function (index) { + return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos; + }).getOr(pos); + remove$2(caretContainer); + return newPosition; + }; + var removeTextCaretContainer = function (caretContainer, pos) { + return isText$5(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos); + }; + var removeElementCaretContainer = function (caretContainer, pos) { + return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos); + }; + var removeAndReposition = function (container, pos) { + return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos); + }; + var remove$2 = function (caretContainerNode) { + if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) { + if (hasContent(caretContainerNode)) { + caretContainerNode.removeAttribute('data-mce-caret'); + } else { + removeNode(caretContainerNode); + } + } + if (isText$5(caretContainerNode)) { + var text = $_4md31c21je5o2q5f.trim(getNodeValue(caretContainerNode)); + setNodeValue(caretContainerNode, text); + } + }; + var $_3djwbs29je5o2q74 = { + removeAndReposition: removeAndReposition, + remove: remove$2 + }; + + var walkToPositionIn = function (forward, root, start) { + var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start); + return fromPosition(forward, root, position); + }; + var afterElement = function (node) { + return $_9owqcy1qje5o2q0e.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node); + }; + var isBeforeOrStart = function (position) { + if (CaretPosition$1.isTextPosition(position)) { + return position.offset() === 0; + } else { + return isCaretCandidate(position.getNode()); + } + }; + var isAfterOrEnd = function (position) { + if (CaretPosition$1.isTextPosition(position)) { + var container = position.container(); + return position.offset() === container.data.length; + } else { + return isCaretCandidate(position.getNode(true)); + } + }; + var isBeforeAfterSameElement = function (from, to) { + return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true); + }; + var isAtBr = function (position) { + return !CaretPosition$1.isTextPosition(position) && $_9owqcy1qje5o2q0e.isBr(position.getNode()); + }; + var shouldSkipPosition = function (forward, from, to) { + if (forward) { + return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to); + } else { + return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to); + } + }; + var fromPosition = function (forward, root, pos) { + var walker = CaretWalker(root); + return Option.from(forward ? walker.next(pos) : walker.prev(pos)); + }; + var navigate = function (forward, root, from) { + return fromPosition(forward, root, from).bind(function (to) { + if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) { + return fromPosition(forward, root, to); + } else { + return Option.some(to); + } + }); + }; + var positionIn = function (forward, element) { + var startNode = forward ? element.firstChild : element.lastChild; + if ($_9owqcy1qje5o2q0e.isText(startNode)) { + return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length)); + } else if (startNode) { + if (isCaretCandidate(startNode)) { + return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode)); + } else { + return walkToPositionIn(forward, element, startNode); + } + } else { + return Option.none(); + } + }; + var $_g2kzjo2bje5o2q7n = { + fromPosition: fromPosition, + nextPosition: $_enfhkv6je5o2ply.curry(fromPosition, true), + prevPosition: $_enfhkv6je5o2ply.curry(fromPosition, false), + navigate: navigate, + positionIn: positionIn, + firstPositionIn: $_enfhkv6je5o2ply.curry(positionIn, true), + lastPositionIn: $_enfhkv6je5o2ply.curry(positionIn, false) + }; + + var isContentEditableTrue$2 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$2 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var showCaret = function (direction, editor, node, before, scrollIntoView) { + return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView); + }; + var getNodeRange = function (node) { + var rng = node.ownerDocument.createRange(); + rng.selectNode(node); + return rng; + }; + var selectNode = function (editor, node) { + var e; + e = editor.fire('BeforeObjectSelected', { target: node }); + if (e.isDefaultPrevented()) { + return null; + } + return getNodeRange(node); + }; + var renderCaretAtRange = function (editor, range, scrollIntoView) { + var caretPosition, ceRoot; + range = normalizeRange(1, editor.getBody(), range); + caretPosition = CaretPosition$1.fromRangeStart(range); + if (isContentEditableFalse$2(caretPosition.getNode())) { + return showCaret(1, editor, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + if (isContentEditableFalse$2(caretPosition.getNode(true))) { + return showCaret(1, editor, caretPosition.getNode(true), false, false); + } + ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) { + return isContentEditableFalse$2(node) || isContentEditableTrue$2(node); + }); + if (isContentEditableFalse$2(ceRoot)) { + return showCaret(1, editor, ceRoot, false, scrollIntoView); + } + return null; + }; + var renderRangeCaret = function (editor, range, scrollIntoView) { + var caretRange; + if (!range || !range.collapsed) { + return range; + } + caretRange = renderCaretAtRange(editor, range, scrollIntoView); + if (caretRange) { + return caretRange; + } + return range; + }; + + var cat = function (arr) { + var r = []; + var push = function (x) { + r.push(x); + }; + for (var i = 0; i < arr.length; i++) { + arr[i].each(push); + } + return r; + }; + var findMap = function (arr, f) { + for (var i = 0; i < arr.length; i++) { + var r = f(arr[i], i); + if (r.isSome()) { + return r; + } + } + return Option.none(); + }; + var liftN = function (arr, f) { + var r = []; + for (var i = 0; i < arr.length; i++) { + var x = arr[i]; + if (x.isSome()) { + r.push(x.getOrDie()); + } else { + return Option.none(); + } + } + return Option.some(f.apply(null, r)); + }; + var $_c8weyc2eje5o2q85 = { + cat: cat, + findMap: findMap, + liftN: liftN + }; + + var BreakType; + (function (BreakType) { + BreakType[BreakType['Br'] = 0] = 'Br'; + BreakType[BreakType['Block'] = 1] = 'Block'; + BreakType[BreakType['Wrap'] = 2] = 'Wrap'; + BreakType[BreakType['Eol'] = 3] = 'Eol'; + }(BreakType || (BreakType = {}))); + var isAbove$1 = function (pos1, pos2) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.head(pos2.getClientRects()), + $_bwcteb4je5o2pl4.last(pos1.getClientRects()) + ], isAbove).getOr(false); + }; + var isBelow$1 = function (pos1, pos2) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.last(pos2.getClientRects()), + $_bwcteb4je5o2pl4.head(pos1.getClientRects()) + ], function (r1, r2) { + return isBelow(r1, r2); + }).getOr(false); + }; + var flip = function (direction, positions) { + return direction === HDirection.Backwards ? positions.reverse() : positions; + }; + var walk$1 = function (direction, caretWalker, pos) { + return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos); + }; + var getBreakType = function (scope, direction, currentPos, nextPos) { + if ($_9owqcy1qje5o2q0e.isBr(nextPos.getNode(direction === HDirection.Forwards))) { + return BreakType.Br; + } else if (isInSameBlock(currentPos, nextPos) === false) { + return BreakType.Block; + } else { + return BreakType.Wrap; + } + }; + var getPositionsUntil = function (predicate, direction, scope, start) { + var caretWalker = CaretWalker(scope); + var currentPos = start, nextPos; + var positions = []; + while (currentPos) { + nextPos = walk$1(direction, caretWalker, currentPos); + if (!nextPos) { + break; + } + if ($_9owqcy1qje5o2q0e.isBr(nextPos.getNode(false))) { + if (direction === HDirection.Forwards) { + return { + positions: flip(direction, positions).concat([nextPos]), + breakType: BreakType.Br, + breakAt: Option.some(nextPos) + }; + } else { + return { + positions: flip(direction, positions), + breakType: BreakType.Br, + breakAt: Option.some(nextPos) + }; + } + } + if (!nextPos.isVisible()) { + currentPos = nextPos; + continue; + } + if (predicate(currentPos, nextPos)) { + var breakType = getBreakType(scope, direction, currentPos, nextPos); + return { + positions: flip(direction, positions), + breakType: breakType, + breakAt: Option.some(nextPos) + }; + } + positions.push(nextPos); + currentPos = nextPos; + } + return { + positions: flip(direction, positions), + breakType: BreakType.Eol, + breakAt: Option.none() + }; + }; + var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) { + return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) { + var positions = getPositionsUntilBreak(scope, pos).positions; + return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions); + }).getOr([]); + }; + var findClosestHorizontalPositionFromPoint = function (positions, x) { + return $_bwcteb4je5o2pl4.foldl(positions, function (acc, newPos) { + return acc.fold(function () { + return Option.some(newPos); + }, function (lastPos) { + return $_c8weyc2eje5o2q85.liftN([ + $_bwcteb4je5o2pl4.head(lastPos.getClientRects()), + $_bwcteb4je5o2pl4.head(newPos.getClientRects()) + ], function (lastRect, newRect) { + var lastDist = Math.abs(x - lastRect.left); + var newDist = Math.abs(x - newRect.left); + return newDist <= lastDist ? newPos : lastPos; + }).or(acc); + }); + }, Option.none()); + }; + var findClosestHorizontalPosition = function (positions, pos) { + return $_bwcteb4je5o2pl4.head(pos.getClientRects()).bind(function (targetRect) { + return findClosestHorizontalPositionFromPoint(positions, targetRect.left); + }); + }; + var getPositionsUntilPreviousLine = $_enfhkv6je5o2ply.curry(getPositionsUntil, isAbove$1, -1); + var getPositionsUntilNextLine = $_enfhkv6je5o2ply.curry(getPositionsUntil, isBelow$1, 1); + var getPositionsAbove = $_enfhkv6je5o2ply.curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine); + var getPositionsBelow = $_enfhkv6je5o2ply.curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine); + var getFirstLinePositions = function (scope) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(scope).map(function (pos) { + return [pos].concat(getPositionsUntilNextLine(scope, pos).positions); + }).getOr([]); + }; + var getLastLinePositions = function (scope) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(scope).map(function (pos) { + return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos); + }).getOr([]); + }; + + var all$1 = function (predicate) { + return descendants($_484buq15je5o2py8.body(), predicate); + }; + var ancestors = function (scope, predicate, isRoot) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.parents(scope, isRoot), predicate); + }; + var siblings$1 = function (scope, predicate) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.siblings(scope), predicate); + }; + var children$1 = function (scope, predicate) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.children(scope), predicate); + }; + var descendants = function (scope, predicate) { + var result = []; + $_bwcteb4je5o2pl4.each($_a6mttx17je5o2pyd.children(scope), function (x) { + if (predicate(x)) { + result = result.concat([x]); + } + result = result.concat(descendants(x, predicate)); + }); + return result; + }; + var $_47brb52hje5o2q8h = { + all: all$1, + ancestors: ancestors, + siblings: siblings$1, + children: children$1, + descendants: descendants + }; + + var all$2 = function (selector) { + return $_87zu5k1fje5o2pz9.all(selector); + }; + var ancestors$1 = function (scope, selector, isRoot) { + return $_47brb52hje5o2q8h.ancestors(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }, isRoot); + }; + var siblings$2 = function (scope, selector) { + return $_47brb52hje5o2q8h.siblings(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var children$2 = function (scope, selector) { + return $_47brb52hje5o2q8h.children(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var descendants$1 = function (scope, selector) { + return $_87zu5k1fje5o2pz9.all(selector, scope); + }; + var $_b4jhpu2gje5o2q8e = { + all: all$2, + ancestors: ancestors$1, + siblings: siblings$2, + children: children$2, + descendants: descendants$1 + }; + + var deflate = function (rect, delta) { + return { + left: rect.left - delta, + top: rect.top - delta, + right: rect.right + delta * 2, + bottom: rect.bottom + delta * 2, + width: rect.width + delta, + height: rect.height + delta + }; + }; + var getCorners = function (getYAxisValue, tds) { + return $_bwcteb4je5o2pl4.bind(tds, function (td) { + var rect = deflate(td.getBoundingClientRect(), -1); + return [ + { + x: rect.left, + y: getYAxisValue(rect), + cell: td + }, + { + x: rect.right, + y: getYAxisValue(rect), + cell: td + } + ]; + }); + }; + var findClosestCorner = function (corners, x, y) { + return $_bwcteb4je5o2pl4.foldl(corners, function (acc, newCorner) { + return acc.fold(function () { + return Option.some(newCorner); + }, function (oldCorner) { + var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y)); + var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y)); + return Option.some(newDist < oldDist ? newCorner : oldCorner); + }); + }, Option.none()); + }; + var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) { + var cells = $_b4jhpu2gje5o2q8e.descendants($_5tcb2dyje5o2pwu.fromDom(table), 'td,th').map(function (e) { + return e.dom(); + }); + var corners = $_bwcteb4je5o2pl4.filter(getCorners(getYAxisValue, cells), function (corner) { + return isTargetCorner(corner, y); + }); + return findClosestCorner(corners, x, y).map(function (corner) { + return corner.cell; + }); + }; + var getBottomValue = function (rect) { + return rect.bottom; + }; + var getTopValue = function (rect) { + return rect.top; + }; + var isAbove$2 = function (corner, y) { + return corner.y < y; + }; + var isBelow$2 = function (corner, y) { + return corner.y > y; + }; + var getClosestCellAbove = $_enfhkv6je5o2ply.curry(getClosestCell, getBottomValue, isAbove$2); + var getClosestCellBelow = $_enfhkv6je5o2ply.curry(getClosestCell, getTopValue, isBelow$2); + var findClosestPositionInAboveCell = function (table, pos) { + return $_bwcteb4je5o2pl4.head(pos.getClientRects()).bind(function (rect) { + return getClosestCellAbove(table, rect.left, rect.top); + }).bind(function (cell) { + return findClosestHorizontalPosition(getLastLinePositions(cell), pos); + }); + }; + var findClosestPositionInBelowCell = function (table, pos) { + return $_bwcteb4je5o2pl4.last(pos.getClientRects()).bind(function (rect) { + return getClosestCellBelow(table, rect.left, rect.top); + }).bind(function (cell) { + return findClosestHorizontalPosition(getFirstLinePositions(cell), pos); + }); + }; + + var browser$2 = $_2hq237mje5o2pvu.detect().browser; + var isFakeCaretTableBrowser = function () { + return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox(); + }; + var isAtTableCellLine = function (getPositionsUntil, scope, pos) { + var lineInfo = getPositionsUntil(scope, pos); + if (lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0) { + return lineInfo.breakAt.map(function (breakPos) { + return getPositionsUntil(scope, breakPos).breakAt.isNone(); + }).getOr(true); + } else { + return lineInfo.breakAt.isNone(); + } + }; + var isAtFirstTableCellLine = $_ghq3nq25je5o2q5q.curry(isAtTableCellLine, getPositionsUntilPreviousLine); + var isAtLastTableCellLine = $_ghq3nq25je5o2q5q.curry(isAtTableCellLine, getPositionsUntilNextLine); + var isCaretAtStartOrEndOfTable = function (forward, rng, table) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + return $_g2kzjo2bje5o2q7n.positionIn(!forward, table).map(function (pos) { + return pos.isEqual(caretPos); + }).getOr(false); + }; + var navigateHorizontally = function (editor, forward, table, td) { + var rng = editor.selection.getRng(); + var direction = forward ? 1 : -1; + if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) { + var newRng = showCaret(direction, editor, table, !forward, true); + editor.selection.setRng(newRng); + return true; + } + return false; + }; + var getClosestAbovePosition = function (root, table, start) { + return findClosestPositionInAboveCell(table, start).orThunk(function () { + return $_bwcteb4je5o2pl4.head(start.getClientRects()).bind(function (rect) { + return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left); + }); + }).getOr(CaretPosition$1.before(table)); + }; + var getClosestBelowPosition = function (root, table, start) { + return findClosestPositionInBelowCell(table, start).orThunk(function () { + return $_bwcteb4je5o2pl4.head(start.getClientRects()).bind(function (rect) { + return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left); + }); + }).getOr(CaretPosition$1.after(table)); + }; + var navigateVertically = function (editor, down, table, td) { + var rng = editor.selection.getRng(); + var pos = CaretPosition$1.fromRangeStart(rng); + var root = editor.getBody(); + if (!down && isAtFirstTableCellLine(td, pos)) { + var newPos = getClosestAbovePosition(root, table, pos); + editor.selection.setRng(newPos.toRange()); + return true; + } else if (down && isAtLastTableCellLine(td, pos)) { + var newPos = getClosestBelowPosition(root, table, pos); + editor.selection.setRng(newPos.toRange()); + return true; + } else { + return false; + } + }; + var moveH = function (editor, forward) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { + return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { + return navigateHorizontally(editor, forward, table, td); + }); + }).getOr(false); + }; + }; + var moveV = function (editor, forward) { + return function () { + return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) { + return Option.from(editor.dom.getParent(td, 'table')).map(function (table) { + return navigateVertically(editor, forward, table, td); + }); + }).getOr(false); + }; + }; + + var isContentEditableFalse$3 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isTableCell$1 = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && /^(TD|TH)$/i.test(node.tagName); + }; + var getAbsoluteClientRect = function (root, element, before) { + var clientRect = collapse(element.getBoundingClientRect(), before); + var docElm, scrollX, scrollY, margin, rootRect; + if (root.tagName === 'BODY') { + docElm = root.ownerDocument.documentElement; + scrollX = root.scrollLeft || docElm.scrollLeft; + scrollY = root.scrollTop || docElm.scrollTop; + } else { + rootRect = root.getBoundingClientRect(); + scrollX = root.scrollLeft - rootRect.left; + scrollY = root.scrollTop - rootRect.top; + } + clientRect.left += scrollX; + clientRect.right += scrollX; + clientRect.top += scrollY; + clientRect.bottom += scrollY; + clientRect.width = 1; + margin = element.offsetWidth - element.clientWidth; + if (margin > 0) { + if (before) { + margin *= -1; + } + clientRect.left += margin; + clientRect.right += margin; + } + return clientRect; + }; + var trimInlineCaretContainers = function (root) { + var contentEditableFalseNodes, node, sibling, i, data; + contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root); + for (i = 0; i < contentEditableFalseNodes.length; i++) { + node = contentEditableFalseNodes[i]; + sibling = node.previousSibling; + if (endsWithCaretContainer(sibling)) { + data = sibling.data; + if (data.length === 1) { + sibling.parentNode.removeChild(sibling); + } else { + sibling.deleteData(data.length - 1, 1); + } + } + sibling = node.nextSibling; + if (startsWithCaretContainer(sibling)) { + data = sibling.data; + if (data.length === 1) { + sibling.parentNode.removeChild(sibling); + } else { + sibling.deleteData(0, 1); + } + } + } + }; + var FakeCaret = function (root, isBlock, hasFocus) { + var cursorInterval, $lastVisualCaret = null, caretContainerNode; + var show = function (before, element) { + var clientRect, rng; + hide(); + if (isTableCell$1(element)) { + return null; + } + if (isBlock(element)) { + caretContainerNode = insertBlock('p', element, before); + clientRect = getAbsoluteClientRect(root, element, before); + DomQuery(caretContainerNode).css('top', clientRect.top); + $lastVisualCaret = DomQuery('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(clientRect).appendTo(root); + if (before) { + $lastVisualCaret.addClass('mce-visual-caret-before'); + } + startBlink(); + rng = element.ownerDocument.createRange(); + rng.setStart(caretContainerNode, 0); + rng.setEnd(caretContainerNode, 0); + } else { + caretContainerNode = insertInline(element, before); + rng = element.ownerDocument.createRange(); + if (isContentEditableFalse$3(caretContainerNode.nextSibling)) { + rng.setStart(caretContainerNode, 0); + rng.setEnd(caretContainerNode, 0); + } else { + rng.setStart(caretContainerNode, 1); + rng.setEnd(caretContainerNode, 1); + } + return rng; + } + return rng; + }; + var hide = function () { + trimInlineCaretContainers(root); + if (caretContainerNode) { + $_3djwbs29je5o2q74.remove(caretContainerNode); + caretContainerNode = null; + } + if ($lastVisualCaret) { + $lastVisualCaret.remove(); + $lastVisualCaret = null; + } + clearInterval(cursorInterval); + }; + var startBlink = function () { + cursorInterval = $_db41wogje5o2ps3.setInterval(function () { + if (hasFocus()) { + DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden'); + } else { + DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden'); + } + }, 500); + }; + var destroy = function () { + return $_db41wogje5o2ps3.clearInterval(cursorInterval); + }; + var getCss = function () { + return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}'; + }; + return { + show: show, + hide: hide, + getCss: getCss, + destroy: destroy + }; + }; + var isFakeCaretTarget = function (node) { + return isContentEditableFalse$3(node) || $_9owqcy1qje5o2q0e.isTable(node) && isFakeCaretTableBrowser(); + }; + + var isContentEditableFalse$4 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isBlockLike = $_9owqcy1qje5o2q0e.matchStyleValues('display', 'block table table-cell table-caption list-item'); + var isCaretContainer$2 = isCaretContainer; + var isCaretContainerBlock$1 = isCaretContainerBlock; + var curry$2 = $_ghq3nq25je5o2q5q.curry; + var isElement$5 = $_9owqcy1qje5o2q0e.isElement; + var isCaretCandidate$2 = isCaretCandidate; + var isForwards = function (direction) { + return direction > 0; + }; + var isBackwards = function (direction) { + return direction < 0; + }; + var skipCaretContainers = function (walk, shallow) { + var node; + while (node = walk(shallow)) { + if (!isCaretContainerBlock$1(node)) { + return node; + } + } + return null; + }; + var findNode = function (node, direction, predicateFn, rootNode, shallow) { + var walker = new TreeWalker(node, rootNode); + if (isBackwards(direction)) { + if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) { + node = skipCaretContainers(walker.prev, true); + if (predicateFn(node)) { + return node; + } + } + while (node = skipCaretContainers(walker.prev, shallow)) { + if (predicateFn(node)) { + return node; + } + } + } + if (isForwards(direction)) { + if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) { + node = skipCaretContainers(walker.next, true); + if (predicateFn(node)) { + return node; + } + } + while (node = skipCaretContainers(walker.next, shallow)) { + if (predicateFn(node)) { + return node; + } + } + } + return null; + }; + var getParentBlock = function (node, rootNode) { + while (node && node !== rootNode) { + if (isBlockLike(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) { + return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode); + }; + var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) { + var container, offset; + if (!caretPosition) { + return null; + } + container = caretPosition.container(); + offset = caretPosition.offset(); + if (!isElement$5(container)) { + return null; + } + return container.childNodes[offset + relativeOffset]; + }; + var beforeAfter = function (before, node) { + var range = node.ownerDocument.createRange(); + if (before) { + range.setStartBefore(node); + range.setEndBefore(node); + } else { + range.setStartAfter(node); + range.setEndAfter(node); + } + return range; + }; + var isNodesInSameBlock = function (root, node1, node2) { + return getParentBlock(node1, root) === getParentBlock(node2, root); + }; + var lean = function (left, root, node) { + var sibling, siblingName; + if (left) { + siblingName = 'previousSibling'; + } else { + siblingName = 'nextSibling'; + } + while (node && node !== root) { + sibling = node[siblingName]; + if (isCaretContainer$2(sibling)) { + sibling = sibling[siblingName]; + } + if (isContentEditableFalse$4(sibling)) { + if (isNodesInSameBlock(root, sibling, node)) { + return sibling; + } + break; + } + if (isCaretCandidate$2(sibling)) { + break; + } + node = node.parentNode; + } + return null; + }; + var before = curry$2(beforeAfter, true); + var after = curry$2(beforeAfter, false); + var normalizeRange = function (direction, root, range) { + var node, container, offset, location; + var leanLeft = curry$2(lean, true, root); + var leanRight = curry$2(lean, false, root); + container = range.startContainer; + offset = range.startOffset; + if (isCaretContainerBlock(container)) { + if (!isElement$5(container)) { + container = container.parentNode; + } + location = container.getAttribute('data-mce-caret'); + if (location === 'before') { + node = container.nextSibling; + if (isFakeCaretTarget(node)) { + return before(node); + } + } + if (location === 'after') { + node = container.previousSibling; + if (isFakeCaretTarget(node)) { + return after(node); + } + } + } + if (!range.collapsed) { + return range; + } + if ($_9owqcy1qje5o2q0e.isText(container)) { + if (isCaretContainer$2(container)) { + if (direction === 1) { + node = leanRight(container); + if (node) { + return before(node); + } + node = leanLeft(container); + if (node) { + return after(node); + } + } + if (direction === -1) { + node = leanLeft(container); + if (node) { + return after(node); + } + node = leanRight(container); + if (node) { + return before(node); + } + } + return range; + } + if (endsWithCaretContainer(container) && offset >= container.data.length - 1) { + if (direction === 1) { + node = leanRight(container); + if (node) { + return before(node); + } + } + return range; + } + if (startsWithCaretContainer(container) && offset <= 1) { + if (direction === -1) { + node = leanLeft(container); + if (node) { + return after(node); + } + } + return range; + } + if (offset === container.data.length) { + node = leanRight(container); + if (node) { + return before(node); + } + return range; + } + if (offset === 0) { + node = leanLeft(container); + if (node) { + return after(node); + } + return range; + } + } + return range; + }; + var isNextToContentEditableFalse = function (relativeOffset, caretPosition) { + var node = getChildNodeAtRelativeOffset(relativeOffset, caretPosition); + return isContentEditableFalse$4(node) && !$_9owqcy1qje5o2q0e.isBogusAll(node); + }; + var isNextToTable = function (relativeOffset, caretPosition) { + return $_9owqcy1qje5o2q0e.isTable(getChildNodeAtRelativeOffset(relativeOffset, caretPosition)); + }; + var getRelativeCefElm = function (forward, caretPosition) { + return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$4); + }; + var getNormalizedRangeEndPoint = function (direction, root, range) { + var normalizedRange = normalizeRange(direction, root, range); + if (direction === -1) { + return CaretPosition.fromRangeStart(normalizedRange); + } + return CaretPosition.fromRangeEnd(normalizedRange); + }; + var isBeforeContentEditableFalse = curry$2(isNextToContentEditableFalse, 0); + var isAfterContentEditableFalse = curry$2(isNextToContentEditableFalse, -1); + var isBeforeTable = curry$2(isNextToTable, 0); + var isAfterTable = curry$2(isNextToTable, -1); + + var HDirection; + (function (HDirection) { + HDirection[HDirection['Backwards'] = -1] = 'Backwards'; + HDirection[HDirection['Forwards'] = 1] = 'Forwards'; + }(HDirection || (HDirection = {}))); + var isContentEditableFalse$5 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isText$6 = $_9owqcy1qje5o2q0e.isText; + var isElement$6 = $_9owqcy1qje5o2q0e.isElement; + var isBr$4 = $_9owqcy1qje5o2q0e.isBr; + var isCaretCandidate$3 = isCaretCandidate; + var isAtomic$1 = isAtomic; + var isEditableCaretCandidate$1 = isEditableCaretCandidate; + var getParents = function (node, root) { + var parents = []; + while (node && node !== root) { + parents.push(node); + node = node.parentNode; + } + return parents; + }; + var nodeAtIndex = function (container, offset) { + if (container.hasChildNodes() && offset < container.childNodes.length) { + return container.childNodes[offset]; + } + return null; + }; + var getCaretCandidatePosition = function (direction, node) { + if (isForwards(direction)) { + if (isCaretCandidate$3(node.previousSibling) && !isText$6(node.previousSibling)) { + return CaretPosition$1.before(node); + } + if (isText$6(node)) { + return CaretPosition$1(node, 0); + } + } + if (isBackwards(direction)) { + if (isCaretCandidate$3(node.nextSibling) && !isText$6(node.nextSibling)) { + return CaretPosition$1.after(node); + } + if (isText$6(node)) { + return CaretPosition$1(node, node.data.length); + } + } + if (isBackwards(direction)) { + if (isBr$4(node)) { + return CaretPosition$1.before(node); + } + return CaretPosition$1.after(node); + } + return CaretPosition$1.before(node); + }; + var isBrBeforeBlock = function (node, root) { + var next; + if (!$_9owqcy1qje5o2q0e.isBr(node)) { + return false; + } + next = findCaretPosition(1, CaretPosition$1.after(node), root); + if (!next) { + return false; + } + return !isInSameBlock(CaretPosition$1.before(node), CaretPosition$1.before(next), root); + }; + var findCaretPosition = function (direction, startPos, root) { + var node, nextNode, innerNode; + var rootContentEditableFalseElm, caretPosition; + if (!isElement$6(root) || !startPos) { + return null; + } + if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) { + caretPosition = CaretPosition$1.after(root.lastChild); + if (isBackwards(direction) && isCaretCandidate$3(root.lastChild) && isElement$6(root.lastChild)) { + return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition; + } + } else { + caretPosition = startPos; + } + var container = caretPosition.container(); + var offset = caretPosition.offset(); + if (isText$6(container)) { + if (isBackwards(direction) && offset > 0) { + return CaretPosition$1(container, --offset); + } + if (isForwards(direction) && offset < container.length) { + return CaretPosition$1(container, ++offset); + } + node = container; + } else { + if (isBackwards(direction) && offset > 0) { + nextNode = nodeAtIndex(container, offset - 1); + if (isCaretCandidate$3(nextNode)) { + if (!isAtomic$1(nextNode)) { + innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode); + if (innerNode) { + if (isText$6(innerNode)) { + return CaretPosition$1(innerNode, innerNode.data.length); + } + return CaretPosition$1.after(innerNode); + } + } + if (isText$6(nextNode)) { + return CaretPosition$1(nextNode, nextNode.data.length); + } + return CaretPosition$1.before(nextNode); + } + } + if (isForwards(direction) && offset < container.childNodes.length) { + nextNode = nodeAtIndex(container, offset); + if (isCaretCandidate$3(nextNode)) { + if (isBrBeforeBlock(nextNode, root)) { + return findCaretPosition(direction, CaretPosition$1.after(nextNode), root); + } + if (!isAtomic$1(nextNode)) { + innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode); + if (innerNode) { + if (isText$6(innerNode)) { + return CaretPosition$1(innerNode, 0); + } + return CaretPosition$1.before(innerNode); + } + } + if (isText$6(nextNode)) { + return CaretPosition$1(nextNode, 0); + } + return CaretPosition$1.after(nextNode); + } + } + node = nextNode ? nextNode : caretPosition.getNode(); + } + if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) { + node = findNode(node, direction, $_ghq3nq25je5o2q5q.constant(true), root, true); + if (isEditableCaretCandidate$1(node, root)) { + return getCaretCandidatePosition(direction, node); + } + } + nextNode = findNode(node, direction, isEditableCaretCandidate$1, root); + rootContentEditableFalseElm = $_c2vc3pkje5o2puw.last($_c2vc3pkje5o2puw.filter(getParents(container, root), isContentEditableFalse$5)); + if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) { + if (isForwards(direction)) { + caretPosition = CaretPosition$1.after(rootContentEditableFalseElm); + } else { + caretPosition = CaretPosition$1.before(rootContentEditableFalseElm); + } + return caretPosition; + } + if (nextNode) { + return getCaretCandidatePosition(direction, nextNode); + } + return null; + }; + var CaretWalker = function (root) { + return { + next: function (caretPosition) { + return findCaretPosition(HDirection.Forwards, caretPosition, root); + }, + prev: function (caretPosition) { + return findCaretPosition(HDirection.Backwards, caretPosition, root); + } + }; + }; + + var hasOnlyOneChild = function (node) { + return node.firstChild && node.firstChild === node.lastChild; + }; + var isPaddingNode = function (node) { + return node.name === 'br' || node.value === '\xA0'; + }; + var isPaddedEmptyBlock = function (schema, node) { + var blockElements = schema.getBlockElements(); + return blockElements[node.name] && hasOnlyOneChild(node) && isPaddingNode(node.firstChild); + }; + var isEmptyFragmentElement = function (schema, node) { + var nonEmptyElements = schema.getNonEmptyElements(); + return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node)); + }; + var isListFragment = function (schema, fragment) { + var firstChild = fragment.firstChild; + var lastChild = fragment.lastChild; + if (firstChild && firstChild.name === 'meta') { + firstChild = firstChild.next; + } + if (lastChild && lastChild.attr('id') === 'mce_marker') { + lastChild = lastChild.prev; + } + if (isEmptyFragmentElement(schema, lastChild)) { + lastChild = lastChild.prev; + } + if (!firstChild || firstChild !== lastChild) { + return false; + } + return firstChild.name === 'ul' || firstChild.name === 'ol'; + }; + var cleanupDomFragment = function (domFragment) { + var firstChild = domFragment.firstChild; + var lastChild = domFragment.lastChild; + if (firstChild && firstChild.nodeName === 'META') { + firstChild.parentNode.removeChild(firstChild); + } + if (lastChild && lastChild.id === 'mce_marker') { + lastChild.parentNode.removeChild(lastChild); + } + return domFragment; + }; + var toDomFragment = function (dom, serializer, fragment) { + var html = serializer.serialize(fragment); + var domFragment = dom.createFragment(html); + return cleanupDomFragment(domFragment); + }; + var listItems$1 = function (elm) { + return $_a5gegtjje5o2pum.grep(elm.childNodes, function (child) { + return child.nodeName === 'LI'; + }); + }; + var isPadding = function (node) { + return node.data === '\xA0' || $_9owqcy1qje5o2q0e.isBr(node); + }; + var isListItemPadded = function (node) { + return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild); + }; + var isEmptyOrPadded = function (elm) { + return !elm.firstChild || isListItemPadded(elm); + }; + var trimListItems = function (elms) { + return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms; + }; + var getParentLi = function (dom, node) { + var parentBlock = dom.getParent(node, dom.isBlock); + return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null; + }; + var isParentBlockLi = function (dom, node) { + return !!getParentLi(dom, node); + }; + var getSplit = function (parentNode, rng) { + var beforeRng = rng.cloneRange(); + var afterRng = rng.cloneRange(); + beforeRng.setStartBefore(parentNode); + afterRng.setEndAfter(parentNode); + return [ + beforeRng.cloneContents(), + afterRng.cloneContents() + ]; + }; + var findFirstIn = function (node, rootNode) { + var caretPos = CaretPosition$1.before(node); + var caretWalker = CaretWalker(rootNode); + var newCaretPos = caretWalker.next(caretPos); + return newCaretPos ? newCaretPos.toRange() : null; + }; + var findLastOf = function (node, rootNode) { + var caretPos = CaretPosition$1.after(node); + var caretWalker = CaretWalker(rootNode); + var newCaretPos = caretWalker.prev(caretPos); + return newCaretPos ? newCaretPos.toRange() : null; + }; + var insertMiddle = function (target, elms, rootNode, rng) { + var parts = getSplit(target, rng); + var parentElm = target.parentNode; + parentElm.insertBefore(parts[0], target); + $_a5gegtjje5o2pum.each(elms, function (li) { + parentElm.insertBefore(li, target); + }); + parentElm.insertBefore(parts[1], target); + parentElm.removeChild(target); + return findLastOf(elms[elms.length - 1], rootNode); + }; + var insertBefore = function (target, elms, rootNode) { + var parentElm = target.parentNode; + $_a5gegtjje5o2pum.each(elms, function (elm) { + parentElm.insertBefore(elm, target); + }); + return findFirstIn(target, rootNode); + }; + var insertAfter = function (target, elms, rootNode, dom) { + dom.insertAfter(elms.reverse(), target); + return findLastOf(elms[0], rootNode); + }; + var insertAtCaret = function (serializer, dom, rng, fragment) { + var domFragment = toDomFragment(dom, serializer, fragment); + var liTarget = getParentLi(dom, rng.startContainer); + var liElms = trimListItems(listItems$1(domFragment.firstChild)); + var BEGINNING = 1, END = 2; + var rootNode = dom.getRoot(); + var isAt = function (location) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + var caretWalker = CaretWalker(dom.getRoot()); + var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos); + return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true; + }; + if (isAt(BEGINNING)) { + return insertBefore(liTarget, liElms, rootNode); + } else if (isAt(END)) { + return insertAfter(liTarget, liElms, rootNode, dom); + } + return insertMiddle(liTarget, liElms, rootNode, rng); + }; + var $_3j1y5o1xje5o2q4o = { + isListFragment: isListFragment, + insertAtCaret: insertAtCaret, + isParentBlockLi: isParentBlockLi, + trimListItems: trimListItems, + listItems: listItems$1 + }; + + var isText$7 = $_9owqcy1qje5o2q0e.isText; + var isBogus$1 = $_9owqcy1qje5o2q0e.isBogus; + var nodeIndex$2 = DOMUtils.nodeIndex; + var normalizedParent = function (node) { + var parentNode = node.parentNode; + if (isBogus$1(parentNode)) { + return normalizedParent(parentNode); + } + return parentNode; + }; + var getChildNodes = function (node) { + if (!node) { + return []; + } + return $_c2vc3pkje5o2puw.reduce(node.childNodes, function (result, node) { + if (isBogus$1(node) && node.nodeName !== 'BR') { + result = result.concat(getChildNodes(node)); + } else { + result.push(node); + } + return result; + }, []); + }; + var normalizedTextOffset = function (node, offset) { + while (node = node.previousSibling) { + if (!isText$7(node)) { + break; + } + offset += node.data.length; + } + return offset; + }; + var equal$1 = function (a) { + return function (b) { + return a === b; + }; + }; + var normalizedNodeIndex = function (node) { + var nodes, index, numTextFragments; + nodes = getChildNodes(normalizedParent(node)); + index = $_c2vc3pkje5o2puw.findIndex(nodes, equal$1(node), node); + nodes = nodes.slice(0, index + 1); + numTextFragments = $_c2vc3pkje5o2puw.reduce(nodes, function (result, node, i) { + if (isText$7(node) && isText$7(nodes[i - 1])) { + result++; + } + return result; + }, 0); + nodes = $_c2vc3pkje5o2puw.filter(nodes, $_9owqcy1qje5o2q0e.matchNodeNames(node.nodeName)); + index = $_c2vc3pkje5o2puw.findIndex(nodes, equal$1(node), node); + return index - numTextFragments; + }; + var createPathItem = function (node) { + var name; + if (isText$7(node)) { + name = 'text()'; + } else { + name = node.nodeName.toLowerCase(); + } + return name + '[' + normalizedNodeIndex(node) + ']'; + }; + var parentsUntil = function (root, node, predicate) { + var parents = []; + for (node = node.parentNode; node !== root; node = node.parentNode) { + if (predicate && predicate(node)) { + break; + } + parents.push(node); + } + return parents; + }; + var create$1 = function (root, caretPosition) { + var container, offset, path = [], outputOffset, childNodes, parents; + container = caretPosition.container(); + offset = caretPosition.offset(); + if (isText$7(container)) { + outputOffset = normalizedTextOffset(container, offset); + } else { + childNodes = container.childNodes; + if (offset >= childNodes.length) { + outputOffset = 'after'; + offset = childNodes.length - 1; + } else { + outputOffset = 'before'; + } + container = childNodes[offset]; + } + path.push(createPathItem(container)); + parents = parentsUntil(root, container); + parents = $_c2vc3pkje5o2puw.filter(parents, $_ghq3nq25je5o2q5q.negate($_9owqcy1qje5o2q0e.isBogus)); + path = path.concat($_c2vc3pkje5o2puw.map(parents, function (node) { + return createPathItem(node); + })); + return path.reverse().join('/') + ',' + outputOffset; + }; + var resolvePathItem = function (node, name, index) { + var nodes = getChildNodes(node); + nodes = $_c2vc3pkje5o2puw.filter(nodes, function (node, index) { + return !isText$7(node) || !isText$7(nodes[index - 1]); + }); + nodes = $_c2vc3pkje5o2puw.filter(nodes, $_9owqcy1qje5o2q0e.matchNodeNames(name)); + return nodes[index]; + }; + var findTextPosition = function (container, offset) { + var node = container, targetOffset = 0, dataLen; + while (isText$7(node)) { + dataLen = node.data.length; + if (offset >= targetOffset && offset <= targetOffset + dataLen) { + container = node; + offset = offset - targetOffset; + break; + } + if (!isText$7(node.nextSibling)) { + container = node; + offset = dataLen; + break; + } + targetOffset += dataLen; + node = node.nextSibling; + } + if (isText$7(container) && offset > container.data.length) { + offset = container.data.length; + } + return CaretPosition$1(container, offset); + }; + var resolve$2 = function (root, path) { + var parts, container, offset; + if (!path) { + return null; + } + parts = path.split(','); + path = parts[0].split('/'); + offset = parts.length > 1 ? parts[1] : 'before'; + container = $_c2vc3pkje5o2puw.reduce(path, function (result, value) { + value = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(value); + if (!value) { + return null; + } + if (value[1] === 'text()') { + value[1] = '#text'; + } + return resolvePathItem(result, value[1], parseInt(value[2], 10)); + }, root); + if (!container) { + return null; + } + if (!isText$7(container)) { + if (offset === 'after') { + offset = nodeIndex$2(container) + 1; + } else { + offset = nodeIndex$2(container); + } + return CaretPosition$1(container.parentNode, offset); + } + return findTextPosition(container, parseInt(offset, 10)); + }; + + var isContentEditableFalse$6 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var getNormalizedTextOffset = function (trim, container, offset) { + var node, trimmedOffset; + trimmedOffset = trim(container.data.slice(0, offset)).length; + for (node = container.previousSibling; node && $_9owqcy1qje5o2q0e.isText(node); node = node.previousSibling) { + trimmedOffset += trim(node.data).length; + } + return trimmedOffset; + }; + var getPoint = function (dom, trim, normalized, rng, start) { + var container = rng[start ? 'startContainer' : 'endContainer']; + var offset = rng[start ? 'startOffset' : 'endOffset']; + var point = []; + var childNodes, after = 0; + var root = dom.getRoot(); + if ($_9owqcy1qje5o2q0e.isText(container)) { + point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset); + } else { + childNodes = container.childNodes; + if (offset >= childNodes.length && childNodes.length) { + after = 1; + offset = Math.max(0, childNodes.length - 1); + } + point.push(dom.nodeIndex(childNodes[offset], normalized) + after); + } + for (; container && container !== root; container = container.parentNode) { + point.push(dom.nodeIndex(container, normalized)); + } + return point; + }; + var getLocation = function (trim, selection, normalized, rng) { + var dom = selection.dom, bookmark = {}; + bookmark.start = getPoint(dom, trim, normalized, rng, true); + if (!selection.isCollapsed()) { + bookmark.end = getPoint(dom, trim, normalized, rng, false); + } + return bookmark; + }; + var trimEmptyTextNode = function (node) { + if ($_9owqcy1qje5o2q0e.isText(node) && node.data.length === 0) { + node.parentNode.removeChild(node); + } + }; + var findIndex$3 = function (dom, name, element) { + var count = 0; + $_a5gegtjje5o2pum.each(dom.select(name), function (node) { + if (node.getAttribute('data-mce-bogus') === 'all') { + return; + } + if (node === element) { + return false; + } + count++; + }); + return count; + }; + var moveEndPoint = function (rng, start) { + var container, offset, childNodes; + var prefix = start ? 'start' : 'end'; + container = rng[prefix + 'Container']; + offset = rng[prefix + 'Offset']; + if ($_9owqcy1qje5o2q0e.isElement(container) && container.nodeName === 'TR') { + childNodes = container.childNodes; + container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)]; + if (container) { + offset = start ? 0 : container.childNodes.length; + rng['set' + (start ? 'Start' : 'End')](container, offset); + } + } + }; + var normalizeTableCellSelection = function (rng) { + moveEndPoint(rng, true); + moveEndPoint(rng, false); + return rng; + }; + var findSibling = function (node, offset) { + var sibling; + if ($_9owqcy1qje5o2q0e.isElement(node)) { + node = getNode(node, offset); + if (isContentEditableFalse$6(node)) { + return node; + } + } + if (isCaretContainer(node)) { + if ($_9owqcy1qje5o2q0e.isText(node) && isCaretContainerBlock(node)) { + node = node.parentNode; + } + sibling = node.previousSibling; + if (isContentEditableFalse$6(sibling)) { + return sibling; + } + sibling = node.nextSibling; + if (isContentEditableFalse$6(sibling)) { + return sibling; + } + } + }; + var findAdjacentContentEditableFalseElm = function (rng) { + return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset); + }; + var getOffsetBookmark = function (trim, normalized, selection) { + var element = selection.getNode(); + var name = element ? element.nodeName : null; + var rng = selection.getRng(); + if (isContentEditableFalse$6(element) || name === 'IMG') { + return { + name: name, + index: findIndex$3(selection.dom, name, element) + }; + } + element = findAdjacentContentEditableFalseElm(rng); + if (element) { + name = element.tagName; + return { + name: name, + index: findIndex$3(selection.dom, name, element) + }; + } + return getLocation(trim, selection, normalized, rng); + }; + var getCaretBookmark = function (selection) { + var rng = selection.getRng(); + return { + start: create$1(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)), + end: create$1(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng)) + }; + }; + var getRangeBookmark = function (selection) { + return { rng: selection.getRng() }; + }; + var getPersistentBookmark = function (selection) { + var dom = selection.dom; + var rng = selection.getRng(); + var id = dom.uniqueId(); + var collapsed = selection.isCollapsed(); + var styles = 'overflow:hidden;line-height:0px'; + var element = selection.getNode(); + var name = element.nodeName; + var chr = ''; + if (name === 'IMG') { + return { + name: name, + index: findIndex$3(dom, name, element) + }; + } + var rng2 = normalizeTableCellSelection(rng.cloneRange()); + if (!collapsed) { + rng2.collapse(false); + var endBookmarkNode = dom.create('span', { + 'data-mce-type': 'bookmark', + 'id': id + '_end', + 'style': styles + }, chr); + rng2.insertNode(endBookmarkNode); + trimEmptyTextNode(endBookmarkNode.nextSibling); + } + rng = normalizeTableCellSelection(rng); + rng.collapse(true); + var startBookmarkNode = dom.create('span', { + 'data-mce-type': 'bookmark', + 'id': id + '_start', + 'style': styles + }, chr); + rng.insertNode(startBookmarkNode); + trimEmptyTextNode(startBookmarkNode.previousSibling); + selection.moveToBookmark({ + id: id, + keep: 1 + }); + return { id: id }; + }; + var getBookmark = function (selection, type, normalized) { + if (type === 2) { + return getOffsetBookmark($_4md31c21je5o2q5f.trim, normalized, selection); + } else if (type === 3) { + return getCaretBookmark(selection); + } else if (type) { + return getRangeBookmark(selection); + } else { + return getPersistentBookmark(selection); + } + }; + var $_9eyzd52kje5o2q8r = { + getBookmark: getBookmark, + getUndoBookmark: $_enfhkv6je5o2ply.curry(getOffsetBookmark, $_enfhkv6je5o2ply.identity, true) + }; + + var addBogus = function (dom, node) { + if (dom.isBlock(node) && !node.innerHTML && !$_9bd8pn9je5o2pp2.ie) { + node.innerHTML = '<br data-mce-bogus="1" />'; + } + return node; + }; + var resolveCaretPositionBookmark = function (dom, bookmark) { + var rng, pos; + rng = dom.createRng(); + pos = resolve$2(dom.getRoot(), bookmark.start); + rng.setStart(pos.container(), pos.offset()); + pos = resolve$2(dom.getRoot(), bookmark.end); + rng.setEnd(pos.container(), pos.offset()); + return rng; + }; + var setEndPoint = function (dom, start, bookmark, rng) { + var point = bookmark[start ? 'start' : 'end']; + var i, node, offset, children; + var root = dom.getRoot(); + if (point) { + offset = point[0]; + for (node = root, i = point.length - 1; i >= 1; i--) { + children = node.childNodes; + if (point[i] > children.length - 1) { + return; + } + node = children[point[i]]; + } + if (node.nodeType === 3) { + offset = Math.min(point[0], node.nodeValue.length); + } + if (node.nodeType === 1) { + offset = Math.min(point[0], node.childNodes.length); + } + if (start) { + rng.setStart(node, offset); + } else { + rng.setEnd(node, offset); + } + } + return true; + }; + var restoreEndPoint = function (dom, suffix, bookmark) { + var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev; + var keep = bookmark.keep; + var container, offset; + if (marker) { + node = marker.parentNode; + if (suffix === 'start') { + if (!keep) { + idx = dom.nodeIndex(marker); + } else { + node = marker.firstChild; + idx = 1; + } + container = node; + offset = idx; + } else { + if (!keep) { + idx = dom.nodeIndex(marker); + } else { + node = marker.firstChild; + idx = 1; + } + container = node; + offset = idx; + } + if (!keep) { + prev = marker.previousSibling; + next = marker.nextSibling; + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.grep(marker.childNodes), function (node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + node.nodeValue = node.nodeValue.replace(/\uFEFF/g, ''); + } + }); + while (marker = dom.get(bookmark.id + '_' + suffix)) { + dom.remove(marker, 1); + } + if (prev && next && prev.nodeType === next.nodeType && $_9owqcy1qje5o2q0e.isText(prev) && !$_9bd8pn9je5o2pp2.opera) { + idx = prev.nodeValue.length; + prev.appendData(next.nodeValue); + dom.remove(next); + if (suffix === 'start') { + container = prev; + offset = idx; + } else { + container = prev; + offset = idx; + } + } + } + return Option.some(CaretPosition$1(container, offset)); + } else { + return Option.none(); + } + }; + var alt = function (o1, o2) { + return o1.isSome() ? o1 : o2; + }; + var resolvePaths = function (dom, bookmark) { + var rng = dom.createRng(); + if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) { + return Option.some(rng); + } else { + return Option.none(); + } + }; + var resolveId = function (dom, bookmark) { + var startPos = restoreEndPoint(dom, 'start', bookmark); + var endPos = restoreEndPoint(dom, 'end', bookmark); + return $_c8weyc2eje5o2q85.liftN([ + startPos, + alt(endPos, startPos) + ], function (spos, epos) { + var rng = dom.createRng(); + rng.setStart(addBogus(dom, spos.container()), spos.offset()); + rng.setEnd(addBogus(dom, epos.container()), epos.offset()); + return rng; + }); + }; + var resolveIndex$1 = function (dom, bookmark) { + return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) { + var rng = dom.createRng(); + rng.selectNode(elm); + return rng; + }); + }; + var resolve$3 = function (selection, bookmark) { + var dom = selection.dom; + if (bookmark) { + if ($_a5gegtjje5o2pum.isArray(bookmark.start)) { + return resolvePaths(dom, bookmark); + } else if (typeof bookmark.start === 'string') { + return Option.some(resolveCaretPositionBookmark(dom, bookmark)); + } else if (bookmark.id) { + return resolveId(dom, bookmark); + } else if (bookmark.name) { + return resolveIndex$1(dom, bookmark); + } else if (bookmark.rng) { + return Option.some(bookmark.rng); + } + } + return Option.none(); + }; + var $_eb5pra2mje5o2q9j = { resolve: resolve$3 }; + + var getBookmark$1 = function (selection, type, normalized) { + return $_9eyzd52kje5o2q8r.getBookmark(selection, type, normalized); + }; + var moveToBookmark = function (selection, bookmark) { + $_eb5pra2mje5o2q9j.resolve(selection, bookmark).each(function (rng) { + selection.setRng(rng); + }); + }; + var isBookmarkNode$1 = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark'; + }; + var $_83h91t2jje5o2q8n = { + getBookmark: getBookmark$1, + moveToBookmark: moveToBookmark, + isBookmarkNode: isBookmarkNode$1 + }; + + var each$8 = $_a5gegtjje5o2pum.each; + var ElementUtils = function (dom) { + this.compare = function (node1, node2) { + if (node1.nodeName !== node2.nodeName) { + return false; + } + var getAttribs = function (node) { + var attribs = {}; + each$8(dom.getAttribs(node), function (attr) { + var name = attr.nodeName.toLowerCase(); + if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) { + attribs[name] = dom.getAttrib(node, name); + } + }); + return attribs; + }; + var compareObjects = function (obj1, obj2) { + var value, name; + for (name in obj1) { + if (obj1.hasOwnProperty(name)) { + value = obj2[name]; + if (typeof value === 'undefined') { + return false; + } + if (obj1[name] !== value) { + return false; + } + delete obj2[name]; + } + } + for (name in obj2) { + if (obj2.hasOwnProperty(name)) { + return false; + } + } + return true; + }; + if (!compareObjects(getAttribs(node1), getAttribs(node2))) { + return false; + } + if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) { + return false; + } + return !$_83h91t2jje5o2q8n.isBookmarkNode(node1) && !$_83h91t2jje5o2q8n.isBookmarkNode(node2); + }; + }; + + var before$1 = function (marker, element) { + var parent = $_a6mttx17je5o2pyd.parent(marker); + parent.each(function (v) { + v.dom().insertBefore(element.dom(), marker.dom()); + }); + }; + var after$1 = function (marker, element) { + var sibling = $_a6mttx17je5o2pyd.nextSibling(marker); + sibling.fold(function () { + var parent = $_a6mttx17je5o2pyd.parent(marker); + parent.each(function (v) { + append(v, element); + }); + }, function (v) { + before$1(v, element); + }); + }; + var prepend = function (parent, element) { + var firstChild = $_a6mttx17je5o2pyd.firstChild(parent); + firstChild.fold(function () { + append(parent, element); + }, function (v) { + parent.dom().insertBefore(element.dom(), v.dom()); + }); + }; + var append = function (parent, element) { + parent.dom().appendChild(element.dom()); + }; + var appendAt = function (parent, element, index) { + $_a6mttx17je5o2pyd.child(parent, index).fold(function () { + append(parent, element); + }, function (v) { + before$1(v, element); + }); + }; + var wrap$1 = function (element, wrapper) { + before$1(element, wrapper); + append(wrapper, element); + }; + var $_elbl2s2oje5o2q9z = { + before: before$1, + after: after$1, + prepend: prepend, + append: append, + appendAt: appendAt, + wrap: wrap$1 + }; + + var before$2 = function (marker, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x) { + $_elbl2s2oje5o2q9z.before(marker, x); + }); + }; + var after$2 = function (marker, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x, i) { + var e = i === 0 ? marker : elements[i - 1]; + $_elbl2s2oje5o2q9z.after(e, x); + }); + }; + var prepend$1 = function (parent, elements) { + $_bwcteb4je5o2pl4.each(elements.slice().reverse(), function (x) { + $_elbl2s2oje5o2q9z.prepend(parent, x); + }); + }; + var append$1 = function (parent, elements) { + $_bwcteb4je5o2pl4.each(elements, function (x) { + $_elbl2s2oje5o2q9z.append(parent, x); + }); + }; + var $_93ro7k2qje5o2qa4 = { + before: before$2, + after: after$2, + prepend: prepend$1, + append: append$1 + }; + + var empty = function (element) { + element.dom().textContent = ''; + $_bwcteb4je5o2pl4.each($_a6mttx17je5o2pyd.children(element), function (rogue) { + remove$3(rogue); + }); + }; + var remove$3 = function (element) { + var dom = element.dom(); + if (dom.parentNode !== null) + dom.parentNode.removeChild(dom); + }; + var unwrap = function (wrapper) { + var children = $_a6mttx17je5o2pyd.children(wrapper); + if (children.length > 0) + $_93ro7k2qje5o2qa4.before(wrapper, children); + remove$3(wrapper); + }; + var $_cr1seh2pje5o2qa1 = { + empty: empty, + remove: remove$3, + unwrap: unwrap + }; + + function NodeValue (is, name) { + var get = function (element) { + if (!is(element)) + throw new Error('Can only get ' + name + ' value of a ' + name + ' node'); + return getOption(element).getOr(''); + }; + var getOptionIE10 = function (element) { + try { + return getOptionSafe(element); + } catch (e) { + return Option.none(); + } + }; + var getOptionSafe = function (element) { + return is(element) ? Option.from(element.dom().nodeValue) : Option.none(); + }; + var browser = $_2hq237mje5o2pvu.detect().browser; + var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe; + var set = function (element, value) { + if (!is(element)) + throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node'); + element.dom().nodeValue = value; + }; + return { + get: get, + getOption: getOption, + set: set + }; + } + + var api = NodeValue($_95wn8qzje5o2px0.isText, 'text'); + var get$2 = function (element) { + return api.get(element); + }; + var getOption = function (element) { + return api.getOption(element); + }; + var set$2 = function (element, value) { + api.set(element, value); + }; + var $_3600ts2rje5o2qa7 = { + get: get$2, + getOption: getOption, + set: set$2 + }; + + var getLastChildren = function (elm) { + var children = []; + var rawNode = elm.dom(); + while (rawNode) { + children.push($_5tcb2dyje5o2pwu.fromDom(rawNode)); + rawNode = rawNode.lastChild; + } + return children; + }; + var removeTrailingBr = function (elm) { + var allBrs = $_b4jhpu2gje5o2q8e.descendants(elm, 'br'); + var brs = $_bwcteb4je5o2pl4.filter(getLastChildren(elm).slice(-1), isBr); + if (allBrs.length === brs.length) { + $_bwcteb4je5o2pl4.each(brs, $_cr1seh2pje5o2qa1.remove); + } + }; + var fillWithPaddingBr = function (elm) { + $_cr1seh2pje5o2qa1.empty(elm); + $_elbl2s2oje5o2q9z.append(elm, $_5tcb2dyje5o2pwu.fromHtml('<br data-mce-bogus="1">')); + }; + var isPaddingContents = function (elm) { + return $_95wn8qzje5o2px0.isText(elm) ? $_3600ts2rje5o2qa7.get(elm) === '\xA0' : isBr(elm); + }; + var isPaddedElement = function (elm) { + return $_bwcteb4je5o2pl4.filter($_a6mttx17je5o2pyd.children(elm), isPaddingContents).length === 1; + }; + var trimBlockTrailingBr = function (elm) { + $_a6mttx17je5o2pyd.lastChild(elm).each(function (lastChild) { + $_a6mttx17je5o2pyd.prevSibling(lastChild).each(function (lastChildPrevSibling) { + if (isBlock(elm) && isBr(lastChild) && isBlock(lastChildPrevSibling)) { + $_cr1seh2pje5o2qa1.remove(lastChild); + } + }); + }); + }; + var $_4kbg8z2nje5o2q9s = { + removeTrailingBr: removeTrailingBr, + fillWithPaddingBr: fillWithPaddingBr, + isPaddedElement: isPaddedElement, + trimBlockTrailingBr: trimBlockTrailingBr + }; + + var makeMap$3 = $_a5gegtjje5o2pum.makeMap; + function Writer (settings) { + var html = []; + var indent, indentBefore, indentAfter, encode, htmlOutput; + settings = settings || {}; + indent = settings.indent; + indentBefore = makeMap$3(settings.indent_before || ''); + indentAfter = makeMap$3(settings.indent_after || ''); + encode = $_fzh4ld1rje5o2q0t.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities); + htmlOutput = settings.element_format === 'html'; + return { + start: function (name, attrs, empty) { + var i, l, attr, value; + if (indent && indentBefore[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + html.push('<', name); + if (attrs) { + for (i = 0, l = attrs.length; i < l; i++) { + attr = attrs[i]; + html.push(' ', attr.name, '="', encode(attr.value, true), '"'); + } + } + if (!empty || htmlOutput) { + html[html.length] = '>'; + } else { + html[html.length] = ' />'; + } + if (empty && indent && indentAfter[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + }, + end: function (name) { + var value; + html.push('</', name, '>'); + if (indent && indentAfter[name] && html.length > 0) { + value = html[html.length - 1]; + if (value.length > 0 && value !== '\n') { + html.push('\n'); + } + } + }, + text: function (text, raw) { + if (text.length > 0) { + html[html.length] = raw ? text : encode(text); + } + }, + cdata: function (text) { + html.push('<![CDATA[', text, ']]>'); + }, + comment: function (text) { + html.push('<!--', text, '-->'); + }, + pi: function (name, text) { + if (text) { + html.push('<?', name, ' ', encode(text), '?>'); + } else { + html.push('<?', name, '?>'); + } + if (indent) { + html.push('\n'); + } + }, + doctype: function (text) { + html.push('<!DOCTYPE', text, '>', indent ? '\n' : ''); + }, + reset: function () { + html.length = 0; + }, + getContent: function () { + return html.join('').replace(/\n$/, ''); + } + }; + } + + function HtmlSerializer (settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var writer = Writer(settings); + settings = settings || {}; + settings.validate = 'validate' in settings ? settings.validate : true; + var serialize = function (node) { + var handlers, validate; + validate = settings.validate; + handlers = { + 3: function (node) { + writer.text(node.value, node.raw); + }, + 8: function (node) { + writer.comment(node.value); + }, + 7: function (node) { + writer.pi(node.name, node.value); + }, + 10: function (node) { + writer.doctype(node.value); + }, + 4: function (node) { + writer.cdata(node.value); + }, + 11: function (node) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + } + }; + writer.reset(); + var walk = function (node) { + var handler = handlers[node.type]; + var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule; + if (!handler) { + name = node.name; + isEmpty = node.shortEnded; + attrs = node.attributes; + if (validate && attrs && attrs.length > 1) { + sortedAttrs = []; + sortedAttrs.map = {}; + elementRule = schema.getElementRule(node.name); + if (elementRule) { + for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) { + attrName = elementRule.attributesOrder[i]; + if (attrName in attrs.map) { + attrValue = attrs.map[attrName]; + sortedAttrs.map[attrName] = attrValue; + sortedAttrs.push({ + name: attrName, + value: attrValue + }); + } + } + for (i = 0, l = attrs.length; i < l; i++) { + attrName = attrs[i].name; + if (!(attrName in sortedAttrs.map)) { + attrValue = attrs.map[attrName]; + sortedAttrs.map[attrName] = attrValue; + sortedAttrs.push({ + name: attrName, + value: attrValue + }); + } + } + attrs = sortedAttrs; + } + } + writer.start(node.name, attrs, isEmpty); + if (!isEmpty) { + if (node = node.firstChild) { + do { + walk(node); + } while (node = node.next); + } + writer.end(name); + } + } else { + handler(node); + } + }; + if (node.type === 1 && !settings.inner) { + walk(node); + } else { + handlers[11](node); + } + return writer.getContent(); + }; + return { serialize: serialize }; + } + + var createRange$1 = function (sc, so, ec, eo) { + var rng = document.createRange(); + rng.setStart(sc, so); + rng.setEnd(ec, eo); + return rng; + }; + var normalizeBlockSelectionRange = function (rng) { + var startPos = CaretPosition$1.fromRangeStart(rng); + var endPos = CaretPosition$1.fromRangeEnd(rng); + var rootNode = rng.commonAncestorContainer; + return $_g2kzjo2bje5o2q7n.fromPosition(false, rootNode, endPos).map(function (newEndPos) { + if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) { + return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset()); + } else { + return rng; + } + }).getOr(rng); + }; + var normalizeBlockSelection = function (rng) { + return rng.collapsed ? rng : normalizeBlockSelectionRange(rng); + }; + var normalize = function (rng) { + return normalizeBlockSelection(rng); + }; + var $_8xjhg22vje5o2qak = { normalize: normalize }; + + var isTableCell$2 = $_9owqcy1qje5o2q0e.matchNodeNames('td th'); + var validInsertion = function (editor, value, parentNode) { + if (parentNode.getAttribute('data-mce-bogus') === 'all') { + parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode); + } else { + var node = parentNode.firstChild; + var node2 = parentNode.lastChild; + if (!node || node === node2 && node.nodeName === 'BR') { + editor.dom.setHTML(parentNode, value); + } else { + editor.selection.setContent(value); + } + } + }; + var trimBrsFromTableCell = function (dom, elm) { + Option.from(dom.getParent(elm, 'td,th')).map($_5tcb2dyje5o2pwu.fromDom).each($_4kbg8z2nje5o2q9s.trimBlockTrailingBr); + }; + var insertHtmlAtCaret = function (editor, value, details) { + var parser, serializer, parentNode, rootNode, fragment, args; + var marker, rng, node, node2, bookmarkHtml, merge; + var textInlineElements = editor.schema.getTextInlineElements(); + var selection = editor.selection, dom = editor.dom; + var trimOrPaddLeftRight = function (html) { + var rng, container, offset; + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + var hasSiblingText = function (siblingName) { + return container[siblingName] && container[siblingName].nodeType === 3; + }; + if (container.nodeType === 3) { + if (offset > 0) { + html = html.replace(/^ /, ' '); + } else if (!hasSiblingText('previousSibling')) { + html = html.replace(/^ /, ' '); + } + if (offset < container.length) { + html = html.replace(/ (<br>|)$/, ' '); + } else if (!hasSiblingText('nextSibling')) { + html = html.replace(/( | )(<br>|)$/, ' '); + } + } + return html; + }; + var trimNbspAfterDeleteAndPaddValue = function () { + var rng, container, offset; + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + if (container.nodeType === 3 && rng.collapsed) { + if (container.data[offset] === '\xA0') { + container.deleteData(offset, 1); + if (!/[\u00a0| ]$/.test(value)) { + value += ' '; + } + } else if (container.data[offset - 1] === '\xA0') { + container.deleteData(offset - 1, 1); + if (!/[\u00a0| ]$/.test(value)) { + value = ' ' + value; + } + } + } + }; + var reduceInlineTextElements = function () { + if (merge) { + var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom); + $_a5gegtjje5o2pum.each(dom.select('*[data-mce-fragment]'), function (node) { + for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) { + if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) { + dom.remove(node, true); + } + } + }); + } + }; + var markFragmentElements = function (fragment) { + var node = fragment; + while (node = node.walk()) { + if (node.type === 1) { + node.attr('data-mce-fragment', '1'); + } + } + }; + var umarkFragmentElements = function (elm) { + $_a5gegtjje5o2pum.each(elm.getElementsByTagName('*'), function (elm) { + elm.removeAttribute('data-mce-fragment'); + }); + }; + var isPartOfFragment = function (node) { + return !!node.getAttribute('data-mce-fragment'); + }; + var canHaveChildren = function (node) { + return node && !editor.schema.getShortEndedElements()[node.nodeName]; + }; + var moveSelectionToMarker = function (marker) { + var parentEditableFalseElm, parentBlock, nextRng; + var getContentEditableFalseParent = function (node) { + var root = editor.getBody(); + for (; node && node !== root; node = node.parentNode) { + if (editor.dom.getContentEditable(node) === 'false') { + return node; + } + } + return null; + }; + if (!marker) { + return; + } + selection.scrollIntoView(marker); + parentEditableFalseElm = getContentEditableFalseParent(marker); + if (parentEditableFalseElm) { + dom.remove(marker); + selection.select(parentEditableFalseElm); + return; + } + rng = dom.createRng(); + node = marker.previousSibling; + if (node && node.nodeType === 3) { + rng.setStart(node, node.nodeValue.length); + if (!$_9bd8pn9je5o2pp2.ie) { + node2 = marker.nextSibling; + if (node2 && node2.nodeType === 3) { + node.appendData(node2.data); + node2.parentNode.removeChild(node2); + } + } + } else { + rng.setStartBefore(marker); + rng.setEndBefore(marker); + } + var findNextCaretRng = function (rng) { + var caretPos = CaretPosition$1.fromRangeStart(rng); + var caretWalker = CaretWalker(editor.getBody()); + caretPos = caretWalker.next(caretPos); + if (caretPos) { + return caretPos.toRange(); + } + }; + parentBlock = dom.getParent(marker, dom.isBlock); + dom.remove(marker); + if (parentBlock && dom.isEmpty(parentBlock)) { + editor.$(parentBlock).empty(); + rng.setStart(parentBlock, 0); + rng.setEnd(parentBlock, 0); + if (!isTableCell$2(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) { + rng = nextRng; + dom.remove(parentBlock); + } else { + dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' })); + } + } + selection.setRng(rng); + }; + if (/^ | $/.test(value)) { + value = trimOrPaddLeftRight(value); + } + parser = editor.parser; + merge = details.merge; + serializer = HtmlSerializer({ validate: editor.settings.validate }, editor.schema); + bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">​</span>'; + args = { + content: value, + format: 'html', + selection: true, + paste: details.paste + }; + args = editor.fire('BeforeSetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('SetContent', { + content: args.content, + format: 'html', + selection: true, + paste: details.paste + }); + return; + } + value = args.content; + if (value.indexOf('{$caret}') === -1) { + value += '{$caret}'; + } + value = value.replace(/\{\$caret\}/, bookmarkHtml); + rng = selection.getRng(); + var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null); + var body = editor.getBody(); + if (caretElement === body && selection.isCollapsed()) { + if (dom.isBlock(body.firstChild) && canHaveChildren(body.firstChild) && dom.isEmpty(body.firstChild)) { + rng = dom.createRng(); + rng.setStart(body.firstChild, 0); + rng.setEnd(body.firstChild, 0); + selection.setRng(rng); + } + } + if (!selection.isCollapsed()) { + editor.selection.setRng($_8xjhg22vje5o2qak.normalize(editor.selection.getRng())); + editor.getDoc().execCommand('Delete', false, null); + trimNbspAfterDeleteAndPaddValue(); + } + parentNode = selection.getNode(); + var parserArgs = { + context: parentNode.nodeName.toLowerCase(), + data: details.data, + insert: true + }; + fragment = parser.parse(value, parserArgs); + if (details.paste === true && $_3j1y5o1xje5o2q4o.isListFragment(editor.schema, fragment) && $_3j1y5o1xje5o2q4o.isParentBlockLi(dom, parentNode)) { + rng = $_3j1y5o1xje5o2q4o.insertAtCaret(serializer, dom, editor.selection.getRng(true), fragment); + editor.selection.setRng(rng); + editor.fire('SetContent', args); + return; + } + markFragmentElements(fragment); + node = fragment.lastChild; + if (node.attr('id') === 'mce_marker') { + marker = node; + for (node = node.prev; node; node = node.walk(true)) { + if (node.type === 3 || !dom.isBlock(node.name)) { + if (editor.schema.isValidChild(node.parent.name, 'span')) { + node.parent.insert(marker, node, node.name === 'br'); + } + break; + } + } + } + editor._selectionOverrides.showBlockCaretContainer(parentNode); + if (!parserArgs.invalid) { + value = serializer.serialize(fragment); + validInsertion(editor, value, parentNode); + } else { + selection.setContent(bookmarkHtml); + parentNode = selection.getNode(); + rootNode = editor.getBody(); + if (parentNode.nodeType === 9) { + parentNode = node = rootNode; + } else { + node = parentNode; + } + while (node !== rootNode) { + parentNode = node; + node = node.parentNode; + } + value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode); + value = serializer.serialize(parser.parse(value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function () { + return serializer.serialize(fragment); + }))); + if (parentNode === rootNode) { + dom.setHTML(rootNode, value); + } else { + dom.setOuterHTML(parentNode, value); + } + } + reduceInlineTextElements(); + moveSelectionToMarker(dom.get('mce_marker')); + umarkFragmentElements(editor.getBody()); + trimBrsFromTableCell(editor.dom, editor.selection.getStart()); + editor.fire('SetContent', args); + editor.addVisual(); + }; + var processValue = function (value) { + var details; + if (typeof value !== 'string') { + details = $_a5gegtjje5o2pum.extend({ + paste: value.paste, + data: { paste: value.paste } + }, value); + return { + content: value.content, + details: details + }; + } + return { + content: value, + details: {} + }; + }; + var insertAtCaret$1 = function (editor, value) { + var result = processValue(value); + insertHtmlAtCaret(editor, result.content, result.details); + }; + var $_d42uuu1wje5o2q4b = { insertAtCaret: insertAtCaret$1 }; + + function ClosestOrAncestor (is, ancestor, scope, a, isRoot) { + return is(scope, a) ? Option.some(scope) : $_be3q8w12je5o2pxj.isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot); + } + + var first$1 = function (predicate) { + return descendant($_484buq15je5o2py8.body(), predicate); + }; + var ancestor = function (scope, predicate, isRoot) { + var element = scope.dom(); + var stop = $_be3q8w12je5o2pxj.isFunction(isRoot) ? isRoot : $_enfhkv6je5o2ply.constant(false); + while (element.parentNode) { + element = element.parentNode; + var el = $_5tcb2dyje5o2pwu.fromDom(element); + if (predicate(el)) + return Option.some(el); + else if (stop(el)) + break; + } + return Option.none(); + }; + var closest = function (scope, predicate, isRoot) { + var is = function (scope) { + return predicate(scope); + }; + return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot); + }; + var sibling$1 = function (scope, predicate) { + var element = scope.dom(); + if (!element.parentNode) + return Option.none(); + return child$1($_5tcb2dyje5o2pwu.fromDom(element.parentNode), function (x) { + return !$_7oppmo1dje5o2pz1.eq(scope, x) && predicate(x); + }); + }; + var child$1 = function (scope, predicate) { + var result = $_bwcteb4je5o2pl4.find(scope.dom().childNodes, $_enfhkv6je5o2ply.compose(predicate, $_5tcb2dyje5o2pwu.fromDom)); + return result.map($_5tcb2dyje5o2pwu.fromDom); + }; + var descendant = function (scope, predicate) { + var descend = function (element) { + for (var i = 0; i < element.childNodes.length; i++) { + if (predicate($_5tcb2dyje5o2pwu.fromDom(element.childNodes[i]))) + return Option.some($_5tcb2dyje5o2pwu.fromDom(element.childNodes[i])); + var res = descend(element.childNodes[i]); + if (res.isSome()) + return res; + } + return Option.none(); + }; + return descend(scope.dom()); + }; + var $_au2qfe30je5o2qb4 = { + first: first$1, + ancestor: ancestor, + closest: closest, + sibling: sibling$1, + child: child$1, + descendant: descendant + }; + + var sectionResult = $_86drv18je5o2pyn.immutable('sections', 'settings'); + var detection = $_2hq237mje5o2pvu.detect(); + var isTouch = detection.deviceType.isTouch(); + var mobilePlugins = [ + 'lists', + 'autolink', + 'autosave' + ]; + var defaultMobileSettings = { theme: 'mobile' }; + var normalizePlugins = function (plugins) { + var pluginNames = $_be3q8w12je5o2pxj.isArray(plugins) ? plugins.join(' ') : plugins; + var trimmedPlugins = $_bwcteb4je5o2pl4.map($_be3q8w12je5o2pxj.isString(pluginNames) ? pluginNames.split(' ') : [], $_6dh61xvje5o2pwo.trim); + return $_bwcteb4je5o2pl4.filter(trimmedPlugins, function (item) { + return item.length > 0; + }); + }; + var filterMobilePlugins = function (plugins) { + return $_bwcteb4je5o2pl4.filter(plugins, $_enfhkv6je5o2ply.curry($_bwcteb4je5o2pl4.contains, mobilePlugins)); + }; + var extractSections = function (keys, settings) { + var result = $_8v44sy13je5o2pxm.bifilter(settings, function (value, key) { + return $_bwcteb4je5o2pl4.contains(keys, key); + }); + return sectionResult(result.t, result.f); + }; + var getSection = function (sectionResult, name, defaults) { + var sections = sectionResult.sections(); + var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {}; + return $_a5gegtjje5o2pum.extend({}, defaults, sectionSettings); + }; + var hasSection = function (sectionResult, name) { + return sectionResult.sections().hasOwnProperty(name); + }; + var getDefaultSettings = function (id, documentBaseUrl, editor) { + return { + id: id, + theme: 'modern', + delta_width: 0, + delta_height: 0, + popup_css: '', + plugins: '', + document_base_url: documentBaseUrl, + add_form_submit_trigger: true, + submit_patch: true, + add_unload_trigger: true, + convert_urls: true, + relative_urls: true, + remove_script_host: true, + object_resizing: true, + doctype: '<!DOCTYPE html>', + visual: true, + font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large', + font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%', + forced_root_block: 'p', + hidden_input: true, + padd_empty_editor: true, + render_ui: true, + indentation: '30px', + inline_styles: true, + convert_fonts_to_spans: true, + indent: 'simple', + indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', + indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,article,hgroup,aside,figure,figcaption,option,optgroup,datalist', + entity_encoding: 'named', + url_converter: editor.convertURL, + url_converter_scope: editor, + ie7_compat: true + }; + }; + var getExternalPlugins = function (overrideSettings, settings) { + var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {}; + if (overrideSettings && overrideSettings.external_plugins) { + return $_a5gegtjje5o2pum.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins); + } else { + return userDefinedExternalPlugins; + } + }; + var combinePlugins = function (forcedPlugins, plugins) { + return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins)); + }; + var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) { + var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins); + var plugins = normalizePlugins(settings.plugins); + var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins; + var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins); + return $_a5gegtjje5o2pum.extend(settings, { plugins: combinedPlugins.join(' ') }); + }; + var isOnMobile = function (isTouchDevice, sectionResult) { + var isInline = sectionResult.settings().inline; + return isTouchDevice && hasSection(sectionResult, 'mobile') && !isInline; + }; + var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) { + var sectionResult = extractSections(['mobile'], settings); + var extendedSettings = $_a5gegtjje5o2pum.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, { + validate: true, + content_editable: sectionResult.settings().inline, + external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings()) + }); + return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings); + }; + var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) { + var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor); + return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings); + }; + var getFiltered = function (predicate, editor, name) { + return Option.from(editor.settings[name]).filter(predicate); + }; + var getString = $_enfhkv6je5o2ply.curry(getFiltered, $_be3q8w12je5o2pxj.isString); + var getParamObject = function (value) { + var output = {}; + if (typeof value === 'string') { + $_bwcteb4je5o2pl4.each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (value) { + value = value.split('='); + if (value.length > 1) { + output[$_a5gegtjje5o2pum.trim(value[0])] = $_a5gegtjje5o2pum.trim(value[1]); + } else { + output[$_a5gegtjje5o2pum.trim(value[0])] = $_a5gegtjje5o2pum.trim(value); + } + }); + } else { + output = value; + } + return output; + }; + var getParam = function (editor, name, defaultVal, type) { + var value = name in editor.settings ? editor.settings[name] : defaultVal; + if (type === 'hash') { + return getParamObject(value); + } else if (type === 'string') { + return getFiltered($_be3q8w12je5o2pxj.isString, editor, name).getOr(defaultVal); + } else if (type === 'number') { + return getFiltered($_be3q8w12je5o2pxj.isNumber, editor, name).getOr(defaultVal); + } else if (type === 'boolean') { + return getFiltered($_be3q8w12je5o2pxj.isBoolean, editor, name).getOr(defaultVal); + } else if (type === 'object') { + return getFiltered($_be3q8w12je5o2pxj.isObject, editor, name).getOr(defaultVal); + } else if (type === 'array') { + return getFiltered($_be3q8w12je5o2pxj.isArray, editor, name).getOr(defaultVal); + } else if (type === 'function') { + return getFiltered($_be3q8w12je5o2pxj.isFunction, editor, name).getOr(defaultVal); + } else { + return value; + } + }; + + var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/; + var hasStrongRtl = function (text) { + return strongRtl.test(text); + }; + + var isInlineTarget = function (editor, elm) { + var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code'); + return $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(elm), selector); + }; + var isRtl = function (element) { + return DOMUtils.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent); + }; + var findInlineParents = function (isInlineTarget, rootNode, pos) { + return $_bwcteb4je5o2pl4.filter(DOMUtils.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget); + }; + var findRootInline = function (isInlineTarget, rootNode, pos) { + var parents = findInlineParents(isInlineTarget, rootNode, pos); + return Option.from(parents[parents.length - 1]); + }; + var hasSameParentBlock = function (rootNode, node1, node2) { + var block1 = getParentBlock(node1, rootNode); + var block2 = getParentBlock(node2, rootNode); + return block1 && block1 === block2; + }; + var isAtZwsp = function (pos) { + return isBeforeInline(pos) || isAfterInline(pos); + }; + var normalizePosition = function (forward, pos) { + var container = pos.container(), offset = pos.offset(); + if (forward) { + if (isCaretContainerInline(container)) { + if ($_9owqcy1qje5o2q0e.isText(container.nextSibling)) { + return CaretPosition$1(container.nextSibling, 0); + } else { + return CaretPosition$1.after(container); + } + } else { + return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos; + } + } else { + if (isCaretContainerInline(container)) { + if ($_9owqcy1qje5o2q0e.isText(container.previousSibling)) { + return CaretPosition$1(container.previousSibling, container.previousSibling.data.length); + } else { + return CaretPosition$1.before(container); + } + } else { + return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos; + } + } + }; + var normalizeForwards = $_enfhkv6je5o2ply.curry(normalizePosition, true); + var normalizeBackwards = $_enfhkv6je5o2ply.curry(normalizePosition, false); + var $_6skw9732je5o2qbp = { + isInlineTarget: isInlineTarget, + findRootInline: findRootInline, + isRtl: isRtl, + isAtZwsp: isAtZwsp, + normalizePosition: normalizePosition, + normalizeForwards: normalizeForwards, + normalizeBackwards: normalizeBackwards, + hasSameParentBlock: hasSameParentBlock + }; + + var isBeforeRoot = function (rootNode) { + return function (elm) { + return $_7oppmo1dje5o2pz1.eq(rootNode, $_5tcb2dyje5o2pwu.fromDom(elm.dom().parentNode)); + }; + }; + var getParentBlock$1 = function (rootNode, elm) { + return $_7oppmo1dje5o2pz1.contains(rootNode, elm) ? $_au2qfe30je5o2qb4.closest(elm, function (element) { + return isTextBlock(element) || isListItem(element); + }, isBeforeRoot(rootNode)) : Option.none(); + }; + var placeCaretInEmptyBody = function (editor) { + var body = editor.getBody(); + var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body; + editor.selection.setCursorLocation(node, 0); + }; + var paddEmptyBody = function (editor) { + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + placeCaretInEmptyBody(editor); + } + }; + var willDeleteLastPositionInElement = function (forward, fromPos, elm) { + return $_c8weyc2eje5o2q85.liftN([ + $_g2kzjo2bje5o2q7n.firstPositionIn(elm), + $_g2kzjo2bje5o2q7n.lastPositionIn(elm) + ], function (firstPos, lastPos) { + var normalizedFirstPos = $_6skw9732je5o2qbp.normalizePosition(true, firstPos); + var normalizedLastPos = $_6skw9732je5o2qbp.normalizePosition(false, lastPos); + var normalizedFromPos = $_6skw9732je5o2qbp.normalizePosition(false, fromPos); + if (forward) { + return $_g2kzjo2bje5o2q7n.nextPosition(elm, normalizedFromPos).map(function (nextPos) { + return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos); + }).getOr(false); + } else { + return $_g2kzjo2bje5o2q7n.prevPosition(elm, normalizedFromPos).map(function (prevPos) { + return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos); + }).getOr(false); + } + }).getOr(true); + }; + var $_7twey62zje5o2qay = { + getParentBlock: getParentBlock$1, + paddEmptyBody: paddEmptyBody, + willDeleteLastPositionInElement: willDeleteLastPositionInElement + }; + + var first$2 = function (selector) { + return $_87zu5k1fje5o2pz9.one(selector); + }; + var ancestor$1 = function (scope, selector, isRoot) { + return $_au2qfe30je5o2qb4.ancestor(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }, isRoot); + }; + var sibling$2 = function (scope, selector) { + return $_au2qfe30je5o2qb4.sibling(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var child$2 = function (scope, selector) { + return $_au2qfe30je5o2qb4.child(scope, function (e) { + return $_87zu5k1fje5o2pz9.is(e, selector); + }); + }; + var descendant$1 = function (scope, selector) { + return $_87zu5k1fje5o2pz9.one(selector, scope); + }; + var closest$1 = function (scope, selector, isRoot) { + return ClosestOrAncestor($_87zu5k1fje5o2pz9.is, ancestor$1, scope, selector, isRoot); + }; + var $_9fzewc37je5o2qck = { + first: first$2, + ancestor: ancestor$1, + sibling: sibling$2, + child: child$2, + descendant: descendant$1, + closest: closest$1 + }; + + var any = function (selector) { + return $_9fzewc37je5o2qck.first(selector).isSome(); + }; + var ancestor$2 = function (scope, selector, isRoot) { + return $_9fzewc37je5o2qck.ancestor(scope, selector, isRoot).isSome(); + }; + var sibling$3 = function (scope, selector) { + return $_9fzewc37je5o2qck.sibling(scope, selector).isSome(); + }; + var child$3 = function (scope, selector) { + return $_9fzewc37je5o2qck.child(scope, selector).isSome(); + }; + var descendant$2 = function (scope, selector) { + return $_9fzewc37je5o2qck.descendant(scope, selector).isSome(); + }; + var closest$2 = function (scope, selector, isRoot) { + return $_9fzewc37je5o2qck.closest(scope, selector, isRoot).isSome(); + }; + var $_9o2t0k36je5o2qci = { + any: any, + ancestor: ancestor$2, + sibling: sibling$3, + child: child$3, + descendant: descendant$2, + closest: closest$2 + }; + + var hasWhitespacePreserveParent = function (rootNode, node) { + var rootElement = $_5tcb2dyje5o2pwu.fromDom(rootNode); + var startNode = $_5tcb2dyje5o2pwu.fromDom(node); + return $_9o2t0k36je5o2qci.ancestor(startNode, 'pre,code', $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, rootElement)); + }; + var isWhitespace = function (rootNode, node) { + return $_9owqcy1qje5o2q0e.isText(node) && /^[ \t\r\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false; + }; + var isNamedAnchor = function (node) { + return $_9owqcy1qje5o2q0e.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name'); + }; + var isContent = function (rootNode, node) { + return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node); + }; + var isBookmark = $_9owqcy1qje5o2q0e.hasAttribute('data-mce-bookmark'); + var isBogus$2 = $_9owqcy1qje5o2q0e.hasAttribute('data-mce-bogus'); + var isBogusAll$1 = $_9owqcy1qje5o2q0e.hasAttributeValue('data-mce-bogus', 'all'); + var isEmptyNode = function (targetNode) { + var walker, node, brCount = 0; + if (isContent(targetNode, targetNode)) { + return false; + } else { + node = targetNode.firstChild; + if (!node) { + return true; + } + walker = new TreeWalker(node, targetNode); + do { + if (isBogusAll$1(node)) { + node = walker.next(true); + continue; + } + if (isBogus$2(node)) { + node = walker.next(); + continue; + } + if ($_9owqcy1qje5o2q0e.isBr(node)) { + brCount++; + node = walker.next(); + continue; + } + if (isContent(targetNode, node)) { + return false; + } + node = walker.next(); + } while (node); + return brCount <= 1; + } + }; + var isEmpty = function (elm) { + return isEmptyNode(elm.dom()); + }; + var $_dizx5c35je5o2qcb = { isEmpty: isEmpty }; + + var BlockPosition = $_86drv18je5o2pyn.immutable('block', 'position'); + var BlockBoundary = $_86drv18je5o2pyn.immutable('from', 'to'); + var getBlockPosition = function (rootNode, pos) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(rootNode); + var containerElm = $_5tcb2dyje5o2pwu.fromDom(pos.container()); + return $_7twey62zje5o2qay.getParentBlock(rootElm, containerElm).map(function (block) { + return BlockPosition(block, pos); + }); + }; + var isDifferentBlocks = function (blockBoundary) { + return $_7oppmo1dje5o2pz1.eq(blockBoundary.from().block(), blockBoundary.to().block()) === false; + }; + var hasSameParent = function (blockBoundary) { + return $_a6mttx17je5o2pyd.parent(blockBoundary.from().block()).bind(function (parent1) { + return $_a6mttx17je5o2pyd.parent(blockBoundary.to().block()).filter(function (parent2) { + return $_7oppmo1dje5o2pz1.eq(parent1, parent2); + }); + }).isSome(); + }; + var isEditable = function (blockBoundary) { + return $_9owqcy1qje5o2q0e.isContentEditableFalse(blockBoundary.from().block()) === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(blockBoundary.to().block()) === false; + }; + var skipLastBr = function (rootNode, forward, blockPosition) { + if ($_9owqcy1qje5o2q0e.isBr(blockPosition.position().getNode()) && $_dizx5c35je5o2qcb.isEmpty(blockPosition.block()) === false) { + return $_g2kzjo2bje5o2q7n.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) { + if (lastPositionInBlock.isEqual(blockPosition.position())) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) { + return getBlockPosition(rootNode, to); + }); + } else { + return Option.some(blockPosition); + } + }).getOr(blockPosition); + } else { + return blockPosition; + } + }; + var readFromRange = function (rootNode, forward, rng) { + var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng)); + var toBlockPos = fromBlockPos.bind(function (blockPos) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) { + return getBlockPosition(rootNode, to).map(function (blockPos) { + return skipLastBr(rootNode, forward, blockPos); + }); + }); + }); + return $_c8weyc2eje5o2q85.liftN([ + fromBlockPos, + toBlockPos + ], BlockBoundary).filter(function (blockBoundary) { + return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary); + }); + }; + var read = function (rootNode, forward, rng) { + return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none(); + }; + var $_8rdvj02yje5o2qar = { read: read }; + + var dropLast = function (xs) { + return xs.slice(0, -1); + }; + var parentsUntil$1 = function (startNode, rootElm, predicate) { + if ($_7oppmo1dje5o2pz1.contains(rootElm, startNode)) { + return dropLast($_a6mttx17je5o2pyd.parents(startNode, function (elm) { + return predicate(elm) || $_7oppmo1dje5o2pz1.eq(elm, rootElm); + })); + } else { + return []; + } + }; + var parents$1 = function (startNode, rootElm) { + return parentsUntil$1(startNode, rootElm, $_enfhkv6je5o2ply.constant(false)); + }; + var parentsAndSelf = function (startNode, rootElm) { + return [startNode].concat(parents$1(startNode, rootElm)); + }; + var $_yqcmh39je5o2qcw = { + parentsUntil: parentsUntil$1, + parents: parents$1, + parentsAndSelf: parentsAndSelf + }; + + var getChildrenUntilBlockBoundary = function (block) { + var children = $_a6mttx17je5o2pyd.children(block); + return $_bwcteb4je5o2pl4.findIndex(children, isBlock).fold(function () { + return children; + }, function (index) { + return children.slice(0, index); + }); + }; + var extractChildren = function (block) { + var children = getChildrenUntilBlockBoundary(block); + $_bwcteb4je5o2pl4.each(children, function (node) { + $_cr1seh2pje5o2qa1.remove(node); + }); + return children; + }; + var trimBr = function (first, block) { + $_g2kzjo2bje5o2q7n.positionIn(first, block.dom()).each(function (position) { + var node = position.getNode(); + if ($_9owqcy1qje5o2q0e.isBr(node)) { + $_cr1seh2pje5o2qa1.remove($_5tcb2dyje5o2pwu.fromDom(node)); + } + }); + }; + var removeEmptyRoot = function (rootNode, block) { + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(block, rootNode); + return $_bwcteb4je5o2pl4.find(parents.reverse(), $_dizx5c35je5o2qcb.isEmpty).each($_cr1seh2pje5o2qa1.remove); + }; + var findParentInsertPoint = function (toBlock, block) { + var parents = $_a6mttx17je5o2pyd.parents(block, function (elm) { + return $_7oppmo1dje5o2pz1.eq(elm, toBlock); + }); + return Option.from(parents[parents.length - 2]); + }; + var getInsertionPoint = function (fromBlock, toBlock) { + if ($_7oppmo1dje5o2pz1.contains(toBlock, fromBlock)) { + return $_a6mttx17je5o2pyd.parent(fromBlock).bind(function (parent) { + return $_7oppmo1dje5o2pz1.eq(parent, toBlock) ? Option.some(fromBlock) : findParentInsertPoint(toBlock, fromBlock); + }); + } else { + return Option.none(); + } + }; + var mergeBlockInto = function (rootNode, fromBlock, toBlock) { + if ($_dizx5c35je5o2qcb.isEmpty(toBlock)) { + $_cr1seh2pje5o2qa1.remove(toBlock); + if ($_dizx5c35je5o2qcb.isEmpty(fromBlock)) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr(fromBlock); + } + return $_g2kzjo2bje5o2q7n.firstPositionIn(fromBlock.dom()); + } else { + trimBr(true, fromBlock); + trimBr(false, toBlock); + var children_1 = extractChildren(fromBlock); + return getInsertionPoint(fromBlock, toBlock).fold(function () { + removeEmptyRoot(rootNode, fromBlock); + var position = $_g2kzjo2bje5o2q7n.lastPositionIn(toBlock.dom()); + $_bwcteb4je5o2pl4.each(children_1, function (node) { + $_elbl2s2oje5o2q9z.append(toBlock, node); + }); + return position; + }, function (target) { + var position = $_g2kzjo2bje5o2q7n.prevPosition(toBlock.dom(), CaretPosition$1.before(target.dom())); + $_bwcteb4je5o2pl4.each(children_1, function (node) { + $_elbl2s2oje5o2q9z.before(target, node); + }); + removeEmptyRoot(rootNode, fromBlock); + return position; + }); + } + }; + var mergeBlocks = function (rootNode, forward, block1, block2) { + return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2); + }; + var $_46j1ps38je5o2qcn = { mergeBlocks: mergeBlocks }; + + var backspaceDelete = function (editor, forward) { + var position; + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + position = $_8rdvj02yje5o2qar.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) { + return $_46j1ps38je5o2qcn.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block()); + }); + position.each(function (pos) { + editor.selection.setRng(pos.toRange()); + }); + return position.isSome(); + }; + var $_3qfe0j2xje5o2qao = { backspaceDelete: backspaceDelete }; + + var deleteRangeMergeBlocks = function (rootNode, selection) { + var rng = selection.getRng(); + return $_c8weyc2eje5o2q85.liftN([ + $_7twey62zje5o2qay.getParentBlock(rootNode, $_5tcb2dyje5o2pwu.fromDom(rng.startContainer)), + $_7twey62zje5o2qay.getParentBlock(rootNode, $_5tcb2dyje5o2pwu.fromDom(rng.endContainer)) + ], function (block1, block2) { + if ($_7oppmo1dje5o2pz1.eq(block1, block2) === false) { + rng.deleteContents(); + $_46j1ps38je5o2qcn.mergeBlocks(rootNode, true, block1, block2).each(function (pos) { + selection.setRng(pos.toRange()); + }); + return true; + } else { + return false; + } + }).getOr(false); + }; + var isRawNodeInTable = function (root, rawNode) { + var node = $_5tcb2dyje5o2pwu.fromDom(rawNode); + var isRoot = $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, root); + return $_au2qfe30je5o2qb4.ancestor(node, isTableCell, isRoot).isSome(); + }; + var isSelectionInTable = function (root, rng) { + return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer); + }; + var isEverythingSelected = function (root, rng) { + var noPrevious = $_g2kzjo2bje5o2q7n.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone(); + var noNext = $_g2kzjo2bje5o2q7n.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone(); + return !isSelectionInTable(root, rng) && noPrevious && noNext; + }; + var emptyEditor = function (editor) { + editor.setContent(''); + editor.selection.setCursorLocation(); + return true; + }; + var deleteRange = function (editor) { + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var rng = editor.selection.getRng(); + return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection); + }; + var backspaceDelete$1 = function (editor, forward) { + return editor.selection.isCollapsed() ? false : deleteRange(editor); + }; + var $_a476lo3aje5o2qd0 = { backspaceDelete: backspaceDelete$1 }; + + var generate = function (cases) { + if (!$_be3q8w12je5o2pxj.isArray(cases)) { + throw new Error('cases must be an array'); + } + if (cases.length === 0) { + throw new Error('there must be at least one case'); + } + var constructors = []; + var adt = {}; + $_bwcteb4je5o2pl4.each(cases, function (acase, count) { + var keys = $_8v44sy13je5o2pxm.keys(acase); + if (keys.length !== 1) { + throw new Error('one and only one name per case'); + } + var key = keys[0]; + var value = acase[key]; + if (adt[key] !== undefined) { + throw new Error('duplicate key detected:' + key); + } else if (key === 'cata') { + throw new Error('cannot have a case named cata (sorry)'); + } else if (!$_be3q8w12je5o2pxj.isArray(value)) { + throw new Error('case arguments must be an array'); + } + constructors.push(key); + adt[key] = function () { + var argLength = arguments.length; + if (argLength !== value.length) { + throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength); + } + var args = new Array(argLength); + for (var i = 0; i < args.length; i++) + args[i] = arguments[i]; + var match = function (branches) { + var branchKeys = $_8v44sy13je5o2pxm.keys(branches); + if (constructors.length !== branchKeys.length) { + throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(',')); + } + var allReqd = $_bwcteb4je5o2pl4.forall(constructors, function (reqKey) { + return $_bwcteb4je5o2pl4.contains(branchKeys, reqKey); + }); + if (!allReqd) + throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', ')); + return branches[key].apply(null, args); + }; + return { + fold: function () { + if (arguments.length !== cases.length) { + throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length); + } + var target = arguments[count]; + return target.apply(null, args); + }, + match: match, + log: function (label) { + console.log(label, { + constructors: constructors, + constructor: key, + params: args + }); + } + }; + }; + }); + return adt; + }; + var $_e73lvt3dje5o2qdq = { generate: generate }; + + var isCompoundElement = function (node) { + return isTableCell($_5tcb2dyje5o2pwu.fromDom(node)) || isListItem($_5tcb2dyje5o2pwu.fromDom(node)); + }; + var DeleteAction = $_e73lvt3dje5o2qdq.generate([ + { remove: ['element'] }, + { moveToElement: ['element'] }, + { moveToPosition: ['position'] } + ]); + var isAtContentEditableBlockCaret = function (forward, from) { + var elm = from.getNode(forward === false); + var caretLocation = forward ? 'after' : 'before'; + return $_9owqcy1qje5o2q0e.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation; + }; + var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) { + var inSameBlock = function (elm) { + return isInline($_5tcb2dyje5o2pwu.fromDom(elm)) && !isInSameBlock(from, to, root); + }; + return getRelativeCefElm(!forward, from).fold(function () { + return getRelativeCefElm(forward, to).fold($_enfhkv6je5o2ply.constant(false), inSameBlock); + }, inSameBlock); + }; + var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) { + var toCefElm = to.getNode(forward === false); + return $_7twey62zje5o2qay.getParentBlock($_5tcb2dyje5o2pwu.fromDom(root), $_5tcb2dyje5o2pwu.fromDom(from.getNode())).map(function (blockElm) { + return $_dizx5c35je5o2qcb.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm); + }).orThunk(function () { + return Option.some(DeleteAction.moveToElement(toCefElm)); + }); + }; + var findCefPosition = function (root, forward, from) { + return $_g2kzjo2bje5o2q7n.fromPosition(forward, root, from).bind(function (to) { + if (isCompoundElement(to.getNode())) { + return Option.none(); + } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) { + return Option.none(); + } else if (forward && $_9owqcy1qje5o2q0e.isContentEditableFalse(to.getNode())) { + return deleteEmptyBlockOrMoveToCef(root, forward, from, to); + } else if (forward === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(to.getNode(true))) { + return deleteEmptyBlockOrMoveToCef(root, forward, from, to); + } else if (forward && isAfterContentEditableFalse(from)) { + return Option.some(DeleteAction.moveToPosition(to)); + } else if (forward === false && isBeforeContentEditableFalse(from)) { + return Option.some(DeleteAction.moveToPosition(to)); + } else { + return Option.none(); + } + }); + }; + var getContentEditableBlockAction = function (forward, elm) { + if (forward && $_9owqcy1qje5o2q0e.isContentEditableFalse(elm.nextSibling)) { + return Option.some(DeleteAction.moveToElement(elm.nextSibling)); + } else if (forward === false && $_9owqcy1qje5o2q0e.isContentEditableFalse(elm.previousSibling)) { + return Option.some(DeleteAction.moveToElement(elm.previousSibling)); + } else { + return Option.none(); + } + }; + var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) { + return deleteAction.fold(function (elm) { + return Option.some(DeleteAction.remove(elm)); + }, function (elm) { + return Option.some(DeleteAction.moveToElement(elm)); + }, function (to) { + if (isInSameBlock(from, to, root)) { + return Option.none(); + } else { + return Option.some(DeleteAction.moveToPosition(to)); + } + }); + }; + var getContentEditableAction = function (root, forward, from) { + if (isAtContentEditableBlockCaret(forward, from)) { + return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () { + return findCefPosition(root, forward, from); + }, Option.some); + } else { + return findCefPosition(root, forward, from).bind(function (deleteAction) { + return skipMoveToActionFromInlineCefToContent(root, from, deleteAction); + }); + } + }; + var read$1 = function (root, forward, rng) { + var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng); + var from = CaretPosition$1.fromRangeStart(normalizedRange); + if (forward === false && isAfterContentEditableFalse(from)) { + return Option.some(DeleteAction.remove(from.getNode(true))); + } else if (forward && isBeforeContentEditableFalse(from)) { + return Option.some(DeleteAction.remove(from.getNode())); + } else { + return getContentEditableAction(root, forward, from); + } + }; + + var needsReposition = function (pos, elm) { + var container = pos.container(); + var offset = pos.offset(); + return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset(); + }; + var reposition = function (elm, pos) { + return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos; + }; + var beforeOrStartOf = function (node) { + return $_9owqcy1qje5o2q0e.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node); + }; + var afterOrEndOf = function (node) { + return $_9owqcy1qje5o2q0e.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node); + }; + var getPreviousSiblingCaretPosition = function (elm) { + if (isCaretCandidate(elm.previousSibling)) { + return Option.some(afterOrEndOf(elm.previousSibling)); + } else { + return elm.previousSibling ? $_g2kzjo2bje5o2q7n.lastPositionIn(elm.previousSibling) : Option.none(); + } + }; + var getNextSiblingCaretPosition = function (elm) { + if (isCaretCandidate(elm.nextSibling)) { + return Option.some(beforeOrStartOf(elm.nextSibling)); + } else { + return elm.nextSibling ? $_g2kzjo2bje5o2q7n.firstPositionIn(elm.nextSibling) : Option.none(); + } + }; + var findCaretPositionBackwardsFromElm = function (rootElement, elm) { + var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode); + return $_g2kzjo2bje5o2q7n.prevPosition(rootElement, startPosition).fold(function () { + return $_g2kzjo2bje5o2q7n.nextPosition(rootElement, CaretPosition$1.after(elm)); + }, Option.some); + }; + var findCaretPositionForwardsFromElm = function (rootElement, elm) { + return $_g2kzjo2bje5o2q7n.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () { + return $_g2kzjo2bje5o2q7n.prevPosition(rootElement, CaretPosition$1.before(elm)); + }, Option.some); + }; + var findCaretPositionBackwards = function (rootElement, elm) { + return getPreviousSiblingCaretPosition(elm).orThunk(function () { + return getNextSiblingCaretPosition(elm); + }).orThunk(function () { + return findCaretPositionBackwardsFromElm(rootElement, elm); + }); + }; + var findCaretPositionForward = function (rootElement, elm) { + return getNextSiblingCaretPosition(elm).orThunk(function () { + return getPreviousSiblingCaretPosition(elm); + }).orThunk(function () { + return findCaretPositionForwardsFromElm(rootElement, elm); + }); + }; + var findCaretPosition$1 = function (forward, rootElement, elm) { + return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm); + }; + var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) { + return findCaretPosition$1(forward, rootElement, elm).map($_enfhkv6je5o2ply.curry(reposition, elm)); + }; + var setSelection = function (editor, forward, pos) { + pos.fold(function () { + editor.focus(); + }, function (pos) { + editor.selection.setRng(pos.toRange(), forward); + }); + }; + var eqRawNode = function (rawNode) { + return function (elm) { + return elm.dom() === rawNode; + }; + }; + var isBlock$2 = function (editor, elm) { + return elm && editor.schema.getBlockElements().hasOwnProperty($_95wn8qzje5o2px0.name(elm)); + }; + var paddEmptyBlock = function (elm) { + if ($_dizx5c35je5o2qcb.isEmpty(elm)) { + var br = $_5tcb2dyje5o2pwu.fromHtml('<br data-mce-bogus="1">'); + $_cr1seh2pje5o2qa1.empty(elm); + $_elbl2s2oje5o2q9z.append(elm, br); + return Option.some(CaretPosition$1.before(br.dom())); + } else { + return Option.none(); + } + }; + var deleteNormalized = function (elm, afterDeletePosOpt) { + return $_c8weyc2eje5o2q85.liftN([ + $_a6mttx17je5o2pyd.prevSibling(elm), + $_a6mttx17je5o2pyd.nextSibling(elm), + afterDeletePosOpt + ], function (prev, next, afterDeletePos) { + var offset; + var prevNode = prev.dom(); + var nextNode = next.dom(); + if ($_9owqcy1qje5o2q0e.isText(prevNode) && $_9owqcy1qje5o2q0e.isText(nextNode)) { + offset = prevNode.data.length; + prevNode.appendData(nextNode.data); + $_cr1seh2pje5o2qa1.remove(next); + $_cr1seh2pje5o2qa1.remove(elm); + if (afterDeletePos.container() === nextNode) { + return CaretPosition$1(prevNode, offset); + } else { + return afterDeletePos; + } + } else { + $_cr1seh2pje5o2qa1.remove(elm); + return afterDeletePos; + } + }).orThunk(function () { + $_cr1seh2pje5o2qa1.remove(elm); + return afterDeletePosOpt; + }); + }; + var deleteElement = function (editor, forward, elm) { + var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom()); + var parentBlock = $_au2qfe30je5o2qb4.ancestor(elm, $_enfhkv6je5o2ply.curry(isBlock$2, editor), eqRawNode(editor.getBody())); + var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos); + if (editor.dom.isEmpty(editor.getBody())) { + editor.setContent(''); + editor.selection.setCursorLocation(); + } else { + parentBlock.bind(paddEmptyBlock).fold(function () { + setSelection(editor, forward, normalizedAfterDeletePos); + }, function (paddPos) { + setSelection(editor, forward, Option.some(paddPos)); + }); + } + }; + var $_8fuvl23eje5o2qdv = { deleteElement: deleteElement }; + + var deleteElement$1 = function (editor, forward) { + return function (element) { + editor._selectionOverrides.hideFakeCaret(); + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(element)); + return true; + }; + }; + var moveToElement = function (editor, forward) { + return function (element) { + var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element); + editor.selection.setRng(pos.toRange()); + return true; + }; + }; + var moveToPosition = function (editor) { + return function (pos) { + editor.selection.setRng(pos.toRange()); + return true; + }; + }; + var backspaceDeleteCaret = function (editor, forward) { + var result = read$1(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) { + return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor)); + }); + return result.getOr(false); + }; + var deleteOffscreenSelection = function (rootElement) { + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(rootElement, '.mce-offscreen-selection'), $_cr1seh2pje5o2qa1.remove); + }; + var backspaceDeleteRange = function (editor, forward) { + var selectedElement = editor.selection.getNode(); + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(selectedElement)) { + deleteOffscreenSelection($_5tcb2dyje5o2pwu.fromDom(editor.getBody())); + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(editor.selection.getNode())); + $_7twey62zje5o2qay.paddEmptyBody(editor); + return true; + } else { + return false; + } + }; + var getContentEditableRoot = function (root, node) { + while (node && node !== root) { + if ($_9owqcy1qje5o2q0e.isContentEditableTrue(node) || $_9owqcy1qje5o2q0e.isContentEditableFalse(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var paddEmptyElement = function (editor) { + var br; + var ceRoot = getContentEditableRoot(editor.getBody(), editor.selection.getNode()); + if ($_9owqcy1qje5o2q0e.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) { + br = editor.dom.create('br', { 'data-mce-bogus': '1' }); + editor.dom.setHTML(ceRoot, ''); + ceRoot.appendChild(br); + editor.selection.setRng(CaretPosition$1.before(br).toRange()); + } + return true; + }; + var backspaceDelete$2 = function (editor, forward) { + if (editor.selection.isCollapsed()) { + return backspaceDeleteCaret(editor, forward); + } else { + return backspaceDeleteRange(editor, forward); + } + }; + var $_c7csnv3bje5o2qd6 = { + backspaceDelete: backspaceDelete$2, + paddEmptyElement: paddEmptyElement + }; + + var isText$8 = $_9owqcy1qje5o2q0e.isText; + var startsWithCaretContainer$1 = function (node) { + return isText$8(node) && node.data[0] === $_4md31c21je5o2q5f.ZWSP; + }; + var endsWithCaretContainer$1 = function (node) { + return isText$8(node) && node.data[node.data.length - 1] === $_4md31c21je5o2q5f.ZWSP; + }; + var createZwsp = function (node) { + return node.ownerDocument.createTextNode($_4md31c21je5o2q5f.ZWSP); + }; + var insertBefore$1 = function (node) { + if (isText$8(node.previousSibling)) { + if (endsWithCaretContainer$1(node.previousSibling)) { + return node.previousSibling; + } else { + node.previousSibling.appendData($_4md31c21je5o2q5f.ZWSP); + return node.previousSibling; + } + } else if (isText$8(node)) { + if (startsWithCaretContainer$1(node)) { + return node; + } else { + node.insertData(0, $_4md31c21je5o2q5f.ZWSP); + return node; + } + } else { + var newNode = createZwsp(node); + node.parentNode.insertBefore(newNode, node); + return newNode; + } + }; + var insertAfter$1 = function (node) { + if (isText$8(node.nextSibling)) { + if (startsWithCaretContainer$1(node.nextSibling)) { + return node.nextSibling; + } else { + node.nextSibling.insertData(0, $_4md31c21je5o2q5f.ZWSP); + return node.nextSibling; + } + } else if (isText$8(node)) { + if (endsWithCaretContainer$1(node)) { + return node; + } else { + node.appendData($_4md31c21je5o2q5f.ZWSP); + return node; + } + } else { + var newNode = createZwsp(node); + if (node.nextSibling) { + node.parentNode.insertBefore(newNode, node.nextSibling); + } else { + node.parentNode.appendChild(newNode); + } + return newNode; + } + }; + var insertInline$1 = function (before, node) { + return before ? insertBefore$1(node) : insertAfter$1(node); + }; + var insertInlineBefore = $_enfhkv6je5o2ply.curry(insertInline$1, true); + var insertInlineAfter = $_enfhkv6je5o2ply.curry(insertInline$1, false); + + var insertInlinePos = function (pos, before) { + if ($_9owqcy1qje5o2q0e.isText(pos.container())) { + return insertInline$1(before, pos.container()); + } else { + return insertInline$1(before, pos.getNode()); + } + }; + var isPosCaretContainer = function (pos, caret) { + var caretNode = caret.get(); + return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode); + }; + var renderCaret = function (caret, location) { + return location.fold(function (element) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlineBefore(element); + caret.set(text); + return Option.some(CaretPosition$1(text, text.length - 1)); + }, function (element) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(element).map(function (pos) { + if (!isPosCaretContainer(pos, caret)) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlinePos(pos, true); + caret.set(text); + return CaretPosition$1(text, 1); + } else { + return CaretPosition$1(caret.get(), 1); + } + }); + }, function (element) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(element).map(function (pos) { + if (!isPosCaretContainer(pos, caret)) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlinePos(pos, false); + caret.set(text); + return CaretPosition$1(text, text.length - 1); + } else { + return CaretPosition$1(caret.get(), caret.get().length - 1); + } + }); + }, function (element) { + $_3djwbs29je5o2q74.remove(caret.get()); + var text = insertInlineAfter(element); + caret.set(text); + return Option.some(CaretPosition$1(text, 1)); + }); + }; + var $_5a4sgg3gje5o2qee = { renderCaret: renderCaret }; + + var isInlineBlock = function (node) { + return node && /^(IMG)$/.test(node.nodeName); + }; + var moveStart = function (dom, selection, rng) { + var container = rng.startContainer, offset = rng.startOffset, walker, node, nodes; + if (rng.startContainer === rng.endContainer) { + if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) { + return; + } + } + if (container.nodeType === 3 && offset >= container.nodeValue.length) { + offset = dom.nodeIndex(container); + container = container.parentNode; + } + if (container.nodeType === 1) { + nodes = container.childNodes; + if (offset < nodes.length) { + container = nodes[offset]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + } else { + container = nodes[nodes.length - 1]; + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock)); + walker.next(true); + } + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3 && !isWhiteSpaceNode(node)) { + rng.setStart(node, 0); + selection.setRng(rng); + return; + } + } + } + }; + var getNonWhiteSpaceSibling = function (node, next, inc) { + if (node) { + next = next ? 'nextSibling' : 'previousSibling'; + for (node = inc ? node : node[next]; node; node = node[next]) { + if (node.nodeType === 1 || !isWhiteSpaceNode(node)) { + return node; + } + } + } + }; + var isTextBlock$1 = function (editor, name) { + if (name.nodeType) { + name = name.nodeName; + } + return !!editor.schema.getTextBlockElements()[name.toLowerCase()]; + }; + var isValid = function (ed, parent, child) { + return ed.schema.isValidChild(parent, child); + }; + var isWhiteSpaceNode = function (node) { + return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue); + }; + var replaceVars = function (value, vars) { + if (typeof value !== 'string') { + value = value(vars); + } else if (vars) { + value = value.replace(/%(\w+)/g, function (str, name) { + return vars[name] || str; + }); + } + return value; + }; + var isEq = function (str1, str2) { + str1 = str1 || ''; + str2 = str2 || ''; + str1 = '' + (str1.nodeName || str1); + str2 = '' + (str2.nodeName || str2); + return str1.toLowerCase() === str2.toLowerCase(); + }; + var normalizeStyleValue = function (dom, value, name) { + if (name === 'color' || name === 'backgroundColor') { + value = dom.toHex(value); + } + if (name === 'fontWeight' && value === 700) { + value = 'bold'; + } + if (name === 'fontFamily') { + value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ','); + } + return '' + value; + }; + var getStyle = function (dom, node, name) { + return normalizeStyleValue(dom, dom.getStyle(node, name), name); + }; + var getTextDecoration = function (dom, node) { + var decoration; + dom.getParent(node, function (n) { + decoration = dom.getStyle(n, 'text-decoration'); + return decoration && decoration !== 'none'; + }); + return decoration; + }; + var getParents$1 = function (dom, node, selector) { + return dom.getParents(node, selector, dom.getRoot()); + }; + var $_b2hqtg3lje5o2qft = { + isInlineBlock: isInlineBlock, + moveStart: moveStart, + getNonWhiteSpaceSibling: getNonWhiteSpaceSibling, + isTextBlock: isTextBlock$1, + isValid: isValid, + isWhiteSpaceNode: isWhiteSpaceNode, + replaceVars: replaceVars, + isEq: isEq, + normalizeStyleValue: normalizeStyleValue, + getStyle: getStyle, + getTextDecoration: getTextDecoration, + getParents: getParents$1 + }; + + var isBookmarkNode$2 = $_83h91t2jje5o2q8n.isBookmarkNode; + var getParents$2 = $_b2hqtg3lje5o2qft.getParents; + var isWhiteSpaceNode$1 = $_b2hqtg3lje5o2qft.isWhiteSpaceNode; + var isTextBlock$2 = $_b2hqtg3lje5o2qft.isTextBlock; + var findLeaf = function (node, offset) { + if (typeof offset === 'undefined') { + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + while (node && node.hasChildNodes()) { + node = node.childNodes[offset]; + if (node) { + offset = node.nodeType === 3 ? node.length : node.childNodes.length; + } + } + return { + node: node, + offset: offset + }; + }; + var excludeTrailingWhitespace = function (endContainer, endOffset) { + var leaf = findLeaf(endContainer, endOffset); + if (leaf.node) { + while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) { + leaf = findLeaf(leaf.node.previousSibling); + } + if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') { + if (leaf.offset > 1) { + endContainer = leaf.node; + endContainer.splitText(leaf.offset - 1); + } + } + } + return endContainer; + }; + var isBogusBr = function (node) { + return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling; + }; + var findParentContentEditable = function (dom, node) { + var parent = node; + while (parent) { + if (parent.nodeType === 1 && dom.getContentEditable(parent)) { + return dom.getContentEditable(parent) === 'false' ? parent : node; + } + parent = parent.parentNode; + } + return node; + }; + var findSpace = function (start, remove, node, offset) { + var pos, pos2; + var str = node.nodeValue; + if (typeof offset === 'undefined') { + offset = start ? str.length : 0; + } + if (start) { + pos = str.lastIndexOf(' ', offset); + pos2 = str.lastIndexOf('\xA0', offset); + pos = pos > pos2 ? pos : pos2; + if (pos !== -1 && !remove) { + pos++; + } + } else { + pos = str.indexOf(' ', offset); + pos2 = str.indexOf('\xA0', offset); + pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2; + } + return pos; + }; + var findWordEndPoint = function (dom, body, container, offset, start, remove) { + var walker, node, pos, lastTextNode; + if (container.nodeType === 3) { + pos = findSpace(start, remove, container, offset); + if (pos !== -1) { + return { + container: container, + offset: pos + }; + } + lastTextNode = container; + } + walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body); + while (node = walker[start ? 'prev' : 'next']()) { + if (node.nodeType === 3) { + lastTextNode = node; + pos = findSpace(start, remove, node); + if (pos !== -1) { + return { + container: node, + offset: pos + }; + } + } else if (dom.isBlock(node)) { + break; + } + } + if (lastTextNode) { + if (start) { + offset = 0; + } else { + offset = lastTextNode.length; + } + return { + container: lastTextNode, + offset: offset + }; + } + }; + var findSelectorEndPoint = function (dom, format, rng, container, siblingName) { + var parents, i, y, curFormat; + if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) { + container = container[siblingName]; + } + parents = getParents$2(dom, container); + for (i = 0; i < parents.length; i++) { + for (y = 0; y < format.length; y++) { + curFormat = format[y]; + if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) { + continue; + } + if (dom.is(parents[i], curFormat.selector)) { + return parents[i]; + } + } + } + return container; + }; + var findBlockEndPoint = function (editor, format, container, siblingName) { + var node; + var dom = editor.dom; + var root = dom.getRoot(); + if (!format[0].wrapper) { + node = dom.getParent(container, format[0].block, root); + } + if (!node) { + var scopeRoot = dom.getParent(container, 'LI,TD,TH'); + node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) { + return node !== root && isTextBlock$2(editor, node); + }, scopeRoot); + } + if (node && format[0].wrapper) { + node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node; + } + if (!node) { + node = container; + while (node[siblingName] && !dom.isBlock(node[siblingName])) { + node = node[siblingName]; + if ($_b2hqtg3lje5o2qft.isEq(node, 'br')) { + break; + } + } + } + return node || container; + }; + var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) { + var container, parent, sibling, siblingName, root; + container = parent = start ? startContainer : endContainer; + siblingName = start ? 'previousSibling' : 'nextSibling'; + root = dom.getRoot(); + if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) { + if (start ? startOffset > 0 : endOffset < container.nodeValue.length) { + return container; + } + } + while (true) { + if (!format[0].block_expand && dom.isBlock(parent)) { + return parent; + } + for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) { + if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) { + return parent; + } + } + if (parent === root || parent.parentNode === root) { + container = parent; + break; + } + parent = parent.parentNode; + } + return container; + }; + var expandRng = function (editor, rng, format, remove) { + var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; + var dom = editor.dom; + if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) { + startContainer = getNode(startContainer, startOffset); + if (startContainer.nodeType === 3) { + startOffset = 0; + } + } + if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) { + endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1); + if (endContainer.nodeType === 3) { + endOffset = endContainer.nodeValue.length; + } + } + startContainer = findParentContentEditable(dom, startContainer); + endContainer = findParentContentEditable(dom, endContainer); + if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) { + startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode; + startContainer = startContainer.nextSibling || startContainer; + if (startContainer.nodeType === 3) { + startOffset = 0; + } + } + if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) { + endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode; + endContainer = endContainer.previousSibling || endContainer; + if (endContainer.nodeType === 3) { + endOffset = endContainer.length; + } + } + if (format[0].inline) { + if (rng.collapsed) { + endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove); + if (endPoint) { + startContainer = endPoint.container; + startOffset = endPoint.offset; + } + endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove); + if (endPoint) { + endContainer = endPoint.container; + endOffset = endPoint.offset; + } + } + endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset); + } + if (format[0].inline || format[0].block_expand) { + if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) { + startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true); + } + if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) { + endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false); + } + } + if (format[0].selector && format[0].expand !== false && !format[0].inline) { + startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling'); + endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling'); + } + if (format[0].block || format[0].selector) { + startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling'); + endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling'); + if (format[0].block) { + if (!dom.isBlock(startContainer)) { + startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true); + } + if (!dom.isBlock(endContainer)) { + endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false); + } + } + } + if (startContainer.nodeType === 1) { + startOffset = dom.nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + if (endContainer.nodeType === 1) { + endOffset = dom.nodeIndex(endContainer) + 1; + endContainer = endContainer.parentNode; + } + return { + startContainer: startContainer, + startOffset: startOffset, + endContainer: endContainer, + endOffset: endOffset + }; + }; + var $_8wd5fu3kje5o2qfi = { expandRng: expandRng }; + + var isEq$1 = $_b2hqtg3lje5o2qft.isEq; + var matchesUnInheritedFormatSelector = function (ed, node, name) { + var formatList = ed.formatter.get(name); + if (formatList) { + for (var i = 0; i < formatList.length; i++) { + if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) { + return true; + } + } + } + return false; + }; + var matchParents = function (editor, node, name, vars) { + var root = editor.dom.getRoot(); + if (node === root) { + return false; + } + node = editor.dom.getParent(node, function (node) { + if (matchesUnInheritedFormatSelector(editor, node, name)) { + return true; + } + return node.parentNode === root || !!matchNode(editor, node, name, vars, true); + }); + return matchNode(editor, node, name, vars); + }; + var matchName = function (dom, node, format) { + if (isEq$1(node, format.inline)) { + return true; + } + if (isEq$1(node, format.block)) { + return true; + } + if (format.selector) { + return node.nodeType === 1 && dom.is(node, format.selector); + } + }; + var matchItems = function (dom, node, format, itemName, similar, vars) { + var key, value; + var items = format[itemName]; + var i; + if (format.onmatch) { + return format.onmatch(node, format, itemName); + } + if (items) { + if (typeof items.length === 'undefined') { + for (key in items) { + if (items.hasOwnProperty(key)) { + if (itemName === 'attributes') { + value = dom.getAttrib(node, key); + } else { + value = $_b2hqtg3lje5o2qft.getStyle(dom, node, key); + } + if (similar && !value && !format.exact) { + return; + } + if ((!similar || format.exact) && !isEq$1(value, $_b2hqtg3lje5o2qft.normalizeStyleValue(dom, $_b2hqtg3lje5o2qft.replaceVars(items[key], vars), key))) { + return; + } + } + } + } else { + for (i = 0; i < items.length; i++) { + if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : $_b2hqtg3lje5o2qft.getStyle(dom, node, items[i])) { + return format; + } + } + } + } + return format; + }; + var matchNode = function (ed, node, name, vars, similar) { + var formatList = ed.formatter.get(name); + var format, i, x, classes; + var dom = ed.dom; + if (formatList && node) { + for (i = 0; i < formatList.length; i++) { + format = formatList[i]; + if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) { + if (classes = format.classes) { + for (x = 0; x < classes.length; x++) { + if (!ed.dom.hasClass(node, classes[x])) { + return; + } + } + } + return format; + } + } + } + }; + var match = function (editor, name, vars, node) { + var startNode; + if (node) { + return matchParents(editor, node, name, vars); + } + node = editor.selection.getNode(); + if (matchParents(editor, node, name, vars)) { + return true; + } + startNode = editor.selection.getStart(); + if (startNode !== node) { + if (matchParents(editor, startNode, name, vars)) { + return true; + } + } + return false; + }; + var matchAll = function (editor, names, vars) { + var startElement; + var matchedFormatNames = []; + var checkedMap = {}; + startElement = editor.selection.getStart(); + editor.dom.getParent(startElement, function (node) { + var i, name; + for (i = 0; i < names.length; i++) { + name = names[i]; + if (!checkedMap[name] && matchNode(editor, node, name, vars)) { + checkedMap[name] = true; + matchedFormatNames.push(name); + } + } + }, editor.dom.getRoot()); + return matchedFormatNames; + }; + var canApply = function (editor, name) { + var formatList = editor.formatter.get(name); + var startNode, parents, i, x, selector; + var dom = editor.dom; + if (formatList) { + startNode = editor.selection.getStart(); + parents = $_b2hqtg3lje5o2qft.getParents(dom, startNode); + for (x = formatList.length - 1; x >= 0; x--) { + selector = formatList[x].selector; + if (!selector || formatList[x].defaultBlock) { + return true; + } + for (i = parents.length - 1; i >= 0; i--) { + if (dom.is(parents[i], selector)) { + return true; + } + } + } + } + return false; + }; + var $_g32xfv3mje5o2qg1 = { + matchNode: matchNode, + matchName: matchName, + match: match, + matchAll: matchAll, + canApply: canApply, + matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector + }; + + var splitText = function (node, offset) { + return node.splitText(offset); + }; + var split$1 = function (rng) { + var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset; + if (startContainer === endContainer && $_9owqcy1qje5o2q0e.isText(startContainer)) { + if (startOffset > 0 && startOffset < startContainer.nodeValue.length) { + endContainer = splitText(startContainer, startOffset); + startContainer = endContainer.previousSibling; + if (endOffset > startOffset) { + endOffset = endOffset - startOffset; + startContainer = endContainer = splitText(endContainer, endOffset).previousSibling; + endOffset = endContainer.nodeValue.length; + startOffset = 0; + } else { + endOffset = 0; + } + } + } else { + if ($_9owqcy1qje5o2q0e.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) { + startContainer = splitText(startContainer, startOffset); + startOffset = 0; + } + if ($_9owqcy1qje5o2q0e.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) { + endContainer = splitText(endContainer, endOffset).previousSibling; + endOffset = endContainer.nodeValue.length; + } + } + return { + startContainer: startContainer, + startOffset: startOffset, + endContainer: endContainer, + endOffset: endOffset + }; + }; + var $_3ksquu3nje5o2qg7 = { split: split$1 }; + + var ZWSP$1 = $_4md31c21je5o2q5f.ZWSP; + var CARET_ID = '_mce_caret'; + var importNode = function (ownerDocument, node) { + return ownerDocument.importNode(node, true); + }; + var isCaretNode = function (node) { + return node.nodeType === 1 && node.id === CARET_ID; + }; + var getEmptyCaretContainers = function (node) { + var nodes = []; + while (node) { + if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) { + return []; + } + if (node.nodeType === 1) { + nodes.push(node); + } + node = node.firstChild; + } + return nodes; + }; + var isCaretContainerEmpty = function (node) { + return getEmptyCaretContainers(node).length > 0; + }; + var findFirstTextNode = function (node) { + var walker; + if (node) { + walker = new TreeWalker(node, node); + for (node = walker.current(); node; node = walker.next()) { + if (node.nodeType === 3) { + return node; + } + } + } + return null; + }; + var createCaretContainer = function (fill) { + var caretContainer = $_5tcb2dyje5o2pwu.fromTag('span'); + $_3uo9pl14je5o2pxq.setAll(caretContainer, { + 'id': CARET_ID, + 'data-mce-bogus': '1', + 'data-mce-type': 'format-caret' + }); + if (fill) { + $_elbl2s2oje5o2q9z.append(caretContainer, $_5tcb2dyje5o2pwu.fromText(ZWSP$1)); + } + return caretContainer; + }; + var getParentCaretContainer = function (body, node) { + while (node && node !== body) { + if (node.id === CARET_ID) { + return node; + } + node = node.parentNode; + } + return null; + }; + var trimZwspFromCaretContainer = function (caretContainerNode) { + var textNode = findFirstTextNode(caretContainerNode); + if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) { + textNode.deleteData(0, 1); + } + return textNode; + }; + var removeCaretContainerNode = function (dom, selection, node, moveCaret) { + var rng, block, textNode; + rng = selection.getRng(true); + block = dom.getParent(node, dom.isBlock); + if (isCaretContainerEmpty(node)) { + if (moveCaret !== false) { + rng.setStartBefore(node); + rng.setEndBefore(node); + } + dom.remove(node); + } else { + textNode = trimZwspFromCaretContainer(node); + if (rng.startContainer === textNode && rng.startOffset > 0) { + rng.setStart(textNode, rng.startOffset - 1); + } + if (rng.endContainer === textNode && rng.endOffset > 0) { + rng.setEnd(textNode, rng.endOffset - 1); + } + dom.remove(node, true); + } + if (block && dom.isEmpty(block)) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr($_5tcb2dyje5o2pwu.fromDom(block)); + } + selection.setRng(rng); + }; + var removeCaretContainer = function (body, dom, selection, node, moveCaret) { + if (!node) { + node = getParentCaretContainer(body, selection.getStart()); + if (!node) { + while (node = dom.get(CARET_ID)) { + removeCaretContainerNode(dom, selection, node, false); + } + } + } else { + removeCaretContainerNode(dom, selection, node, moveCaret); + } + }; + var insertCaretContainerNode = function (editor, caretContainer, formatNode) { + var dom = editor.dom, block = dom.getParent(formatNode, $_ghq3nq25je5o2q5q.curry($_b2hqtg3lje5o2qft.isTextBlock, editor)); + if (block && dom.isEmpty(block)) { + formatNode.parentNode.replaceChild(caretContainer, formatNode); + } else { + $_4kbg8z2nje5o2q9s.removeTrailingBr($_5tcb2dyje5o2pwu.fromDom(formatNode)); + if (dom.isEmpty(formatNode)) { + formatNode.parentNode.replaceChild(caretContainer, formatNode); + } else { + dom.insertAfter(caretContainer, formatNode); + } + } + }; + var appendNode = function (parentNode, node) { + parentNode.appendChild(node); + return node; + }; + var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) { + var innerMostFormatNode = $_bwcteb4je5o2pl4.foldr(formatNodes, function (parentNode, formatNode) { + return appendNode(parentNode, formatNode.cloneNode(false)); + }, caretContainer); + return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1)); + }; + var applyCaretFormat = function (editor, name, vars) { + var rng, caretContainer, textNode, offset, bookmark, container, text; + var selection = editor.selection; + rng = selection.getRng(true); + offset = rng.startOffset; + container = rng.startContainer; + text = container.nodeValue; + caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart()); + if (caretContainer) { + textNode = findFirstTextNode(caretContainer); + } + var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/; + if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) { + bookmark = selection.getBookmark(); + rng.collapse(true); + rng = $_8wd5fu3kje5o2qfi.expandRng(editor, rng, editor.formatter.get(name)); + rng = $_3ksquu3nje5o2qg7.split(rng); + editor.formatter.apply(name, vars, rng); + selection.moveToBookmark(bookmark); + } else { + if (!caretContainer || textNode.nodeValue !== ZWSP$1) { + caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom()); + textNode = caretContainer.firstChild; + rng.insertNode(caretContainer); + offset = 1; + editor.formatter.apply(name, vars, caretContainer); + } else { + editor.formatter.apply(name, vars, caretContainer); + } + selection.setCursorLocation(textNode, offset); + } + }; + var removeCaretFormat = function (editor, name, vars, similar) { + var dom = editor.dom, selection = editor.selection; + var container, offset, bookmark; + var hasContentAfter, node, formatNode; + var parents = [], rng = selection.getRng(); + var caretContainer; + container = rng.startContainer; + offset = rng.startOffset; + node = container; + if (container.nodeType === 3) { + if (offset !== container.nodeValue.length) { + hasContentAfter = true; + } + node = node.parentNode; + } + while (node) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, node, name, vars, similar)) { + formatNode = node; + break; + } + if (node.nextSibling) { + hasContentAfter = true; + } + parents.push(node); + node = node.parentNode; + } + if (!formatNode) { + return; + } + if (hasContentAfter) { + bookmark = selection.getBookmark(); + rng.collapse(true); + var expandedRng = $_8wd5fu3kje5o2qfi.expandRng(editor, rng, editor.formatter.get(name), true); + expandedRng = $_3ksquu3nje5o2qg7.split(expandedRng); + editor.formatter.remove(name, vars, expandedRng); + selection.moveToBookmark(bookmark); + } else { + caretContainer = getParentCaretContainer(editor.getBody(), formatNode); + var newCaretContainer = createCaretContainer(false).dom(); + var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer); + if (caretContainer) { + insertCaretContainerNode(editor, newCaretContainer, caretContainer); + } else { + insertCaretContainerNode(editor, newCaretContainer, formatNode); + } + removeCaretContainerNode(dom, selection, caretContainer, false); + selection.setCursorLocation(caretNode, 1); + if (dom.isEmpty(formatNode)) { + dom.remove(formatNode); + } + } + }; + var disableCaretContainer = function (body, dom, selection, keyCode) { + removeCaretContainer(body, dom, selection, null, false); + if (keyCode === 8 && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) { + removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart())); + } + if (keyCode === 37 || keyCode === 39) { + removeCaretContainer(body, dom, selection, getParentCaretContainer(body, selection.getStart())); + } + }; + var setup = function (editor) { + var dom = editor.dom, selection = editor.selection; + var body = editor.getBody(); + editor.on('mouseup keydown', function (e) { + disableCaretContainer(body, dom, selection, e.keyCode); + }); + }; + var replaceWithCaretFormat = function (targetNode, formatNodes) { + var caretContainer = createCaretContainer(false); + var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom()); + $_elbl2s2oje5o2q9z.before($_5tcb2dyje5o2pwu.fromDom(targetNode), caretContainer); + $_cr1seh2pje5o2qa1.remove($_5tcb2dyje5o2pwu.fromDom(targetNode)); + return CaretPosition$1(innerMost, 0); + }; + var isFormatElement = function (editor, element) { + var inlineElements = editor.schema.getTextInlineElements(); + return inlineElements.hasOwnProperty($_95wn8qzje5o2px0.name(element)) && !isCaretNode(element.dom()) && !$_9owqcy1qje5o2q0e.isBogus(element.dom()); + }; + var $_4066yu3jje5o2qev = { + setup: setup, + applyCaretFormat: applyCaretFormat, + removeCaretFormat: removeCaretFormat, + isCaretNode: isCaretNode, + getParentCaretContainer: getParentCaretContainer, + replaceWithCaretFormat: replaceWithCaretFormat, + isFormatElement: isFormatElement + }; + + var evaluateUntil = function (fns, args) { + for (var i = 0; i < fns.length; i++) { + var result = fns[i].apply(null, args); + if (result.isSome()) { + return result; + } + } + return Option.none(); + }; + var $_cq1fkk3oje5o2qg9 = { evaluateUntil: evaluateUntil }; + + var Location = $_e73lvt3dje5o2qdq.generate([ + { before: ['element'] }, + { start: ['element'] }, + { end: ['element'] }, + { after: ['element'] } + ]); + var rescope = function (rootNode, node) { + var parentBlock = getParentBlock(node, rootNode); + return parentBlock ? parentBlock : rootNode; + }; + var before$3 = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeForwards(pos); + var scope = rescope(rootNode, nPos.container()); + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, scope, nPos).fold(function () { + return $_g2kzjo2bje5o2q7n.nextPosition(scope, nPos).bind($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.findRootInline, isInlineTarget, scope)).map(function (inline) { + return Location.before(inline); + }); + }, Option.none); + }; + var isNotInsideFormatCaretContainer = function (rootNode, elm) { + return $_4066yu3jje5o2qev.getParentCaretContainer(rootNode, elm) === null; + }; + var findInsideRootInline = function (isInlineTarget, rootNode, pos) { + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, pos).filter($_enfhkv6je5o2ply.curry(isNotInsideFormatCaretContainer, rootNode)); + }; + var start = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeBackwards(pos); + return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { + var prevPos = $_g2kzjo2bje5o2q7n.prevPosition(inline, nPos); + return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none(); + }); + }; + var end = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeForwards(pos); + return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) { + var nextPos = $_g2kzjo2bje5o2q7n.nextPosition(inline, nPos); + return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none(); + }); + }; + var after$3 = function (isInlineTarget, rootNode, pos) { + var nPos = $_6skw9732je5o2qbp.normalizeBackwards(pos); + var scope = rescope(rootNode, nPos.container()); + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, scope, nPos).fold(function () { + return $_g2kzjo2bje5o2q7n.prevPosition(scope, nPos).bind($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.findRootInline, isInlineTarget, scope)).map(function (inline) { + return Location.after(inline); + }); + }, Option.none); + }; + var isValidLocation = function (location) { + return $_6skw9732je5o2qbp.isRtl(getElement(location)) === false; + }; + var readLocation = function (isInlineTarget, rootNode, pos) { + var location = $_cq1fkk3oje5o2qg9.evaluateUntil([ + before$3, + start, + end, + after$3 + ], [ + isInlineTarget, + rootNode, + pos + ]); + return location.filter(isValidLocation); + }; + var getElement = function (location) { + return location.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var getName = function (location) { + return location.fold($_enfhkv6je5o2ply.constant('before'), $_enfhkv6je5o2ply.constant('start'), $_enfhkv6je5o2ply.constant('end'), $_enfhkv6je5o2ply.constant('after')); + }; + var outside = function (location) { + return location.fold(Location.before, Location.before, Location.after, Location.after); + }; + var inside = function (location) { + return location.fold(Location.start, Location.start, Location.end, Location.end); + }; + var isEq$2 = function (location1, location2) { + return getName(location1) === getName(location2) && getElement(location1) === getElement(location2); + }; + var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) { + return $_c8weyc2eje5o2q85.liftN([ + $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, from), + $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, to) + ], function (fromInline, toInline) { + if (fromInline !== toInline && $_6skw9732je5o2qbp.hasSameParentBlock(rootNode, fromInline, toInline)) { + return Location.after(forward ? fromInline : toInline); + } else { + return location; + } + }).getOr(location); + }; + var skipNoMovement = function (fromLocation, toLocation) { + return fromLocation.fold($_enfhkv6je5o2ply.constant(true), function (fromLocation) { + return !isEq$2(fromLocation, toLocation); + }); + }; + var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) { + var from = $_6skw9732je5o2qbp.normalizePosition(forward, pos); + var to = $_g2kzjo2bje5o2q7n.fromPosition(forward, rootNode, from).map($_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.normalizePosition, forward)); + var location = to.fold(function () { + return fromLocation.map(outside); + }, function (to) { + return readLocation(isInlineTarget, rootNode, to).map($_enfhkv6je5o2ply.curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter($_enfhkv6je5o2ply.curry(skipNoMovement, fromLocation)); + }); + return location.filter(isValidLocation); + }; + var findLocationSimple = function (forward, location) { + if (forward) { + return location.fold($_enfhkv6je5o2ply.compose(Option.some, Location.start), Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.after), Option.none); + } else { + return location.fold(Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.before), Option.none, $_enfhkv6je5o2ply.compose(Option.some, Location.end)); + } + }; + var findLocation = function (forward, isInlineTarget, rootNode, pos) { + var from = $_6skw9732je5o2qbp.normalizePosition(forward, pos); + var fromLocation = readLocation(isInlineTarget, rootNode, from); + return readLocation(isInlineTarget, rootNode, from).bind($_enfhkv6je5o2ply.curry(findLocationSimple, forward)).orThunk(function () { + return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos); + }); + }; + var $_62vpc23ije5o2qem = { + readLocation: readLocation, + findLocation: findLocation, + prevLocation: $_enfhkv6je5o2ply.curry(findLocation, false), + nextLocation: $_enfhkv6je5o2ply.curry(findLocation, true), + getElement: getElement, + outside: outside, + inside: inside + }; + + var Cell = function (initial) { + var value = initial; + var get = function () { + return value; + }; + var set = function (v) { + value = v; + }; + var clone = function () { + return Cell(get()); + }; + return { + get: get, + set: set, + clone: clone + }; + }; + + var hasSelectionModifyApi = function (editor) { + return $_be3q8w12je5o2pxj.isFunction(editor.selection.getSel().modify); + }; + var moveRel = function (forward, selection, pos) { + var delta = forward ? 1 : -1; + selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange()); + selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word'); + return true; + }; + var moveByWord = function (forward, editor) { + var rng = editor.selection.getRng(); + var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng); + if (!hasSelectionModifyApi(editor)) { + return false; + } else if (forward && isBeforeInline(pos)) { + return moveRel(true, editor.selection, pos); + } else if (!forward && isAfterInline(pos)) { + return moveRel(false, editor.selection, pos); + } else { + return false; + } + }; + var $_ffszpz3rje5o2qgl = { + hasSelectionModifyApi: hasSelectionModifyApi, + moveByWord: moveByWord + }; + + var setCaretPosition = function (editor, pos) { + var rng = editor.dom.createRng(); + rng.setStart(pos.container(), pos.offset()); + rng.setEnd(pos.container(), pos.offset()); + editor.selection.setRng(rng); + }; + var isFeatureEnabled = function (editor) { + return editor.settings.inline_boundaries !== false; + }; + var setSelected = function (state, elm) { + if (state) { + elm.setAttribute('data-mce-selected', 'inline-boundary'); + } else { + elm.removeAttribute('data-mce-selected'); + } + }; + var renderCaretLocation = function (editor, caret, location) { + return $_5a4sgg3gje5o2qee.renderCaret(caret, location).map(function (pos) { + setCaretPosition(editor, pos); + return location; + }); + }; + var findLocation$1 = function (editor, caret, forward) { + var rootNode = editor.getBody(); + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var location = $_62vpc23ije5o2qem.findLocation(forward, isInlineTarget, rootNode, from); + return location.bind(function (location) { + return renderCaretLocation(editor, caret, location); + }); + }; + var toggleInlines = function (isInlineTarget, dom, elms) { + var selectedInlines = $_bwcteb4je5o2pl4.filter(dom.select('*[data-mce-selected="inline-boundary"]'), isInlineTarget); + var targetInlines = $_bwcteb4je5o2pl4.filter(elms, isInlineTarget); + $_bwcteb4je5o2pl4.each($_bwcteb4je5o2pl4.difference(selectedInlines, targetInlines), $_enfhkv6je5o2ply.curry(setSelected, false)); + $_bwcteb4je5o2pl4.each($_bwcteb4je5o2pl4.difference(targetInlines, selectedInlines), $_enfhkv6je5o2ply.curry(setSelected, true)); + }; + var safeRemoveCaretContainer = function (editor, caret) { + if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) { + var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + if (CaretPosition$1.isTextPosition(pos) && $_6skw9732je5o2qbp.isAtZwsp(pos) === false) { + setCaretPosition(editor, $_3djwbs29je5o2q74.removeAndReposition(caret.get(), pos)); + caret.set(null); + } + } + }; + var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) { + if (editor.selection.isCollapsed()) { + var inlines = $_bwcteb4je5o2pl4.filter(elms, isInlineTarget); + $_bwcteb4je5o2pl4.each(inlines, function (inline) { + var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) { + return renderCaretLocation(editor, caret, location); + }); + }); + } + }; + var move = function (editor, caret, forward) { + return function () { + return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false; + }; + }; + var moveWord = function (forward, editor, caret) { + return function () { + return isFeatureEnabled(editor) ? $_ffszpz3rje5o2qgl.moveByWord(forward, editor) : false; + }; + }; + var setupSelectedState = function (editor) { + var caret = Cell(null); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + editor.on('NodeChange', function (e) { + if (isFeatureEnabled(editor)) { + toggleInlines(isInlineTarget, editor.dom, e.parents); + safeRemoveCaretContainer(editor, caret); + renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents); + } + }); + return caret; + }; + var $_2dnted3pje5o2qgc = { + move: move, + moveNextWord: $_enfhkv6je5o2ply.curry(moveWord, true), + movePrevWord: $_enfhkv6je5o2ply.curry(moveWord, false), + setupSelectedState: setupSelectedState, + setCaretPosition: setCaretPosition + }; + + var isFeatureEnabled$1 = function (editor) { + return editor.settings.inline_boundaries !== false; + }; + var rangeFromPositions = function (from, to) { + var range = document.createRange(); + range.setStart(from.container(), from.offset()); + range.setEnd(to.container(), to.offset()); + return range; + }; + var hasOnlyTwoOrLessPositionsLeft = function (elm) { + return $_c8weyc2eje5o2q85.liftN([ + $_g2kzjo2bje5o2q7n.firstPositionIn(elm), + $_g2kzjo2bje5o2q7n.lastPositionIn(elm) + ], function (firstPos, lastPos) { + var normalizedFirstPos = $_6skw9732je5o2qbp.normalizePosition(true, firstPos); + var normalizedLastPos = $_6skw9732je5o2qbp.normalizePosition(false, lastPos); + return $_g2kzjo2bje5o2q7n.nextPosition(elm, normalizedFirstPos).map(function (pos) { + return pos.isEqual(normalizedLastPos); + }).getOr(true); + }).getOr(true); + }; + var setCaretLocation = function (editor, caret) { + return function (location) { + return $_5a4sgg3gje5o2qee.renderCaret(caret, location).map(function (pos) { + $_2dnted3pje5o2qgc.setCaretPosition(editor, pos); + return true; + }).getOr(false); + }; + }; + var deleteFromTo = function (editor, caret, from, to) { + var rootNode = editor.getBody(); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + editor.undoManager.ignore(function () { + editor.selection.setRng(rangeFromPositions(from, to)); + editor.execCommand('Delete'); + $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map($_62vpc23ije5o2qem.inside).map(setCaretLocation(editor, caret)); + }); + editor.nodeChanged(); + }; + var rescope$1 = function (rootNode, node) { + var parentBlock = getParentBlock(node, rootNode); + return parentBlock ? parentBlock : rootNode; + }; + var backspaceDeleteCollapsed = function (editor, caret, forward, from) { + var rootNode = rescope$1(editor.getBody(), from.container()); + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var fromLocation = $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, from); + return fromLocation.bind(function (location) { + if (forward) { + return location.fold($_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.inside(location))), Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.outside(location))), Option.none); + } else { + return location.fold(Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.outside(location))), Option.none, $_enfhkv6je5o2ply.constant(Option.some($_62vpc23ije5o2qem.inside(location)))); + } + }).map(setCaretLocation(editor, caret)).getOrThunk(function () { + var toPosition = $_g2kzjo2bje5o2q7n.navigate(forward, rootNode, from); + var toLocation = toPosition.bind(function (pos) { + return $_62vpc23ije5o2qem.readLocation(isInlineTarget, rootNode, pos); + }); + if (fromLocation.isSome() && toLocation.isSome()) { + return $_6skw9732je5o2qbp.findRootInline(isInlineTarget, rootNode, from).map(function (elm) { + if (hasOnlyTwoOrLessPositionsLeft(elm)) { + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, $_5tcb2dyje5o2pwu.fromDom(elm)); + return true; + } else { + return false; + } + }).getOr(false); + } else { + return toLocation.bind(function (_) { + return toPosition.map(function (to) { + if (forward) { + deleteFromTo(editor, caret, from, to); + } else { + deleteFromTo(editor, caret, to, from); + } + return true; + }); + }).getOr(false); + } + }); + }; + var backspaceDelete$3 = function (editor, caret, forward) { + if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return backspaceDeleteCollapsed(editor, caret, forward, from); + } + return false; + }; + var $_bzwx3b3fje5o2qe7 = { backspaceDelete: backspaceDelete$3 }; + + var tableCellRng = $_86drv18je5o2pyn.immutable('start', 'end'); + var tableSelection = $_86drv18je5o2pyn.immutable('rng', 'table', 'cells'); + var deleteAction = $_e73lvt3dje5o2qdq.generate([ + { removeTable: ['element'] }, + { emptyCells: ['cells'] } + ]); + var isRootFromElement = function (root) { + return $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, root); + }; + var getClosestCell$1 = function (container, isRoot) { + return $_9fzewc37je5o2qck.closest($_5tcb2dyje5o2pwu.fromDom(container), 'td,th', isRoot); + }; + var getClosestTable = function (cell, isRoot) { + return $_9fzewc37je5o2qck.ancestor(cell, 'table', isRoot); + }; + var isExpandedCellRng = function (cellRng) { + return $_7oppmo1dje5o2pz1.eq(cellRng.start(), cellRng.end()) === false; + }; + var getTableFromCellRng = function (cellRng, isRoot) { + return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) { + return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) { + return $_7oppmo1dje5o2pz1.eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none(); + }); + }); + }; + var getTableCells = function (table) { + return $_b4jhpu2gje5o2q8e.descendants(table, 'td,th'); + }; + var getCellRangeFromStartTable = function (cellRng, isRoot) { + return getClosestTable(cellRng.start(), isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.last(getTableCells(table)).map(function (endCell) { + return tableCellRng(cellRng.start(), endCell); + }); + }); + }; + var partialSelection = function (isRoot, rng) { + var startCell = getClosestCell$1(rng.startContainer, isRoot); + var endCell = getClosestCell$1(rng.endContainer, isRoot); + return rng.collapsed ? Option.none() : $_c8weyc2eje5o2q85.liftN([ + startCell, + endCell + ], tableCellRng).fold(function () { + return startCell.fold(function () { + return endCell.bind(function (endCell) { + return getClosestTable(endCell, isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.head(getTableCells(table)).map(function (startCell) { + return tableCellRng(startCell, endCell); + }); + }); + }); + }, function (startCell) { + return getClosestTable(startCell, isRoot).bind(function (table) { + return $_bwcteb4je5o2pl4.last(getTableCells(table)).map(function (endCell) { + return tableCellRng(startCell, endCell); + }); + }); + }); + }, function (cellRng) { + return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot); + }); + }; + var isWithinSameTable = function (isRoot, cellRng) { + return getTableFromCellRng(cellRng, isRoot).isSome(); + }; + var getCellRng = function (rng, isRoot) { + var startCell = getClosestCell$1(rng.startContainer, isRoot); + var endCell = getClosestCell$1(rng.endContainer, isRoot); + return $_c8weyc2eje5o2q85.liftN([ + startCell, + endCell + ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) { + return isWithinSameTable(isRoot, cellRng); + }).orThunk(function () { + return partialSelection(isRoot, rng); + }); + }; + var getTableSelectionFromCellRng = function (cellRng, isRoot) { + return getTableFromCellRng(cellRng, isRoot).map(function (table) { + return tableSelection(cellRng, table, getTableCells(table)); + }); + }; + var getTableSelectionFromRng = function (root, rng) { + var isRoot = isRootFromElement(root); + return getCellRng(rng, isRoot).bind(function (cellRng) { + return getTableSelectionFromCellRng(cellRng, isRoot); + }); + }; + var getCellIndex = function (cells, cell) { + return $_bwcteb4je5o2pl4.findIndex(cells, function (x) { + return $_7oppmo1dje5o2pz1.eq(x, cell); + }); + }; + var getSelectedCells = function (tableSelection) { + return $_c8weyc2eje5o2q85.liftN([ + getCellIndex(tableSelection.cells(), tableSelection.rng().start()), + getCellIndex(tableSelection.cells(), tableSelection.rng().end()) + ], function (startIndex, endIndex) { + return tableSelection.cells().slice(startIndex, endIndex + 1); + }); + }; + var getAction = function (tableSelection) { + return getSelectedCells(tableSelection).map(function (selected) { + var cells = tableSelection.cells(); + return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected); + }); + }; + var getActionFromCells = function (cells) { + return deleteAction.emptyCells(cells); + }; + var getActionFromRange = function (root, rng) { + return getTableSelectionFromRng(root, rng).bind(getAction); + }; + var $_fdeflh3tje5o2qh0 = { + getActionFromRange: getActionFromRange, + getActionFromCells: getActionFromCells + }; + + var getRanges = function (selection) { + var ranges = []; + if (selection) { + for (var i = 0; i < selection.rangeCount; i++) { + ranges.push(selection.getRangeAt(i)); + } + } + return ranges; + }; + var getSelectedNodes = function (ranges) { + return $_bwcteb4je5o2pl4.bind(ranges, function (range) { + var node = getSelectedNode(range); + return node ? [$_5tcb2dyje5o2pwu.fromDom(node)] : []; + }); + }; + var hasMultipleRanges = function (selection) { + return getRanges(selection).length > 1; + }; + var $_b8hi2e3vje5o2qhh = { + getRanges: getRanges, + getSelectedNodes: getSelectedNodes, + hasMultipleRanges: hasMultipleRanges + }; + + var getCellsFromRanges = function (ranges) { + return $_bwcteb4je5o2pl4.filter($_b8hi2e3vje5o2qhh.getSelectedNodes(ranges), isTableCell); + }; + var getCellsFromElement = function (elm) { + var selectedCells = $_b4jhpu2gje5o2q8e.descendants(elm, 'td[data-mce-selected],th[data-mce-selected]'); + return selectedCells; + }; + var getCellsFromElementOrRanges = function (ranges, element) { + var selectedCells = getCellsFromElement(element); + var rangeCells = getCellsFromRanges(ranges); + return selectedCells.length > 0 ? selectedCells : rangeCells; + }; + var getCellsFromEditor = function (editor) { + return getCellsFromElementOrRanges($_b8hi2e3vje5o2qhh.getRanges(editor.selection.getSel()), $_5tcb2dyje5o2pwu.fromDom(editor.getBody())); + }; + var $_9il6og3uje5o2qhd = { + getCellsFromRanges: getCellsFromRanges, + getCellsFromElement: getCellsFromElement, + getCellsFromElementOrRanges: getCellsFromElementOrRanges, + getCellsFromEditor: getCellsFromEditor + }; + + var emptyCells = function (editor, cells) { + $_bwcteb4je5o2pl4.each(cells, $_4kbg8z2nje5o2q9s.fillWithPaddingBr); + editor.selection.setCursorLocation(cells[0].dom(), 0); + return true; + }; + var deleteTableElement = function (editor, table) { + $_8fuvl23eje5o2qdv.deleteElement(editor, false, table); + return true; + }; + var deleteCellRange = function (editor, rootElm, rng) { + return $_fdeflh3tje5o2qh0.getActionFromRange(rootElm, rng).map(function (action) { + return action.fold($_enfhkv6je5o2ply.curry(deleteTableElement, editor), $_enfhkv6je5o2ply.curry(emptyCells, editor)); + }); + }; + var deleteCaptionRange = function (editor, caption) { + return emptyElement(editor, caption); + }; + var deleteTableRange = function (editor, rootElm, rng, startElm) { + return getParentCaption(rootElm, startElm).fold(function () { + return deleteCellRange(editor, rootElm, rng); + }, function (caption) { + return deleteCaptionRange(editor, caption); + }).getOr(false); + }; + var deleteRange$1 = function (editor, startElm) { + var rootNode = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var rng = editor.selection.getRng(); + var selectedCells = $_9il6og3uje5o2qhd.getCellsFromEditor(editor); + return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm); + }; + var getParentCell = function (rootElm, elm) { + return $_bwcteb4je5o2pl4.find($_yqcmh39je5o2qcw.parentsAndSelf(elm, rootElm), isTableCell); + }; + var getParentCaption = function (rootElm, elm) { + return $_bwcteb4je5o2pl4.find($_yqcmh39je5o2qcw.parentsAndSelf(elm, rootElm), function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'caption'; + }); + }; + var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) { + return $_g2kzjo2bje5o2q7n.navigate(forward, editor.getBody(), from).bind(function (to) { + return getParentCell(rootElm, $_5tcb2dyje5o2pwu.fromDom(to.getNode())).map(function (toCell) { + return $_7oppmo1dje5o2pz1.eq(toCell, fromCell) === false; + }); + }); + }; + var emptyElement = function (editor, elm) { + $_4kbg8z2nje5o2q9s.fillWithPaddingBr(elm); + editor.selection.setCursorLocation(elm.dom(), 0); + return Option.some(true); + }; + var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(fromCaption.dom()).bind(function (first) { + return $_g2kzjo2bje5o2q7n.lastPositionIn(fromCaption.dom()).map(function (last) { + return forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first); + }); + }).getOr(true); + }; + var emptyCaretCaption = function (editor, elm) { + return emptyElement(editor, elm); + }; + var validateCaretCaption = function (rootElm, fromCaption, to) { + return getParentCaption(rootElm, $_5tcb2dyje5o2pwu.fromDom(to.getNode())).map(function (toCaption) { + return $_7oppmo1dje5o2pz1.eq(toCaption, fromCaption) === false; + }); + }; + var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) { + return $_g2kzjo2bje5o2q7n.navigate(forward, editor.getBody(), from).bind(function (to) { + return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to); + }).or(Option.some(true)); + }; + var deleteCaretCells = function (editor, forward, rootElm, startElm) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return getParentCell(rootElm, startElm).bind(function (fromCell) { + return $_dizx5c35je5o2qcb.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from); + }); + }; + var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) { + var from = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return $_dizx5c35je5o2qcb.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from); + }; + var deleteCaret = function (editor, forward, startElm) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + return getParentCaption(rootElm, startElm).fold(function () { + return deleteCaretCells(editor, forward, rootElm, startElm); + }, function (fromCaption) { + return deleteCaretCaption(editor, forward, rootElm, fromCaption); + }).getOr(false); + }; + var backspaceDelete$4 = function (editor, forward) { + var startElm = $_5tcb2dyje5o2pwu.fromDom(editor.selection.getStart(true)); + var cells = $_9il6og3uje5o2qhd.getCellsFromEditor(editor); + return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret(editor, forward, startElm) : deleteRange$1(editor, startElm); + }; + var $_8pfx7e3sje5o2qgp = { backspaceDelete: backspaceDelete$4 }; + + var nativeCommand = function (editor, command) { + editor.getDoc().execCommand(command, false, null); + }; + var deleteCommand = function (editor) { + if ($_c7csnv3bje5o2qd6.backspaceDelete(editor, false)) { + return; + } else if ($_bzwx3b3fje5o2qe7.backspaceDelete(editor, false)) { + return; + } else if ($_3qfe0j2xje5o2qao.backspaceDelete(editor, false)) { + return; + } else if ($_8pfx7e3sje5o2qgp.backspaceDelete(editor)) { + return; + } else if ($_a476lo3aje5o2qd0.backspaceDelete(editor, false)) { + return; + } else { + nativeCommand(editor, 'Delete'); + $_7twey62zje5o2qay.paddEmptyBody(editor); + } + }; + var forwardDeleteCommand = function (editor) { + if ($_c7csnv3bje5o2qd6.backspaceDelete(editor, true)) { + return; + } else if ($_bzwx3b3fje5o2qe7.backspaceDelete(editor, true)) { + return; + } else if ($_3qfe0j2xje5o2qao.backspaceDelete(editor, true)) { + return; + } else if ($_8pfx7e3sje5o2qgp.backspaceDelete(editor)) { + return; + } else if ($_a476lo3aje5o2qd0.backspaceDelete(editor, true)) { + return; + } else { + nativeCommand(editor, 'ForwardDelete'); + } + }; + var $_e390q12wje5o2qam = { + deleteCommand: deleteCommand, + forwardDeleteCommand: forwardDeleteCommand + }; + + var isEq$3 = function (rng1, rng2) { + return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset); + }; + var $_aieo7z3yje5o2qlw = { isEq: isEq$3 }; + + var position = $_86drv18je5o2pyn.immutable('container', 'offset'); + var findParent = function (node, rootNode, predicate) { + while (node && node !== rootNode) { + if (predicate(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var hasParent = function (node, rootNode, predicate) { + return findParent(node, rootNode, predicate) !== null; + }; + var hasParentWithName = function (node, rootNode, name) { + return hasParent(node, rootNode, function (node) { + return node.nodeName === name; + }); + }; + var isTable$2 = function (node) { + return node && node.nodeName === 'TABLE'; + }; + var isTableCell$3 = function (node) { + return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); + }; + var isCeFalseCaretContainer = function (node, rootNode) { + return isCaretContainer(node) && hasParent(node, rootNode, $_4066yu3jje5o2qev.isCaretNode) === false; + }; + var hasBrBeforeAfter = function (dom, node, left) { + var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot()); + while (node = walker[left ? 'prev' : 'next']()) { + if ($_9owqcy1qje5o2q0e.isBr(node)) { + return true; + } + } + }; + var isPrevNode = function (node, name) { + return node.previousSibling && node.previousSibling.nodeName === name; + }; + var hasContentEditableFalseParent = function (body, node) { + while (node && node !== body) { + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(node)) { + return true; + } + node = node.parentNode; + } + return false; + }; + var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) { + var walker, lastInlineElement, parentBlockContainer; + var body = dom.getRoot(); + var node; + var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body; + if (left && $_9owqcy1qje5o2q0e.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) { + return Option.some(position(startNode.parentNode, dom.nodeIndex(startNode))); + } + walker = new TreeWalker(startNode, parentBlockContainer); + while (node = walker[left ? 'prev' : 'next']()) { + if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) { + return Option.none(); + } + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + if (hasParentWithName(node, body, 'A') === false) { + return Option.some(position(node, left ? node.nodeValue.length : 0)); + } + return Option.none(); + } + if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) { + return Option.none(); + } + lastInlineElement = node; + } + if (collapsed && lastInlineElement) { + return Option.some(position(lastInlineElement, 0)); + } + return Option.none(); + }; + var normalizeEndPoint = function (dom, collapsed, start, rng) { + var container, offset, walker; + var body = dom.getRoot(); + var node, nonEmptyElementsMap; + var directionLeft, isAfterNode, normalized = false; + container = rng[(start ? 'start' : 'end') + 'Container']; + offset = rng[(start ? 'start' : 'end') + 'Offset']; + isAfterNode = $_9owqcy1qje5o2q0e.isElement(container) && offset === container.childNodes.length; + nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + directionLeft = start; + if (isCaretContainer(container)) { + return Option.none(); + } + if ($_9owqcy1qje5o2q0e.isElement(container) && offset > container.childNodes.length - 1) { + directionLeft = false; + } + if ($_9owqcy1qje5o2q0e.isDocument(container)) { + container = body; + offset = 0; + } + if (container === body) { + if (directionLeft) { + node = container.childNodes[offset > 0 ? offset - 1 : 0]; + if (node) { + if (isCaretContainer(node)) { + return Option.none(); + } + if (nonEmptyElementsMap[node.nodeName] || isTable$2(node)) { + return Option.none(); + } + } + } + if (container.hasChildNodes()) { + offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1); + container = container.childNodes[offset]; + offset = $_9owqcy1qje5o2q0e.isText(container) && isAfterNode ? container.data.length : 0; + if (!collapsed && container === body.lastChild && isTable$2(container)) { + return Option.none(); + } + if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) { + return Option.none(); + } + if (container.hasChildNodes() && isTable$2(container) === false) { + node = container; + walker = new TreeWalker(container, body); + do { + if ($_9owqcy1qje5o2q0e.isContentEditableFalse(node) || isCaretContainer(node)) { + normalized = false; + break; + } + if ($_9owqcy1qje5o2q0e.isText(node) && node.nodeValue.length > 0) { + offset = directionLeft ? 0 : node.nodeValue.length; + container = node; + normalized = true; + break; + } + if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) { + offset = dom.nodeIndex(node); + container = node.parentNode; + if ((node.nodeName === 'IMG' || node.nodeName === 'PRE') && !directionLeft) { + offset++; + } + normalized = true; + break; + } + } while (node = directionLeft ? walker.next() : walker.prev()); + } + } + } + if (collapsed) { + if ($_9owqcy1qje5o2q0e.isText(container) && offset === 0) { + findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + if ($_9owqcy1qje5o2q0e.isElement(container)) { + node = container.childNodes[offset]; + if (!node) { + node = container.childNodes[offset - 1]; + } + if (node && $_9owqcy1qje5o2q0e.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) { + findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + } + } + if (directionLeft && !collapsed && $_9owqcy1qje5o2q0e.isText(container) && offset === container.nodeValue.length) { + findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) { + container = pos.container(); + offset = pos.offset(); + normalized = true; + }); + } + return normalized ? Option.some(position(container, offset)) : Option.none(); + }; + var normalize$1 = function (dom, rng) { + var collapsed = rng.collapsed, normRng = rng.cloneRange(); + normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) { + normRng.setStart(pos.container(), pos.offset()); + }); + if (!collapsed) { + normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) { + normRng.setEnd(pos.container(), pos.offset()); + }); + } + if (collapsed) { + normRng.collapse(true); + } + return $_aieo7z3yje5o2qlw.isEq(rng, normRng) ? Option.none() : Option.some(normRng); + }; + var $_1t8l6x3xje5o2qlk = { normalize: normalize$1 }; + + var hasRightSideContent = function (schema, container, parentBlock) { + var walker = new TreeWalker(container, parentBlock); + var node; + var nonEmptyElementsMap = schema.getNonEmptyElements(); + while (node = walker.next()) { + if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) { + return true; + } + } + }; + var scrollToBr = function (dom, selection, brElm) { + var marker = dom.create('span', {}, ' '); + brElm.parentNode.insertBefore(marker, brElm); + selection.scrollIntoView(marker); + dom.remove(marker); + }; + var moveSelectionToBr = function (dom, selection, brElm, extraBr) { + var rng = dom.createRng(); + if (!extraBr) { + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + } else { + rng.setStartBefore(brElm); + rng.setEndBefore(brElm); + } + selection.setRng(rng); + }; + var insertBrAtCaret = function (editor, evt) { + var selection = editor.selection, dom = editor.dom; + var brElm, extraBr; + var rng = selection.getRng(); + $_1t8l6x3xje5o2qlk.normalize(dom, rng).each(function (normRng) { + rng.setStart(normRng.startContainer, normRng.startOffset); + rng.setEnd(normRng.endContainer, normRng.endOffset); + }); + var offset = rng.startOffset; + var container = rng.startContainer; + if (container.nodeType === 1 && container.hasChildNodes()) { + var isAfterLastNodeInContainer = offset > container.childNodes.length - 1; + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + if (isAfterLastNodeInContainer && container.nodeType === 3) { + offset = container.nodeValue.length; + } else { + offset = 0; + } + } + var parentBlock = dom.getParent(container, dom.isBlock); + var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; + var isControlKey = evt && evt.ctrlKey; + if (containerBlockName === 'LI' && !isControlKey) { + parentBlock = containerBlock; + } + if (container && container.nodeType === 3 && offset >= container.nodeValue.length) { + if (!hasRightSideContent(editor.schema, container, parentBlock)) { + brElm = dom.create('br'); + rng.insertNode(brElm); + rng.setStartAfter(brElm); + rng.setEndAfter(brElm); + extraBr = true; + } + } + brElm = dom.create('br'); + rng.insertNode(brElm); + scrollToBr(dom, selection, brElm); + moveSelectionToBr(dom, selection, brElm, extraBr); + editor.undoManager.add(); + }; + var insertBrBefore = function (editor, inline) { + var br = $_5tcb2dyje5o2pwu.fromTag('br'); + $_elbl2s2oje5o2q9z.before($_5tcb2dyje5o2pwu.fromDom(inline), br); + editor.undoManager.add(); + }; + var insertBrAfter = function (editor, inline) { + if (!hasBrAfter(editor.getBody(), inline)) { + $_elbl2s2oje5o2q9z.after($_5tcb2dyje5o2pwu.fromDom(inline), $_5tcb2dyje5o2pwu.fromTag('br')); + } + var br = $_5tcb2dyje5o2pwu.fromTag('br'); + $_elbl2s2oje5o2q9z.after($_5tcb2dyje5o2pwu.fromDom(inline), br); + scrollToBr(editor.dom, editor.selection, br.dom()); + moveSelectionToBr(editor.dom, editor.selection, br.dom(), false); + editor.undoManager.add(); + }; + var isBeforeBr = function (pos) { + return $_9owqcy1qje5o2q0e.isBr(pos.getNode()); + }; + var hasBrAfter = function (rootNode, startNode) { + if (isBeforeBr(CaretPosition$1.after(startNode))) { + return true; + } else { + return $_g2kzjo2bje5o2q7n.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) { + return $_9owqcy1qje5o2q0e.isBr(pos.getNode()); + }).getOr(false); + } + }; + var isAnchorLink = function (elm) { + return elm && elm.nodeName === 'A' && 'href' in elm; + }; + var isInsideAnchor = function (location) { + return location.fold($_enfhkv6je5o2ply.constant(false), isAnchorLink, isAnchorLink, $_enfhkv6je5o2ply.constant(false)); + }; + var readInlineAnchorLocation = function (editor) { + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var position = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + return $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor); + }; + var insertBrOutsideAnchor = function (editor, location) { + location.fold($_enfhkv6je5o2ply.noop, $_enfhkv6je5o2ply.curry(insertBrBefore, editor), $_enfhkv6je5o2ply.curry(insertBrAfter, editor), $_enfhkv6je5o2ply.noop); + }; + var insert = function (editor, evt) { + var anchorLocation = readInlineAnchorLocation(editor); + if (anchorLocation.isSome()) { + anchorLocation.each($_enfhkv6je5o2ply.curry(insertBrOutsideAnchor, editor)); + } else { + insertBrAtCaret(editor, evt); + } + }; + var $_1esduy3wje5o2qhl = { insert: insert }; + + var adt = $_e73lvt3dje5o2qdq.generate([ + { 'before': ['element'] }, + { + 'on': [ + 'element', + 'offset' + ] + }, + { after: ['element'] } + ]); + var cata = function (subject, onBefore, onOn, onAfter) { + return subject.fold(onBefore, onOn, onAfter); + }; + var getStart = function (situ) { + return situ.fold($_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity, $_enfhkv6je5o2ply.identity); + }; + var $_78xwh641je5o2qmd = { + before: adt.before, + on: adt.on, + after: adt.after, + cata: cata, + getStart: getStart + }; + + var type$1 = $_e73lvt3dje5o2qdq.generate([ + { domRange: ['rng'] }, + { + relative: [ + 'startSitu', + 'finishSitu' + ] + }, + { + exact: [ + 'start', + 'soffset', + 'finish', + 'foffset' + ] + } + ]); + var range$1 = $_86drv18je5o2pyn.immutable('start', 'soffset', 'finish', 'foffset'); + var exactFromRange = function (simRange) { + return type$1.exact(simRange.start(), simRange.soffset(), simRange.finish(), simRange.foffset()); + }; + var getStart$1 = function (selection) { + return selection.match({ + domRange: function (rng) { + return $_5tcb2dyje5o2pwu.fromDom(rng.startContainer); + }, + relative: function (startSitu, finishSitu) { + return $_78xwh641je5o2qmd.getStart(startSitu); + }, + exact: function (start, soffset, finish, foffset) { + return start; + } + }); + }; + var getWin = function (selection) { + var start = getStart$1(selection); + return $_a6mttx17je5o2pyd.defaultView(start); + }; + var $_8b9nu40je5o2qm8 = { + domRange: type$1.domRange, + relative: type$1.relative, + exact: type$1.exact, + exactFromRange: exactFromRange, + range: range$1, + getWin: getWin + }; + + var browser$3 = $_2hq237mje5o2pvu.detect().browser; + var clamp = function (offset, element) { + var max = $_95wn8qzje5o2px0.isText(element) ? $_3600ts2rje5o2qa7.get(element).length : $_a6mttx17je5o2pyd.children(element).length + 1; + if (offset > max) { + return max; + } else if (offset < 0) { + return 0; + } + return offset; + }; + var normalizeRng = function (rng) { + return $_8b9nu40je5o2qm8.range(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish())); + }; + var isOrContains = function (root, elm) { + return $_7oppmo1dje5o2pz1.contains(root, elm) || $_7oppmo1dje5o2pz1.eq(root, elm); + }; + var isRngInRoot = function (root) { + return function (rng) { + return isOrContains(root, rng.start()) && isOrContains(root, rng.finish()); + }; + }; + var shouldStore = function (editor) { + return editor.inline === true || browser$3.isIE(); + }; + var nativeRangeToSelectionRange = function (r) { + return $_8b9nu40je5o2qm8.range($_5tcb2dyje5o2pwu.fromDom(r.startContainer), r.startOffset, $_5tcb2dyje5o2pwu.fromDom(r.endContainer), r.endOffset); + }; + var readRange = function (win) { + var selection = win.getSelection(); + var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0)); + return rng.map(nativeRangeToSelectionRange); + }; + var getBookmark$2 = function (root) { + var win = $_a6mttx17je5o2pyd.defaultView(root); + return readRange(win.dom()).filter(isRngInRoot(root)); + }; + var validate = function (root, bookmark) { + return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng); + }; + var bookmarkToNativeRng = function (bookmark) { + var rng = document.createRange(); + rng.setStart(bookmark.start().dom(), bookmark.soffset()); + rng.setEnd(bookmark.finish().dom(), bookmark.foffset()); + return Option.some(rng); + }; + var store = function (editor) { + var newBookmark = shouldStore(editor) ? getBookmark$2($_5tcb2dyje5o2pwu.fromDom(editor.getBody())) : Option.none(); + editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; + }; + var storeNative = function (editor, rng) { + var root = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var range = shouldStore(editor) ? Option.from(rng) : Option.none(); + var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root)); + editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark; + }; + var getRng = function (editor) { + var bookmark = editor.bookmark ? editor.bookmark : Option.none(); + return bookmark.bind($_enfhkv6je5o2ply.curry(validate, $_5tcb2dyje5o2pwu.fromDom(editor.getBody()))).bind(bookmarkToNativeRng); + }; + var restore = function (editor) { + getRng(editor).each(function (rng) { + editor.selection.setRng(rng); + }); + }; + var $_fnd7h33zje5o2qly = { + store: store, + storeNative: storeNative, + readRange: readRange, + restore: restore, + getRng: getRng, + getBookmark: getBookmark$2, + validate: validate + }; + + var indentElement = function (dom, command, useMargin, value, unit, element) { + if (dom.getContentEditable(element) === 'false') { + return; + } + if (element.nodeName !== 'LI') { + var indentStyleName = useMargin ? 'margin' : 'padding'; + indentStyleName = element.nodeName === 'TABLE' ? 'margin' : indentStyleName; + indentStyleName += dom.getStyle(element, 'direction', true) === 'rtl' ? 'Right' : 'Left'; + if (command === 'outdent') { + var styleValue = Math.max(0, parseInt(element.style[indentStyleName] || 0, 10) - value); + dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : ''); + } else { + var styleValue = parseInt(element.style[indentStyleName] || 0, 10) + value + unit; + dom.setStyle(element, indentStyleName, styleValue); + } + } + }; + var handle = function (editor, command) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection, formatter = editor.formatter; + var indentUnit = /[a-z%]+$/i.exec(settings.indentation)[0]; + var indentValue = parseInt(settings.indentation, 10); + var useMargin = editor.getParam('indent_use_margin', false); + if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) { + if (!settings.forced_root_block && !dom.getParent(selection.getNode(), dom.isBlock)) { + formatter.apply('div'); + } + $_bwcteb4je5o2pl4.each(selection.getSelectedBlocks(), function (element) { + return indentElement(dom, command, useMargin, indentValue, indentUnit, element); + }); + } + }; + + var each$9 = $_a5gegtjje5o2pum.each; + var extend$2 = $_a5gegtjje5o2pum.extend; + var map$2 = $_a5gegtjje5o2pum.map; + var inArray$2 = $_a5gegtjje5o2pum.inArray; + var explode$2 = $_a5gegtjje5o2pum.explode; + var TRUE = true; + var FALSE = false; + function EditorCommands (editor) { + var dom, selection, formatter; + var commands = { + state: {}, + exec: {}, + value: {} + }; + var settings = editor.settings, bookmark; + editor.on('PreInit', function () { + dom = editor.dom; + selection = editor.selection; + settings = editor.settings; + formatter = editor.formatter; + }); + var execCommand = function (command, ui, value, args) { + var func, customCommand, state = false; + if (editor.removed) { + return; + } + if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) { + editor.focus(); + } else { + $_fnd7h33zje5o2qly.restore(editor); + } + args = editor.fire('BeforeExecCommand', { + command: command, + ui: ui, + value: value + }); + if (args.isDefaultPrevented()) { + return false; + } + customCommand = command.toLowerCase(); + if (func = commands.exec[customCommand]) { + func(customCommand, ui, value); + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + each$9(editor.plugins, function (p) { + if (p.execCommand && p.execCommand(command, ui, value)) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + state = true; + return false; + } + }); + if (state) { + return state; + } + if (editor.theme && editor.theme.execCommand && editor.theme.execCommand(command, ui, value)) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + try { + state = editor.getDoc().execCommand(command, ui, value); + } catch (ex) { + } + if (state) { + editor.fire('ExecCommand', { + command: command, + ui: ui, + value: value + }); + return true; + } + return false; + }; + var queryCommandState = function (command) { + var func; + if (editor.quirks.isHidden() || editor.removed) { + return; + } + command = command.toLowerCase(); + if (func = commands.state[command]) { + return func(command); + } + try { + return editor.getDoc().queryCommandState(command); + } catch (ex) { + } + return false; + }; + var queryCommandValue = function (command) { + var func; + if (editor.quirks.isHidden() || editor.removed) { + return; + } + command = command.toLowerCase(); + if (func = commands.value[command]) { + return func(command); + } + try { + return editor.getDoc().queryCommandValue(command); + } catch (ex) { + } + }; + var addCommands = function (commandList, type) { + type = type || 'exec'; + each$9(commandList, function (callback, command) { + each$9(command.toLowerCase().split(','), function (command) { + commands[type][command] = callback; + }); + }); + }; + var addCommand = function (command, callback, scope) { + command = command.toLowerCase(); + commands.exec[command] = function (command, ui, value, args) { + return callback.call(scope || editor, ui, value, args); + }; + }; + var queryCommandSupported = function (command) { + command = command.toLowerCase(); + if (commands.exec[command]) { + return true; + } + try { + return editor.getDoc().queryCommandSupported(command); + } catch (ex) { + } + return false; + }; + var addQueryStateHandler = function (command, callback, scope) { + command = command.toLowerCase(); + commands.state[command] = function () { + return callback.call(scope || editor); + }; + }; + var addQueryValueHandler = function (command, callback, scope) { + command = command.toLowerCase(); + commands.value[command] = function () { + return callback.call(scope || editor); + }; + }; + var hasCustomCommand = function (command) { + command = command.toLowerCase(); + return !!commands.exec[command]; + }; + extend$2(this, { + execCommand: execCommand, + queryCommandState: queryCommandState, + queryCommandValue: queryCommandValue, + queryCommandSupported: queryCommandSupported, + addCommands: addCommands, + addCommand: addCommand, + addQueryStateHandler: addQueryStateHandler, + addQueryValueHandler: addQueryValueHandler, + hasCustomCommand: hasCustomCommand + }); + var execNativeCommand = function (command, ui, value) { + if (ui === undefined) { + ui = FALSE; + } + if (value === undefined) { + value = null; + } + return editor.getDoc().execCommand(command, ui, value); + }; + var isFormatMatch = function (name) { + return formatter.match(name); + }; + var toggleFormat = function (name, value) { + formatter.toggle(name, value ? { value: value } : undefined); + editor.nodeChanged(); + }; + var storeSelection = function (type) { + bookmark = selection.getBookmark(type); + }; + var restoreSelection = function () { + selection.moveToBookmark(bookmark); + }; + addCommands({ + 'mceResetDesignMode,mceBeginUndoLevel': function () { + }, + 'mceEndUndoLevel,mceAddUndoLevel': function () { + editor.undoManager.add(); + }, + 'Cut,Copy,Paste': function (command) { + var doc = editor.getDoc(); + var failed; + try { + execNativeCommand(command); + } catch (ex) { + failed = TRUE; + } + if (command === 'paste' && !doc.queryCommandEnabled(command)) { + failed = true; + } + if (failed || !doc.queryCommandSupported(command)) { + var msg = editor.translate('Your browser doesn\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.'); + if ($_9bd8pn9je5o2pp2.mac) { + msg = msg.replace(/Ctrl\+/g, '\u2318+'); + } + editor.notificationManager.open({ + text: msg, + type: 'error' + }); + } + }, + 'unlink': function () { + if (selection.isCollapsed()) { + var elm = editor.dom.getParent(editor.selection.getStart(), 'a'); + if (elm) { + editor.dom.remove(elm, true); + } + return; + } + formatter.remove('link'); + }, + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) { + var align = command.substring(7); + if (align === 'full') { + align = 'justify'; + } + each$9('left,center,right,justify'.split(','), function (name) { + if (align !== name) { + formatter.remove('align' + name); + } + }); + if (align !== 'none') { + toggleFormat('align' + align); + } + }, + 'InsertUnorderedList,InsertOrderedList': function (command) { + var listElm, listParent; + execNativeCommand(command); + listElm = dom.getParent(selection.getNode(), 'ol,ul'); + if (listElm) { + listParent = listElm.parentNode; + if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) { + storeSelection(); + dom.split(listParent, listElm); + restoreSelection(); + } + } + }, + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { + toggleFormat(command); + }, + 'ForeColor,HiliteColor,FontName': function (command, ui, value) { + toggleFormat(command, value); + }, + 'FontSize': function (command, ui, value) { + var fontClasses, fontSizes; + if (value >= 1 && value <= 7) { + fontSizes = explode$2(settings.font_size_style_values); + fontClasses = explode$2(settings.font_size_classes); + if (fontClasses) { + value = fontClasses[value - 1] || value; + } else { + value = fontSizes[value - 1] || value; + } + } + toggleFormat(command, value); + }, + 'RemoveFormat': function (command) { + formatter.remove(command); + }, + 'mceBlockQuote': function () { + toggleFormat('blockquote'); + }, + 'FormatBlock': function (command, ui, value) { + return toggleFormat(value || 'p'); + }, + 'mceCleanup': function () { + var bookmark = selection.getBookmark(); + editor.setContent(editor.getContent({ cleanup: TRUE }), { cleanup: TRUE }); + selection.moveToBookmark(bookmark); + }, + 'mceRemoveNode': function (command, ui, value) { + var node = value || selection.getNode(); + if (node !== editor.getBody()) { + storeSelection(); + editor.dom.remove(node, TRUE); + restoreSelection(); + } + }, + 'mceSelectNodeDepth': function (command, ui, value) { + var counter = 0; + dom.getParent(selection.getNode(), function (node) { + if (node.nodeType === 1 && counter++ === value) { + selection.select(node); + return FALSE; + } + }, editor.getBody()); + }, + 'mceSelectNode': function (command, ui, value) { + selection.select(value); + }, + 'mceInsertContent': function (command, ui, value) { + $_d42uuu1wje5o2q4b.insertAtCaret(editor, value); + }, + 'mceInsertRawHTML': function (command, ui, value) { + selection.setContent('tiny_mce_marker'); + editor.setContent(editor.getContent().replace(/tiny_mce_marker/g, function () { + return value; + })); + }, + 'mceToggleFormat': function (command, ui, value) { + toggleFormat(value); + }, + 'mceSetContent': function (command, ui, value) { + editor.setContent(value); + }, + 'Indent,Outdent': function (command) { + handle(editor, command); + }, + 'mceRepaint': function () { + }, + 'InsertHorizontalRule': function () { + editor.execCommand('mceInsertContent', false, '<hr />'); + }, + 'mceToggleVisualAid': function () { + editor.hasVisual = !editor.hasVisual; + editor.addVisual(); + }, + 'mceReplaceContent': function (command, ui, value) { + editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, selection.getContent({ format: 'text' }))); + }, + 'mceInsertLink': function (command, ui, value) { + var anchor; + if (typeof value === 'string') { + value = { href: value }; + } + anchor = dom.getParent(selection.getNode(), 'a'); + value.href = value.href.replace(' ', '%20'); + if (!anchor || !value.href) { + formatter.remove('link'); + } + if (value.href) { + formatter.apply('link', value, anchor); + } + }, + 'selectAll': function () { + var editingHost = dom.getParent(selection.getStart(), $_9owqcy1qje5o2q0e.isContentEditableTrue); + if (editingHost) { + var rng = dom.createRng(); + rng.selectNodeContents(editingHost); + selection.setRng(rng); + } + }, + 'delete': function () { + $_e390q12wje5o2qam.deleteCommand(editor); + }, + 'forwardDelete': function () { + $_e390q12wje5o2qam.forwardDeleteCommand(editor); + }, + 'mceNewDocument': function () { + editor.setContent(''); + }, + 'InsertLineBreak': function (command, ui, value) { + $_1esduy3wje5o2qhl.insert(editor, value); + return true; + } + }); + addCommands({ + 'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull': function (command) { + var name = 'align' + command.substring(7); + var nodes = selection.isCollapsed() ? [dom.getParent(selection.getNode(), dom.isBlock)] : selection.getSelectedBlocks(); + var matches = map$2(nodes, function (node) { + return !!formatter.matchNode(node, name); + }); + return inArray$2(matches, TRUE) !== -1; + }, + 'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) { + return isFormatMatch(command); + }, + 'mceBlockQuote': function () { + return isFormatMatch('blockquote'); + }, + 'Outdent': function () { + var node; + if (settings.inline_styles) { + if ((node = dom.getParent(selection.getStart(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { + return TRUE; + } + if ((node = dom.getParent(selection.getEnd(), dom.isBlock)) && parseInt(node.style.paddingLeft, 10) > 0) { + return TRUE; + } + } + return queryCommandState('InsertUnorderedList') || queryCommandState('InsertOrderedList') || !settings.inline_styles && !!dom.getParent(selection.getNode(), 'BLOCKQUOTE'); + }, + 'InsertUnorderedList,InsertOrderedList': function (command) { + var list = dom.getParent(selection.getNode(), 'ul,ol'); + return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL'); + } + }, 'state'); + addCommands({ + 'FontSize,FontName': function (command) { + var value = 0, parent; + if (parent = dom.getParent(selection.getNode(), 'span')) { + if (command === 'fontsize') { + value = parent.style.fontSize; + } else { + value = parent.style.fontFamily.replace(/, /g, ',').replace(/[\'\"]/g, '').toLowerCase(); + } + } + return value; + } + }, 'value'); + addCommands({ + Undo: function () { + editor.undoManager.undo(); + }, + Redo: function () { + editor.undoManager.redo(); + } + }); + } + + var nativeEvents = $_a5gegtjje5o2pum.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' '); + var Dispatcher = function (settings) { + var self = this; + var scope, bindings = {}, toggleEvent; + var returnFalse = function () { + return false; + }; + var returnTrue = function () { + return true; + }; + settings = settings || {}; + scope = settings.scope || self; + toggleEvent = settings.toggleEvent || returnFalse; + var fire = function (name, args) { + var handlers, i, l, callback; + name = name.toLowerCase(); + args = args || {}; + args.type = name; + if (!args.target) { + args.target = scope; + } + if (!args.preventDefault) { + args.preventDefault = function () { + args.isDefaultPrevented = returnTrue; + }; + args.stopPropagation = function () { + args.isPropagationStopped = returnTrue; + }; + args.stopImmediatePropagation = function () { + args.isImmediatePropagationStopped = returnTrue; + }; + args.isDefaultPrevented = returnFalse; + args.isPropagationStopped = returnFalse; + args.isImmediatePropagationStopped = returnFalse; + } + if (settings.beforeFire) { + settings.beforeFire(args); + } + handlers = bindings[name]; + if (handlers) { + for (i = 0, l = handlers.length; i < l; i++) { + callback = handlers[i]; + if (callback.once) { + off(name, callback.func); + } + if (args.isImmediatePropagationStopped()) { + args.stopPropagation(); + return args; + } + if (callback.func.call(scope, args) === false) { + args.preventDefault(); + return args; + } + } + } + return args; + }; + var on = function (name, callback, prepend, extra) { + var handlers, names, i; + if (callback === false) { + callback = returnFalse; + } + if (callback) { + callback = { func: callback }; + if (extra) { + $_a5gegtjje5o2pum.extend(callback, extra); + } + names = name.toLowerCase().split(' '); + i = names.length; + while (i--) { + name = names[i]; + handlers = bindings[name]; + if (!handlers) { + handlers = bindings[name] = []; + toggleEvent(name, true); + } + if (prepend) { + handlers.unshift(callback); + } else { + handlers.push(callback); + } + } + } + return self; + }; + var off = function (name, callback) { + var i, handlers, bindingName, names, hi; + if (name) { + names = name.toLowerCase().split(' '); + i = names.length; + while (i--) { + name = names[i]; + handlers = bindings[name]; + if (!name) { + for (bindingName in bindings) { + toggleEvent(bindingName, false); + delete bindings[bindingName]; + } + return self; + } + if (handlers) { + if (!callback) { + handlers.length = 0; + } else { + hi = handlers.length; + while (hi--) { + if (handlers[hi].func === callback) { + handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1)); + bindings[name] = handlers; + } + } + } + if (!handlers.length) { + toggleEvent(name, false); + delete bindings[name]; + } + } + } + } else { + for (name in bindings) { + toggleEvent(name, false); + } + bindings = {}; + } + return self; + }; + var once = function (name, callback, prepend) { + return on(name, callback, prepend, { once: true }); + }; + var has = function (name) { + name = name.toLowerCase(); + return !(!bindings[name] || bindings[name].length === 0); + }; + self.fire = fire; + self.on = on; + self.off = off; + self.once = once; + self.has = has; + }; + Dispatcher.isNative = function (name) { + return !!nativeEvents[name.toLowerCase()]; + }; + + var getEventDispatcher = function (obj) { + if (!obj._eventDispatcher) { + obj._eventDispatcher = new Dispatcher({ + scope: obj, + toggleEvent: function (name, state) { + if (Dispatcher.isNative(name) && obj.toggleNativeEvent) { + obj.toggleNativeEvent(name, state); + } + } + }); + } + return obj._eventDispatcher; + }; + var $_8mfz0u44je5o2qmp = { + fire: function (name, args, bubble) { + var self = this; + if (self.removed && name !== 'remove') { + return args; + } + args = getEventDispatcher(self).fire(name, args, bubble); + if (bubble !== false && self.parent) { + var parent_1 = self.parent(); + while (parent_1 && !args.isPropagationStopped()) { + parent_1.fire(name, args, false); + parent_1 = parent_1.parent(); + } + } + return args; + }, + on: function (name, callback, prepend) { + return getEventDispatcher(this).on(name, callback, prepend); + }, + off: function (name, callback) { + return getEventDispatcher(this).off(name, callback); + }, + once: function (name, callback) { + return getEventDispatcher(this).once(name, callback); + }, + hasEventListeners: function (name) { + return getEventDispatcher(this).has(name); + } + }; + + var DOM$1 = DOMUtils.DOM; + var customEventRootDelegates; + var getEventTarget = function (editor, eventName) { + if (eventName === 'selectionchange') { + return editor.getDoc(); + } + if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) { + return editor.getDoc().documentElement; + } + if (editor.settings.event_root) { + if (!editor.eventRoot) { + editor.eventRoot = DOM$1.select(editor.settings.event_root)[0]; + } + return editor.eventRoot; + } + return editor.getBody(); + }; + var bindEventDelegate = function (editor, eventName) { + var eventRootElm, delegate; + var isListening = function (editor) { + return !editor.hidden && !editor.readonly; + }; + if (!editor.delegates) { + editor.delegates = {}; + } + if (editor.delegates[eventName] || editor.removed) { + return; + } + eventRootElm = getEventTarget(editor, eventName); + if (editor.settings.event_root) { + if (!customEventRootDelegates) { + customEventRootDelegates = {}; + editor.editorManager.on('removeEditor', function () { + var name; + if (!editor.editorManager.activeEditor) { + if (customEventRootDelegates) { + for (name in customEventRootDelegates) { + editor.dom.unbind(getEventTarget(editor, name)); + } + customEventRootDelegates = null; + } + } + }); + } + if (customEventRootDelegates[eventName]) { + return; + } + delegate = function (e) { + var target = e.target; + var editors = editor.editorManager.get(); + var i = editors.length; + while (i--) { + var body = editors[i].getBody(); + if (body === target || DOM$1.isChildOf(target, body)) { + if (isListening(editors[i])) { + editors[i].fire(eventName, e); + } + } + } + }; + customEventRootDelegates[eventName] = delegate; + DOM$1.bind(eventRootElm, eventName, delegate); + } else { + delegate = function (e) { + if (isListening(editor)) { + editor.fire(eventName, e); + } + }; + DOM$1.bind(eventRootElm, eventName, delegate); + editor.delegates[eventName] = delegate; + } + }; + var EditorObservable = { + bindPendingEventDelegates: function () { + var self = this; + $_a5gegtjje5o2pum.each(self._pendingNativeEvents, function (name) { + bindEventDelegate(self, name); + }); + }, + toggleNativeEvent: function (name, state) { + var self = this; + if (name === 'focus' || name === 'blur') { + return; + } + if (state) { + if (self.initialized) { + bindEventDelegate(self, name); + } else { + if (!self._pendingNativeEvents) { + self._pendingNativeEvents = [name]; + } else { + self._pendingNativeEvents.push(name); + } + } + } else if (self.initialized) { + self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); + delete self.delegates[name]; + } + }, + unbindAllNativeEvents: function () { + var self = this; + var body = self.getBody(); + var dom = self.dom; + var name; + if (self.delegates) { + for (name in self.delegates) { + self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]); + } + delete self.delegates; + } + if (!self.inline && body && dom) { + body.onload = null; + dom.unbind(self.getWin()); + dom.unbind(self.getDoc()); + } + if (dom) { + dom.unbind(body); + dom.unbind(self.getContainer()); + } + } + }; + EditorObservable = $_a5gegtjje5o2pum.extend({}, $_8mfz0u44je5o2qmp, EditorObservable); + var EditorObservable$1 = EditorObservable; + + var setEditorCommandState = function (editor, cmd, state) { + try { + editor.getDoc().execCommand(cmd, false, state); + } catch (ex) { + } + }; + var clickBlocker = function (editor) { + var target, handler; + target = editor.getBody(); + handler = function (e) { + if (editor.dom.getParents(e.target, 'a').length > 0) { + e.preventDefault(); + } + }; + editor.dom.bind(target, 'click', handler); + return { + unbind: function () { + editor.dom.unbind(target, 'click', handler); + } + }; + }; + var toggleReadOnly = function (editor, state) { + if (editor._clickBlocker) { + editor._clickBlocker.unbind(); + editor._clickBlocker = null; + } + if (state) { + editor._clickBlocker = clickBlocker(editor); + editor.selection.controlSelection.hideResizeRect(); + editor.readonly = true; + editor.getBody().contentEditable = false; + } else { + editor.readonly = false; + editor.getBody().contentEditable = true; + setEditorCommandState(editor, 'StyleWithCSS', false); + setEditorCommandState(editor, 'enableInlineTableEditing', false); + setEditorCommandState(editor, 'enableObjectResizing', false); + editor.focus(); + editor.nodeChanged(); + } + }; + var setMode = function (editor, mode) { + var currentMode = editor.readonly ? 'readonly' : 'design'; + if (mode === currentMode) { + return; + } + if (editor.initialized) { + toggleReadOnly(editor, mode === 'readonly'); + } else { + editor.on('init', function () { + toggleReadOnly(editor, mode === 'readonly'); + }); + } + editor.fire('SwitchMode', { mode: mode }); + }; + var $_7uzwj846je5o2qmw = { setMode: setMode }; + + var each$10 = $_a5gegtjje5o2pum.each; + var explode$3 = $_a5gegtjje5o2pum.explode; + var keyCodeLookup = { + f9: 120, + f10: 121, + f11: 122 + }; + var modifierNames = $_a5gegtjje5o2pum.makeMap('alt,ctrl,shift,meta,access'); + function Shortcuts (editor) { + var self = this; + var shortcuts = {}; + var pendingPatterns = []; + var parseShortcut = function (pattern) { + var id, key; + var shortcut = {}; + each$10(explode$3(pattern, '+'), function (value) { + if (value in modifierNames) { + shortcut[value] = true; + } else { + if (/^[0-9]{2,}$/.test(value)) { + shortcut.keyCode = parseInt(value, 10); + } else { + shortcut.charCode = value.charCodeAt(0); + shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0); + } + } + }); + id = [shortcut.keyCode]; + for (key in modifierNames) { + if (shortcut[key]) { + id.push(key); + } else { + shortcut[key] = false; + } + } + shortcut.id = id.join(','); + if (shortcut.access) { + shortcut.alt = true; + if ($_9bd8pn9je5o2pp2.mac) { + shortcut.ctrl = true; + } else { + shortcut.shift = true; + } + } + if (shortcut.meta) { + if ($_9bd8pn9je5o2pp2.mac) { + shortcut.meta = true; + } else { + shortcut.ctrl = true; + shortcut.meta = false; + } + } + return shortcut; + }; + var createShortcut = function (pattern, desc, cmdFunc, scope) { + var shortcuts; + shortcuts = $_a5gegtjje5o2pum.map(explode$3(pattern, '>'), parseShortcut); + shortcuts[shortcuts.length - 1] = $_a5gegtjje5o2pum.extend(shortcuts[shortcuts.length - 1], { + func: cmdFunc, + scope: scope || editor + }); + return $_a5gegtjje5o2pum.extend(shortcuts[0], { + desc: editor.translate(desc), + subpatterns: shortcuts.slice(1) + }); + }; + var hasModifier = function (e) { + return e.altKey || e.ctrlKey || e.metaKey; + }; + var isFunctionKey = function (e) { + return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123; + }; + var matchShortcut = function (e, shortcut) { + if (!shortcut) { + return false; + } + if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) { + return false; + } + if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) { + return false; + } + if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) { + e.preventDefault(); + return true; + } + return false; + }; + var executeShortcutAction = function (shortcut) { + return shortcut.func ? shortcut.func.call(shortcut.scope) : null; + }; + editor.on('keyup keypress keydown', function (e) { + if ((hasModifier(e) || isFunctionKey(e)) && !e.isDefaultPrevented()) { + each$10(shortcuts, function (shortcut) { + if (matchShortcut(e, shortcut)) { + pendingPatterns = shortcut.subpatterns.slice(0); + if (e.type === 'keydown') { + executeShortcutAction(shortcut); + } + return true; + } + }); + if (matchShortcut(e, pendingPatterns[0])) { + if (pendingPatterns.length === 1) { + if (e.type === 'keydown') { + executeShortcutAction(pendingPatterns[0]); + } + } + pendingPatterns.shift(); + } + } + }); + self.add = function (pattern, desc, cmdFunc, scope) { + var cmd; + cmd = cmdFunc; + if (typeof cmdFunc === 'string') { + cmdFunc = function () { + editor.execCommand(cmd, false, null); + }; + } else if ($_a5gegtjje5o2pum.isArray(cmd)) { + cmdFunc = function () { + editor.execCommand(cmd[0], cmd[1], cmd[2]); + }; + } + each$10(explode$3($_a5gegtjje5o2pum.trim(pattern.toLowerCase())), function (pattern) { + var shortcut = createShortcut(pattern, desc, cmdFunc, scope); + shortcuts[shortcut.id] = shortcut; + }); + return true; + }; + self.remove = function (pattern) { + var shortcut = createShortcut(pattern); + if (shortcuts[shortcut.id]) { + delete shortcuts[shortcut.id]; + return true; + } + return false; + }; + } + + var any$1 = function (predicate) { + return $_au2qfe30je5o2qb4.first(predicate).isSome(); + }; + var ancestor$3 = function (scope, predicate, isRoot) { + return $_au2qfe30je5o2qb4.ancestor(scope, predicate, isRoot).isSome(); + }; + var closest$3 = function (scope, predicate, isRoot) { + return $_au2qfe30je5o2qb4.closest(scope, predicate, isRoot).isSome(); + }; + var sibling$4 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.sibling(scope, predicate).isSome(); + }; + var child$4 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.child(scope, predicate).isSome(); + }; + var descendant$3 = function (scope, predicate) { + return $_au2qfe30je5o2qb4.descendant(scope, predicate).isSome(); + }; + var $_byozzr4aje5o2qnk = { + any: any$1, + ancestor: ancestor$3, + closest: closest$3, + sibling: sibling$4, + child: child$4, + descendant: descendant$3 + }; + + var focus = function (element) { + element.dom().focus(); + }; + var blur = function (element) { + element.dom().blur(); + }; + var hasFocus = function (element) { + var doc = $_a6mttx17je5o2pyd.owner(element).dom(); + return element.dom() === doc.activeElement; + }; + var active = function (_doc) { + var doc = _doc !== undefined ? _doc.dom() : document; + return Option.from(doc.activeElement).map($_5tcb2dyje5o2pwu.fromDom); + }; + var focusInside = function (element) { + var doc = $_a6mttx17je5o2pyd.owner(element); + var inside = active(doc).filter(function (a) { + return $_byozzr4aje5o2qnk.closest(a, $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, element)); + }); + inside.fold(function () { + focus(element); + }, $_enfhkv6je5o2ply.noop); + }; + var search = function (element) { + return active($_a6mttx17je5o2pyd.owner(element)).filter(function (e) { + return element.dom().contains(e.dom()); + }); + }; + var $_7ndv7y49je5o2qng = { + hasFocus: hasFocus, + focus: focus, + blur: blur, + active: active, + search: search, + focusInside: focusInside + }; + + var getContentEditableHost = function (editor, node) { + return editor.dom.getParent(node, function (node) { + return editor.dom.getContentEditable(node) === 'true'; + }); + }; + var getCollapsedNode = function (rng) { + return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map($_5tcb2dyje5o2pwu.fromDom) : Option.none(); + }; + var getFocusInElement = function (root, rng) { + return getCollapsedNode(rng).bind(function (node) { + if (isTableSection(node)) { + return Option.some(node); + } else if ($_7oppmo1dje5o2pz1.contains(root, node) === false) { + return Option.some(root); + } else { + return Option.none(); + } + }); + }; + var normalizeSelection = function (editor, rng) { + getFocusInElement($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), rng).bind(function (elm) { + return $_g2kzjo2bje5o2q7n.firstPositionIn(elm.dom()); + }).fold(function () { + return editor.selection.normalize(); + }, function (caretPos) { + return editor.selection.setRng(caretPos.toRange()); + }); + }; + var focusBody = function (body) { + if (body.setActive) { + try { + body.setActive(); + } catch (ex) { + body.focus(); + } + } else { + body.focus(); + } + }; + var hasElementFocus = function (elm) { + return $_7ndv7y49je5o2qng.hasFocus(elm) || $_7ndv7y49je5o2qng.search(elm).isSome(); + }; + var hasIframeFocus = function (editor) { + return editor.iframeElement && $_7ndv7y49je5o2qng.hasFocus($_5tcb2dyje5o2pwu.fromDom(editor.iframeElement)); + }; + var hasInlineFocus = function (editor) { + var rawBody = editor.getBody(); + return rawBody && hasElementFocus($_5tcb2dyje5o2pwu.fromDom(rawBody)); + }; + var hasFocus$1 = function (editor) { + return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor); + }; + var focusEditor = function (editor) { + var selection = editor.selection, contentEditable = editor.settings.content_editable; + var body = editor.getBody(); + var contentEditableHost, rng = selection.getRng(); + editor.quirks.refreshContentEditable(); + contentEditableHost = getContentEditableHost(editor, selection.getNode()); + if (editor.$.contains(body, contentEditableHost)) { + focusBody(contentEditableHost); + normalizeSelection(editor, rng); + activateEditor(editor); + return; + } + if (editor.bookmark !== undefined && hasFocus$1(editor) === false) { + $_fnd7h33zje5o2qly.getRng(editor).each(function (bookmarkRng) { + editor.selection.setRng(bookmarkRng); + rng = bookmarkRng; + }); + } + if (!contentEditable) { + if (!$_9bd8pn9je5o2pp2.opera) { + focusBody(body); + } + editor.getWin().focus(); + } + if ($_9bd8pn9je5o2pp2.gecko || contentEditable) { + focusBody(body); + normalizeSelection(editor, rng); + } + activateEditor(editor); + }; + var activateEditor = function (editor) { + editor.editorManager.setActive(editor); + }; + var focus$1 = function (editor, skipFocus) { + if (editor.removed) { + return; + } + skipFocus ? activateEditor(editor) : focusEditor(editor); + }; + var $_llx5i48je5o2qna = { + focus: focus$1, + hasFocus: hasFocus$1 + }; + + var getProp = function (propName, elm) { + var rawElm = elm.dom(); + return rawElm[propName]; + }; + var getComputedSizeProp = function (propName, elm) { + return parseInt($_1ioope11je5o2px4.get(elm, propName), 10); + }; + var getClientWidth = $_enfhkv6je5o2ply.curry(getProp, 'clientWidth'); + var getClientHeight = $_enfhkv6je5o2ply.curry(getProp, 'clientHeight'); + var getMarginTop = $_enfhkv6je5o2ply.curry(getComputedSizeProp, 'margin-top'); + var getMarginLeft = $_enfhkv6je5o2ply.curry(getComputedSizeProp, 'margin-left'); + var getBoundingClientRect$1 = function (elm) { + return elm.dom().getBoundingClientRect(); + }; + var isInsideElementContentArea = function (bodyElm, clientX, clientY) { + var clientWidth = getClientWidth(bodyElm); + var clientHeight = getClientHeight(bodyElm); + return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight; + }; + var transpose = function (inline, elm, clientX, clientY) { + var clientRect = getBoundingClientRect$1(elm); + var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0; + var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0; + var x = clientX - deltaX; + var y = clientY - deltaY; + return { + x: x, + y: y + }; + }; + var isXYInContentArea = function (editor, clientX, clientY) { + var bodyElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var targetElm = editor.inline ? bodyElm : $_a6mttx17je5o2pyd.documentElement(bodyElm); + var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY); + return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y); + }; + var fromDomSafe = function (node) { + return Option.from(node).map($_5tcb2dyje5o2pwu.fromDom); + }; + var isEditorAttachedToDom = function (editor) { + var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer(); + return fromDomSafe(rawContainer).map(function (container) { + return $_7oppmo1dje5o2pz1.contains($_a6mttx17je5o2pyd.owner(container), container); + }).getOr(false); + }; + var $_3f7nxx4dje5o2qoa = { + isXYInContentArea: isXYInContentArea, + isEditorAttachedToDom: isEditorAttachedToDom + }; + + function NotificationManagerImpl () { + var unimplemented = function () { + throw new Error('Theme did not provide a NotificationManager implementation.'); + }; + return { + open: unimplemented, + close: unimplemented, + reposition: unimplemented, + getArgs: unimplemented + }; + } + + function NotificationManager (editor) { + var notifications = []; + var getImplementation = function () { + var theme = editor.theme; + return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl(); + }; + var getTopNotification = function () { + return Option.from(notifications[0]); + }; + var isEqual = function (a, b) { + return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout; + }; + var reposition = function () { + if (notifications.length > 0) { + getImplementation().reposition(notifications); + } + }; + var addNotification = function (notification) { + notifications.push(notification); + }; + var closeNotification = function (notification) { + $_bwcteb4je5o2pl4.findIndex(notifications, function (otherNotification) { + return otherNotification === notification; + }).each(function (index) { + notifications.splice(index, 1); + }); + }; + var open = function (args) { + if (editor.removed || !$_3f7nxx4dje5o2qoa.isEditorAttachedToDom(editor)) { + return; + } + return $_bwcteb4je5o2pl4.find(notifications, function (notification) { + return isEqual(getImplementation().getArgs(notification), args); + }).getOrThunk(function () { + editor.editorManager.setActive(editor); + var notification = getImplementation().open(args, function () { + closeNotification(notification); + reposition(); + }); + addNotification(notification); + reposition(); + return notification; + }); + }; + var close = function () { + getTopNotification().each(function (notification) { + getImplementation().close(notification); + closeNotification(notification); + reposition(); + }); + }; + var getNotifications = function () { + return notifications; + }; + var registerEvents = function (editor) { + editor.on('SkinLoaded', function () { + var serviceMessage = editor.settings.service_message; + if (serviceMessage) { + open({ + text: serviceMessage, + type: 'warning', + timeout: 0, + icon: '' + }); + } + }); + editor.on('ResizeEditor ResizeWindow', function () { + $_db41wogje5o2ps3.requestAnimationFrame(reposition); + }); + editor.on('remove', function () { + $_bwcteb4je5o2pl4.each(notifications, function (notification) { + getImplementation().close(notification); + }); + }); + }; + registerEvents(editor); + return { + open: open, + close: close, + getNotifications: getNotifications + }; + } + + function WindowManagerImpl () { + var unimplemented = function () { + throw new Error('Theme did not provide a WindowManager implementation.'); + }; + return { + open: unimplemented, + alert: unimplemented, + confirm: unimplemented, + close: unimplemented, + getParams: unimplemented, + setParams: unimplemented + }; + } + + function WindowManager (editor) { + var windows = []; + var getImplementation = function () { + var theme = editor.theme; + return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl(); + }; + var funcBind = function (scope, f) { + return function () { + return f ? f.apply(scope, arguments) : undefined; + }; + }; + var fireOpenEvent = function (win) { + editor.fire('OpenWindow', { win: win }); + }; + var fireCloseEvent = function (win) { + editor.fire('CloseWindow', { win: win }); + }; + var addWindow = function (win) { + windows.push(win); + fireOpenEvent(win); + }; + var closeWindow = function (win) { + $_bwcteb4je5o2pl4.findIndex(windows, function (otherWindow) { + return otherWindow === win; + }).each(function (index) { + windows.splice(index, 1); + fireCloseEvent(win); + if (windows.length === 0) { + editor.focus(); + } + }); + }; + var getTopWindow = function () { + return Option.from(windows[windows.length - 1]); + }; + var open = function (args, params) { + editor.editorManager.setActive(editor); + $_fnd7h33zje5o2qly.store(editor); + var win = getImplementation().open(args, params, closeWindow); + addWindow(win); + return win; + }; + var alert = function (message, callback, scope) { + var win = getImplementation().alert(message, funcBind(scope ? scope : this, callback), closeWindow); + addWindow(win); + }; + var confirm = function (message, callback, scope) { + var win = getImplementation().confirm(message, funcBind(scope ? scope : this, callback), closeWindow); + addWindow(win); + }; + var close = function () { + getTopWindow().each(function (win) { + getImplementation().close(win); + closeWindow(win); + }); + }; + var getParams = function () { + return getTopWindow().map(getImplementation().getParams).getOr(null); + }; + var setParams = function (params) { + getTopWindow().each(function (win) { + getImplementation().setParams(win, params); + }); + }; + var getWindows = function () { + return windows; + }; + editor.on('remove', function () { + $_bwcteb4je5o2pl4.each(windows.slice(0), function (win) { + getImplementation().close(win); + }); + }); + return { + windows: windows, + open: open, + alert: alert, + confirm: confirm, + close: close, + getParams: getParams, + setParams: setParams, + getWindows: getWindows + }; + } + + var PluginManager = AddOnManager.PluginManager; + var resolvePluginName = function (targetUrl, suffix) { + for (var name_1 in PluginManager.urls) { + var matchUrl = PluginManager.urls[name_1] + '/plugin' + suffix + '.js'; + if (matchUrl === targetUrl) { + return name_1; + } + } + return null; + }; + var pluginUrlToMessage = function (editor, url) { + var plugin = resolvePluginName(url, editor.suffix); + return plugin ? 'Failed to load plugin: ' + plugin + ' from url ' + url : 'Failed to load plugin url: ' + url; + }; + var displayNotification = function (editor, message) { + editor.notificationManager.open({ + type: 'error', + text: message + }); + }; + var displayError = function (editor, message) { + if (editor._skinLoaded) { + displayNotification(editor, message); + } else { + editor.on('SkinLoaded', function () { + displayNotification(editor, message); + }); + } + }; + var uploadError = function (editor, message) { + displayError(editor, 'Failed to upload image: ' + message); + }; + var pluginLoadError = function (editor, url) { + displayError(editor, pluginUrlToMessage(editor, url)); + }; + var initError = function (message) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var console = window.console; + if (console) { + if (console.error) { + console.error.apply(console, arguments); + } else { + console.log.apply(console, arguments); + } + } + }; + var $_axrd1j4hje5o2qor = { + pluginLoadError: pluginLoadError, + uploadError: uploadError, + displayError: displayError, + initError: initError + }; + + var PluginManager$1 = AddOnManager.PluginManager; + + var ThemeManager = AddOnManager.ThemeManager; + + function XMLHttpRequest () { + var f = $_lmz5vbje5o2pp9.getOrDie('XMLHttpRequest'); + return new f(); + } + + function Uploader (uploadStatus, settings) { + var pendingPromises = {}; + var pathJoin = function (path1, path2) { + if (path1) { + return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, ''); + } + return path2; + }; + var defaultHandler = function (blobInfo, success, failure, progress) { + var xhr, formData; + xhr = new XMLHttpRequest(); + xhr.open('POST', settings.url); + xhr.withCredentials = settings.credentials; + xhr.upload.onprogress = function (e) { + progress(e.loaded / e.total * 100); + }; + xhr.onerror = function () { + failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status); + }; + xhr.onload = function () { + var json; + if (xhr.status < 200 || xhr.status >= 300) { + failure('HTTP Error: ' + xhr.status); + return; + } + json = JSON.parse(xhr.responseText); + if (!json || typeof json.location !== 'string') { + failure('Invalid JSON: ' + xhr.responseText); + return; + } + success(pathJoin(settings.basePath, json.location)); + }; + formData = new FormData(); + formData.append('file', blobInfo.blob(), blobInfo.filename()); + xhr.send(formData); + }; + var noUpload = function () { + return new promiseObj(function (resolve) { + resolve([]); + }); + }; + var handlerSuccess = function (blobInfo, url) { + return { + url: url, + blobInfo: blobInfo, + status: true + }; + }; + var handlerFailure = function (blobInfo, error) { + return { + url: '', + blobInfo: blobInfo, + status: false, + error: error + }; + }; + var resolvePending = function (blobUri, result) { + $_a5gegtjje5o2pum.each(pendingPromises[blobUri], function (resolve) { + resolve(result); + }); + delete pendingPromises[blobUri]; + }; + var uploadBlobInfo = function (blobInfo, handler, openNotification) { + uploadStatus.markPending(blobInfo.blobUri()); + return new promiseObj(function (resolve) { + var notification, progress; + var noop = function () { + }; + try { + var closeNotification_1 = function () { + if (notification) { + notification.close(); + progress = noop; + } + }; + var success = function (url) { + closeNotification_1(); + uploadStatus.markUploaded(blobInfo.blobUri(), url); + resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url)); + resolve(handlerSuccess(blobInfo, url)); + }; + var failure = function (error) { + closeNotification_1(); + uploadStatus.removeFailed(blobInfo.blobUri()); + resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error)); + resolve(handlerFailure(blobInfo, error)); + }; + progress = function (percent) { + if (percent < 0 || percent > 100) { + return; + } + if (!notification) { + notification = openNotification(); + } + notification.progressBar.value(percent); + }; + handler(blobInfo, success, failure, progress); + } catch (ex) { + resolve(handlerFailure(blobInfo, ex.message)); + } + }); + }; + var isDefaultHandler = function (handler) { + return handler === defaultHandler; + }; + var pendingUploadBlobInfo = function (blobInfo) { + var blobUri = blobInfo.blobUri(); + return new promiseObj(function (resolve) { + pendingPromises[blobUri] = pendingPromises[blobUri] || []; + pendingPromises[blobUri].push(resolve); + }); + }; + var uploadBlobs = function (blobInfos, openNotification) { + blobInfos = $_a5gegtjje5o2pum.grep(blobInfos, function (blobInfo) { + return !uploadStatus.isUploaded(blobInfo.blobUri()); + }); + return promiseObj.all($_a5gegtjje5o2pum.map(blobInfos, function (blobInfo) { + return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification); + })); + }; + var upload = function (blobInfos, openNotification) { + return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification); + }; + settings = $_a5gegtjje5o2pum.extend({ + credentials: false, + handler: defaultHandler + }, settings); + return { upload: upload }; + } + + function Blob (parts, properties) { + var f = $_lmz5vbje5o2pp9.getOrDie('Blob'); + return new f(parts, properties); + } + + function FileReader () { + var f = $_lmz5vbje5o2pp9.getOrDie('FileReader'); + return new f(); + } + + function Uint8Array (arr) { + var f = $_lmz5vbje5o2pp9.getOrDie('Uint8Array'); + return new f(arr); + } + + var requestAnimationFrame$1 = function (callback) { + var f = $_lmz5vbje5o2pp9.getOrDie('requestAnimationFrame'); + f(callback); + }; + var atob = function (base64) { + var f = $_lmz5vbje5o2pp9.getOrDie('atob'); + return f(base64); + }; + var $_9okclz4uje5o2qq7 = { + atob: atob, + requestAnimationFrame: requestAnimationFrame$1 + }; + + var blobUriToBlob = function (url) { + return new promiseObj(function (resolve, reject) { + var rejectWithError = function () { + reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.'); + }; + try { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'blob'; + xhr.onload = function () { + if (this.status === 200) { + resolve(this.response); + } else { + rejectWithError(); + } + }; + xhr.onerror = rejectWithError; + xhr.send(); + } catch (ex) { + rejectWithError(); + } + }); + }; + var parseDataUri = function (uri) { + var type, matches; + uri = decodeURIComponent(uri).split(','); + matches = /data:([^;]+)/.exec(uri[0]); + if (matches) { + type = matches[1]; + } + return { + type: type, + data: uri[1] + }; + }; + var dataUriToBlob = function (uri) { + return new promiseObj(function (resolve) { + var str, arr, i; + uri = parseDataUri(uri); + try { + str = $_9okclz4uje5o2qq7.atob(uri.data); + } catch (e) { + resolve(new Blob([])); + return; + } + arr = new Uint8Array(str.length); + for (i = 0; i < arr.length; i++) { + arr[i] = str.charCodeAt(i); + } + resolve(new Blob([arr], { type: uri.type })); + }); + }; + var uriToBlob = function (url) { + if (url.indexOf('blob:') === 0) { + return blobUriToBlob(url); + } + if (url.indexOf('data:') === 0) { + return dataUriToBlob(url); + } + return null; + }; + var blobToDataUri = function (blob) { + return new promiseObj(function (resolve) { + var reader = new FileReader(); + reader.onloadend = function () { + resolve(reader.result); + }; + reader.readAsDataURL(blob); + }); + }; + var $_8a34kg4qje5o2qpz = { + uriToBlob: uriToBlob, + blobToDataUri: blobToDataUri, + parseDataUri: parseDataUri + }; + + var count = 0; + var uniqueId = function (prefix) { + return (prefix || 'blobid') + count++; + }; + var imageToBlobInfo = function (blobCache, img, resolve, reject) { + var base64, blobInfo; + if (img.src.indexOf('blob:') === 0) { + blobInfo = blobCache.getByUri(img.src); + if (blobInfo) { + resolve({ + image: img, + blobInfo: blobInfo + }); + } else { + $_8a34kg4qje5o2qpz.uriToBlob(img.src).then(function (blob) { + $_8a34kg4qje5o2qpz.blobToDataUri(blob).then(function (dataUri) { + base64 = $_8a34kg4qje5o2qpz.parseDataUri(dataUri).data; + blobInfo = blobCache.create(uniqueId(), blob, base64); + blobCache.add(blobInfo); + resolve({ + image: img, + blobInfo: blobInfo + }); + }); + }, function (err) { + reject(err); + }); + } + return; + } + base64 = $_8a34kg4qje5o2qpz.parseDataUri(img.src).data; + blobInfo = blobCache.findFirst(function (cachedBlobInfo) { + return cachedBlobInfo.base64() === base64; + }); + if (blobInfo) { + resolve({ + image: img, + blobInfo: blobInfo + }); + } else { + $_8a34kg4qje5o2qpz.uriToBlob(img.src).then(function (blob) { + blobInfo = blobCache.create(uniqueId(), blob, base64); + blobCache.add(blobInfo); + resolve({ + image: img, + blobInfo: blobInfo + }); + }, function (err) { + reject(err); + }); + } + }; + var getAllImages = function (elm) { + return elm ? elm.getElementsByTagName('img') : []; + }; + function ImageScanner (uploadStatus, blobCache) { + var cachedPromises = {}; + var findAll = function (elm, predicate) { + var images; + if (!predicate) { + predicate = $_ghq3nq25je5o2q5q.constant(true); + } + images = $_c2vc3pkje5o2puw.filter(getAllImages(elm), function (img) { + var src = img.src; + if (!$_9bd8pn9je5o2pp2.fileApi) { + return false; + } + if (img.hasAttribute('data-mce-bogus')) { + return false; + } + if (img.hasAttribute('data-mce-placeholder')) { + return false; + } + if (!src || src === $_9bd8pn9je5o2pp2.transparentSrc) { + return false; + } + if (src.indexOf('blob:') === 0) { + return !uploadStatus.isUploaded(src); + } + if (src.indexOf('data:') === 0) { + return predicate(img); + } + return false; + }); + var promises = $_c2vc3pkje5o2puw.map(images, function (img) { + if (cachedPromises[img.src]) { + return new promiseObj(function (resolve) { + cachedPromises[img.src].then(function (imageInfo) { + if (typeof imageInfo === 'string') { + return imageInfo; + } + resolve({ + image: img, + blobInfo: imageInfo.blobInfo + }); + }); + }); + } + var newPromise = new promiseObj(function (resolve, reject) { + imageToBlobInfo(blobCache, img, resolve, reject); + }).then(function (result) { + delete cachedPromises[result.image.src]; + return result; + }).catch(function (error) { + delete cachedPromises[img.src]; + return error; + }); + cachedPromises[img.src] = newPromise; + return newPromise; + }); + return promiseObj.all(promises); + }; + return { findAll: findAll }; + } + + var count$1 = 0; + var seed = function () { + var rnd = function () { + return Math.round(Math.random() * 4294967295).toString(36); + }; + var now = new Date().getTime(); + return 's' + now.toString(36) + rnd() + rnd() + rnd(); + }; + var uuid = function (prefix) { + return prefix + count$1++ + seed(); + }; + var $_2bgddd4wje5o2qqo = { uuid: uuid }; + + function BlobCache () { + var cache = []; + var constant = $_ghq3nq25je5o2q5q.constant; + var mimeToExt = function (mime) { + var mimes = { + 'image/jpeg': 'jpg', + 'image/jpg': 'jpg', + 'image/gif': 'gif', + 'image/png': 'png' + }; + return mimes[mime.toLowerCase()] || 'dat'; + }; + var create = function (o, blob, base64, filename) { + return typeof o === 'object' ? toBlobInfo(o) : toBlobInfo({ + id: o, + name: filename, + blob: blob, + base64: base64 + }); + }; + var toBlobInfo = function (o) { + var id, name; + if (!o.blob || !o.base64) { + throw new Error('blob and base64 representations of the image are required for BlobInfo to be created'); + } + id = o.id || $_2bgddd4wje5o2qqo.uuid('blobid'); + name = o.name || id; + return { + id: constant(id), + name: constant(name), + filename: constant(name + '.' + mimeToExt(o.blob.type)), + blob: constant(o.blob), + base64: constant(o.base64), + blobUri: constant(o.blobUri || $_g0v736aje5o2pp8.createObjectURL(o.blob)), + uri: constant(o.uri) + }; + }; + var add = function (blobInfo) { + if (!get(blobInfo.id())) { + cache.push(blobInfo); + } + }; + var get = function (id) { + return findFirst(function (cachedBlobInfo) { + return cachedBlobInfo.id() === id; + }); + }; + var findFirst = function (predicate) { + return $_c2vc3pkje5o2puw.filter(cache, predicate)[0]; + }; + var getByUri = function (blobUri) { + return findFirst(function (blobInfo) { + return blobInfo.blobUri() === blobUri; + }); + }; + var removeByUri = function (blobUri) { + cache = $_c2vc3pkje5o2puw.filter(cache, function (blobInfo) { + if (blobInfo.blobUri() === blobUri) { + $_g0v736aje5o2pp8.revokeObjectURL(blobInfo.blobUri()); + return false; + } + return true; + }); + }; + var destroy = function () { + $_c2vc3pkje5o2puw.each(cache, function (cachedBlobInfo) { + $_g0v736aje5o2pp8.revokeObjectURL(cachedBlobInfo.blobUri()); + }); + cache = []; + }; + return { + create: create, + add: add, + get: get, + getByUri: getByUri, + findFirst: findFirst, + removeByUri: removeByUri, + destroy: destroy + }; + } + + function UploadStatus () { + var PENDING = 1, UPLOADED = 2; + var blobUriStatuses = {}; + var createStatus = function (status, resultUri) { + return { + status: status, + resultUri: resultUri + }; + }; + var hasBlobUri = function (blobUri) { + return blobUri in blobUriStatuses; + }; + var getResultUri = function (blobUri) { + var result = blobUriStatuses[blobUri]; + return result ? result.resultUri : null; + }; + var isPending = function (blobUri) { + return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false; + }; + var isUploaded = function (blobUri) { + return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false; + }; + var markPending = function (blobUri) { + blobUriStatuses[blobUri] = createStatus(PENDING, null); + }; + var markUploaded = function (blobUri, resultUri) { + blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri); + }; + var removeFailed = function (blobUri) { + delete blobUriStatuses[blobUri]; + }; + var destroy = function () { + blobUriStatuses = {}; + }; + return { + hasBlobUri: hasBlobUri, + getResultUri: getResultUri, + isPending: isPending, + isUploaded: isUploaded, + markPending: markPending, + markUploaded: markUploaded, + removeFailed: removeFailed, + destroy: destroy + }; + } + + function EditorUpload (editor) { + var blobCache = BlobCache(); + var uploader, imageScanner; + var settings = editor.settings; + var uploadStatus = UploadStatus(); + var aliveGuard = function (callback) { + return function (result) { + if (editor.selection) { + return callback(result); + } + return []; + }; + }; + var cacheInvalidator = function () { + return '?' + new Date().getTime(); + }; + var replaceString = function (content, search, replace) { + var index = 0; + do { + index = content.indexOf(search, index); + if (index !== -1) { + content = content.substring(0, index) + replace + content.substr(index + search.length); + index += replace.length - search.length + 1; + } + } while (index !== -1); + return content; + }; + var replaceImageUrl = function (content, targetUrl, replacementUrl) { + content = replaceString(content, 'src="' + targetUrl + '"', 'src="' + replacementUrl + '"'); + content = replaceString(content, 'data-mce-src="' + targetUrl + '"', 'data-mce-src="' + replacementUrl + '"'); + return content; + }; + var replaceUrlInUndoStack = function (targetUrl, replacementUrl) { + $_c2vc3pkje5o2puw.each(editor.undoManager.data, function (level) { + if (level.type === 'fragmented') { + level.fragments = $_c2vc3pkje5o2puw.map(level.fragments, function (fragment) { + return replaceImageUrl(fragment, targetUrl, replacementUrl); + }); + } else { + level.content = replaceImageUrl(level.content, targetUrl, replacementUrl); + } + }); + }; + var openNotification = function () { + return editor.notificationManager.open({ + text: editor.translate('Image uploading...'), + type: 'info', + timeout: -1, + progressBar: true + }); + }; + var replaceImageUri = function (image, resultUri) { + blobCache.removeByUri(image.src); + replaceUrlInUndoStack(image.src, resultUri); + editor.$(image).attr({ + 'src': settings.images_reuse_filename ? resultUri + cacheInvalidator() : resultUri, + 'data-mce-src': editor.convertURL(resultUri, 'src') + }); + }; + var uploadImages = function (callback) { + if (!uploader) { + uploader = Uploader(uploadStatus, { + url: settings.images_upload_url, + basePath: settings.images_upload_base_path, + credentials: settings.images_upload_credentials, + handler: settings.images_upload_handler + }); + } + return scanForImages().then(aliveGuard(function (imageInfos) { + var blobInfos; + blobInfos = $_c2vc3pkje5o2puw.map(imageInfos, function (imageInfo) { + return imageInfo.blobInfo; + }); + return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) { + var filteredResult = $_c2vc3pkje5o2puw.map(result, function (uploadInfo, index) { + var image = imageInfos[index].image; + if (uploadInfo.status && editor.settings.images_replace_blob_uris !== false) { + replaceImageUri(image, uploadInfo.url); + } else if (uploadInfo.error) { + $_axrd1j4hje5o2qor.uploadError(editor, uploadInfo.error); + } + return { + element: image, + status: uploadInfo.status + }; + }); + if (callback) { + callback(filteredResult); + } + return filteredResult; + })); + })); + }; + var uploadImagesAuto = function (callback) { + if (settings.automatic_uploads !== false) { + return uploadImages(callback); + } + }; + var isValidDataUriImage = function (imgElm) { + return settings.images_dataimg_filter ? settings.images_dataimg_filter(imgElm) : true; + }; + var scanForImages = function () { + if (!imageScanner) { + imageScanner = ImageScanner(uploadStatus, blobCache); + } + return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) { + result = $_c2vc3pkje5o2puw.filter(result, function (resultItem) { + if (typeof resultItem === 'string') { + $_axrd1j4hje5o2qor.displayError(editor, resultItem); + return false; + } + return true; + }); + $_c2vc3pkje5o2puw.each(result, function (resultItem) { + replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri()); + resultItem.image.src = resultItem.blobInfo.blobUri(); + resultItem.image.removeAttribute('data-mce-src'); + }); + return result; + })); + }; + var destroy = function () { + blobCache.destroy(); + uploadStatus.destroy(); + imageScanner = uploader = null; + }; + var replaceBlobUris = function (content) { + return content.replace(/src="(blob:[^"]+)"/g, function (match, blobUri) { + var resultUri = uploadStatus.getResultUri(blobUri); + if (resultUri) { + return 'src="' + resultUri + '"'; + } + var blobInfo = blobCache.getByUri(blobUri); + if (!blobInfo) { + blobInfo = $_c2vc3pkje5o2puw.reduce(editor.editorManager.get(), function (result, editor) { + return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri); + }, null); + } + if (blobInfo) { + return 'src="data:' + blobInfo.blob().type + ';base64,' + blobInfo.base64() + '"'; + } + return match; + }); + }; + editor.on('setContent', function () { + if (editor.settings.automatic_uploads !== false) { + uploadImagesAuto(); + } else { + scanForImages(); + } + }); + editor.on('RawSaveContent', function (e) { + e.content = replaceBlobUris(e.content); + }); + editor.on('getContent', function (e) { + if (e.source_view || e.format === 'raw') { + return; + } + e.content = replaceBlobUris(e.content); + }); + editor.on('PostRender', function () { + editor.parser.addNodeFilter('img', function (images) { + $_c2vc3pkje5o2puw.each(images, function (img) { + var src = img.attr('src'); + if (blobCache.getByUri(src)) { + return; + } + var resultUri = uploadStatus.getResultUri(src); + if (resultUri) { + img.attr('src', resultUri); + } + }); + }); + }); + return { + blobCache: blobCache, + uploadImages: uploadImages, + uploadImagesAuto: uploadImagesAuto, + scanForImages: scanForImages, + destroy: destroy + }; + } + + var isBlockElement = function (blockElements, node) { + return blockElements.hasOwnProperty(node.nodeName); + }; + var isValidTarget = function (blockElements, node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + return true; + } else if ($_9owqcy1qje5o2q0e.isElement(node)) { + return !isBlockElement(blockElements, node) && !$_83h91t2jje5o2q8n.isBookmarkNode(node); + } else { + return false; + } + }; + var hasBlockParent = function (blockElements, root, node) { + return $_bwcteb4je5o2pl4.exists($_yqcmh39je5o2qcw.parents($_5tcb2dyje5o2pwu.fromDom(node), $_5tcb2dyje5o2pwu.fromDom(root)), function (elm) { + return isBlockElement(blockElements, elm.dom()); + }); + }; + var shouldRemoveTextNode = function (blockElements, node) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + if (node.nodeValue.length === 0) { + return true; + } else if (/^\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) { + return true; + } + } + return false; + }; + var addRootBlocks = function (editor) { + var settings = editor.settings, dom = editor.dom, selection = editor.selection; + var schema = editor.schema, blockElements = schema.getBlockElements(); + var node = selection.getStart(); + var rootNode = editor.getBody(); + var rng; + var startContainer, startOffset, endContainer, endOffset, rootBlockNode; + var tempNode, wrapped, restoreSelection; + var rootNodeName, forcedRootBlock; + forcedRootBlock = settings.forced_root_block; + if (!node || !$_9owqcy1qje5o2q0e.isElement(node) || !forcedRootBlock) { + return; + } + rootNodeName = rootNode.nodeName.toLowerCase(); + if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) { + return; + } + rng = selection.getRng(); + startContainer = rng.startContainer; + startOffset = rng.startOffset; + endContainer = rng.endContainer; + endOffset = rng.endOffset; + restoreSelection = $_llx5i48je5o2qna.hasFocus(editor); + node = rootNode.firstChild; + while (node) { + if (isValidTarget(blockElements, node)) { + if (shouldRemoveTextNode(blockElements, node)) { + tempNode = node; + node = node.nextSibling; + dom.remove(tempNode); + continue; + } + if (!rootBlockNode) { + rootBlockNode = dom.create(forcedRootBlock, editor.settings.forced_root_block_attrs); + node.parentNode.insertBefore(rootBlockNode, node); + wrapped = true; + } + tempNode = node; + node = node.nextSibling; + rootBlockNode.appendChild(tempNode); + } else { + rootBlockNode = null; + node = node.nextSibling; + } + } + if (wrapped && restoreSelection) { + rng.setStart(startContainer, startOffset); + rng.setEnd(endContainer, endOffset); + selection.setRng(rng); + editor.nodeChanged(); + } + }; + var setup$1 = function (editor) { + if (editor.settings.forced_root_block) { + editor.on('NodeChange', $_enfhkv6je5o2ply.curry(addRootBlocks, editor)); + } + }; + var $_fekqo94yje5o2qqs = { setup: setup$1 }; + + function NodeChange (editor) { + var lastRng, lastPath = []; + var isSameElementPath = function (startElm) { + var i, currentPath; + currentPath = editor.$(startElm).parentsUntil(editor.getBody()).add(startElm); + if (currentPath.length === lastPath.length) { + for (i = currentPath.length; i >= 0; i--) { + if (currentPath[i] !== lastPath[i]) { + break; + } + } + if (i === -1) { + lastPath = currentPath; + return true; + } + } + lastPath = currentPath; + return false; + }; + if (!('onselectionchange' in editor.getDoc())) { + editor.on('NodeChange Click MouseUp KeyUp Focus', function (e) { + var nativeRng, fakeRng; + nativeRng = editor.selection.getRng(); + fakeRng = { + startContainer: nativeRng.startContainer, + startOffset: nativeRng.startOffset, + endContainer: nativeRng.endContainer, + endOffset: nativeRng.endOffset + }; + if (e.type === 'nodechange' || !$_aieo7z3yje5o2qlw.isEq(fakeRng, lastRng)) { + editor.fire('SelectionChange'); + } + lastRng = fakeRng; + }); + } + editor.on('contextmenu', function () { + editor.fire('SelectionChange'); + }); + editor.on('SelectionChange', function () { + var startElm = editor.selection.getStart(true); + if (!startElm || !$_9bd8pn9je5o2pp2.range && editor.selection.isCollapsed()) { + return; + } + if (!isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) { + editor.nodeChanged({ selectionChange: true }); + } + }); + editor.on('MouseUp', function (e) { + if (!e.isDefaultPrevented()) { + if (editor.selection.getNode().nodeName === 'IMG') { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + editor.nodeChanged(); + }); + } else { + editor.nodeChanged(); + } + } + }); + this.nodeChanged = function (args) { + var selection = editor.selection; + var node, parents, root; + if (editor.initialized && selection && !editor.settings.disable_nodechange && !editor.readonly) { + root = editor.getBody(); + node = selection.getStart(true) || root; + if (node.ownerDocument !== editor.getDoc() || !editor.dom.isChildOf(node, root)) { + node = root; + } + parents = []; + editor.dom.getParent(node, function (node) { + if (node === root) { + return true; + } + parents.push(node); + }); + args = args || {}; + args.element = node; + args.parents = parents; + editor.fire('NodeChange', args); + } + }; + } + + var getAbsolutePosition = function (elm) { + var doc, docElem, win, clientRect; + clientRect = elm.getBoundingClientRect(); + doc = elm.ownerDocument; + docElem = doc.documentElement; + win = doc.defaultView; + return { + top: clientRect.top + win.pageYOffset - docElem.clientTop, + left: clientRect.left + win.pageXOffset - docElem.clientLeft + }; + }; + var getBodyPosition = function (editor) { + return editor.inline ? getAbsolutePosition(editor.getBody()) : { + left: 0, + top: 0 + }; + }; + var getScrollPosition = function (editor) { + var body = editor.getBody(); + return editor.inline ? { + left: body.scrollLeft, + top: body.scrollTop + } : { + left: 0, + top: 0 + }; + }; + var getBodyScroll = function (editor) { + var body = editor.getBody(), docElm = editor.getDoc().documentElement; + var inlineScroll = { + left: body.scrollLeft, + top: body.scrollTop + }; + var iframeScroll = { + left: body.scrollLeft || docElm.scrollLeft, + top: body.scrollTop || docElm.scrollTop + }; + return editor.inline ? inlineScroll : iframeScroll; + }; + var getMousePosition = function (editor, event) { + if (event.target.ownerDocument !== editor.getDoc()) { + var iframePosition = getAbsolutePosition(editor.getContentAreaContainer()); + var scrollPosition = getBodyScroll(editor); + return { + left: event.pageX - iframePosition.left + scrollPosition.left, + top: event.pageY - iframePosition.top + scrollPosition.top + }; + } + return { + left: event.pageX, + top: event.pageY + }; + }; + var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) { + return { + pageX: mousePosition.left - bodyPosition.left + scrollPosition.left, + pageY: mousePosition.top - bodyPosition.top + scrollPosition.top + }; + }; + var calc = function (editor, event) { + return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event)); + }; + var $_f685v452je5o2qrw = { calc: calc }; + + var isContentEditableFalse$7 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isContentEditableTrue$4 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isDraggable = function (rootElm, elm) { + return isContentEditableFalse$7(elm) && elm !== rootElm; + }; + var isValidDropTarget = function (editor, targetElement, dragElement) { + if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) { + return false; + } + if (isContentEditableFalse$7(targetElement)) { + return false; + } + return true; + }; + var cloneElement = function (elm) { + var cloneElm = elm.cloneNode(true); + cloneElm.removeAttribute('data-mce-selected'); + return cloneElm; + }; + var createGhost = function (editor, elm, width, height) { + var clonedElm = elm.cloneNode(true); + editor.dom.setStyles(clonedElm, { + width: width, + height: height + }); + editor.dom.setAttrib(clonedElm, 'data-mce-selected', null); + var ghostElm = editor.dom.create('div', { + 'class': 'mce-drag-container', + 'data-mce-bogus': 'all', + 'unselectable': 'on', + 'contenteditable': 'false' + }); + editor.dom.setStyles(ghostElm, { + position: 'absolute', + opacity: 0.5, + overflow: 'hidden', + border: 0, + padding: 0, + margin: 0, + width: width, + height: height + }); + editor.dom.setStyles(clonedElm, { + margin: 0, + boxSizing: 'border-box' + }); + ghostElm.appendChild(clonedElm); + return ghostElm; + }; + var appendGhostToBody = function (ghostElm, bodyElm) { + if (ghostElm.parentNode !== bodyElm) { + bodyElm.appendChild(ghostElm); + } + }; + var moveGhost = function (ghostElm, position, width, height, maxX, maxY) { + var overflowX = 0, overflowY = 0; + ghostElm.style.left = position.pageX + 'px'; + ghostElm.style.top = position.pageY + 'px'; + if (position.pageX + width > maxX) { + overflowX = position.pageX + width - maxX; + } + if (position.pageY + height > maxY) { + overflowY = position.pageY + height - maxY; + } + ghostElm.style.width = width - overflowX + 'px'; + ghostElm.style.height = height - overflowY + 'px'; + }; + var removeElement = function (elm) { + if (elm && elm.parentNode) { + elm.parentNode.removeChild(elm); + } + }; + var isLeftMouseButtonPressed = function (e) { + return e.button === 0; + }; + var hasDraggableElement = function (state) { + return state.element; + }; + var applyRelPos = function (state, position) { + return { + pageX: position.pageX - state.relX, + pageY: position.pageY + 5 + }; + }; + var start$1 = function (state, editor) { + return function (e) { + if (isLeftMouseButtonPressed(e)) { + var ceElm = $_c2vc3pkje5o2puw.find(editor.dom.getParents(e.target), $_ghq3nq25je5o2q5q.or(isContentEditableFalse$7, isContentEditableTrue$4)); + if (isDraggable(editor.getBody(), ceElm)) { + var elmPos = editor.dom.getPos(ceElm); + var bodyElm = editor.getBody(); + var docElm = editor.getDoc().documentElement; + state.element = ceElm; + state.screenX = e.screenX; + state.screenY = e.screenY; + state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2; + state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2; + state.relX = e.pageX - elmPos.x; + state.relY = e.pageY - elmPos.y; + state.width = ceElm.offsetWidth; + state.height = ceElm.offsetHeight; + state.ghost = createGhost(editor, ceElm, state.width, state.height); + } + } + }; + }; + var move$1 = function (state, editor) { + var throttledPlaceCaretAt = $_db41wogje5o2ps3.throttle(function (clientX, clientY) { + editor._selectionOverrides.hideFakeCaret(); + editor.selection.placeCaretAt(clientX, clientY); + }, 0); + return function (e) { + var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY)); + if (hasDraggableElement(state) && !state.dragging && movement > 10) { + var args = editor.fire('dragstart', { target: state.element }); + if (args.isDefaultPrevented()) { + return; + } + state.dragging = true; + editor.focus(); + } + if (state.dragging) { + var targetPos = applyRelPos(state, $_f685v452je5o2qrw.calc(editor, e)); + appendGhostToBody(state.ghost, editor.getBody()); + moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY); + throttledPlaceCaretAt(e.clientX, e.clientY); + } + }; + }; + var getRawTarget = function (selection) { + var rng = selection.getSel().getRangeAt(0); + var startContainer = rng.startContainer; + return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer; + }; + var drop = function (state, editor) { + return function (e) { + if (state.dragging) { + if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) { + var targetClone_1 = cloneElement(state.element); + var args = editor.fire('drop', { + targetClone: targetClone_1, + clientX: e.clientX, + clientY: e.clientY + }); + if (!args.isDefaultPrevented()) { + targetClone_1 = args.targetClone; + editor.undoManager.transact(function () { + removeElement(state.element); + editor.insertContent(editor.dom.getOuterHTML(targetClone_1)); + editor._selectionOverrides.hideFakeCaret(); + }); + } + } + } + removeDragState(state); + }; + }; + var stop = function (state, editor) { + return function () { + removeDragState(state); + if (state.dragging) { + editor.fire('dragend'); + } + }; + }; + var removeDragState = function (state) { + state.dragging = false; + state.element = null; + removeElement(state.ghost); + }; + var bindFakeDragEvents = function (editor) { + var state = {}; + var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument; + pageDom = DOMUtils.DOM; + rootDocument = document; + dragStartHandler = start$1(state, editor); + dragHandler = move$1(state, editor); + dropHandler = drop(state, editor); + dragEndHandler = stop(state, editor); + editor.on('mousedown', dragStartHandler); + editor.on('mousemove', dragHandler); + editor.on('mouseup', dropHandler); + pageDom.bind(rootDocument, 'mousemove', dragHandler); + pageDom.bind(rootDocument, 'mouseup', dragEndHandler); + editor.on('remove', function () { + pageDom.unbind(rootDocument, 'mousemove', dragHandler); + pageDom.unbind(rootDocument, 'mouseup', dragEndHandler); + }); + }; + var blockIeDrop = function (editor) { + editor.on('drop', function (e) { + var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null; + if (isContentEditableFalse$7(realTarget) || isContentEditableFalse$7(editor.dom.getContentEditableParent(realTarget))) { + e.preventDefault(); + } + }); + }; + var init = function (editor) { + bindFakeDragEvents(editor); + blockIeDrop(editor); + }; + var $_dmqizi51je5o2qrp = { init: init }; + + var getNodeClientRects = function (node) { + var toArrayWithNode = function (clientRects) { + return $_c2vc3pkje5o2puw.map(clientRects, function (clientRect) { + clientRect = clone$1(clientRect); + clientRect.node = node; + return clientRect; + }); + }; + if ($_9owqcy1qje5o2q0e.isElement(node)) { + return toArrayWithNode(node.getClientRects()); + } + if ($_9owqcy1qje5o2q0e.isText(node)) { + var rng = node.ownerDocument.createRange(); + rng.setStart(node, 0); + rng.setEnd(node, node.data.length); + return toArrayWithNode(rng.getClientRects()); + } + }; + var getClientRects = function (node) { + return $_c2vc3pkje5o2puw.reduce(node, function (result, node) { + return result.concat(getNodeClientRects(node)); + }, []); + }; + + var VDirection; + (function (VDirection) { + VDirection[VDirection['Up'] = -1] = 'Up'; + VDirection[VDirection['Down'] = 1] = 'Down'; + }(VDirection || (VDirection = {}))); + var findUntil = function (direction, root, predicateFn, node) { + while (node = findNode(node, direction, isEditableCaretCandidate, root)) { + if (predicateFn(node)) { + return; + } + } + }; + var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) { + var line = 0, node; + var result = []; + var targetClientRect; + var add = function (node) { + var i, clientRect, clientRects; + clientRects = getClientRects([node]); + if (direction === -1) { + clientRects = clientRects.reverse(); + } + for (i = 0; i < clientRects.length; i++) { + clientRect = clientRects[i]; + if (isBeflowFn(clientRect, targetClientRect)) { + continue; + } + if (result.length > 0 && isAboveFn(clientRect, $_c2vc3pkje5o2puw.last(result))) { + line++; + } + clientRect.line = line; + if (predicateFn(clientRect)) { + return true; + } + result.push(clientRect); + } + }; + targetClientRect = $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + if (!targetClientRect) { + return result; + } + node = caretPosition.getNode(); + add(node); + findUntil(direction, root, add, node); + return result; + }; + var aboveLineNumber = function (lineNumber, clientRect) { + return clientRect.line > lineNumber; + }; + var isLineNumber = function (lineNumber, clientRect) { + return clientRect.line === lineNumber; + }; + var upUntil = $_enfhkv6je5o2ply.curry(walkUntil, VDirection.Up, isAbove, isBelow); + var downUntil = $_enfhkv6je5o2ply.curry(walkUntil, VDirection.Down, isBelow, isAbove); + var positionsUntil = function (direction, root, predicateFn, node) { + var caretWalker = CaretWalker(root); + var walkFn, isBelowFn, isAboveFn, caretPosition; + var result = []; + var line = 0, clientRect, targetClientRect; + var getClientRect = function (caretPosition) { + if (direction === 1) { + return $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + } + return $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + }; + if (direction === 1) { + walkFn = caretWalker.next; + isBelowFn = isBelow; + isAboveFn = isAbove; + caretPosition = CaretPosition$1.after(node); + } else { + walkFn = caretWalker.prev; + isBelowFn = isAbove; + isAboveFn = isBelow; + caretPosition = CaretPosition$1.before(node); + } + targetClientRect = getClientRect(caretPosition); + do { + if (!caretPosition.isVisible()) { + continue; + } + clientRect = getClientRect(caretPosition); + if (isAboveFn(clientRect, targetClientRect)) { + continue; + } + if (result.length > 0 && isBelowFn(clientRect, $_c2vc3pkje5o2puw.last(result))) { + line++; + } + clientRect = clone$1(clientRect); + clientRect.position = caretPosition; + clientRect.line = line; + if (predicateFn(clientRect)) { + return result; + } + result.push(clientRect); + } while (caretPosition = walkFn(caretPosition)); + return result; + }; + var isAboveLine = function (lineNumber) { + return function (clientRect) { + return aboveLineNumber(lineNumber, clientRect); + }; + }; + var isLine = function (lineNumber) { + return function (clientRect) { + return isLineNumber(lineNumber, clientRect); + }; + }; + + var isContentEditableFalse$8 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var findNode$1 = findNode; + var distanceToRectLeft = function (clientRect, clientX) { + return Math.abs(clientRect.left - clientX); + }; + var distanceToRectRight = function (clientRect, clientX) { + return Math.abs(clientRect.right - clientX); + }; + var isInside = function (clientX, clientRect) { + return clientX >= clientRect.left && clientX <= clientRect.right; + }; + var findClosestClientRect = function (clientRects, clientX) { + return $_c2vc3pkje5o2puw.reduce(clientRects, function (oldClientRect, clientRect) { + var oldDistance, newDistance; + oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX)); + newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX)); + if (isInside(clientX, clientRect)) { + return clientRect; + } + if (isInside(clientX, oldClientRect)) { + return oldClientRect; + } + if (newDistance === oldDistance && isContentEditableFalse$8(clientRect.node)) { + return clientRect; + } + if (newDistance < oldDistance) { + return clientRect; + } + return oldClientRect; + }); + }; + var walkUntil$1 = function (direction, root, predicateFn, node) { + while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) { + if (predicateFn(node)) { + return; + } + } + }; + var findLineNodeRects = function (root, targetNodeRect) { + var clientRects = []; + var collect = function (checkPosFn, node) { + var lineRects; + lineRects = $_c2vc3pkje5o2puw.filter(getClientRects([node]), function (clientRect) { + return !checkPosFn(clientRect, targetNodeRect); + }); + clientRects = clientRects.concat(lineRects); + return lineRects.length === 0; + }; + clientRects.push(targetNodeRect); + walkUntil$1(VDirection.Up, root, $_enfhkv6je5o2ply.curry(collect, isAbove), targetNodeRect.node); + walkUntil$1(VDirection.Down, root, $_enfhkv6je5o2ply.curry(collect, isBelow), targetNodeRect.node); + return clientRects; + }; + var getFakeCaretTargets = function (root) { + return $_c2vc3pkje5o2puw.filter($_c2vc3pkje5o2puw.toArray(root.getElementsByTagName('*')), isFakeCaretTarget); + }; + var caretInfo = function (clientRect, clientX) { + return { + node: clientRect.node, + before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX) + }; + }; + var closestCaret = function (root, clientX, clientY) { + var closestNodeRect; + var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root)); + var targetNodeRects = $_c2vc3pkje5o2puw.filter(contentEditableFalseNodeRects, function (rect) { + return clientY >= rect.top && clientY <= rect.bottom; + }); + closestNodeRect = findClosestClientRect(targetNodeRects, clientX); + if (closestNodeRect) { + closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX); + if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) { + return caretInfo(closestNodeRect, clientX); + } + } + return null; + }; + + var isXYWithinRange = function (clientX, clientY, range) { + if (range.collapsed) { + return false; + } + return $_bwcteb4je5o2pl4.foldl(range.getClientRects(), function (state, rect) { + return state || containsXY(rect, clientX, clientY); + }, false); + }; + var $_40xr2y56je5o2qsc = { isXYWithinRange: isXYWithinRange }; + + var adaptable = function (fn, rate) { + var timer = null; + var args = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + args = null; + } + }; + var throttle = function () { + args = arguments; + if (timer === null) { + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + } + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var first$3 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = arguments; + if (timer === null) { + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + } + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var last$3 = function (fn, rate) { + var timer = null; + var cancel = function () { + if (timer !== null) { + clearTimeout(timer); + timer = null; + } + }; + var throttle = function () { + var args = arguments; + if (timer !== null) + clearTimeout(timer); + timer = setTimeout(function () { + fn.apply(null, args); + timer = null; + args = null; + }, rate); + }; + return { + cancel: cancel, + throttle: throttle + }; + }; + var $_7qjijn58je5o2qsg = { + adaptable: adaptable, + first: first$3, + last: last$3 + }; + + var setup$2 = function (editor) { + var renderFocusCaret = $_7qjijn58je5o2qsg.first(function () { + if (!editor.removed) { + var rng = editor.selection.getRng(); + if (rng.collapsed) { + var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false); + editor.selection.setRng(caretRange); + } + } + }, 0); + editor.on('focus', function () { + renderFocusCaret.throttle(); + }); + editor.on('blur', function () { + renderFocusCaret.cancel(); + }); + }; + var $_ceg6uc57je5o2qse = { setup: setup$2 }; + + var $_99mhlk59je5o2qss = { + BACKSPACE: 8, + DELETE: 46, + DOWN: 40, + ENTER: 13, + LEFT: 37, + RIGHT: 39, + SPACEBAR: 32, + TAB: 9, + UP: 38, + modifierPressed: function (e) { + return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e); + }, + metaKeyPressed: function (e) { + return $_9bd8pn9je5o2pp2.mac ? e.metaKey : e.ctrlKey && !e.altKey; + } + }; + + var isContentEditableTrue$5 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var isContentEditableFalse$9 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isAfterContentEditableFalse$1 = isAfterContentEditableFalse; + var isBeforeContentEditableFalse$1 = isBeforeContentEditableFalse; + var SelectionOverrides = function (editor) { + var isBlock = function (node) { + return editor.dom.isBlock(node); + }; + var rootNode = editor.getBody(); + var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () { + return $_llx5i48je5o2qna.hasFocus(editor); + }); + var realSelectionId = 'sel-' + editor.dom.uniqueId(); + var selectedContentEditableNode; + var isFakeSelectionElement = function (elm) { + return editor.dom.hasClass(elm, 'mce-offscreen-selection'); + }; + var getRealSelectionElement = function () { + var container = editor.dom.get(realSelectionId); + return container ? container.getElementsByTagName('*')[0] : container; + }; + var setRange = function (range) { + if (range) { + editor.selection.setRng(range); + } + }; + var getRange = function () { + return editor.selection.getRng(); + }; + var showCaret$$1 = function (direction, node, before, scrollIntoView) { + if (scrollIntoView === void 0) { + scrollIntoView = true; + } + var e; + e = editor.fire('ShowCaret', { + target: node, + direction: direction, + before: before + }); + if (e.isDefaultPrevented()) { + return null; + } + if (scrollIntoView) { + editor.selection.scrollIntoView(node, direction === -1); + } + return fakeCaret.show(before, node); + }; + var getNormalizedRangeEndPoint$$1 = function (direction, range) { + range = normalizeRange(direction, rootNode, range); + if (direction === -1) { + return CaretPosition$1.fromRangeStart(range); + } + return CaretPosition$1.fromRangeEnd(range); + }; + var showBlockCaretContainer = function (blockCaretContainer) { + if (blockCaretContainer.hasAttribute('data-mce-caret')) { + showCaretContainerBlock(blockCaretContainer); + setRange(getRange()); + editor.selection.scrollIntoView(blockCaretContainer[0]); + } + }; + var registerEvents = function () { + var getContentEditableRoot = function (node) { + var root = editor.getBody(); + while (node && node !== root) { + if (isContentEditableTrue$5(node) || isContentEditableFalse$9(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + editor.on('mouseup', function (e) { + var range = getRange(); + if (range.collapsed && $_3f7nxx4dje5o2qoa.isXYInContentArea(editor, e.clientX, e.clientY)) { + setRange(renderCaretAtRange(editor, range, false)); + } + }); + editor.on('click', function (e) { + var contentEditableRoot; + contentEditableRoot = getContentEditableRoot(e.target); + if (contentEditableRoot) { + if (isContentEditableFalse$9(contentEditableRoot)) { + e.preventDefault(); + editor.focus(); + } + if (isContentEditableTrue$5(contentEditableRoot)) { + if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) { + removeContentEditableSelection(); + } + } + } + }); + editor.on('blur NewBlock', function () { + removeContentEditableSelection(); + }); + var handleTouchSelect = function (editor) { + var moved = false; + editor.on('touchstart', function () { + moved = false; + }); + editor.on('touchmove', function () { + moved = true; + }); + editor.on('touchend', function (e) { + var contentEditableRoot = getContentEditableRoot(e.target); + if (isContentEditableFalse$9(contentEditableRoot)) { + if (!moved) { + e.preventDefault(); + setContentEditableSelection(selectNode(editor, contentEditableRoot)); + } + } + }); + }; + var hasNormalCaretPosition = function (elm) { + var caretWalker = CaretWalker(elm); + if (!elm.firstChild) { + return false; + } + var startPos = CaretPosition$1.before(elm.firstChild); + var newPos = caretWalker.next(startPos); + return newPos && !isBeforeContentEditableFalse$1(newPos) && !isAfterContentEditableFalse$1(newPos); + }; + var isInSameBlock$$1 = function (node1, node2) { + var block1 = editor.dom.getParent(node1, editor.dom.isBlock); + var block2 = editor.dom.getParent(node2, editor.dom.isBlock); + return block1 === block2; + }; + var hasBetterMouseTarget = function (targetNode, caretNode) { + var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock); + var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock); + return targetBlock && !isInSameBlock$$1(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock); + }; + handleTouchSelect(editor); + editor.on('mousedown', function (e) { + var contentEditableRoot; + var targetElm = e.target; + if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) { + return; + } + if ($_3f7nxx4dje5o2qoa.isXYInContentArea(editor, e.clientX, e.clientY) === false) { + return; + } + contentEditableRoot = getContentEditableRoot(targetElm); + if (contentEditableRoot) { + if (isContentEditableFalse$9(contentEditableRoot)) { + e.preventDefault(); + setContentEditableSelection(selectNode(editor, contentEditableRoot)); + } else { + removeContentEditableSelection(); + if (!(isContentEditableTrue$5(contentEditableRoot) && e.shiftKey) && !$_40xr2y56je5o2qsc.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) { + editor.selection.placeCaretAt(e.clientX, e.clientY); + } + } + } else if (isFakeCaretTarget(targetElm) === false) { + removeContentEditableSelection(); + hideFakeCaret(); + var caretInfo = closestCaret(rootNode, e.clientX, e.clientY); + if (caretInfo) { + if (!hasBetterMouseTarget(e.target, caretInfo.node)) { + e.preventDefault(); + var range = showCaret$$1(1, caretInfo.node, caretInfo.before, false); + editor.getBody().focus(); + setRange(range); + } + } + } + }); + editor.on('keypress', function (e) { + if ($_99mhlk59je5o2qss.modifierPressed(e)) { + return; + } + switch (e.keyCode) { + default: + if (isContentEditableFalse$9(editor.selection.getNode())) { + e.preventDefault(); + } + break; + } + }); + editor.on('getSelectionRange', function (e) { + var rng = e.range; + if (selectedContentEditableNode) { + if (!selectedContentEditableNode.parentNode) { + selectedContentEditableNode = null; + return; + } + rng = rng.cloneRange(); + rng.selectNode(selectedContentEditableNode); + e.range = rng; + } + }); + editor.on('setSelectionRange', function (e) { + var rng; + rng = setContentEditableSelection(e.range, e.forward); + if (rng) { + e.range = rng; + } + }); + editor.on('AfterSetSelectionRange', function (e) { + var rng = e.range; + if (!isRangeInCaretContainer(rng)) { + hideFakeCaret(); + } + if (!isFakeSelectionElement(rng.startContainer.parentNode)) { + removeContentEditableSelection(); + } + }); + editor.on('copy', function (e) { + var clipboardData = e.clipboardData; + if (!e.isDefaultPrevented() && e.clipboardData && !$_9bd8pn9je5o2pp2.ie) { + var realSelectionElement = getRealSelectionElement(); + if (realSelectionElement) { + e.preventDefault(); + clipboardData.clearData(); + clipboardData.setData('text/html', realSelectionElement.outerHTML); + clipboardData.setData('text/plain', realSelectionElement.outerText); + } + } + }); + $_dmqizi51je5o2qrp.init(editor); + $_ceg6uc57je5o2qse.setup(editor); + }; + var addCss = function () { + var styles = editor.contentStyles, rootClass = '.mce-content-body'; + styles.push(fakeCaret.getCss()); + styles.push(rootClass + ' .mce-offscreen-selection {' + 'position: absolute;' + 'left: -9999999999px;' + 'max-width: 1000000px;' + '}' + rootClass + ' *[contentEditable=false] {' + 'cursor: default;' + '}' + rootClass + ' *[contentEditable=true] {' + 'cursor: text;' + '}'); + }; + var isWithinCaretContainer = function (node) { + return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node); + }; + var isRangeInCaretContainer = function (rng) { + return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer); + }; + var setContentEditableSelection = function (range, forward) { + var node; + var $ = editor.$; + var dom = editor.dom; + var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone; + if (!range) { + return null; + } + if (range.collapsed) { + if (!isRangeInCaretContainer(range)) { + if (forward === false) { + caretPosition = getNormalizedRangeEndPoint$$1(-1, range); + if (isFakeCaretTarget(caretPosition.getNode(true))) { + return showCaret$$1(-1, caretPosition.getNode(true), false, false); + } + if (isFakeCaretTarget(caretPosition.getNode())) { + return showCaret$$1(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + } else { + caretPosition = getNormalizedRangeEndPoint$$1(1, range); + if (isFakeCaretTarget(caretPosition.getNode())) { + return showCaret$$1(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false); + } + if (isFakeCaretTarget(caretPosition.getNode(true))) { + return showCaret$$1(1, caretPosition.getNode(true), false, false); + } + } + } + return null; + } + startContainer = range.startContainer; + startOffset = range.startOffset; + endOffset = range.endOffset; + if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) { + startContainer = startContainer.parentNode; + startOffset = dom.nodeIndex(startContainer); + startContainer = startContainer.parentNode; + } + if (startContainer.nodeType !== 1) { + return null; + } + if (endOffset === startOffset + 1) { + node = startContainer.childNodes[startOffset]; + } + if (!isContentEditableFalse$9(node)) { + return null; + } + targetClone = origTargetClone = node.cloneNode(true); + e = editor.fire('ObjectSelected', { + target: node, + targetClone: targetClone + }); + if (e.isDefaultPrevented()) { + return null; + } + $realSelectionContainer = $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () { + return $([]); + }, function (elm) { + return $([elm.dom()]); + }); + targetClone = e.targetClone; + if ($realSelectionContainer.length === 0) { + $realSelectionContainer = $('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr('id', realSelectionId); + $realSelectionContainer.appendTo(editor.getBody()); + } + range = editor.dom.createRng(); + if (targetClone === origTargetClone && $_9bd8pn9je5o2pp2.ie) { + $realSelectionContainer.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xA0</p>').append(targetClone); + range.setStartAfter($realSelectionContainer[0].firstChild.firstChild); + range.setEndAfter(targetClone); + } else { + $realSelectionContainer.empty().append('\xA0').append(targetClone).append('\xA0'); + range.setStart($realSelectionContainer[0].firstChild, 1); + range.setEnd($realSelectionContainer[0].lastChild, 0); + } + $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y }); + $realSelectionContainer[0].focus(); + sel = editor.selection.getSel(); + sel.removeAllRanges(); + sel.addRange(range); + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) { + $_3uo9pl14je5o2pxq.remove(elm, 'data-mce-selected'); + }); + node.setAttribute('data-mce-selected', '1'); + selectedContentEditableNode = node; + hideFakeCaret(); + return range; + }; + var removeContentEditableSelection = function () { + if (selectedContentEditableNode) { + selectedContentEditableNode.removeAttribute('data-mce-selected'); + $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '#' + realSelectionId).each($_cr1seh2pje5o2qa1.remove); + selectedContentEditableNode = null; + } + }; + var destroy = function () { + fakeCaret.destroy(); + selectedContentEditableNode = null; + }; + var hideFakeCaret = function () { + fakeCaret.hide(); + }; + if ($_9bd8pn9je5o2pp2.ceFalse) { + registerEvents(); + addCss(); + } + return { + showCaret: showCaret$$1, + showBlockCaretContainer: showBlockCaretContainer, + hideFakeCaret: hideFakeCaret, + destroy: destroy + }; + }; + + var each$11 = $_a5gegtjje5o2pum.each; + var isValidPrefixAttrName = function (name) { + return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0; + }; + var trimComments = function (text) { + return text.replace(/<!--|-->/g, ''); + }; + var findEndTagIndex = function (schema, html, startIndex) { + var count = 1, index, matches, tokenRegExp, shortEndedElements; + shortEndedElements = schema.getShortEndedElements(); + tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g; + tokenRegExp.lastIndex = index = startIndex; + while (matches = tokenRegExp.exec(html)) { + index = tokenRegExp.lastIndex; + if (matches[1] === '/') { + count--; + } else if (!matches[1]) { + if (matches[2] in shortEndedElements) { + continue; + } + count++; + } + if (count === 0) { + break; + } + } + return index; + }; + function SaxParser(settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var noop = function () { + }; + settings = settings || {}; + if (settings.fix_self_closing !== false) { + settings.fix_self_closing = true; + } + each$11('comment cdata text start end pi doctype'.split(' '), function (name) { + if (name) { + self[name] = settings[name] || noop; + } + }); + var comment = settings.comment ? settings.comment : noop; + var cdata = settings.cdata ? settings.cdata : noop; + var text = settings.text ? settings.text : noop; + var start = settings.start ? settings.start : noop; + var end = settings.end ? settings.end : noop; + var pi = settings.pi ? settings.pi : noop; + var doctype = settings.doctype ? settings.doctype : noop; + var parse = function (html) { + var matches, index = 0, value, endRegExp; + var stack = []; + var attrList, i, textData, name; + var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded; + var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns; + var attributesRequired, attributesDefault, attributesForced, processHtml; + var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0; + var decode = $_fzh4ld1rje5o2q0t.decode; + var fixSelfClosing; + var filteredUrlAttrs = $_a5gegtjje5o2pum.makeMap('src,href,data,background,formaction,poster'); + var scriptUriRegExp = /((java|vb)script|mhtml):/i, dataUriRegExp = /^data:/i; + var processEndTag = function (name) { + var pos, i; + pos = stack.length; + while (pos--) { + if (stack[pos].name === name) { + break; + } + } + if (pos >= 0) { + for (i = stack.length - 1; i >= pos; i--) { + name = stack[i]; + if (name.valid) { + end(name.name); + } + } + stack.length = pos; + } + }; + var parseAttribute = function (match, name, value, val2, val3) { + var attrRule, i; + var trimRegExp = /[\s\u0000-\u001F]+/g; + name = name.toLowerCase(); + value = name in fillAttrsMap ? name : decode(value || val2 || val3 || ''); + if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) { + attrRule = validAttributesMap[name]; + if (!attrRule && validAttributePatterns) { + i = validAttributePatterns.length; + while (i--) { + attrRule = validAttributePatterns[i]; + if (attrRule.pattern.test(name)) { + break; + } + } + if (i === -1) { + attrRule = null; + } + } + if (!attrRule) { + return; + } + if (attrRule.validValues && !(value in attrRule.validValues)) { + return; + } + } + if (filteredUrlAttrs[name] && !settings.allow_script_urls) { + var uri = value.replace(trimRegExp, ''); + try { + uri = decodeURIComponent(uri); + } catch (ex) { + uri = unescape(uri); + } + if (scriptUriRegExp.test(uri)) { + return; + } + if (!settings.allow_html_data_urls && dataUriRegExp.test(uri) && !/^data:image\//i.test(uri)) { + return; + } + } + if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) { + return; + } + attrList.map[name] = value; + attrList.push({ + name: name, + value: value + }); + }; + tokenRegExp = new RegExp('<(?:' + '(?:!--([\\w\\W]*?)-->)|' + '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + '(?:!DOCTYPE([\\w\\W]*?)>)|' + '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + '(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + ')', 'g'); + attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g; + shortEndedElements = schema.getShortEndedElements(); + selfClosing = settings.self_closing_elements || schema.getSelfClosingElements(); + fillAttrsMap = schema.getBoolAttrs(); + validate = settings.validate; + removeInternalElements = settings.remove_internals; + fixSelfClosing = settings.fix_self_closing; + specialElements = schema.getSpecialElements(); + processHtml = html + '>'; + while (matches = tokenRegExp.exec(processHtml)) { + if (index < matches.index) { + text(decode(html.substr(index, matches.index - index))); + } + if (value = matches[6]) { + value = value.toLowerCase(); + if (value.charAt(0) === ':') { + value = value.substr(1); + } + processEndTag(value); + } else if (value = matches[7]) { + if (matches.index + matches[0].length > html.length) { + text(decode(html.substr(matches.index))); + index = matches.index + matches[0].length; + continue; + } + value = value.toLowerCase(); + if (value.charAt(0) === ':') { + value = value.substr(1); + } + isShortEnded = value in shortEndedElements; + if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) { + processEndTag(value); + } + if (!validate || (elementRule = schema.getElementRule(value))) { + isValidElement = true; + if (validate) { + validAttributesMap = elementRule.attributes; + validAttributePatterns = elementRule.attributePatterns; + } + if (attribsValue = matches[8]) { + isInternalElement = attribsValue.indexOf('data-mce-type') !== -1; + if (isInternalElement && removeInternalElements) { + isValidElement = false; + } + attrList = []; + attrList.map = {}; + attribsValue.replace(attrRegExp, parseAttribute); + } else { + attrList = []; + attrList.map = {}; + } + if (validate && !isInternalElement) { + attributesRequired = elementRule.attributesRequired; + attributesDefault = elementRule.attributesDefault; + attributesForced = elementRule.attributesForced; + anyAttributesRequired = elementRule.removeEmptyAttrs; + if (anyAttributesRequired && !attrList.length) { + isValidElement = false; + } + if (attributesForced) { + i = attributesForced.length; + while (i--) { + attr = attributesForced[i]; + name = attr.name; + attrValue = attr.value; + if (attrValue === '{$uid}') { + attrValue = 'mce_' + idCount++; + } + attrList.map[name] = attrValue; + attrList.push({ + name: name, + value: attrValue + }); + } + } + if (attributesDefault) { + i = attributesDefault.length; + while (i--) { + attr = attributesDefault[i]; + name = attr.name; + if (!(name in attrList.map)) { + attrValue = attr.value; + if (attrValue === '{$uid}') { + attrValue = 'mce_' + idCount++; + } + attrList.map[name] = attrValue; + attrList.push({ + name: name, + value: attrValue + }); + } + } + } + if (attributesRequired) { + i = attributesRequired.length; + while (i--) { + if (attributesRequired[i] in attrList.map) { + break; + } + } + if (i === -1) { + isValidElement = false; + } + } + if (attr = attrList.map['data-mce-bogus']) { + if (attr === 'all') { + index = findEndTagIndex(schema, html, tokenRegExp.lastIndex); + tokenRegExp.lastIndex = index; + continue; + } + isValidElement = false; + } + } + if (isValidElement) { + start(value, attrList, isShortEnded); + } + } else { + isValidElement = false; + } + if (endRegExp = specialElements[value]) { + endRegExp.lastIndex = index = matches.index + matches[0].length; + if (matches = endRegExp.exec(html)) { + if (isValidElement) { + textData = html.substr(index, matches.index - index); + } + index = matches.index + matches[0].length; + } else { + textData = html.substr(index); + index = html.length; + } + if (isValidElement) { + if (textData.length > 0) { + text(textData, true); + } + end(value); + } + tokenRegExp.lastIndex = index; + continue; + } + if (!isShortEnded) { + if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) { + stack.push({ + name: value, + valid: isValidElement + }); + } else if (isValidElement) { + end(value); + } + } + } else if (value = matches[1]) { + if (value.charAt(0) === '>') { + value = ' ' + value; + } + if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') { + value = ' ' + value; + } + comment(value); + } else if (value = matches[2]) { + cdata(trimComments(value)); + } else if (value = matches[3]) { + doctype(value); + } else if (value = matches[4]) { + pi(value, matches[5]); + } + index = matches.index + matches[0].length; + } + if (index < html.length) { + text(decode(html.substr(index))); + } + for (i = stack.length - 1; i >= 0; i--) { + value = stack[i]; + if (value.valid) { + end(value.name); + } + } + }; + return { parse: parse }; + } + (function (SaxParser) { + SaxParser.findEndTag = findEndTagIndex; + }(SaxParser || (SaxParser = {}))); + var SaxParser$1 = SaxParser; + + var trimHtml = function (tempAttrs, html) { + var trimContentRegExp = new RegExp(['\\s?(' + tempAttrs.join('|') + ')="[^"]+"'].join('|'), 'gi'); + return html.replace(trimContentRegExp, ''); + }; + var trimInternal = function (serializer, html) { + var content = html; + var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g; + var endTagIndex, index, matchLength, matches, shortEndedElements; + var schema = serializer.schema; + content = trimHtml(serializer.getTempAttrs(), content); + shortEndedElements = schema.getShortEndedElements(); + while (matches = bogusAllRegExp.exec(content)) { + index = bogusAllRegExp.lastIndex; + matchLength = matches[0].length; + if (shortEndedElements[matches[1]]) { + endTagIndex = index; + } else { + endTagIndex = SaxParser$1.findEndTag(schema, content, index); + } + content = content.substring(0, index - matchLength) + content.substring(endTagIndex); + bogusAllRegExp.lastIndex = index - matchLength; + } + return content; + }; + var trimExternal = function (serializer, html) { + return $_4md31c21je5o2q5f.trim(trimInternal(serializer, html)); + }; + var $_15ih885cje5o2qt6 = { + trimExternal: trimExternal, + trimInternal: trimInternal + }; + + var KEEP = 0; + var INSERT = 1; + var DELETE = 2; + var diff = function (left, right) { + var size = left.length + right.length + 2; + var vDown = new Array(size); + var vUp = new Array(size); + var snake = function (start, end, diag) { + return { + start: start, + end: end, + diag: diag + }; + }; + var buildScript = function (start1, end1, start2, end2, script) { + var middle = getMiddleSnake(start1, end1, start2, end2); + if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) { + var i = start1; + var j = start2; + while (i < end1 || j < end2) { + if (i < end1 && j < end2 && left[i] === right[j]) { + script.push([ + KEEP, + left[i] + ]); + ++i; + ++j; + } else { + if (end1 - start1 > end2 - start2) { + script.push([ + DELETE, + left[i] + ]); + ++i; + } else { + script.push([ + INSERT, + right[j] + ]); + ++j; + } + } + } + } else { + buildScript(start1, middle.start, start2, middle.start - middle.diag, script); + for (var i2 = middle.start; i2 < middle.end; ++i2) { + script.push([ + KEEP, + left[i2] + ]); + } + buildScript(middle.end, end1, middle.end - middle.diag, end2, script); + } + }; + var buildSnake = function (start, diag, end1, end2) { + var end = start; + while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) { + ++end; + } + return snake(start, end, diag); + }; + var getMiddleSnake = function (start1, end1, start2, end2) { + var m = end1 - start1; + var n = end2 - start2; + if (m === 0 || n === 0) { + return null; + } + var delta = m - n; + var sum = n + m; + var offset = (sum % 2 === 0 ? sum : sum + 1) / 2; + vDown[1 + offset] = start1; + vUp[1 + offset] = end1 + 1; + var d, k, i, x, y; + for (d = 0; d <= offset; ++d) { + for (k = -d; k <= d; k += 2) { + i = k + offset; + if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) { + vDown[i] = vDown[i + 1]; + } else { + vDown[i] = vDown[i - 1] + 1; + } + x = vDown[i]; + y = x - start1 + start2 - k; + while (x < end1 && y < end2 && left[x] === right[y]) { + vDown[i] = ++x; + ++y; + } + if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) { + if (vUp[i - delta] <= vDown[i]) { + return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2); + } + } + } + for (k = delta - d; k <= delta + d; k += 2) { + i = k + offset - delta; + if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) { + vUp[i] = vUp[i + 1] - 1; + } else { + vUp[i] = vUp[i - 1]; + } + x = vUp[i] - 1; + y = x - start1 + start2 - k; + while (x >= start1 && y >= start2 && left[x] === right[y]) { + vUp[i] = x--; + y--; + } + if (delta % 2 === 0 && -d <= k && k <= d) { + if (vUp[i] <= vDown[i + delta]) { + return buildSnake(vUp[i], k + start1 - start2, end1, end2); + } + } + } + } + }; + var script = []; + buildScript(0, left.length, 0, right.length, script); + return script; + }; + var $_gf7th55fje5o2qtr = { + KEEP: KEEP, + DELETE: DELETE, + INSERT: INSERT, + diff: diff + }; + + var getOuterHtml = function (elm) { + if (elm.nodeType === 1) { + return elm.outerHTML; + } else if (elm.nodeType === 3) { + return $_fzh4ld1rje5o2q0t.encodeRaw(elm.data, false); + } else if (elm.nodeType === 8) { + return '<!--' + elm.data + '-->'; + } + return ''; + }; + var createFragment$1 = function (html) { + var frag, node, container; + container = document.createElement('div'); + frag = document.createDocumentFragment(); + if (html) { + container.innerHTML = html; + } + while (node = container.firstChild) { + frag.appendChild(node); + } + return frag; + }; + var insertAt = function (elm, html, index) { + var fragment = createFragment$1(html); + if (elm.hasChildNodes() && index < elm.childNodes.length) { + var target = elm.childNodes[index]; + target.parentNode.insertBefore(fragment, target); + } else { + elm.appendChild(fragment); + } + }; + var removeAt = function (elm, index) { + if (elm.hasChildNodes() && index < elm.childNodes.length) { + var target = elm.childNodes[index]; + target.parentNode.removeChild(target); + } + }; + var applyDiff = function (diff, elm) { + var index = 0; + $_c2vc3pkje5o2puw.each(diff, function (action) { + if (action[0] === $_gf7th55fje5o2qtr.KEEP) { + index++; + } else if (action[0] === $_gf7th55fje5o2qtr.INSERT) { + insertAt(elm, action[1], index); + index++; + } else if (action[0] === $_gf7th55fje5o2qtr.DELETE) { + removeAt(elm, index); + } + }); + }; + var read$2 = function (elm) { + return $_c2vc3pkje5o2puw.filter($_c2vc3pkje5o2puw.map(elm.childNodes, getOuterHtml), function (item) { + return item.length > 0; + }); + }; + var write = function (fragments, elm) { + var currentFragments = $_c2vc3pkje5o2puw.map(elm.childNodes, getOuterHtml); + applyDiff($_gf7th55fje5o2qtr.diff(currentFragments, fragments), elm); + return elm; + }; + var $_fjm93l5eje5o2qto = { + read: read$2, + write: write + }; + + var hasIframes = function (html) { + return html.indexOf('</iframe>') !== -1; + }; + var createFragmentedLevel = function (fragments) { + return { + type: 'fragmented', + fragments: fragments, + content: '', + bookmark: null, + beforeBookmark: null + }; + }; + var createCompleteLevel = function (content) { + return { + type: 'complete', + fragments: null, + content: content, + bookmark: null, + beforeBookmark: null + }; + }; + var createFromEditor = function (editor) { + var fragments, content, trimmedFragments; + fragments = $_fjm93l5eje5o2qto.read(editor.getBody()); + trimmedFragments = $_bwcteb4je5o2pl4.bind(fragments, function (html) { + var trimmed = $_15ih885cje5o2qt6.trimInternal(editor.serializer, html); + return trimmed.length > 0 ? [trimmed] : []; + }); + content = trimmedFragments.join(''); + return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content); + }; + var applyToEditor = function (editor, level, before) { + if (level.type === 'fragmented') { + $_fjm93l5eje5o2qto.write(level.fragments, editor.getBody()); + } else { + editor.setContent(level.content, { format: 'raw' }); + } + editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark); + }; + var getLevelContent = function (level) { + return level.type === 'fragmented' ? level.fragments.join('') : level.content; + }; + var isEq$4 = function (level1, level2) { + return !!level1 && !!level2 && getLevelContent(level1) === getLevelContent(level2); + }; + var $_dv64z5bje5o2qt3 = { + createFragmentedLevel: createFragmentedLevel, + createCompleteLevel: createCompleteLevel, + createFromEditor: createFromEditor, + applyToEditor: applyToEditor, + isEq: isEq$4 + }; + + function UndoManager (editor) { + var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0; + var isUnlocked = function () { + return locks === 0; + }; + var setTyping = function (typing) { + if (isUnlocked()) { + self.typing = typing; + } + }; + var setDirty = function (state) { + editor.setDirty(state); + }; + var addNonTypingUndoLevel = function (e) { + setTyping(false); + self.add({}, e); + }; + var endTyping = function () { + if (self.typing) { + setTyping(false); + self.add(); + } + }; + editor.on('init', function () { + self.add(); + }); + editor.on('BeforeExecCommand', function (e) { + var cmd = e.command; + if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { + endTyping(); + self.beforeChange(); + } + }); + editor.on('ExecCommand', function (e) { + var cmd = e.command; + if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') { + addNonTypingUndoLevel(e); + } + }); + editor.on('ObjectResizeStart Cut', function () { + self.beforeChange(); + }); + editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel); + editor.on('DragEnd', addNonTypingUndoLevel); + editor.on('KeyUp', function (e) { + var keyCode = e.keyCode; + if (e.isDefaultPrevented()) { + return; + } + if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) { + addNonTypingUndoLevel(); + editor.nodeChanged(); + } + if (keyCode === 46 || keyCode === 8) { + editor.nodeChanged(); + } + if (isFirstTypedCharacter && self.typing && $_dv64z5bje5o2qt3.isEq($_dv64z5bje5o2qt3.createFromEditor(editor), data[0]) === false) { + if (editor.isDirty() === false) { + setDirty(true); + editor.fire('change', { + level: data[0], + lastLevel: null + }); + } + editor.fire('TypingUndo'); + isFirstTypedCharacter = false; + editor.nodeChanged(); + } + }); + editor.on('KeyDown', function (e) { + var keyCode = e.keyCode; + if (e.isDefaultPrevented()) { + return; + } + if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) { + if (self.typing) { + addNonTypingUndoLevel(e); + } + return; + } + var modKey = e.ctrlKey && !e.altKey || e.metaKey; + if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) { + self.beforeChange(); + setTyping(true); + self.add({}, e); + isFirstTypedCharacter = true; + } + }); + editor.on('MouseDown', function (e) { + if (self.typing) { + addNonTypingUndoLevel(e); + } + }); + var isInsertReplacementText = function (event) { + return event.inputType === 'insertReplacementText'; + }; + var isInsertTextDataNull = function (event) { + return event.inputType === 'insertText' && event.data === null; + }; + editor.on('input', function (e) { + if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) { + addNonTypingUndoLevel(e); + } + }); + editor.addShortcut('meta+z', '', 'Undo'); + editor.addShortcut('meta+y,meta+shift+z', '', 'Redo'); + editor.on('AddUndo Undo Redo ClearUndos', function (e) { + if (!e.isDefaultPrevented()) { + editor.nodeChanged(); + } + }); + self = { + data: data, + typing: false, + beforeChange: function () { + if (isUnlocked()) { + beforeBookmark = $_9eyzd52kje5o2q8r.getUndoBookmark(editor.selection); + } + }, + add: function (level, event) { + var i; + var settings = editor.settings; + var lastLevel, currentLevel; + currentLevel = $_dv64z5bje5o2qt3.createFromEditor(editor); + level = level || {}; + level = $_a5gegtjje5o2pum.extend(level, currentLevel); + if (isUnlocked() === false || editor.removed) { + return null; + } + lastLevel = data[index]; + if (editor.fire('BeforeAddUndo', { + level: level, + lastLevel: lastLevel, + originalEvent: event + }).isDefaultPrevented()) { + return null; + } + if (lastLevel && $_dv64z5bje5o2qt3.isEq(lastLevel, level)) { + return null; + } + if (data[index]) { + data[index].beforeBookmark = beforeBookmark; + } + if (settings.custom_undo_redo_levels) { + if (data.length > settings.custom_undo_redo_levels) { + for (i = 0; i < data.length - 1; i++) { + data[i] = data[i + 1]; + } + data.length--; + index = data.length; + } + } + level.bookmark = $_9eyzd52kje5o2q8r.getUndoBookmark(editor.selection); + if (index < data.length - 1) { + data.length = index + 1; + } + data.push(level); + index = data.length - 1; + var args = { + level: level, + lastLevel: lastLevel, + originalEvent: event + }; + editor.fire('AddUndo', args); + if (index > 0) { + setDirty(true); + editor.fire('change', args); + } + return level; + }, + undo: function () { + var level; + if (self.typing) { + self.add(); + self.typing = false; + setTyping(false); + } + if (index > 0) { + level = data[--index]; + $_dv64z5bje5o2qt3.applyToEditor(editor, level, true); + setDirty(true); + editor.fire('undo', { level: level }); + } + return level; + }, + redo: function () { + var level; + if (index < data.length - 1) { + level = data[++index]; + $_dv64z5bje5o2qt3.applyToEditor(editor, level, false); + setDirty(true); + editor.fire('redo', { level: level }); + } + return level; + }, + clear: function () { + data = []; + index = 0; + self.typing = false; + self.data = data; + editor.fire('ClearUndos'); + }, + hasUndo: function () { + return index > 0 || self.typing && data[0] && !$_dv64z5bje5o2qt3.isEq($_dv64z5bje5o2qt3.createFromEditor(editor), data[0]); + }, + hasRedo: function () { + return index < data.length - 1 && !self.typing; + }, + transact: function (callback) { + endTyping(); + self.beforeChange(); + self.ignore(callback); + return self.add(); + }, + ignore: function (callback) { + try { + locks++; + callback(); + } finally { + locks--; + } + }, + extra: function (callback1, callback2) { + var lastLevel, bookmark; + if (self.transact(callback1)) { + bookmark = data[index].bookmark; + lastLevel = data[index - 1]; + $_dv64z5bje5o2qt3.applyToEditor(editor, lastLevel, true); + if (self.transact(callback2)) { + data[index - 1].beforeBookmark = bookmark; + } + } + } + }; + return self; + } + + var postProcessHooks = {}; + var filter$2 = $_c2vc3pkje5o2puw.filter; + var each$12 = $_c2vc3pkje5o2puw.each; + var addPostProcessHook = function (name, hook) { + var hooks = postProcessHooks[name]; + if (!hooks) { + postProcessHooks[name] = hooks = []; + } + postProcessHooks[name].push(hook); + }; + var postProcess = function (name, editor) { + each$12(postProcessHooks[name], function (hook) { + hook(editor); + }); + }; + addPostProcessHook('pre', function (editor) { + var rng = editor.selection.getRng(); + var isPre, blocks; + var hasPreSibling = function (pre) { + return isPre(pre.previousSibling) && $_c2vc3pkje5o2puw.indexOf(blocks, pre.previousSibling) !== -1; + }; + var joinPre = function (pre1, pre2) { + DomQuery(pre2).remove(); + DomQuery(pre1).append('<br><br>').append(pre2.childNodes); + }; + isPre = $_9owqcy1qje5o2q0e.matchNodeNames('pre'); + if (!rng.collapsed) { + blocks = editor.selection.getSelectedBlocks(); + each$12(filter$2(filter$2(blocks, isPre), hasPreSibling), function (pre) { + joinPre(pre.previousSibling, pre); + }); + } + }); + var $_6kqshy5ije5o2qu7 = { postProcess: postProcess }; + + var each$13 = $_a5gegtjje5o2pum.each; + var getEndChild = function (container, index) { + var childNodes = container.childNodes; + index--; + if (index > childNodes.length - 1) { + index = childNodes.length - 1; + } else if (index < 0) { + index = 0; + } + return childNodes[index] || container; + }; + var walk$2 = function (dom, rng, callback) { + var startContainer = rng.startContainer; + var startOffset = rng.startOffset; + var endContainer = rng.endContainer; + var endOffset = rng.endOffset; + var ancestor; + var startPoint; + var endPoint; + var node; + var parent; + var siblings; + var nodes; + nodes = dom.select('td[data-mce-selected],th[data-mce-selected]'); + if (nodes.length > 0) { + each$13(nodes, function (node) { + callback([node]); + }); + return; + } + var exclude = function (nodes) { + var node; + node = nodes[0]; + if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) { + nodes.splice(0, 1); + } + node = nodes[nodes.length - 1]; + if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) { + nodes.splice(nodes.length - 1, 1); + } + return nodes; + }; + var collectSiblings = function (node, name, endNode) { + var siblings = []; + for (; node && node !== endNode; node = node[name]) { + siblings.push(node); + } + return siblings; + }; + var findEndPoint = function (node, root) { + do { + if (node.parentNode === root) { + return node; + } + node = node.parentNode; + } while (node); + }; + var walkBoundary = function (startNode, endNode, next) { + var siblingName = next ? 'nextSibling' : 'previousSibling'; + for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) { + parent = node.parentNode; + siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName); + if (siblings.length) { + if (!next) { + siblings.reverse(); + } + callback(exclude(siblings)); + } + } + }; + if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) { + startContainer = startContainer.childNodes[startOffset]; + } + if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) { + endContainer = getEndChild(endContainer, endOffset); + } + if (startContainer === endContainer) { + return callback(exclude([startContainer])); + } + ancestor = dom.findCommonAncestor(startContainer, endContainer); + for (node = startContainer; node; node = node.parentNode) { + if (node === endContainer) { + return walkBoundary(startContainer, ancestor, true); + } + if (node === ancestor) { + break; + } + } + for (node = endContainer; node; node = node.parentNode) { + if (node === startContainer) { + return walkBoundary(endContainer, ancestor); + } + if (node === ancestor) { + break; + } + } + startPoint = findEndPoint(startContainer, ancestor) || startContainer; + endPoint = findEndPoint(endContainer, ancestor) || endContainer; + walkBoundary(startContainer, startPoint, true); + siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint); + if (siblings.length) { + callback(exclude(siblings)); + } + walkBoundary(endContainer, endPoint); + }; + var $_1jk9p5lje5o2qv9 = { walk: walk$2 }; + + var MCE_ATTR_RE = /^(src|href|style)$/; + var each$14 = $_a5gegtjje5o2pum.each; + var isEq$5 = $_b2hqtg3lje5o2qft.isEq; + var isTableCell$4 = function (node) { + return /^(TH|TD)$/.test(node.nodeName); + }; + var getContainer = function (ed, rng, start) { + var container, offset, lastIdx; + container = rng[start ? 'startContainer' : 'endContainer']; + offset = rng[start ? 'startOffset' : 'endOffset']; + if ($_9owqcy1qje5o2q0e.isElement(container)) { + lastIdx = container.childNodes.length - 1; + if (!start && offset) { + offset--; + } + container = container.childNodes[offset > lastIdx ? lastIdx : offset]; + } + if ($_9owqcy1qje5o2q0e.isText(container) && start && offset >= container.nodeValue.length) { + container = new TreeWalker(container, ed.getBody()).next() || container; + } + if ($_9owqcy1qje5o2q0e.isText(container) && !start && offset === 0) { + container = new TreeWalker(container, ed.getBody()).prev() || container; + } + return container; + }; + var wrap$2 = function (dom, node, name, attrs) { + var wrapper = dom.create(name, attrs); + node.parentNode.insertBefore(wrapper, node); + wrapper.appendChild(node); + return wrapper; + }; + var matchName$1 = function (dom, node, format) { + if (isEq$5(node, format.inline)) { + return true; + } + if (isEq$5(node, format.block)) { + return true; + } + if (format.selector) { + return $_9owqcy1qje5o2q0e.isElement(node) && dom.is(node, format.selector); + } + }; + var isColorFormatAndAnchor = function (node, format) { + return format.links && node.tagName === 'A'; + }; + var find$4 = function (dom, node, next, inc) { + node = $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node, next, inc); + return !node || (node.nodeName === 'BR' || dom.isBlock(node)); + }; + var removeNode$1 = function (ed, node, format) { + var parentNode = node.parentNode; + var rootBlockElm; + var dom = ed.dom, forcedRootBlock = ed.settings.forced_root_block; + if (format.block) { + if (!forcedRootBlock) { + if (dom.isBlock(node) && !dom.isBlock(parentNode)) { + if (!find$4(dom, node, false) && !find$4(dom, node.firstChild, true, 1)) { + node.insertBefore(dom.create('br'), node.firstChild); + } + if (!find$4(dom, node, true) && !find$4(dom, node.lastChild, false, 1)) { + node.appendChild(dom.create('br')); + } + } + } else { + if (parentNode === dom.getRoot()) { + if (!format.list_block || !isEq$5(node, format.list_block)) { + each$14($_a5gegtjje5o2pum.grep(node.childNodes), function (node) { + if ($_b2hqtg3lje5o2qft.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) { + if (!rootBlockElm) { + rootBlockElm = wrap$2(dom, node, forcedRootBlock); + dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs); + } else { + rootBlockElm.appendChild(node); + } + } else { + rootBlockElm = 0; + } + }); + } + } + } + } + if (format.selector && format.inline && !isEq$5(format.inline, node)) { + return; + } + dom.remove(node, 1); + }; + var removeFormat = function (ed, format, vars, node, compareNode) { + var i, attrs, stylesModified; + var dom = ed.dom; + if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) { + return false; + } + if (format.remove !== 'all') { + each$14(format.styles, function (value, name) { + value = $_b2hqtg3lje5o2qft.normalizeStyleValue(dom, $_b2hqtg3lje5o2qft.replaceVars(value, vars), name); + if (typeof name === 'number') { + name = value; + compareNode = 0; + } + if (format.remove_similar || (!compareNode || isEq$5($_b2hqtg3lje5o2qft.getStyle(dom, compareNode, name), value))) { + dom.setStyle(node, name, ''); + } + stylesModified = 1; + }); + if (stylesModified && dom.getAttrib(node, 'style') === '') { + node.removeAttribute('style'); + node.removeAttribute('data-mce-style'); + } + each$14(format.attributes, function (value, name) { + var valueOut; + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (typeof name === 'number') { + name = value; + compareNode = 0; + } + if (!compareNode || isEq$5(dom.getAttrib(compareNode, name), value)) { + if (name === 'class') { + value = dom.getAttrib(node, name); + if (value) { + valueOut = ''; + each$14(value.split(/\s+/), function (cls) { + if (/mce\-\w+/.test(cls)) { + valueOut += (valueOut ? ' ' : '') + cls; + } + }); + if (valueOut) { + dom.setAttrib(node, name, valueOut); + return; + } + } + } + if (name === 'class') { + node.removeAttribute('className'); + } + if (MCE_ATTR_RE.test(name)) { + node.removeAttribute('data-mce-' + name); + } + node.removeAttribute(name); + } + }); + each$14(format.classes, function (value) { + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (!compareNode || dom.hasClass(compareNode, value)) { + dom.removeClass(node, value); + } + }); + attrs = dom.getAttribs(node); + for (i = 0; i < attrs.length; i++) { + var attrName = attrs[i].nodeName; + if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) { + return false; + } + } + } + if (format.remove !== 'none') { + removeNode$1(ed, node, format); + return true; + } + }; + var findFormatRoot = function (editor, container, name, vars, similar) { + var formatRoot; + each$14($_b2hqtg3lje5o2qft.getParents(editor.dom, container.parentNode).reverse(), function (parent) { + var format; + if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') { + format = $_g32xfv3mje5o2qg1.matchNode(editor, parent, name, vars, similar); + if (format && format.split !== false) { + formatRoot = parent; + } + } + }); + return formatRoot; + }; + var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) { + var parent, clone, lastClone, firstClone, i, formatRootParent; + var dom = editor.dom; + if (formatRoot) { + formatRootParent = formatRoot.parentNode; + for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) { + clone = dom.clone(parent, false); + for (i = 0; i < formatList.length; i++) { + if (removeFormat(editor, formatList[i], vars, clone, clone)) { + clone = 0; + break; + } + } + if (clone) { + if (lastClone) { + clone.appendChild(lastClone); + } + if (!firstClone) { + firstClone = clone; + } + lastClone = clone; + } + } + if (split && (!format.mixed || !dom.isBlock(formatRoot))) { + container = dom.split(formatRoot, container); + } + if (lastClone) { + target.parentNode.insertBefore(lastClone, target); + firstClone.appendChild(target); + } + } + return container; + }; + var remove$4 = function (ed, name, vars, node, similar) { + var formatList = ed.formatter.get(name), format = formatList[0]; + var bookmark, rng, contentEditable = true; + var dom = ed.dom; + var selection = ed.selection; + var splitToFormatRoot = function (container) { + var formatRoot = findFormatRoot(ed, container, name, vars, similar); + return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars); + }; + var process = function (node) { + var children, i, l, lastContentEditable, hasContentEditableState; + if ($_9owqcy1qje5o2q0e.isElement(node) && dom.getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = dom.getContentEditable(node) === 'true'; + hasContentEditableState = true; + } + children = $_a5gegtjje5o2pum.grep(node.childNodes); + if (contentEditable && !hasContentEditableState) { + for (i = 0, l = formatList.length; i < l; i++) { + if (removeFormat(ed, formatList[i], vars, node, node)) { + break; + } + } + } + if (format.deep) { + if (children.length) { + for (i = 0, l = children.length; i < l; i++) { + process(children[i]); + } + if (hasContentEditableState) { + contentEditable = lastContentEditable; + } + } + } + }; + var unwrap = function (start) { + var node = dom.get(start ? '_start' : '_end'); + var out = node[start ? 'firstChild' : 'lastChild']; + if ($_83h91t2jje5o2q8n.isBookmarkNode(out)) { + out = out[start ? 'firstChild' : 'lastChild']; + } + if ($_9owqcy1qje5o2q0e.isText(out) && out.data.length === 0) { + out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling; + } + dom.remove(node, true); + return out; + }; + var removeRngStyle = function (rng) { + var startContainer, endContainer; + var commonAncestorContainer = rng.commonAncestorContainer; + rng = $_8wd5fu3kje5o2qfi.expandRng(ed, rng, formatList, true); + if (format.split) { + startContainer = getContainer(ed, rng, true); + endContainer = getContainer(ed, rng); + if (startContainer !== endContainer) { + if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) { + if (startContainer.nodeName === 'TR') { + startContainer = startContainer.firstChild.firstChild || startContainer; + } else { + startContainer = startContainer.firstChild || startContainer; + } + } + if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$4(endContainer) && endContainer.firstChild) { + endContainer = endContainer.firstChild || endContainer; + } + if (dom.isChildOf(startContainer, endContainer) && startContainer !== endContainer && !dom.isBlock(endContainer) && !isTableCell$4(startContainer) && !isTableCell$4(endContainer)) { + startContainer = wrap$2(dom, startContainer, 'span', { + 'id': '_start', + 'data-mce-type': 'bookmark' + }); + splitToFormatRoot(startContainer); + startContainer = unwrap(true); + return; + } + startContainer = wrap$2(dom, startContainer, 'span', { + 'id': '_start', + 'data-mce-type': 'bookmark' + }); + endContainer = wrap$2(dom, endContainer, 'span', { + 'id': '_end', + 'data-mce-type': 'bookmark' + }); + splitToFormatRoot(startContainer); + splitToFormatRoot(endContainer); + startContainer = unwrap(true); + endContainer = unwrap(); + } else { + startContainer = endContainer = splitToFormatRoot(startContainer); + } + rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer; + rng.startOffset = dom.nodeIndex(startContainer); + rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer; + rng.endOffset = dom.nodeIndex(endContainer) + 1; + } + $_1jk9p5lje5o2qv9.walk(dom, rng, function (nodes) { + each$14(nodes, function (node) { + process(node); + if ($_9owqcy1qje5o2q0e.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && $_b2hqtg3lje5o2qft.getTextDecoration(dom, node.parentNode) === 'underline') { + removeFormat(ed, { + deep: false, + exact: true, + inline: 'span', + styles: { textDecoration: 'underline' } + }, null, node); + } + }); + }); + }; + if (node) { + if (node.nodeType) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + removeRngStyle(rng); + } else { + removeRngStyle(node); + } + return; + } + if (dom.getContentEditable(selection.getNode()) === 'false') { + node = selection.getNode(); + for (var i = 0, l = formatList.length; i < l; i++) { + if (formatList[i].ceFalseOverride) { + if (removeFormat(ed, formatList[i], vars, node, node)) { + break; + } + } + } + return; + } + if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { + bookmark = selection.getBookmark(); + removeRngStyle(selection.getRng()); + selection.moveToBookmark(bookmark); + if (format.inline && $_g32xfv3mje5o2qg1.match(ed, name, vars, selection.getStart())) { + $_b2hqtg3lje5o2qft.moveStart(dom, selection, selection.getRng()); + } + ed.nodeChanged(); + } else { + $_4066yu3jje5o2qev.removeCaretFormat(ed, name, vars, similar); + } + }; + var $_2afve25kje5o2qul = { + removeFormat: removeFormat, + remove: remove$4 + }; + + var each$15 = $_a5gegtjje5o2pum.each; + var isElementNode = function (node) { + return node && node.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(node) && !$_4066yu3jje5o2qev.isCaretNode(node) && !$_9owqcy1qje5o2q0e.isBogus(node); + }; + var findElementSibling = function (node, siblingName) { + var sibling; + for (sibling = node; sibling; sibling = sibling[siblingName]) { + if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) { + return node; + } + if (sibling.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(sibling)) { + return sibling; + } + } + return node; + }; + var mergeSiblingsNodes = function (dom, prev, next) { + var sibling, tmpSibling; + var elementUtils = new ElementUtils(dom); + if (prev && next) { + prev = findElementSibling(prev, 'previousSibling'); + next = findElementSibling(next, 'nextSibling'); + if (elementUtils.compare(prev, next)) { + for (sibling = prev.nextSibling; sibling && sibling !== next;) { + tmpSibling = sibling; + sibling = sibling.nextSibling; + prev.appendChild(tmpSibling); + } + dom.remove(next); + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.grep(next.childNodes), function (node) { + prev.appendChild(node); + }); + return prev; + } + } + return next; + }; + var processChildElements = function (node, filter, process) { + each$15(node.childNodes, function (node) { + if (isElementNode(node)) { + if (filter(node)) { + process(node); + } + if (node.hasChildNodes()) { + processChildElements(node, filter, process); + } + } + }); + }; + var hasStyle = function (dom, name) { + return $_enfhkv6je5o2ply.curry(function (name, node) { + return !!(node && $_b2hqtg3lje5o2qft.getStyle(dom, node, name)); + }, name); + }; + var applyStyle = function (dom, name, value) { + return $_enfhkv6je5o2ply.curry(function (name, value, node) { + dom.setStyle(node, name, value); + if (node.getAttribute('style') === '') { + node.removeAttribute('style'); + } + unwrapEmptySpan(dom, node); + }, name, value); + }; + var unwrapEmptySpan = function (dom, node) { + if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) { + dom.remove(node, true); + } + }; + var processUnderlineAndColor = function (dom, node) { + var textDecoration; + if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) { + textDecoration = $_b2hqtg3lje5o2qft.getTextDecoration(dom, node.parentNode); + if (dom.getStyle(node, 'color') && textDecoration) { + dom.setStyle(node, 'text-decoration', textDecoration); + } else if (dom.getStyle(node, 'text-decoration') === textDecoration) { + dom.setStyle(node, 'text-decoration', null); + } + } + }; + var mergeUnderlineAndColor = function (dom, format, vars, node) { + if (format.styles.color || format.styles.textDecoration) { + $_a5gegtjje5o2pum.walk(node, $_enfhkv6je5o2ply.curry(processUnderlineAndColor, dom), 'childNodes'); + processUnderlineAndColor(dom, node); + } + }; + var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) { + if (format.styles && format.styles.backgroundColor) { + processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', $_b2hqtg3lje5o2qft.replaceVars(format.styles.backgroundColor, vars))); + } + }; + var mergeSubSup = function (dom, format, vars, node) { + if (format.inline === 'sub' || format.inline === 'sup') { + processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', '')); + dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true); + } + }; + var mergeSiblings = function (dom, format, vars, node) { + if (node && format.merge_siblings !== false) { + node = mergeSiblingsNodes(dom, $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node), node); + node = mergeSiblingsNodes(dom, node, $_b2hqtg3lje5o2qft.getNonWhiteSpaceSibling(node, true)); + } + }; + var clearChildStyles = function (dom, format, node) { + if (format.clear_child_styles) { + var selector = format.links ? '*:not(a)' : '*'; + each$15(dom.select(selector, node), function (node) { + if (isElementNode(node)) { + each$15(format.styles, function (value, name) { + dom.setStyle(node, name, ''); + }); + } + }); + } + }; + var mergeWithChildren = function (editor, formatList, vars, node) { + each$15(formatList, function (format) { + each$15(editor.dom.select(format.inline, node), function (child) { + if (!isElementNode(child)) { + return; + } + $_2afve25kje5o2qul.removeFormat(editor, format, vars, child, format.exact ? child : null); + }); + clearChildStyles(editor.dom, format, node); + }); + }; + var mergeWithParents = function (editor, format, name, vars, node) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, node.parentNode, name, vars)) { + if ($_2afve25kje5o2qul.removeFormat(editor, format, vars, node)) { + return; + } + } + if (format.merge_with_parents) { + editor.dom.getParent(node.parentNode, function (parent) { + if ($_g32xfv3mje5o2qg1.matchNode(editor, parent, name, vars)) { + $_2afve25kje5o2qul.removeFormat(editor, format, vars, node); + return true; + } + }); + } + }; + var $_ddwhlm5jje5o2qua = { + mergeWithChildren: mergeWithChildren, + mergeUnderlineAndColor: mergeUnderlineAndColor, + mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize, + mergeSubSup: mergeSubSup, + mergeSiblings: mergeSiblings, + mergeWithParents: mergeWithParents + }; + + var each$16 = $_a5gegtjje5o2pum.each; + var isElementNode$1 = function (node) { + return node && node.nodeType === 1 && !$_83h91t2jje5o2q8n.isBookmarkNode(node) && !$_4066yu3jje5o2qev.isCaretNode(node) && !$_9owqcy1qje5o2q0e.isBogus(node); + }; + var applyFormat = function (ed, name, vars, node) { + var formatList = ed.formatter.get(name); + var format = formatList[0]; + var bookmark, rng; + var isCollapsed = !node && ed.selection.isCollapsed(); + var dom = ed.dom, selection = ed.selection; + var setElementFormat = function (elm, fmt) { + fmt = fmt || format; + if (elm) { + if (fmt.onformat) { + fmt.onformat(elm, fmt, vars, node); + } + each$16(fmt.styles, function (value, name) { + dom.setStyle(elm, name, $_b2hqtg3lje5o2qft.replaceVars(value, vars)); + }); + if (fmt.styles) { + var styleVal = dom.getAttrib(elm, 'style'); + if (styleVal) { + elm.setAttribute('data-mce-style', styleVal); + } + } + each$16(fmt.attributes, function (value, name) { + dom.setAttrib(elm, name, $_b2hqtg3lje5o2qft.replaceVars(value, vars)); + }); + each$16(fmt.classes, function (value) { + value = $_b2hqtg3lje5o2qft.replaceVars(value, vars); + if (!dom.hasClass(elm, value)) { + dom.addClass(elm, value); + } + }); + } + }; + var applyNodeStyle = function (formatList, node) { + var found = false; + if (!format.selector) { + return false; + } + each$16(formatList, function (format) { + if ('collapsed' in format && format.collapsed !== isCollapsed) { + return; + } + if (dom.is(node, format.selector) && !$_4066yu3jje5o2qev.isCaretNode(node)) { + setElementFormat(node, format); + found = true; + return false; + } + }); + return found; + }; + var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) { + var newWrappers = []; + var wrapName, wrapElm, contentEditable = true; + wrapName = format.inline || format.block; + wrapElm = dom.create(wrapName); + setElementFormat(wrapElm); + $_1jk9p5lje5o2qv9.walk(dom, rng, function (nodes) { + var currentWrapElm; + var process = function (node) { + var nodeName, parentName, hasContentEditableState, lastContentEditable; + lastContentEditable = contentEditable; + nodeName = node.nodeName.toLowerCase(); + parentName = node.parentNode.nodeName.toLowerCase(); + if (node.nodeType === 1 && dom.getContentEditable(node)) { + lastContentEditable = contentEditable; + contentEditable = dom.getContentEditable(node) === 'true'; + hasContentEditableState = true; + } + if ($_b2hqtg3lje5o2qft.isEq(nodeName, 'br')) { + currentWrapElm = 0; + if (format.block) { + dom.remove(node); + } + return; + } + if (format.wrapper && $_g32xfv3mje5o2qg1.matchNode(ed, node, name, vars)) { + currentWrapElm = 0; + return; + } + if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && $_b2hqtg3lje5o2qft.isTextBlock(ed, nodeName) && $_b2hqtg3lje5o2qft.isValid(ed, parentName, wrapName)) { + node = dom.rename(node, wrapName); + setElementFormat(node); + newWrappers.push(node); + currentWrapElm = 0; + return; + } + if (format.selector) { + var found = applyNodeStyle(formatList, node); + if (!format.inline || found) { + currentWrapElm = 0; + return; + } + } + if (contentEditable && !hasContentEditableState && $_b2hqtg3lje5o2qft.isValid(ed, wrapName, nodeName) && $_b2hqtg3lje5o2qft.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !$_4066yu3jje5o2qev.isCaretNode(node) && (!format.inline || !dom.isBlock(node))) { + if (!currentWrapElm) { + currentWrapElm = dom.clone(wrapElm, false); + node.parentNode.insertBefore(currentWrapElm, node); + newWrappers.push(currentWrapElm); + } + currentWrapElm.appendChild(node); + } else { + currentWrapElm = 0; + each$16($_a5gegtjje5o2pum.grep(node.childNodes), process); + if (hasContentEditableState) { + contentEditable = lastContentEditable; + } + currentWrapElm = 0; + } + }; + each$16(nodes, process); + }); + if (format.links === true) { + each$16(newWrappers, function (node) { + var process = function (node) { + if (node.nodeName === 'A') { + setElementFormat(node, format); + } + each$16($_a5gegtjje5o2pum.grep(node.childNodes), process); + }; + process(node); + }); + } + each$16(newWrappers, function (node) { + var childCount; + var getChildCount = function (node) { + var count = 0; + each$16(node.childNodes, function (node) { + if (!$_b2hqtg3lje5o2qft.isWhiteSpaceNode(node) && !$_83h91t2jje5o2q8n.isBookmarkNode(node)) { + count++; + } + }); + return count; + }; + var getChildElementNode = function (root) { + var child = false; + each$16(root.childNodes, function (node) { + if (isElementNode$1(node)) { + child = node; + return false; + } + }); + return child; + }; + var mergeStyles = function (node) { + var child, clone; + child = getChildElementNode(node); + if (child && !$_83h91t2jje5o2q8n.isBookmarkNode(child) && $_g32xfv3mje5o2qg1.matchName(dom, child, format)) { + clone = dom.clone(child, false); + setElementFormat(clone); + dom.replace(clone, node, true); + dom.remove(child, 1); + } + return clone || node; + }; + childCount = getChildCount(node); + if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) { + dom.remove(node, 1); + return; + } + if (format.inline || format.wrapper) { + if (!format.exact && childCount === 1) { + node = mergeStyles(node); + } + $_ddwhlm5jje5o2qua.mergeWithChildren(ed, formatList, vars, node); + $_ddwhlm5jje5o2qua.mergeWithParents(ed, format, name, vars, node); + $_ddwhlm5jje5o2qua.mergeBackgroundColorAndFontSize(dom, format, vars, node); + $_ddwhlm5jje5o2qua.mergeSubSup(dom, format, vars, node); + $_ddwhlm5jje5o2qua.mergeSiblings(dom, format, vars, node); + } + }); + }; + if (dom.getContentEditable(selection.getNode()) === 'false') { + node = selection.getNode(); + for (var i = 0, l = formatList.length; i < l; i++) { + if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) { + setElementFormat(node, formatList[i]); + return; + } + } + return; + } + if (format) { + if (node) { + if (node.nodeType) { + if (!applyNodeStyle(formatList, node)) { + rng = dom.createRng(); + rng.setStartBefore(node); + rng.setEndAfter(node); + applyRngStyle(dom, $_8wd5fu3kje5o2qfi.expandRng(ed, rng, formatList), null, true); + } + } else { + applyRngStyle(dom, node, null, true); + } + } else { + if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) { + var curSelNode = ed.selection.getNode(); + if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) { + applyFormat(ed, formatList[0].defaultBlock); + } + ed.selection.setRng($_8xjhg22vje5o2qak.normalize(ed.selection.getRng())); + bookmark = selection.getBookmark(); + applyRngStyle(dom, $_8wd5fu3kje5o2qfi.expandRng(ed, selection.getRng(), formatList), bookmark); + if (format.styles) { + $_ddwhlm5jje5o2qua.mergeUnderlineAndColor(dom, format, vars, curSelNode); + } + selection.moveToBookmark(bookmark); + $_b2hqtg3lje5o2qft.moveStart(dom, selection, selection.getRng()); + ed.nodeChanged(); + } else { + $_4066yu3jje5o2qev.applyCaretFormat(ed, name, vars); + } + } + $_6kqshy5ije5o2qu7.postProcess(name, ed); + } + }; + var $_a1bxau5hje5o2qu0 = { applyFormat: applyFormat }; + + var each$17 = $_a5gegtjje5o2pum.each; + var setup$3 = function (formatChangeData, editor) { + var currentFormats = {}; + formatChangeData.set({}); + editor.on('NodeChange', function (e) { + var parents = $_b2hqtg3lje5o2qft.getParents(editor.dom, e.element); + var matchedFormats = {}; + parents = $_a5gegtjje5o2pum.grep(parents, function (node) { + return node.nodeType === 1 && !node.getAttribute('data-mce-bogus'); + }); + each$17(formatChangeData.get(), function (callbacks, format) { + each$17(parents, function (node) { + if (editor.formatter.matchNode(node, format, {}, callbacks.similar)) { + if (!currentFormats[format]) { + each$17(callbacks, function (callback) { + callback(true, { + node: node, + format: format, + parents: parents + }); + }); + currentFormats[format] = callbacks; + } + matchedFormats[format] = callbacks; + return false; + } + if ($_g32xfv3mje5o2qg1.matchesUnInheritedFormatSelector(editor, node, format)) { + return false; + } + }); + }); + each$17(currentFormats, function (callbacks, format) { + if (!matchedFormats[format]) { + delete currentFormats[format]; + each$17(callbacks, function (callback) { + callback(false, { + node: e.element, + format: format, + parents: parents + }); + }); + } + }); + }); + }; + var addListeners = function (formatChangeData, formats, callback, similar) { + var formatChangeItems = formatChangeData.get(); + each$17(formats.split(','), function (format) { + if (!formatChangeItems[format]) { + formatChangeItems[format] = []; + formatChangeItems[format].similar = similar; + } + formatChangeItems[format].push(callback); + }); + formatChangeData.set(formatChangeItems); + }; + var formatChanged = function (editor, formatChangeState, formats, callback, similar) { + if (formatChangeState.get() === null) { + setup$3(formatChangeState, editor); + } + addListeners(formatChangeState, formats, callback, similar); + }; + var $_eb5vf85mje5o2qvd = { formatChanged: formatChanged }; + + var get$4 = function (dom) { + var formats = { + valigntop: [{ + selector: 'td,th', + styles: { verticalAlign: 'top' } + }], + valignmiddle: [{ + selector: 'td,th', + styles: { verticalAlign: 'middle' } + }], + valignbottom: [{ + selector: 'td,th', + styles: { verticalAlign: 'bottom' } + }], + alignleft: [ + { + selector: 'figure.image', + collapsed: false, + classes: 'align-left', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'left' }, + inherit: false, + preview: false, + defaultBlock: 'div' + }, + { + selector: 'img,table', + collapsed: false, + styles: { float: 'left' }, + preview: 'font-family font-size' + } + ], + aligncenter: [ + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'center' }, + inherit: false, + preview: 'font-family font-size', + defaultBlock: 'div' + }, + { + selector: 'figure.image', + collapsed: false, + classes: 'align-center', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'img', + collapsed: false, + styles: { + display: 'block', + marginLeft: 'auto', + marginRight: 'auto' + }, + preview: false + }, + { + selector: 'table', + collapsed: false, + styles: { + marginLeft: 'auto', + marginRight: 'auto' + }, + preview: 'font-family font-size' + } + ], + alignright: [ + { + selector: 'figure.image', + collapsed: false, + classes: 'align-right', + ceFalseOverride: true, + preview: 'font-family font-size' + }, + { + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'right' }, + inherit: false, + preview: 'font-family font-size', + defaultBlock: 'div' + }, + { + selector: 'img,table', + collapsed: false, + styles: { float: 'right' }, + preview: 'font-family font-size' + } + ], + alignjustify: [{ + selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li', + styles: { textAlign: 'justify' }, + inherit: false, + defaultBlock: 'div', + preview: 'font-family font-size' + }], + bold: [ + { + inline: 'strong', + remove: 'all' + }, + { + inline: 'span', + styles: { fontWeight: 'bold' } + }, + { + inline: 'b', + remove: 'all' + } + ], + italic: [ + { + inline: 'em', + remove: 'all' + }, + { + inline: 'span', + styles: { fontStyle: 'italic' } + }, + { + inline: 'i', + remove: 'all' + } + ], + underline: [ + { + inline: 'span', + styles: { textDecoration: 'underline' }, + exact: true + }, + { + inline: 'u', + remove: 'all' + } + ], + strikethrough: [ + { + inline: 'span', + styles: { textDecoration: 'line-through' }, + exact: true + }, + { + inline: 'strike', + remove: 'all' + } + ], + forecolor: { + inline: 'span', + styles: { color: '%value' }, + links: true, + remove_similar: true, + clear_child_styles: true + }, + hilitecolor: { + inline: 'span', + styles: { backgroundColor: '%value' }, + links: true, + remove_similar: true, + clear_child_styles: true + }, + fontname: { + inline: 'span', + toggle: false, + styles: { fontFamily: '%value' }, + clear_child_styles: true + }, + fontsize: { + inline: 'span', + toggle: false, + styles: { fontSize: '%value' }, + clear_child_styles: true + }, + fontsize_class: { + inline: 'span', + attributes: { class: '%value' } + }, + blockquote: { + block: 'blockquote', + wrapper: 1, + remove: 'all' + }, + subscript: { inline: 'sub' }, + superscript: { inline: 'sup' }, + code: { inline: 'code' }, + link: { + inline: 'a', + selector: 'a', + remove: 'all', + split: true, + deep: true, + onmatch: function () { + return true; + }, + onformat: function (elm, fmt, vars) { + $_a5gegtjje5o2pum.each(vars, function (value, key) { + dom.setAttrib(elm, key, value); + }); + } + }, + removeformat: [ + { + selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins', + remove: 'all', + split: true, + expand: false, + block_expand: true, + deep: true + }, + { + selector: 'span', + attributes: [ + 'style', + 'class' + ], + remove: 'empty', + split: true, + expand: false, + deep: true + }, + { + selector: '*', + attributes: [ + 'style', + 'class' + ], + split: false, + expand: false, + deep: true + } + ] + }; + $_a5gegtjje5o2pum.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function (name) { + formats[name] = { + block: name, + remove: 'all' + }; + }); + return formats; + }; + var $_1t175j5oje5o2qvi = { get: get$4 }; + + function FormatRegistry (editor) { + var formats = {}; + var get = function (name) { + return name ? formats[name] : formats; + }; + var register = function (name, format) { + if (name) { + if (typeof name !== 'string') { + $_a5gegtjje5o2pum.each(name, function (format, name) { + register(name, format); + }); + } else { + format = format.length ? format : [format]; + $_a5gegtjje5o2pum.each(format, function (format) { + if (typeof format.deep === 'undefined') { + format.deep = !format.selector; + } + if (typeof format.split === 'undefined') { + format.split = !format.selector || format.inline; + } + if (typeof format.remove === 'undefined' && format.selector && !format.inline) { + format.remove = 'none'; + } + if (format.selector && format.inline) { + format.mixed = true; + format.block_expand = true; + } + if (typeof format.classes === 'string') { + format.classes = format.classes.split(/\s+/); + } + }); + formats[name] = format; + } + } + }; + var unregister = function (name) { + if (name && formats[name]) { + delete formats[name]; + } + return formats; + }; + register($_1t175j5oje5o2qvi.get(editor.dom)); + register(editor.settings.formats); + return { + get: get, + register: register, + unregister: unregister + }; + } + + var each$18 = $_a5gegtjje5o2pum.each; + var dom = DOMUtils.DOM; + var parsedSelectorToHtml = function (ancestry, editor) { + var elm, item, fragment; + var schema = editor && editor.schema || Schema({}); + var decorate = function (elm, item) { + if (item.classes.length) { + dom.addClass(elm, item.classes.join(' ')); + } + dom.setAttribs(elm, item.attrs); + }; + var createElement = function (sItem) { + var elm; + item = typeof sItem === 'string' ? { + name: sItem, + classes: [], + attrs: {} + } : sItem; + elm = dom.create(item.name); + decorate(elm, item); + return elm; + }; + var getRequiredParent = function (elm, candidate) { + var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm; + var elmRule = schema.getElementRule(name); + var parentsRequired = elmRule && elmRule.parentsRequired; + if (parentsRequired && parentsRequired.length) { + return candidate && $_a5gegtjje5o2pum.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0]; + } else { + return false; + } + }; + var wrapInHtml = function (elm, ancestry, siblings) { + var parent, parentCandidate, parentRequired; + var ancestor = ancestry.length > 0 && ancestry[0]; + var ancestorName = ancestor && ancestor.name; + parentRequired = getRequiredParent(elm, ancestorName); + if (parentRequired) { + if (ancestorName === parentRequired) { + parentCandidate = ancestry[0]; + ancestry = ancestry.slice(1); + } else { + parentCandidate = parentRequired; + } + } else if (ancestor) { + parentCandidate = ancestry[0]; + ancestry = ancestry.slice(1); + } else if (!siblings) { + return elm; + } + if (parentCandidate) { + parent = createElement(parentCandidate); + parent.appendChild(elm); + } + if (siblings) { + if (!parent) { + parent = dom.create('div'); + parent.appendChild(elm); + } + $_a5gegtjje5o2pum.each(siblings, function (sibling) { + var siblingElm = createElement(sibling); + parent.insertBefore(siblingElm, elm); + }); + } + return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings); + }; + if (ancestry && ancestry.length) { + item = ancestry[0]; + elm = createElement(item); + fragment = dom.create('div'); + fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings)); + return fragment; + } else { + return ''; + } + }; + var selectorToHtml = function (selector, editor) { + return parsedSelectorToHtml(parseSelector(selector), editor); + }; + var parseSelectorItem = function (item) { + var tagName; + var obj = { + classes: [], + attrs: {} + }; + item = obj.selector = $_a5gegtjje5o2pum.trim(item); + if (item !== '*') { + tagName = item.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function ($0, $1, $2, $3, $4) { + switch ($1) { + case '#': + obj.attrs.id = $2; + break; + case '.': + obj.classes.push($2); + break; + case ':': + if ($_a5gegtjje5o2pum.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) { + obj.attrs[$2] = $2; + } + break; + } + if ($3 === '[') { + var m = $4.match(/([\w\-]+)(?:\=\"([^\"]+))?/); + if (m) { + obj.attrs[m[1]] = m[2]; + } + } + return ''; + }); + } + obj.name = tagName || 'div'; + return obj; + }; + var parseSelector = function (selector) { + if (!selector || typeof selector !== 'string') { + return []; + } + selector = selector.split(/\s*,\s*/)[0]; + selector = selector.replace(/\s*(~\+|~|\+|>)\s*/g, '$1'); + return $_a5gegtjje5o2pum.map(selector.split(/(?:>|\s+(?![^\[\]]+\]))/), function (item) { + var siblings = $_a5gegtjje5o2pum.map(item.split(/(?:~\+|~|\+)/), parseSelectorItem); + var obj = siblings.pop(); + if (siblings.length) { + obj.siblings = siblings; + } + return obj; + }).reverse(); + }; + var getCssText = function (editor, format) { + var name, previewFrag, previewElm, items; + var previewCss = '', parentFontSize, previewStyles; + previewStyles = editor.settings.preview_styles; + if (previewStyles === false) { + return ''; + } + if (typeof previewStyles !== 'string') { + previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow'; + } + var removeVars = function (val) { + return val.replace(/%(\w+)/g, ''); + }; + if (typeof format === 'string') { + format = editor.formatter.get(format); + if (!format) { + return; + } + format = format[0]; + } + if ('preview' in format) { + previewStyles = format.preview; + if (previewStyles === false) { + return ''; + } + } + name = format.block || format.inline || 'span'; + items = parseSelector(format.selector); + if (items.length) { + if (!items[0].name) { + items[0].name = name; + } + name = format.selector; + previewFrag = parsedSelectorToHtml(items, editor); + } else { + previewFrag = parsedSelectorToHtml([name], editor); + } + previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild; + each$18(format.styles, function (value, name) { + value = removeVars(value); + if (value) { + dom.setStyle(previewElm, name, value); + } + }); + each$18(format.attributes, function (value, name) { + value = removeVars(value); + if (value) { + dom.setAttrib(previewElm, name, value); + } + }); + each$18(format.classes, function (value) { + value = removeVars(value); + if (!dom.hasClass(previewElm, value)) { + dom.addClass(previewElm, value); + } + }); + editor.fire('PreviewFormats'); + dom.setStyles(previewFrag, { + position: 'absolute', + left: -65535 + }); + editor.getBody().appendChild(previewFrag); + parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true); + parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0; + each$18(previewStyles.split(' '), function (name) { + var value = dom.getStyle(previewElm, name, true); + if (name === 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) { + value = dom.getStyle(editor.getBody(), name, true); + if (dom.toHex(value).toLowerCase() === '#ffffff') { + return; + } + } + if (name === 'color') { + if (dom.toHex(value).toLowerCase() === '#000000') { + return; + } + } + if (name === 'font-size') { + if (/em|%$/.test(value)) { + if (parentFontSize === 0) { + return; + } + value = parseFloat(value) / (/%$/.test(value) ? 100 : 1); + value = value * parentFontSize + 'px'; + } + } + if (name === 'border' && value) { + previewCss += 'padding:0 2px;'; + } + previewCss += name + ':' + value + ';'; + }); + editor.fire('AfterPreviewFormats'); + dom.remove(previewFrag); + return previewCss; + }; + var $_f93fum5pje5o2qvn = { + getCssText: getCssText, + parseSelector: parseSelector, + selectorToHtml: selectorToHtml + }; + + var toggle = function (editor, formats, name, vars, node) { + var fmt = formats.get(name); + if ($_g32xfv3mje5o2qg1.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) { + $_2afve25kje5o2qul.remove(editor, name, vars, node); + } else { + $_a1bxau5hje5o2qu0.applyFormat(editor, name, vars, node); + } + }; + var $_bzwbov5qje5o2qvu = { toggle: toggle }; + + var setup$4 = function (editor) { + editor.addShortcut('meta+b', '', 'Bold'); + editor.addShortcut('meta+i', '', 'Italic'); + editor.addShortcut('meta+u', '', 'Underline'); + for (var i = 1; i <= 6; i++) { + editor.addShortcut('access+' + i, '', [ + 'FormatBlock', + false, + 'h' + i + ]); + } + editor.addShortcut('access+7', '', [ + 'FormatBlock', + false, + 'p' + ]); + editor.addShortcut('access+8', '', [ + 'FormatBlock', + false, + 'div' + ]); + editor.addShortcut('access+9', '', [ + 'FormatBlock', + false, + 'address' + ]); + }; + var $_2qm5rd5rje5o2qvv = { setup: setup$4 }; + + function Formatter (editor) { + var formats = FormatRegistry(editor); + var formatChangeState = Cell(null); + $_2qm5rd5rje5o2qvv.setup(editor); + $_4066yu3jje5o2qev.setup(editor); + return { + get: formats.get, + register: formats.register, + unregister: formats.unregister, + apply: $_enfhkv6je5o2ply.curry($_a1bxau5hje5o2qu0.applyFormat, editor), + remove: $_enfhkv6je5o2ply.curry($_2afve25kje5o2qul.remove, editor), + toggle: $_enfhkv6je5o2ply.curry($_bzwbov5qje5o2qvu.toggle, editor, formats), + match: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.match, editor), + matchAll: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.matchAll, editor), + matchNode: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.matchNode, editor), + canApply: $_enfhkv6je5o2ply.curry($_g32xfv3mje5o2qg1.canApply, editor), + formatChanged: $_enfhkv6je5o2ply.curry($_eb5vf85mje5o2qvd.formatChanged, editor, formatChangeState), + getCssText: $_enfhkv6je5o2ply.curry($_f93fum5pje5o2qvn.getCssText, editor) + }; + } + + var shallow = function (old, nu) { + return nu; + }; + var deep = function (old, nu) { + var bothObjects = $_be3q8w12je5o2pxj.isObject(old) && $_be3q8w12je5o2pxj.isObject(nu); + return bothObjects ? deepMerge(old, nu) : nu; + }; + var baseMerge = function (merger) { + return function () { + var objects = new Array(arguments.length); + for (var i = 0; i < objects.length; i++) + objects[i] = arguments[i]; + if (objects.length === 0) + throw new Error('Can\'t merge zero objects'); + var ret = {}; + for (var j = 0; j < objects.length; j++) { + var curObject = objects[j]; + for (var key in curObject) + if (curObject.hasOwnProperty(key)) { + ret[key] = merger(ret[key], curObject[key]); + } + } + return ret; + }; + }; + var deepMerge = baseMerge(deep); + var merge = baseMerge(shallow); + var $_atjucy5uje5o2qw2 = { + deepMerge: deepMerge, + merge: merge + }; + + var firePreProcess = function (editor, args) { + return editor.fire('PreProcess', args); + }; + var firePostProcess = function (editor, args) { + return editor.fire('PostProcess', args); + }; + var fireRemove = function (editor) { + return editor.fire('remove'); + }; + var $_d6jl355vje5o2qw5 = { + firePreProcess: firePreProcess, + firePostProcess: firePostProcess, + fireRemove: fireRemove + }; + + var register = function (htmlParser, settings, dom) { + htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.attr('tabindex', node.attributes.map['data-mce-tabindex']); + node.attr(name, null); + } + }); + htmlParser.addAttributeFilter('src,href,style', function (nodes, name) { + var i = nodes.length, node, value; + var internalName = 'data-mce-' + name; + var urlConverter = settings.url_converter; + var urlConverterScope = settings.url_converter_scope; + while (i--) { + node = nodes[i]; + value = node.attributes.map[internalName]; + if (value !== undefined) { + node.attr(name, value.length > 0 ? value : null); + node.attr(internalName, null); + } else { + value = node.attributes.map[name]; + if (name === 'style') { + value = dom.serializeStyle(dom.parseStyle(value), node.name); + } else if (urlConverter) { + value = urlConverter.call(urlConverterScope, value, name, node.name); + } + node.attr(name, value.length > 0 ? value : null); + } + } + }); + htmlParser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, value; + while (i--) { + node = nodes[i]; + value = node.attr('class'); + if (value) { + value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ''); + node.attr('class', value.length > 0 ? value : null); + } + } + }); + htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.attributes.map['data-mce-type'] === 'bookmark' && !args.cleanup) { + node.remove(); + } + } + }); + htmlParser.addNodeFilter('noscript', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i].firstChild; + if (node) { + node.value = $_fzh4ld1rje5o2q0t.decode(node.value); + } + } + }); + htmlParser.addNodeFilter('script,style', function (nodes, name) { + var i = nodes.length, node, value, type; + var trim = function (value) { + return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n').replace(/^[\r\n]*|[\r\n]*$/g, '').replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '').replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, ''); + }; + while (i--) { + node = nodes[i]; + value = node.firstChild ? node.firstChild.value : ''; + if (name === 'script') { + type = node.attr('type'); + if (type) { + node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\-/, '')); + } + if (settings.element_format === 'xhtml' && value.length > 0) { + node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>'; + } + } else { + if (settings.element_format === 'xhtml' && value.length > 0) { + node.firstChild.value = '<!--\n' + trim(value) + '\n-->'; + } + } + } + }); + htmlParser.addNodeFilter('#comment', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.value.indexOf('[CDATA[') === 0) { + node.name = '#cdata'; + node.type = 4; + node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, ''); + } else if (node.value.indexOf('mce:protected ') === 0) { + node.name = '#text'; + node.type = 3; + node.raw = true; + node.value = unescape(node.value).substr(14); + } + } + }); + htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + if (node.type === 7) { + node.remove(); + } else if (node.type === 1) { + if (name === 'input' && !('type' in node.attributes.map)) { + node.attr('type', 'text'); + } + } + } + }); + htmlParser.addAttributeFilter('data-mce-type', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + if (node.attr('data-mce-type') === 'format-caret') { + if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) { + node.remove(); + } else { + node.unwrap(); + } + } + }); + }); + htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) { + var i = nodes.length; + while (i--) { + nodes[i].attr(name, null); + } + }); + }; + var trimTrailingBr = function (rootNode) { + var brNode1, brNode2; + var isBr = function (node) { + return node && node.name === 'br'; + }; + brNode1 = rootNode.lastChild; + if (isBr(brNode1)) { + brNode2 = brNode1.prev; + if (isBr(brNode2)) { + brNode1.remove(); + brNode2.remove(); + } + } + }; + var $_97epr95wje5o2qw7 = { + register: register, + trimTrailingBr: trimTrailingBr + }; + + var preProcess = function (editor, node, args) { + var impl, doc, oldDoc; + var dom = editor.dom; + node = node.cloneNode(true); + impl = document.implementation; + if (impl.createHTMLDocument) { + doc = impl.createHTMLDocument(''); + $_a5gegtjje5o2pum.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) { + doc.body.appendChild(doc.importNode(node, true)); + }); + if (node.nodeName !== 'BODY') { + node = doc.body.firstChild; + } else { + node = doc.body; + } + oldDoc = dom.doc; + dom.doc = doc; + } + $_d6jl355vje5o2qw5.firePreProcess(editor, $_atjucy5uje5o2qw2.merge(args, { node: node })); + if (oldDoc) { + dom.doc = oldDoc; + } + return node; + }; + var shouldFireEvent = function (editor, args) { + return editor && editor.hasEventListeners('PreProcess') && !args.no_events; + }; + var process = function (editor, node, args) { + return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node; + }; + var $_70hszr5xje5o2qwd = { process: process }; + + var removeAttrs = function (node, names) { + $_bwcteb4je5o2pl4.each(names, function (name) { + node.attr(name, null); + }); + }; + var addFontToSpansFilter = function (domParser, styles, fontSizes) { + domParser.addNodeFilter('font', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + var props = styles.parse(node.attr('style')); + var color = node.attr('color'); + var face = node.attr('face'); + var size = node.attr('size'); + if (color) { + props.color = color; + } + if (face) { + props['font-family'] = face; + } + if (size) { + props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1]; + } + node.name = 'span'; + node.attr('style', styles.serialize(props)); + removeAttrs(node, [ + 'color', + 'face', + 'size' + ]); + }); + }); + }; + var addStrikeToSpanFilter = function (domParser, styles) { + domParser.addNodeFilter('strike', function (nodes) { + $_bwcteb4je5o2pl4.each(nodes, function (node) { + var props = styles.parse(node.attr('style')); + props['text-decoration'] = 'line-through'; + node.name = 'span'; + node.attr('style', styles.serialize(props)); + }); + }); + }; + var addFilters = function (domParser, settings) { + var styles = Styles(); + if (settings.convert_fonts_to_spans) { + addFontToSpansFilter(domParser, styles, $_a5gegtjje5o2pum.explode(settings.font_size_legacy_values)); + } + addStrikeToSpanFilter(domParser, styles); + }; + var register$1 = function (domParser, settings) { + if (settings.inline_styles) { + addFilters(domParser, settings); + } + }; + var $_6tznke5zje5o2qx6 = { register: register$1 }; + + var whiteSpaceRegExp$3 = /^[ \t\r\n]*$/; + var typeLookup = { + '#text': 3, + '#comment': 8, + '#cdata': 4, + '#pi': 7, + '#doctype': 10, + '#document-fragment': 11 + }; + var walk$3 = function (node, root, prev) { + var sibling; + var parent; + var startName = prev ? 'lastChild' : 'firstChild'; + var siblingName = prev ? 'prev' : 'next'; + if (node[startName]) { + return node[startName]; + } + if (node !== root) { + sibling = node[siblingName]; + if (sibling) { + return sibling; + } + for (parent = node.parent; parent && parent !== root; parent = parent.parent) { + sibling = parent[siblingName]; + if (sibling) { + return sibling; + } + } + } + }; + var Node$2 = function () { + function Node(name, type) { + this.name = name; + this.type = type; + if (type === 1) { + this.attributes = []; + this.attributes.map = {}; + } + } + Node.create = function (name, attrs) { + var node, attrName; + node = new Node(name, typeLookup[name] || 1); + if (attrs) { + for (attrName in attrs) { + node.attr(attrName, attrs[attrName]); + } + } + return node; + }; + Node.prototype.replace = function (node) { + var self = this; + if (node.parent) { + node.remove(); + } + self.insert(node, self); + self.remove(); + return self; + }; + Node.prototype.attr = function (name, value) { + var self = this; + var attrs, i; + if (typeof name !== 'string') { + for (i in name) { + self.attr(i, name[i]); + } + return self; + } + if (attrs = self.attributes) { + if (value !== undefined) { + if (value === null) { + if (name in attrs.map) { + delete attrs.map[name]; + i = attrs.length; + while (i--) { + if (attrs[i].name === name) { + attrs = attrs.splice(i, 1); + return self; + } + } + } + return self; + } + if (name in attrs.map) { + i = attrs.length; + while (i--) { + if (attrs[i].name === name) { + attrs[i].value = value; + break; + } + } + } else { + attrs.push({ + name: name, + value: value + }); + } + attrs.map[name] = value; + return self; + } + return attrs.map[name]; + } + }; + Node.prototype.clone = function () { + var self = this; + var clone = new Node(self.name, self.type); + var i, l, selfAttrs, selfAttr, cloneAttrs; + if (selfAttrs = self.attributes) { + cloneAttrs = []; + cloneAttrs.map = {}; + for (i = 0, l = selfAttrs.length; i < l; i++) { + selfAttr = selfAttrs[i]; + if (selfAttr.name !== 'id') { + cloneAttrs[cloneAttrs.length] = { + name: selfAttr.name, + value: selfAttr.value + }; + cloneAttrs.map[selfAttr.name] = selfAttr.value; + } + } + clone.attributes = cloneAttrs; + } + clone.value = self.value; + clone.shortEnded = self.shortEnded; + return clone; + }; + Node.prototype.wrap = function (wrapper) { + var self = this; + self.parent.insert(wrapper, self); + wrapper.append(self); + return self; + }; + Node.prototype.unwrap = function () { + var self = this; + var node, next; + for (node = self.firstChild; node;) { + next = node.next; + self.insert(node, self, true); + node = next; + } + self.remove(); + }; + Node.prototype.remove = function () { + var self = this, parent = self.parent, next = self.next, prev = self.prev; + if (parent) { + if (parent.firstChild === self) { + parent.firstChild = next; + if (next) { + next.prev = null; + } + } else { + prev.next = next; + } + if (parent.lastChild === self) { + parent.lastChild = prev; + if (prev) { + prev.next = null; + } + } else { + next.prev = prev; + } + self.parent = self.next = self.prev = null; + } + return self; + }; + Node.prototype.append = function (node) { + var self = this; + var last; + if (node.parent) { + node.remove(); + } + last = self.lastChild; + if (last) { + last.next = node; + node.prev = last; + self.lastChild = node; + } else { + self.lastChild = self.firstChild = node; + } + node.parent = self; + return node; + }; + Node.prototype.insert = function (node, refNode, before) { + var parent; + if (node.parent) { + node.remove(); + } + parent = refNode.parent || this; + if (before) { + if (refNode === parent.firstChild) { + parent.firstChild = node; + } else { + refNode.prev.next = node; + } + node.prev = refNode.prev; + node.next = refNode; + refNode.prev = node; + } else { + if (refNode === parent.lastChild) { + parent.lastChild = node; + } else { + refNode.next.prev = node; + } + node.next = refNode.next; + node.prev = refNode; + refNode.next = node; + } + node.parent = parent; + return node; + }; + Node.prototype.getAll = function (name) { + var self = this; + var node; + var collection = []; + for (node = self.firstChild; node; node = walk$3(node, self)) { + if (node.name === name) { + collection.push(node); + } + } + return collection; + }; + Node.prototype.empty = function () { + var self = this; + var nodes, i, node; + if (self.firstChild) { + nodes = []; + for (node = self.firstChild; node; node = walk$3(node, self)) { + nodes.push(node); + } + i = nodes.length; + while (i--) { + node = nodes[i]; + node.parent = node.firstChild = node.lastChild = node.next = node.prev = null; + } + } + self.firstChild = self.lastChild = null; + return self; + }; + Node.prototype.isEmpty = function (elements, whitespace, predicate) { + var self = this; + var node = self.firstChild, i, name; + whitespace = whitespace || {}; + if (node) { + do { + if (node.type === 1) { + if (node.attributes.map['data-mce-bogus']) { + continue; + } + if (elements[node.name]) { + return false; + } + i = node.attributes.length; + while (i--) { + name = node.attributes[i].name; + if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) { + return false; + } + } + } + if (node.type === 8) { + return false; + } + if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) { + return false; + } + if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) { + return false; + } + if (predicate && predicate(node)) { + return false; + } + } while (node = walk$3(node, self)); + } + return true; + }; + Node.prototype.walk = function (prev) { + return walk$3(this, null, prev); + }; + return Node; + }(); + + var paddEmptyNode = function (settings, args, blockElements, node) { + var brPreferred = settings.padd_empty_with_br || args.insert; + if (brPreferred && blockElements[node.name]) { + node.empty().append(new Node$2('br', 1)).shortEnded = true; + } else { + node.empty().append(new Node$2('#text', 3)).value = '\xA0'; + } + }; + var isPaddedWithNbsp = function (node) { + return hasOnlyChild(node, '#text') && node.firstChild.value === '\xA0'; + }; + var hasOnlyChild = function (node, name) { + return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name; + }; + var isPadded = function (schema, node) { + var rule = schema.getElementRule(node.name); + return rule && rule.paddEmpty; + }; + var isEmpty$1 = function (schema, nonEmptyElements, whitespaceElements, node) { + return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) { + return isPadded(schema, node); + }); + }; + var isLineBreakNode = function (node, blockElements) { + return node && (blockElements[node.name] || node.name === 'br'); + }; + + var register$2 = function (parser, settings) { + var schema = parser.schema; + if (settings.remove_trailing_brs) { + parser.addNodeFilter('br', function (nodes, _, args) { + var i; + var l = nodes.length; + var node; + var blockElements = $_a5gegtjje5o2pum.extend({}, schema.getBlockElements()); + var nonEmptyElements = schema.getNonEmptyElements(); + var parent, lastParent, prev, prevName; + var whiteSpaceElements = schema.getNonEmptyElements(); + var elementRule, textNode; + blockElements.body = 1; + for (i = 0; i < l; i++) { + node = nodes[i]; + parent = node.parent; + if (blockElements[node.parent.name] && node === parent.lastChild) { + prev = node.prev; + while (prev) { + prevName = prev.name; + if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') { + if (prevName !== 'br') { + break; + } + if (prevName === 'br') { + node = null; + break; + } + } + prev = prev.prev; + } + if (node) { + node.remove(); + if (isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, parent)) { + elementRule = schema.getElementRule(parent.name); + if (elementRule) { + if (elementRule.removeEmpty) { + parent.remove(); + } else if (elementRule.paddEmpty) { + paddEmptyNode(settings, args, blockElements, parent); + } + } + } + } + } else { + lastParent = node; + while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) { + lastParent = parent; + if (blockElements[parent.name]) { + break; + } + parent = parent.parent; + } + if (lastParent === parent && settings.padd_empty_with_br !== true) { + textNode = new Node$2('#text', 3); + textNode.value = '\xA0'; + node.replace(textNode); + } + } + } + }); + } + parser.addAttributeFilter('href', function (nodes) { + var i = nodes.length, node; + var appendRel = function (rel) { + var parts = rel.split(' ').filter(function (p) { + return p.length > 0; + }); + return parts.concat(['noopener']).sort().join(' '); + }; + var addNoOpener = function (rel) { + var newRel = rel ? $_a5gegtjje5o2pum.trim(rel) : ''; + if (!/\b(noopener)\b/g.test(newRel)) { + return appendRel(newRel); + } else { + return newRel; + } + }; + if (!settings.allow_unsafe_link_target) { + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.attr('target') === '_blank') { + node.attr('rel', addNoOpener(node.attr('rel'))); + } + } + } + }); + if (!settings.allow_html_in_named_anchor) { + parser.addAttributeFilter('id,name', function (nodes) { + var i = nodes.length, sibling, prevSibling, parent, node; + while (i--) { + node = nodes[i]; + if (node.name === 'a' && node.firstChild && !node.attr('href')) { + parent = node.parent; + sibling = node.lastChild; + do { + prevSibling = sibling.prev; + parent.insert(sibling, node); + sibling = prevSibling; + } while (sibling); + } + } + }); + } + if (settings.fix_list_elements) { + parser.addNodeFilter('ul,ol', function (nodes) { + var i = nodes.length, node, parentNode; + while (i--) { + node = nodes[i]; + parentNode = node.parent; + if (parentNode.name === 'ul' || parentNode.name === 'ol') { + if (node.prev && node.prev.name === 'li') { + node.prev.append(node); + } else { + var li = new Node$2('li', 1); + li.attr('style', 'list-style-type: none'); + node.wrap(li); + } + } + } + }); + } + if (settings.validate && schema.getValidClasses()) { + parser.addAttributeFilter('class', function (nodes) { + var i = nodes.length, node, classList, ci, className, classValue; + var validClasses = schema.getValidClasses(); + var validClassesMap, valid; + while (i--) { + node = nodes[i]; + classList = node.attr('class').split(' '); + classValue = ''; + for (ci = 0; ci < classList.length; ci++) { + className = classList[ci]; + valid = false; + validClassesMap = validClasses['*']; + if (validClassesMap && validClassesMap[className]) { + valid = true; + } + validClassesMap = validClasses[node.name]; + if (!valid && validClassesMap && validClassesMap[className]) { + valid = true; + } + if (valid) { + if (classValue) { + classValue += ' '; + } + classValue += className; + } + } + if (!classValue.length) { + classValue = null; + } + node.attr('class', classValue); + } + }); + } + }; + + var makeMap$4 = $_a5gegtjje5o2pum.makeMap; + var each$19 = $_a5gegtjje5o2pum.each; + var explode$4 = $_a5gegtjje5o2pum.explode; + var extend$3 = $_a5gegtjje5o2pum.extend; + function DomParser (settings, schema) { + if (schema === void 0) { + schema = Schema(); + } + var nodeFilters = {}; + var attributeFilters = []; + var matchedNodes = {}; + var matchedAttributes = {}; + settings = settings || {}; + settings.validate = 'validate' in settings ? settings.validate : true; + settings.root_name = settings.root_name || 'body'; + var fixInvalidChildren = function (nodes) { + var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i; + var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode; + nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table'); + nonEmptyElements = schema.getNonEmptyElements(); + whitespaceElements = schema.getWhiteSpaceElements(); + textBlockElements = schema.getTextBlockElements(); + specialElements = schema.getSpecialElements(); + for (ni = 0; ni < nodes.length; ni++) { + node = nodes[ni]; + if (!node.parent || node.fixed) { + continue; + } + if (textBlockElements[node.name] && node.parent.name === 'li') { + sibling = node.next; + while (sibling) { + if (textBlockElements[sibling.name]) { + sibling.name = 'li'; + sibling.fixed = true; + node.parent.insert(sibling, node.parent); + } else { + break; + } + sibling = sibling.next; + } + node.unwrap(node); + continue; + } + parents = [node]; + for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) { + parents.push(parent); + } + if (parent && parents.length > 1) { + parents.reverse(); + newParent = currentNode = filterNode(parents[0].clone()); + for (i = 0; i < parents.length - 1; i++) { + if (schema.isValidChild(currentNode.name, parents[i].name)) { + tempNode = filterNode(parents[i].clone()); + currentNode.append(tempNode); + } else { + tempNode = currentNode; + } + for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) { + nextNode = childNode.next; + tempNode.append(childNode); + childNode = nextNode; + } + currentNode = tempNode; + } + if (!isEmpty$1(schema, nonEmptyElements, whitespaceElements, newParent)) { + parent.insert(newParent, parents[0], true); + parent.insert(node, newParent); + } else { + parent.insert(node, parents[0], true); + } + parent = parents[0]; + if (isEmpty$1(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) { + parent.empty().remove(); + } + } else if (node.parent) { + if (node.name === 'li') { + sibling = node.prev; + if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { + sibling.append(node); + continue; + } + sibling = node.next; + if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) { + sibling.insert(node, sibling.firstChild, true); + continue; + } + node.wrap(filterNode(new Node$2('ul', 1))); + continue; + } + if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) { + node.wrap(filterNode(new Node$2('div', 1))); + } else { + if (specialElements[node.name]) { + node.empty().remove(); + } else { + node.unwrap(); + } + } + } + } + }; + var filterNode = function (node) { + var i, name, list; + if (name in nodeFilters) { + list = matchedNodes[name]; + if (list) { + list.push(node); + } else { + matchedNodes[name] = [node]; + } + } + i = attributeFilters.length; + while (i--) { + name = attributeFilters[i].name; + if (name in node.attributes.map) { + list = matchedAttributes[name]; + if (list) { + list.push(node); + } else { + matchedAttributes[name] = [node]; + } + } + } + return node; + }; + var addNodeFilter = function (name, callback) { + each$19(explode$4(name), function (name) { + var list = nodeFilters[name]; + if (!list) { + nodeFilters[name] = list = []; + } + list.push(callback); + }); + }; + var getNodeFilters = function () { + var out = []; + for (var name_1 in nodeFilters) { + if (nodeFilters.hasOwnProperty(name_1)) { + out.push({ + name: name_1, + callbacks: nodeFilters[name_1] + }); + } + } + return out; + }; + var addAttributeFilter = function (name, callback) { + each$19(explode$4(name), function (name) { + var i; + for (i = 0; i < attributeFilters.length; i++) { + if (attributeFilters[i].name === name) { + attributeFilters[i].callbacks.push(callback); + return; + } + } + attributeFilters.push({ + name: name, + callbacks: [callback] + }); + }); + }; + var getAttributeFilters = function () { + return [].concat(attributeFilters); + }; + var parse = function (html, args) { + var parser, nodes, i, l, fi, fl, list, name; + var blockElements; + var invalidChildren = []; + var isInWhiteSpacePreservedElement; + var node; + args = args || {}; + matchedNodes = {}; + matchedAttributes = {}; + blockElements = extend$3(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements()); + var nonEmptyElements = schema.getNonEmptyElements(); + var children = schema.children; + var validate = settings.validate; + var rootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block; + var whiteSpaceElements = schema.getWhiteSpaceElements(); + var startWhiteSpaceRegExp = /^[ \t\r\n]+/; + var endWhiteSpaceRegExp = /[ \t\r\n]+$/; + var allWhiteSpaceRegExp = /[ \t\r\n]+/g; + var isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/; + var addRootBlocks = function () { + var node = rootNode.firstChild, next, rootBlockNode; + var trim = function (rootBlockNode) { + if (rootBlockNode) { + node = rootBlockNode.firstChild; + if (node && node.type === 3) { + node.value = node.value.replace(startWhiteSpaceRegExp, ''); + } + node = rootBlockNode.lastChild; + if (node && node.type === 3) { + node.value = node.value.replace(endWhiteSpaceRegExp, ''); + } + } + }; + if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) { + return; + } + while (node) { + next = node.next; + if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) { + if (!rootBlockNode) { + rootBlockNode = createNode(rootBlockName, 1); + rootBlockNode.attr(settings.forced_root_block_attrs); + rootNode.insert(rootBlockNode, node); + rootBlockNode.append(node); + } else { + rootBlockNode.append(node); + } + } else { + trim(rootBlockNode); + rootBlockNode = null; + } + node = next; + } + trim(rootBlockNode); + }; + var createNode = function (name, type) { + var node = new Node$2(name, type); + var list; + if (name in nodeFilters) { + list = matchedNodes[name]; + if (list) { + list.push(node); + } else { + matchedNodes[name] = [node]; + } + } + return node; + }; + var removeWhitespaceBefore = function (node) { + var textNode, textNodeNext, textVal, sibling; + var blockElements = schema.getBlockElements(); + for (textNode = node.prev; textNode && textNode.type === 3;) { + textVal = textNode.value.replace(endWhiteSpaceRegExp, ''); + if (textVal.length > 0) { + textNode.value = textVal; + return; + } + textNodeNext = textNode.next; + if (textNodeNext) { + if (textNodeNext.type === 3 && textNodeNext.value.length) { + textNode = textNode.prev; + continue; + } + if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') { + textNode = textNode.prev; + continue; + } + } + sibling = textNode.prev; + textNode.remove(); + textNode = sibling; + } + }; + var cloneAndExcludeBlocks = function (input) { + var name; + var output = {}; + for (name in input) { + if (name !== 'li' && name !== 'p') { + output[name] = input[name]; + } + } + return output; + }; + parser = SaxParser$1({ + validate: validate, + allow_script_urls: settings.allow_script_urls, + allow_conditional_comments: settings.allow_conditional_comments, + self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()), + cdata: function (text) { + node.append(createNode('#cdata', 4)).value = text; + }, + text: function (text, raw) { + var textNode; + if (!isInWhiteSpacePreservedElement) { + text = text.replace(allWhiteSpaceRegExp, ' '); + if (isLineBreakNode(node.lastChild, blockElements)) { + text = text.replace(startWhiteSpaceRegExp, ''); + } + } + if (text.length !== 0) { + textNode = createNode('#text', 3); + textNode.raw = !!raw; + node.append(textNode).value = text; + } + }, + comment: function (text) { + node.append(createNode('#comment', 8)).value = text; + }, + pi: function (name, text) { + node.append(createNode(name, 7)).value = text; + removeWhitespaceBefore(node); + }, + doctype: function (text) { + var newNode; + newNode = node.append(createNode('#doctype', 10)); + newNode.value = text; + removeWhitespaceBefore(node); + }, + start: function (name, attrs, empty) { + var newNode, attrFiltersLen, elementRule, attrName, parent; + elementRule = validate ? schema.getElementRule(name) : {}; + if (elementRule) { + newNode = createNode(elementRule.outputName || name, 1); + newNode.attributes = attrs; + newNode.shortEnded = empty; + node.append(newNode); + parent = children[node.name]; + if (parent && children[newNode.name] && !parent[newNode.name]) { + invalidChildren.push(newNode); + } + attrFiltersLen = attributeFilters.length; + while (attrFiltersLen--) { + attrName = attributeFilters[attrFiltersLen].name; + if (attrName in attrs.map) { + list = matchedAttributes[attrName]; + if (list) { + list.push(newNode); + } else { + matchedAttributes[attrName] = [newNode]; + } + } + } + if (blockElements[name]) { + removeWhitespaceBefore(newNode); + } + if (!empty) { + node = newNode; + } + if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { + isInWhiteSpacePreservedElement = true; + } + } + }, + end: function (name) { + var textNode, elementRule, text, sibling, tempNode; + elementRule = validate ? schema.getElementRule(name) : {}; + if (elementRule) { + if (blockElements[name]) { + if (!isInWhiteSpacePreservedElement) { + textNode = node.firstChild; + if (textNode && textNode.type === 3) { + text = textNode.value.replace(startWhiteSpaceRegExp, ''); + if (text.length > 0) { + textNode.value = text; + textNode = textNode.next; + } else { + sibling = textNode.next; + textNode.remove(); + textNode = sibling; + while (textNode && textNode.type === 3) { + text = textNode.value; + sibling = textNode.next; + if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { + textNode.remove(); + textNode = sibling; + } + textNode = sibling; + } + } + } + textNode = node.lastChild; + if (textNode && textNode.type === 3) { + text = textNode.value.replace(endWhiteSpaceRegExp, ''); + if (text.length > 0) { + textNode.value = text; + textNode = textNode.prev; + } else { + sibling = textNode.prev; + textNode.remove(); + textNode = sibling; + while (textNode && textNode.type === 3) { + text = textNode.value; + sibling = textNode.prev; + if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) { + textNode.remove(); + textNode = sibling; + } + textNode = sibling; + } + } + } + } + } + if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) { + isInWhiteSpacePreservedElement = false; + } + if (elementRule.removeEmpty && isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, node)) { + if (!node.attributes.map.name && !node.attr('id')) { + tempNode = node.parent; + if (blockElements[node.name]) { + node.empty().remove(); + } else { + node.unwrap(); + } + node = tempNode; + return; + } + } + if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$1(schema, nonEmptyElements, whiteSpaceElements, node))) { + paddEmptyNode(settings, args, blockElements, node); + } + node = node.parent; + } + } + }, schema); + var rootNode = node = new Node$2(args.context || settings.root_name, 11); + parser.parse(html); + if (validate && invalidChildren.length) { + if (!args.context) { + fixInvalidChildren(invalidChildren); + } else { + args.invalid = true; + } + } + if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) { + addRootBlocks(); + } + if (!args.invalid) { + for (name in matchedNodes) { + list = nodeFilters[name]; + nodes = matchedNodes[name]; + fi = nodes.length; + while (fi--) { + if (!nodes[fi].parent) { + nodes.splice(fi, 1); + } + } + for (i = 0, l = list.length; i < l; i++) { + list[i](nodes, name, args); + } + } + for (i = 0, l = attributeFilters.length; i < l; i++) { + list = attributeFilters[i]; + if (list.name in matchedAttributes) { + nodes = matchedAttributes[list.name]; + fi = nodes.length; + while (fi--) { + if (!nodes[fi].parent) { + nodes.splice(fi, 1); + } + } + for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) { + list.callbacks[fi](nodes, list.name, args); + } + } + } + } + return rootNode; + }; + var exports = { + schema: schema, + addAttributeFilter: addAttributeFilter, + getAttributeFilters: getAttributeFilters, + addNodeFilter: addNodeFilter, + getNodeFilters: getNodeFilters, + filterNode: filterNode, + parse: parse + }; + register$2(exports, settings); + $_6tznke5zje5o2qx6.register(exports, settings); + return exports; + } + + var addTempAttr = function (htmlParser, tempAttrs, name) { + if ($_a5gegtjje5o2pum.inArray(tempAttrs, name) === -1) { + htmlParser.addAttributeFilter(name, function (nodes, name) { + var i = nodes.length; + while (i--) { + nodes[i].attr(name, null); + } + }); + tempAttrs.push(name); + } + }; + var postProcess$1 = function (editor, args, content) { + if (!args.no_events && editor) { + var outArgs = $_d6jl355vje5o2qw5.firePostProcess(editor, $_atjucy5uje5o2qw2.merge(args, { content: content })); + return outArgs.content; + } else { + return content; + } + }; + var getHtmlFromNode = function (dom, node, args) { + var html = $_4md31c21je5o2q5f.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node)); + return args.selection ? html : $_a5gegtjje5o2pum.trim(html); + }; + var parseHtml = function (htmlParser, dom, html, args) { + var parserArgs = args.selection ? $_atjucy5uje5o2qw2.merge({ forced_root_block: false }, args) : args; + var rootNode = htmlParser.parse(html, parserArgs); + $_97epr95wje5o2qw7.trimTrailingBr(rootNode); + return rootNode; + }; + var serializeNode = function (settings, schema, node) { + var htmlSerializer = HtmlSerializer(settings, schema); + return htmlSerializer.serialize(node); + }; + var toHtml = function (editor, settings, schema, rootNode, args) { + var content = serializeNode(settings, schema, rootNode); + return postProcess$1(editor, args, content); + }; + function DomSerializer (settings, editor) { + var dom, schema, htmlParser; + var tempAttrs = ['data-mce-selected']; + dom = editor && editor.dom ? editor.dom : DOMUtils.DOM; + schema = editor && editor.schema ? editor.schema : Schema(settings); + settings.entity_encoding = settings.entity_encoding || 'named'; + settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true; + htmlParser = DomParser(settings, schema); + $_97epr95wje5o2qw7.register(htmlParser, settings, dom); + var serialize = function (node, parserArgs) { + var args = $_atjucy5uje5o2qw2.merge({ format: 'html' }, parserArgs ? parserArgs : {}); + var targetNode = $_70hszr5xje5o2qwd.process(editor, node, args); + var html = getHtmlFromNode(dom, targetNode, args); + var rootNode = parseHtml(htmlParser, dom, html, args); + return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args); + }; + return { + schema: schema, + addNodeFilter: htmlParser.addNodeFilter, + addAttributeFilter: htmlParser.addAttributeFilter, + serialize: serialize, + addRules: function (rules) { + schema.addValidElements(rules); + }, + setRules: function (rules) { + schema.setValidElements(rules); + }, + addTempAttr: $_enfhkv6je5o2ply.curry(addTempAttr, htmlParser, tempAttrs), + getTempAttrs: function () { + return tempAttrs; + } + }; + } + + function DomSerializer$1 (settings, editor) { + var domSerializer = DomSerializer(settings, editor); + return { + schema: domSerializer.schema, + addNodeFilter: domSerializer.addNodeFilter, + addAttributeFilter: domSerializer.addAttributeFilter, + serialize: domSerializer.serialize, + addRules: domSerializer.addRules, + setRules: domSerializer.setRules, + addTempAttr: domSerializer.addTempAttr, + getTempAttrs: domSerializer.getTempAttrs + }; + } + + var findBlockCaretContainer = function (editor) { + return $_9fzewc37je5o2qck.descendant($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), '*[data-mce-caret]').fold($_enfhkv6je5o2ply.constant(null), function (elm) { + return elm.dom(); + }); + }; + var removeIeControlRect = function (editor) { + editor.selection.setRng(editor.selection.getRng()); + }; + var showBlockCaretContainer = function (editor, blockCaretContainer) { + if (blockCaretContainer.hasAttribute('data-mce-caret')) { + showCaretContainerBlock(blockCaretContainer); + removeIeControlRect(editor); + editor.selection.scrollIntoView(blockCaretContainer); + } + }; + var handleBlockContainer = function (editor, e) { + var blockCaretContainer = findBlockCaretContainer(editor); + if (!blockCaretContainer) { + return; + } + if (e.type === 'compositionstart') { + e.preventDefault(); + e.stopPropagation(); + showBlockCaretContainer(editor, blockCaretContainer); + return; + } + if (hasContent(blockCaretContainer)) { + showBlockCaretContainer(editor, blockCaretContainer); + } + }; + var setup$5 = function (editor) { + editor.on('keyup compositionstart', $_enfhkv6je5o2ply.curry(handleBlockContainer, editor)); + }; + var $_acfnaa63je5o2qxq = { setup: setup$5 }; + + function BookmarkManager(selection) { + return { + getBookmark: $_enfhkv6je5o2ply.curry($_83h91t2jje5o2q8n.getBookmark, selection), + moveToBookmark: $_enfhkv6je5o2ply.curry($_83h91t2jje5o2q8n.moveToBookmark, selection) + }; + } + (function (BookmarkManager) { + BookmarkManager.isBookmarkNode = $_83h91t2jje5o2q8n.isBookmarkNode; + }(BookmarkManager || (BookmarkManager = {}))); + var BookmarkManager$1 = BookmarkManager; + + var isContentEditableFalse$10 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var isContentEditableTrue$6 = $_9owqcy1qje5o2q0e.isContentEditableTrue; + var getContentEditableRoot$1 = function (root, node) { + while (node && node !== root) { + if (isContentEditableTrue$6(node) || isContentEditableFalse$10(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var ControlSelection = function (selection, editor) { + var dom = editor.dom, each = $_a5gegtjje5o2pum.each; + var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle; + var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted; + var width, height; + var editableDoc = editor.getDoc(), rootDocument = document; + var abs = Math.abs, round = Math.round, rootElement = editor.getBody(); + var startScrollWidth, startScrollHeight; + resizeHandles = { + nw: [ + 0, + 0, + -1, + -1 + ], + ne: [ + 1, + 0, + 1, + -1 + ], + se: [ + 1, + 1, + 1, + 1 + ], + sw: [ + 0, + 1, + -1, + 1 + ] + }; + var rootClass = '.mce-content-body'; + editor.contentStyles.push(rootClass + ' div.mce-resizehandle {' + 'position: absolute;' + 'border: 1px solid black;' + 'box-sizing: content-box;' + 'background: #FFF;' + 'width: 7px;' + 'height: 7px;' + 'z-index: 10000' + '}' + rootClass + ' .mce-resizehandle:hover {' + 'background: #000' + '}' + rootClass + ' img[data-mce-selected],' + rootClass + ' hr[data-mce-selected] {' + 'outline: 1px solid black;' + 'resize: none' + '}' + rootClass + ' .mce-clonedresizable {' + 'position: absolute;' + ($_9bd8pn9je5o2pp2.gecko ? '' : 'outline: 1px dashed black;') + 'opacity: .5;' + 'filter: alpha(opacity=50);' + 'z-index: 10000' + '}' + rootClass + ' .mce-resize-helper {' + 'background: #555;' + 'background: rgba(0,0,0,0.75);' + 'border-radius: 3px;' + 'border: 1px;' + 'color: white;' + 'display: none;' + 'font-family: sans-serif;' + 'font-size: 12px;' + 'white-space: nowrap;' + 'line-height: 14px;' + 'margin: 5px 10px;' + 'padding: 5px;' + 'position: absolute;' + 'z-index: 10001' + '}'); + var isImage = function (elm) { + return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image')); + }; + var isEventOnImageOutsideRange = function (evt, range) { + return isImage(evt.target) && !$_40xr2y56je5o2qsc.isXYWithinRange(evt.clientX, evt.clientY, range); + }; + var contextMenuSelectImage = function (evt) { + var target = evt.target; + if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) { + evt.preventDefault(); + editor.selection.select(target); + } + }; + var getResizeTarget = function (elm) { + return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm; + }; + var isResizable = function (elm) { + var selector = editor.settings.object_resizing; + if (selector === false || $_9bd8pn9je5o2pp2.iOS) { + return false; + } + if (typeof selector !== 'string') { + selector = 'table,img,figure.image,div'; + } + if (elm.getAttribute('data-mce-resize') === 'false') { + return false; + } + if (elm === editor.getBody()) { + return false; + } + return $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(elm), selector); + }; + var resizeGhostElement = function (e) { + var deltaX, deltaY, proportional; + var resizeHelperX, resizeHelperY; + deltaX = e.screenX - startX; + deltaY = e.screenY - startY; + width = deltaX * selectedHandle[2] + startW; + height = deltaY * selectedHandle[3] + startH; + width = width < 5 ? 5 : width; + height = height < 5 ? 5 : height; + if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) { + proportional = !$_99mhlk59je5o2qss.modifierPressed(e); + } else { + proportional = $_99mhlk59je5o2qss.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0; + } + if (proportional) { + if (abs(deltaX) > abs(deltaY)) { + height = round(width * ratio); + width = round(height / ratio); + } else { + width = round(height / ratio); + height = round(width * ratio); + } + } + dom.setStyles(getResizeTarget(selectedElmGhost), { + width: width, + height: height + }); + resizeHelperX = selectedHandle.startPos.x + deltaX; + resizeHelperY = selectedHandle.startPos.y + deltaY; + resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0; + resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0; + dom.setStyles(resizeHelper, { + left: resizeHelperX, + top: resizeHelperY, + display: 'block' + }); + resizeHelper.innerHTML = width + ' × ' + height; + if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) { + dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width)); + } + if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) { + dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height)); + } + deltaX = rootElement.scrollWidth - startScrollWidth; + deltaY = rootElement.scrollHeight - startScrollHeight; + if (deltaX + deltaY !== 0) { + dom.setStyles(resizeHelper, { + left: resizeHelperX - deltaX, + top: resizeHelperY - deltaY + }); + } + if (!resizeStarted) { + editor.fire('ObjectResizeStart', { + target: selectedElm, + width: startW, + height: startH + }); + resizeStarted = true; + } + }; + var endGhostResize = function () { + resizeStarted = false; + var setSizeProp = function (name, value) { + if (value) { + if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) { + dom.setStyle(getResizeTarget(selectedElm), name, value); + } else { + dom.setAttrib(getResizeTarget(selectedElm), name, value); + } + } + }; + setSizeProp('width', width); + setSizeProp('height', height); + dom.unbind(editableDoc, 'mousemove', resizeGhostElement); + dom.unbind(editableDoc, 'mouseup', endGhostResize); + if (rootDocument !== editableDoc) { + dom.unbind(rootDocument, 'mousemove', resizeGhostElement); + dom.unbind(rootDocument, 'mouseup', endGhostResize); + } + dom.remove(selectedElmGhost); + dom.remove(resizeHelper); + showResizeRect(selectedElm); + editor.fire('ObjectResized', { + target: selectedElm, + width: width, + height: height + }); + dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style')); + editor.nodeChanged(); + }; + var showResizeRect = function (targetElm) { + var position, targetWidth, targetHeight, e, rect; + hideResizeRect(); + unbindResizeHandleEvents(); + position = dom.getPos(targetElm, rootElement); + selectedElmX = position.x; + selectedElmY = position.y; + rect = targetElm.getBoundingClientRect(); + targetWidth = rect.width || rect.right - rect.left; + targetHeight = rect.height || rect.bottom - rect.top; + if (selectedElm !== targetElm) { + selectedElm = targetElm; + width = height = 0; + } + e = editor.fire('ObjectSelected', { target: targetElm }); + if (isResizable(targetElm) && !e.isDefaultPrevented()) { + each(resizeHandles, function (handle, name) { + var handleElm; + var startDrag = function (e) { + startX = e.screenX; + startY = e.screenY; + startW = getResizeTarget(selectedElm).clientWidth; + startH = getResizeTarget(selectedElm).clientHeight; + ratio = startH / startW; + selectedHandle = handle; + handle.startPos = { + x: targetWidth * handle[0] + selectedElmX, + y: targetHeight * handle[1] + selectedElmY + }; + startScrollWidth = rootElement.scrollWidth; + startScrollHeight = rootElement.scrollHeight; + selectedElmGhost = selectedElm.cloneNode(true); + dom.addClass(selectedElmGhost, 'mce-clonedresizable'); + dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all'); + selectedElmGhost.contentEditable = false; + selectedElmGhost.unSelectabe = true; + dom.setStyles(selectedElmGhost, { + left: selectedElmX, + top: selectedElmY, + margin: 0 + }); + selectedElmGhost.removeAttribute('data-mce-selected'); + rootElement.appendChild(selectedElmGhost); + dom.bind(editableDoc, 'mousemove', resizeGhostElement); + dom.bind(editableDoc, 'mouseup', endGhostResize); + if (rootDocument !== editableDoc) { + dom.bind(rootDocument, 'mousemove', resizeGhostElement); + dom.bind(rootDocument, 'mouseup', endGhostResize); + } + resizeHelper = dom.add(rootElement, 'div', { + 'class': 'mce-resize-helper', + 'data-mce-bogus': 'all' + }, startW + ' × ' + startH); + }; + handleElm = dom.get('mceResizeHandle' + name); + if (handleElm) { + dom.remove(handleElm); + } + handleElm = dom.add(rootElement, 'div', { + 'id': 'mceResizeHandle' + name, + 'data-mce-bogus': 'all', + 'class': 'mce-resizehandle', + 'unselectable': true, + 'style': 'cursor:' + name + '-resize; margin:0; padding:0' + }); + if ($_9bd8pn9je5o2pp2.ie) { + handleElm.contentEditable = false; + } + dom.bind(handleElm, 'mousedown', function (e) { + e.stopImmediatePropagation(); + e.preventDefault(); + startDrag(e); + }); + handle.elm = handleElm; + dom.setStyles(handleElm, { + left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2, + top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2 + }); + }); + } else { + hideResizeRect(); + } + selectedElm.setAttribute('data-mce-selected', '1'); + }; + var hideResizeRect = function () { + var name, handleElm; + unbindResizeHandleEvents(); + if (selectedElm) { + selectedElm.removeAttribute('data-mce-selected'); + } + for (name in resizeHandles) { + handleElm = dom.get('mceResizeHandle' + name); + if (handleElm) { + dom.unbind(handleElm); + dom.remove(handleElm); + } + } + }; + var updateResizeRect = function (e) { + var startElm, controlElm; + var isChildOrEqual = function (node, parent) { + if (node) { + do { + if (node === parent) { + return true; + } + } while (node = node.parentNode); + } + }; + if (resizeStarted || editor.removed) { + return; + } + each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) { + img.removeAttribute('data-mce-selected'); + }); + controlElm = e.type === 'mousedown' ? e.target : selection.getNode(); + controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0]; + if (isChildOrEqual(controlElm, rootElement)) { + disableGeckoResize(); + startElm = selection.getStart(true); + if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) { + showResizeRect(controlElm); + return; + } + } + hideResizeRect(); + }; + var isWithinContentEditableFalse = function (elm) { + return isContentEditableFalse$10(getContentEditableRoot$1(editor.getBody(), elm)); + }; + var unbindResizeHandleEvents = function () { + for (var name_1 in resizeHandles) { + var handle = resizeHandles[name_1]; + if (handle.elm) { + dom.unbind(handle.elm); + delete handle.elm; + } + } + }; + var disableGeckoResize = function () { + try { + editor.getDoc().execCommand('enableObjectResizing', false, false); + } catch (ex) { + } + }; + editor.on('init', function () { + disableGeckoResize(); + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie >= 11) { + editor.on('mousedown click', function (e) { + var target = e.target, nodeName = target.nodeName; + if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) { + if (e.button !== 2) { + editor.selection.select(target, nodeName === 'TABLE'); + } + if (e.type === 'mousedown') { + editor.nodeChanged(); + } + } + }); + editor.dom.bind(rootElement, 'mscontrolselect', function (e) { + var delayedSelect = function (node) { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + editor.selection.select(node); + }); + }; + if (isWithinContentEditableFalse(e.target)) { + e.preventDefault(); + delayedSelect(e.target); + return; + } + if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) { + e.preventDefault(); + if (e.target.tagName === 'IMG') { + delayedSelect(e.target); + } + } + }); + } + var throttledUpdateResizeRect = $_db41wogje5o2ps3.throttle(function (e) { + if (!editor.composing) { + updateResizeRect(e); + } + }); + editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect); + editor.on('keyup compositionend', function (e) { + if (selectedElm && selectedElm.nodeName === 'TABLE') { + throttledUpdateResizeRect(e); + } + }); + editor.on('hide blur', hideResizeRect); + editor.on('contextmenu', contextMenuSelectImage); + }); + editor.on('remove', unbindResizeHandleEvents); + var destroy = function () { + selectedElm = selectedElmGhost = null; + }; + return { + isResizable: isResizable, + showResizeRect: showResizeRect, + hideResizeRect: hideResizeRect, + updateResizeRect: updateResizeRect, + destroy: destroy + }; + }; + + var getPos$1 = function (elm) { + var x = 0, y = 0; + var offsetParent = elm; + while (offsetParent && offsetParent.nodeType) { + x += offsetParent.offsetLeft || 0; + y += offsetParent.offsetTop || 0; + offsetParent = offsetParent.offsetParent; + } + return { + x: x, + y: y + }; + }; + var fireScrollIntoViewEvent = function (editor, elm, alignToTop) { + var scrollEvent = { + elm: elm, + alignToTop: alignToTop + }; + editor.fire('scrollIntoView', scrollEvent); + return scrollEvent.isDefaultPrevented(); + }; + var scrollIntoView = function (editor, elm, alignToTop) { + var y, viewPort; + var dom = editor.dom; + var root = dom.getRoot(); + var viewPortY, viewPortH, offsetY = 0; + if (fireScrollIntoViewEvent(editor, elm, alignToTop)) { + return; + } + if (!$_9owqcy1qje5o2q0e.isElement(elm)) { + return; + } + if (alignToTop === false) { + offsetY = elm.offsetHeight; + } + if (root.nodeName !== 'BODY') { + var scrollContainer = editor.selection.getScrollContainer(); + if (scrollContainer) { + y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY; + viewPortH = scrollContainer.clientHeight; + viewPortY = scrollContainer.scrollTop; + if (y < viewPortY || y + 25 > viewPortY + viewPortH) { + scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25; + } + return; + } + } + viewPort = dom.getViewPort(editor.getWin()); + y = dom.getPos(elm).y + offsetY; + viewPortY = viewPort.y; + viewPortH = viewPort.h; + if (y < viewPort.y || y + 25 > viewPortY + viewPortH) { + editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25); + } + }; + var $_82tr6v67je5o2qyr = { scrollIntoView: scrollIntoView }; + + var hasCeProperty = function (node) { + return $_9owqcy1qje5o2q0e.isContentEditableTrue(node) || $_9owqcy1qje5o2q0e.isContentEditableFalse(node); + }; + var findParent$1 = function (node, rootNode, predicate) { + while (node && node !== rootNode) { + if (predicate(node)) { + return node; + } + node = node.parentNode; + } + return null; + }; + var findClosestIeRange = function (clientX, clientY, doc) { + var element, rng, rects; + element = doc.elementFromPoint(clientX, clientY); + rng = doc.body.createTextRange(); + if (!element || element.tagName === 'HTML') { + element = doc.body; + } + rng.moveToElementText(element); + rects = $_a5gegtjje5o2pum.toArray(rng.getClientRects()); + rects = rects.sort(function (a, b) { + a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY)); + b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY)); + return a - b; + }); + if (rects.length > 0) { + clientY = (rects[0].bottom + rects[0].top) / 2; + try { + rng.moveToPoint(clientX, clientY); + rng.collapse(true); + return rng; + } catch (ex) { + } + } + return null; + }; + var moveOutOfContentEditableFalse = function (rng, rootNode) { + var parentElement = rng && rng.parentElement ? rng.parentElement() : null; + return $_9owqcy1qje5o2q0e.isContentEditableFalse(findParent$1(parentElement, rootNode, hasCeProperty)) ? null : rng; + }; + var fromPoint$1 = function (clientX, clientY, doc) { + var rng, point; + var pointDoc = doc; + if (pointDoc.caretPositionFromPoint) { + point = pointDoc.caretPositionFromPoint(clientX, clientY); + if (point) { + rng = doc.createRange(); + rng.setStart(point.offsetNode, point.offset); + rng.collapse(true); + } + } else if (doc.caretRangeFromPoint) { + rng = doc.caretRangeFromPoint(clientX, clientY); + } else if (pointDoc.body.createTextRange) { + rng = pointDoc.body.createTextRange(); + try { + rng.moveToPoint(clientX, clientY); + rng.collapse(true); + } catch (ex) { + rng = findClosestIeRange(clientX, clientY, doc); + } + return moveOutOfContentEditableFalse(rng, doc.body); + } + return rng; + }; + var $_drs2u868je5o2qyu = { fromPoint: fromPoint$1 }; + + var processRanges = function (editor, ranges) { + return $_bwcteb4je5o2pl4.map(ranges, function (range) { + var evt = editor.fire('GetSelectionRange', { range: range }); + return evt.range !== range ? evt.range : range; + }); + }; + var $_fe3rbo69je5o2qzb = { processRanges: processRanges }; + + var clone$2 = function (original, deep) { + return $_5tcb2dyje5o2pwu.fromDom(original.dom().cloneNode(deep)); + }; + var shallow$1 = function (original) { + return clone$2(original, false); + }; + var deep$1 = function (original) { + return clone$2(original, true); + }; + var shallowAs = function (original, tag) { + var nu = $_5tcb2dyje5o2pwu.fromTag(tag); + var attributes = $_3uo9pl14je5o2pxq.clone(original); + $_3uo9pl14je5o2pxq.setAll(nu, attributes); + return nu; + }; + var copy$1 = function (original, tag) { + var nu = shallowAs(original, tag); + var cloneChildren = $_a6mttx17je5o2pyd.children(deep$1(original)); + $_93ro7k2qje5o2qa4.append(nu, cloneChildren); + return nu; + }; + var mutate = function (original, tag) { + var nu = shallowAs(original, tag); + $_elbl2s2oje5o2q9z.before(original, nu); + var children = $_a6mttx17je5o2pyd.children(original); + $_93ro7k2qje5o2qa4.append(nu, children); + $_cr1seh2pje5o2qa1.remove(original); + return nu; + }; + var $_cpi15k6cje5o2qzr = { + shallow: shallow$1, + shallowAs: shallowAs, + deep: deep$1, + copy: copy$1, + mutate: mutate + }; + + var fromElements = function (elements, scope) { + var doc = scope || document; + var fragment = doc.createDocumentFragment(); + $_bwcteb4je5o2pl4.each(elements, function (element) { + fragment.appendChild(element.dom()); + }); + return $_5tcb2dyje5o2pwu.fromDom(fragment); + }; + var $_g8hjki6dje5o2qzt = { fromElements: fromElements }; + + var getStartNode = function (rng) { + var sc = rng.startContainer, so = rng.startOffset; + if ($_9owqcy1qje5o2q0e.isText(sc)) { + return so === 0 ? Option.some($_5tcb2dyje5o2pwu.fromDom(sc)) : Option.none(); + } else { + return Option.from(sc.childNodes[so]).map($_5tcb2dyje5o2pwu.fromDom); + } + }; + var getEndNode = function (rng) { + var ec = rng.endContainer, eo = rng.endOffset; + if ($_9owqcy1qje5o2q0e.isText(ec)) { + return eo === ec.data.length ? Option.some($_5tcb2dyje5o2pwu.fromDom(ec)) : Option.none(); + } else { + return Option.from(ec.childNodes[eo - 1]).map($_5tcb2dyje5o2pwu.fromDom); + } + }; + var getFirstChildren = function (node) { + return $_a6mttx17je5o2pyd.firstChild(node).fold($_enfhkv6je5o2ply.constant([node]), function (child) { + return [node].concat(getFirstChildren(child)); + }); + }; + var getLastChildren$1 = function (node) { + return $_a6mttx17je5o2pyd.lastChild(node).fold($_enfhkv6je5o2ply.constant([node]), function (child) { + if ($_95wn8qzje5o2px0.name(child) === 'br') { + return $_a6mttx17je5o2pyd.prevSibling(child).map(function (sibling) { + return [node].concat(getLastChildren$1(sibling)); + }).getOr([]); + } else { + return [node].concat(getLastChildren$1(child)); + } + }); + }; + var hasAllContentsSelected = function (elm, rng) { + return $_c8weyc2eje5o2q85.liftN([ + getStartNode(rng), + getEndNode(rng) + ], function (startNode, endNode) { + var start = $_bwcteb4je5o2pl4.find(getFirstChildren(elm), $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, startNode)); + var end = $_bwcteb4je5o2pl4.find(getLastChildren$1(elm), $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, endNode)); + return start.isSome() && end.isSome(); + }).getOr(false); + }; + var moveEndPoint$1 = function (dom, rng, node, start) { + var root = node, walker = new TreeWalker(node, root); + var nonEmptyElementsMap = dom.schema.getNonEmptyElements(); + do { + if (node.nodeType === 3 && $_a5gegtjje5o2pum.trim(node.nodeValue).length !== 0) { + if (start) { + rng.setStart(node, 0); + } else { + rng.setEnd(node, node.nodeValue.length); + } + return; + } + if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) { + if (start) { + rng.setStartBefore(node); + } else { + if (node.nodeName === 'BR') { + rng.setEndBefore(node); + } else { + rng.setEndAfter(node); + } + } + return; + } + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) { + if (start) { + rng.setStart(node, 0); + } else { + rng.setEnd(node, 0); + } + return; + } + } while (node = start ? walker.next() : walker.prev()); + if (root.nodeName === 'BODY') { + if (start) { + rng.setStart(root, 0); + } else { + rng.setEnd(root, root.childNodes.length); + } + } + }; + + var tableModel = $_86drv18je5o2pyn.immutable('element', 'width', 'rows'); + var tableRow = $_86drv18je5o2pyn.immutable('element', 'cells'); + var cellPosition = $_86drv18je5o2pyn.immutable('x', 'y'); + var getSpan = function (td, key) { + var value = parseInt($_3uo9pl14je5o2pxq.get(td, key), 10); + return isNaN(value) ? 1 : value; + }; + var fillout = function (table, x, y, tr, td) { + var rowspan = getSpan(td, 'rowspan'); + var colspan = getSpan(td, 'colspan'); + var rows = table.rows(); + for (var y2 = y; y2 < y + rowspan; y2++) { + if (!rows[y2]) { + rows[y2] = tableRow($_cpi15k6cje5o2qzr.deep(tr), []); + } + for (var x2 = x; x2 < x + colspan; x2++) { + var cells = rows[y2].cells(); + cells[x2] = y2 === y && x2 === x ? td : $_cpi15k6cje5o2qzr.shallow(td); + } + } + }; + var cellExists = function (table, x, y) { + var rows = table.rows(); + var cells = rows[y] ? rows[y].cells() : []; + return !!cells[x]; + }; + var skipCellsX = function (table, x, y) { + while (cellExists(table, x, y)) { + x++; + } + return x; + }; + var getWidth = function (rows) { + return $_bwcteb4je5o2pl4.foldl(rows, function (acc, row) { + return row.cells().length > acc ? row.cells().length : acc; + }, 0); + }; + var findElementPos = function (table, element) { + var rows = table.rows(); + for (var y = 0; y < rows.length; y++) { + var cells = rows[y].cells(); + for (var x = 0; x < cells.length; x++) { + if ($_7oppmo1dje5o2pz1.eq(cells[x], element)) { + return Option.some(cellPosition(x, y)); + } + } + } + return Option.none(); + }; + var extractRows = function (table, sx, sy, ex, ey) { + var newRows = []; + var rows = table.rows(); + for (var y = sy; y <= ey; y++) { + var cells = rows[y].cells(); + var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1); + newRows.push(tableRow(rows[y].element(), slice)); + } + return newRows; + }; + var subTable = function (table, startPos, endPos) { + var sx = startPos.x(), sy = startPos.y(); + var ex = endPos.x(), ey = endPos.y(); + var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy); + return tableModel(table.element(), getWidth(newRows), newRows); + }; + var createDomTable = function (table, rows) { + var tableElement = $_cpi15k6cje5o2qzr.shallow(table.element()); + var tableBody = $_5tcb2dyje5o2pwu.fromTag('tbody'); + $_93ro7k2qje5o2qa4.append(tableBody, rows); + $_elbl2s2oje5o2q9z.append(tableElement, tableBody); + return tableElement; + }; + var modelRowsToDomRows = function (table) { + return $_bwcteb4je5o2pl4.map(table.rows(), function (row) { + var cells = $_bwcteb4je5o2pl4.map(row.cells(), function (cell) { + var td = $_cpi15k6cje5o2qzr.deep(cell); + $_3uo9pl14je5o2pxq.remove(td, 'colspan'); + $_3uo9pl14je5o2pxq.remove(td, 'rowspan'); + return td; + }); + var tr = $_cpi15k6cje5o2qzr.shallow(row.element()); + $_93ro7k2qje5o2qa4.append(tr, cells); + return tr; + }); + }; + var fromDom$1 = function (tableElm) { + var table = tableModel($_cpi15k6cje5o2qzr.shallow(tableElm), 0, []); + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(tableElm, 'tr'), function (tr, y) { + $_bwcteb4je5o2pl4.each($_b4jhpu2gje5o2q8e.descendants(tr, 'td,th'), function (td, x) { + fillout(table, skipCellsX(table, x, y), y, tr, td); + }); + }); + return tableModel(table.element(), getWidth(table.rows()), table.rows()); + }; + var toDom = function (table) { + return createDomTable(table, modelRowsToDomRows(table)); + }; + var subsection = function (table, startElement, endElement) { + return findElementPos(table, startElement).bind(function (startPos) { + return findElementPos(table, endElement).map(function (endPos) { + return subTable(table, startPos, endPos); + }); + }); + }; + var $_drw27r6fje5o2r07 = { + fromDom: fromDom$1, + toDom: toDom, + subsection: subsection + }; + + var findParentListContainer = function (parents) { + return $_bwcteb4je5o2pl4.find(parents, function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'ul' || $_95wn8qzje5o2px0.name(elm) === 'ol'; + }); + }; + var getFullySelectedListWrappers = function (parents, rng) { + return $_bwcteb4je5o2pl4.find(parents, function (elm) { + return $_95wn8qzje5o2px0.name(elm) === 'li' && hasAllContentsSelected(elm, rng); + }).fold($_enfhkv6je5o2ply.constant([]), function (li) { + return findParentListContainer(parents).map(function (listCont) { + return [ + $_5tcb2dyje5o2pwu.fromTag('li'), + $_5tcb2dyje5o2pwu.fromTag($_95wn8qzje5o2px0.name(listCont)) + ]; + }).getOr([]); + }); + }; + var wrap$3 = function (innerElm, elms) { + var wrapped = $_bwcteb4je5o2pl4.foldl(elms, function (acc, elm) { + $_elbl2s2oje5o2q9z.append(elm, acc); + return elm; + }, innerElm); + return elms.length > 0 ? $_g8hjki6dje5o2qzt.fromElements([wrapped]) : wrapped; + }; + var directListWrappers = function (commonAnchorContainer) { + if (isListItem(commonAnchorContainer)) { + return $_a6mttx17je5o2pyd.parent(commonAnchorContainer).filter(isList).fold($_enfhkv6je5o2ply.constant([]), function (listElm) { + return [ + commonAnchorContainer, + listElm + ]; + }); + } else { + return isList(commonAnchorContainer) ? [commonAnchorContainer] : []; + } + }; + var getWrapElements = function (rootNode, rng) { + var commonAnchorContainer = $_5tcb2dyje5o2pwu.fromDom(rng.commonAncestorContainer); + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(commonAnchorContainer, rootNode); + var wrapElements = $_bwcteb4je5o2pl4.filter(parents, function (elm) { + return isInline(elm) || isHeading(elm); + }); + var listWrappers = getFullySelectedListWrappers(parents, rng); + var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer)); + return $_bwcteb4je5o2pl4.map(allWrappers, $_cpi15k6cje5o2qzr.shallow); + }; + var emptyFragment = function () { + return $_g8hjki6dje5o2qzt.fromElements([]); + }; + var getFragmentFromRange = function (rootNode, rng) { + return wrap$3($_5tcb2dyje5o2pwu.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng)); + }; + var getParentTable = function (rootElm, cell) { + return $_9fzewc37je5o2qck.ancestor(cell, 'table', $_enfhkv6je5o2ply.curry($_7oppmo1dje5o2pz1.eq, rootElm)); + }; + var getTableFragment = function (rootNode, selectedTableCells) { + return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) { + var firstCell = selectedTableCells[0]; + var lastCell = selectedTableCells[selectedTableCells.length - 1]; + var fullTableModel = $_drw27r6fje5o2r07.fromDom(tableElm); + return $_drw27r6fje5o2r07.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) { + return $_g8hjki6dje5o2qzt.fromElements([$_drw27r6fje5o2r07.toDom(sectionedTableModel)]); + }); + }).getOrThunk(emptyFragment); + }; + var getSelectionFragment = function (rootNode, ranges) { + return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]); + }; + var read$3 = function (rootNode, ranges) { + var selectedCells = $_9il6og3uje5o2qhd.getCellsFromElementOrRanges(ranges, rootNode); + return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges); + }; + var $_51h1rc6bje5o2qzh = { read: read$3 }; + + var getContent = function (editor, args) { + var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body'); + var sel = editor.selection.getSel(); + var fragment; + var ranges = $_fe3rbo69je5o2qzb.processRanges(editor, $_b8hi2e3vje5o2qhh.getRanges(sel)); + args = args || {}; + args.get = true; + args.format = args.format || 'html'; + args.selection = true; + args = editor.fire('BeforeGetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('GetContent', args); + return args.content; + } + if (args.format === 'text') { + return editor.selection.isCollapsed() ? '' : $_4md31c21je5o2q5f.trim(rng.text || (sel.toString ? sel.toString() : '')); + } + if (rng.cloneContents) { + fragment = args.contextual ? $_51h1rc6bje5o2qzh.read($_5tcb2dyje5o2pwu.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents(); + if (fragment) { + tmpElm.appendChild(fragment); + } + } else if (rng.item !== undefined || rng.htmlText !== undefined) { + tmpElm.innerHTML = '<br>' + (rng.item ? rng.item(0).outerHTML : rng.htmlText); + tmpElm.removeChild(tmpElm.firstChild); + } else { + tmpElm.innerHTML = rng.toString(); + } + args.getInner = true; + var content = editor.selection.serializer.serialize(tmpElm, args); + if (args.format === 'tree') { + return content; + } + args.content = editor.selection.isCollapsed() ? '' : content; + editor.fire('GetContent', args); + return args.content; + }; + var $_b349jo6aje5o2qzd = { getContent: getContent }; + + var setContent = function (editor, content, args) { + var rng = editor.selection.getRng(), caretNode; + var doc = editor.getDoc(); + var frag, temp; + args = args || { format: 'html' }; + args.set = true; + args.selection = true; + args.content = content; + if (!args.no_events) { + args = editor.fire('BeforeSetContent', args); + if (args.isDefaultPrevented()) { + editor.fire('SetContent', args); + return; + } + } + content = args.content; + if (rng.insertNode) { + content += '<span id="__caret">_</span>'; + if (rng.startContainer === doc && rng.endContainer === doc) { + doc.body.innerHTML = content; + } else { + rng.deleteContents(); + if (doc.body.childNodes.length === 0) { + doc.body.innerHTML = content; + } else { + if (rng.createContextualFragment) { + rng.insertNode(rng.createContextualFragment(content)); + } else { + frag = doc.createDocumentFragment(); + temp = doc.createElement('div'); + frag.appendChild(temp); + temp.outerHTML = content; + rng.insertNode(frag); + } + } + } + caretNode = editor.dom.get('__caret'); + rng = doc.createRange(); + rng.setStartBefore(caretNode); + rng.setEndBefore(caretNode); + editor.selection.setRng(rng); + editor.dom.remove('__caret'); + try { + editor.selection.setRng(rng); + } catch (ex) { + } + } else { + if (rng.item) { + doc.execCommand('Delete', false, null); + rng = editor.getRng(); + } + if (/^\s+/.test(content)) { + rng.pasteHTML('<span id="__mce_tmp">_</span>' + content); + editor.dom.remove('__mce_tmp'); + } else { + rng.pasteHTML(content); + } + } + if (!args.no_events) { + editor.fire('SetContent', args); + } + }; + var $_e4xow86gje5o2r0i = { setContent: setContent }; + + var getEndpointElement = function (root, rng, start, real, resolve) { + var container = start ? rng.startContainer : rng.endContainer; + var offset = start ? rng.startOffset : rng.endOffset; + return Option.from(container).map($_5tcb2dyje5o2pwu.fromDom).map(function (elm) { + return !real || !rng.collapsed ? $_a6mttx17je5o2pyd.child(elm, resolve(elm, offset)).getOr(elm) : elm; + }).bind(function (elm) { + return $_95wn8qzje5o2px0.isElement(elm) ? Option.some(elm) : $_a6mttx17je5o2pyd.parent(elm); + }).map(function (elm) { + return elm.dom(); + }).getOr(root); + }; + var getStart$2 = function (root, rng, real) { + return getEndpointElement(root, rng, true, real, function (elm, offset) { + return Math.min($_a6mttx17je5o2pyd.childNodesCount(elm), offset); + }); + }; + var getEnd = function (root, rng, real) { + return getEndpointElement(root, rng, false, real, function (elm, offset) { + return offset > 0 ? offset - 1 : offset; + }); + }; + var skipEmptyTextNodes = function (node, forwards) { + var orig = node; + while (node && $_9owqcy1qje5o2q0e.isText(node) && node.length === 0) { + node = forwards ? node.nextSibling : node.previousSibling; + } + return node || orig; + }; + var getNode$1 = function (root, rng) { + var elm, startContainer, endContainer, startOffset, endOffset; + if (!rng) { + return root; + } + startContainer = rng.startContainer; + endContainer = rng.endContainer; + startOffset = rng.startOffset; + endOffset = rng.endOffset; + elm = rng.commonAncestorContainer; + if (!rng.collapsed) { + if (startContainer === endContainer) { + if (endOffset - startOffset < 2) { + if (startContainer.hasChildNodes()) { + elm = startContainer.childNodes[startOffset]; + } + } + } + if (startContainer.nodeType === 3 && endContainer.nodeType === 3) { + if (startContainer.length === startOffset) { + startContainer = skipEmptyTextNodes(startContainer.nextSibling, true); + } else { + startContainer = startContainer.parentNode; + } + if (endOffset === 0) { + endContainer = skipEmptyTextNodes(endContainer.previousSibling, false); + } else { + endContainer = endContainer.parentNode; + } + if (startContainer && startContainer === endContainer) { + return startContainer; + } + } + } + if (elm && elm.nodeType === 3) { + return elm.parentNode; + } + return elm; + }; + var getSelectedBlocks = function (dom, rng, startElm, endElm) { + var node, root; + var selectedBlocks = []; + root = dom.getRoot(); + startElm = dom.getParent(startElm || getStart$2(root, rng, false), dom.isBlock); + endElm = dom.getParent(endElm || getEnd(root, rng, false), dom.isBlock); + if (startElm && startElm !== root) { + selectedBlocks.push(startElm); + } + if (startElm && endElm && startElm !== endElm) { + node = startElm; + var walker = new TreeWalker(startElm, root); + while ((node = walker.next()) && node !== endElm) { + if (dom.isBlock(node)) { + selectedBlocks.push(node); + } + } + } + if (endElm && startElm !== endElm && endElm !== root) { + selectedBlocks.push(endElm); + } + return selectedBlocks; + }; + var select$1 = function (dom, node, content) { + return Option.from(node).map(function (node) { + var idx = dom.nodeIndex(node); + var rng = dom.createRng(); + rng.setStart(node.parentNode, idx); + rng.setEnd(node.parentNode, idx + 1); + if (content) { + moveEndPoint$1(dom, rng, node, true); + moveEndPoint$1(dom, rng, node, false); + } + return rng; + }); + }; + + var each$20 = $_a5gegtjje5o2pum.each; + var isNativeIeSelection = function (rng) { + return !!rng.select; + }; + var isAttachedToDom = function (node) { + return !!(node && node.ownerDocument) && $_7oppmo1dje5o2pz1.contains($_5tcb2dyje5o2pwu.fromDom(node.ownerDocument), $_5tcb2dyje5o2pwu.fromDom(node)); + }; + var isValidRange = function (rng) { + if (!rng) { + return false; + } else if (isNativeIeSelection(rng)) { + return true; + } else { + return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer); + } + }; + var Selection$1 = function (dom, win, serializer, editor) { + var bookmarkManager, controlSelection; + var selectedRange, explicitRange, selectorChangedData; + var setCursorLocation = function (node, offset) { + var rng = dom.createRng(); + if (!node) { + moveEndPoint$1(dom, rng, editor.getBody(), true); + setRng(rng); + } else { + rng.setStart(node, offset); + rng.setEnd(node, offset); + setRng(rng); + collapse(false); + } + }; + var getContent = function (args) { + return $_b349jo6aje5o2qzd.getContent(editor, args); + }; + var setContent = function (content, args) { + return $_e4xow86gje5o2r0i.setContent(editor, content, args); + }; + var getStart = function (real) { + return getStart$2(editor.getBody(), getRng(), real); + }; + var getEnd$$1 = function (real) { + return getEnd(editor.getBody(), getRng(), real); + }; + var getBookmark = function (type, normalized) { + return bookmarkManager.getBookmark(type, normalized); + }; + var moveToBookmark = function (bookmark) { + return bookmarkManager.moveToBookmark(bookmark); + }; + var select = function (node, content) { + select$1(dom, node, content).each(setRng); + return node; + }; + var isCollapsed = function () { + var rng = getRng(), sel = getSel(); + if (!rng || rng.item) { + return false; + } + if (rng.compareEndPoints) { + return rng.compareEndPoints('StartToEnd', rng) === 0; + } + return !sel || rng.collapsed; + }; + var collapse = function (toStart) { + var rng = getRng(); + rng.collapse(!!toStart); + setRng(rng); + }; + var getSel = function () { + return win.getSelection ? win.getSelection() : win.document.selection; + }; + var getRng = function () { + var selection, rng, elm, doc; + var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) { + try { + return sourceRange.compareBoundaryPoints(how, destinationRange); + } catch (ex) { + return -1; + } + }; + if (!win) { + return null; + } + doc = win.document; + if (typeof doc === 'undefined' || doc === null) { + return null; + } + if (editor.bookmark !== undefined && $_llx5i48je5o2qna.hasFocus(editor) === false) { + var bookmark = $_fnd7h33zje5o2qly.getRng(editor); + if (bookmark.isSome()) { + return bookmark.map(function (r) { + return $_fe3rbo69je5o2qzb.processRanges(editor, [r])[0]; + }).getOr(doc.createRange()); + } + } + try { + if (selection = getSel()) { + if (selection.rangeCount > 0) { + rng = selection.getRangeAt(0); + } else { + rng = selection.createRange ? selection.createRange() : doc.createRange(); + } + } + } catch (ex) { + } + rng = $_fe3rbo69je5o2qzb.processRanges(editor, [rng])[0]; + if (!rng) { + rng = doc.createRange ? doc.createRange() : doc.body.createTextRange(); + } + if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) { + elm = dom.getRoot(); + rng.setStart(elm, 0); + rng.setEnd(elm, 0); + } + if (selectedRange && explicitRange) { + if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) { + rng = explicitRange; + } else { + selectedRange = null; + explicitRange = null; + } + } + return rng; + }; + var setRng = function (rng, forward) { + var sel, node, evt; + if (!isValidRange(rng)) { + return; + } + var ieRange = isNativeIeSelection(rng) ? rng : null; + if (ieRange) { + explicitRange = null; + try { + ieRange.select(); + } catch (ex) { + } + return; + } + sel = getSel(); + evt = editor.fire('SetSelectionRange', { + range: rng, + forward: forward + }); + rng = evt.range; + if (sel) { + explicitRange = rng; + try { + sel.removeAllRanges(); + sel.addRange(rng); + } catch (ex) { + } + if (forward === false && sel.extend) { + sel.collapse(rng.endContainer, rng.endOffset); + sel.extend(rng.startContainer, rng.startOffset); + } + selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null; + } + if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !$_9bd8pn9je5o2pp2.ie) { + if (rng.endOffset - rng.startOffset < 2) { + if (rng.startContainer.hasChildNodes()) { + node = rng.startContainer.childNodes[rng.startOffset]; + if (node && node.tagName === 'IMG') { + sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset); + if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) { + sel.setBaseAndExtent(node, 0, node, 1); + } + } + } + } + } + editor.fire('AfterSetSelectionRange', { + range: rng, + forward: forward + }); + }; + var setNode = function (elm) { + setContent(dom.getOuterHTML(elm)); + return elm; + }; + var getNode = function () { + return getNode$1(editor.getBody(), getRng()); + }; + var getSelectedBlocks$$1 = function (startElm, endElm) { + return getSelectedBlocks(dom, getRng(), startElm, endElm); + }; + var isForward = function () { + var sel = getSel(); + var anchorRange, focusRange; + if (!sel || !sel.anchorNode || !sel.focusNode) { + return true; + } + anchorRange = dom.createRng(); + anchorRange.setStart(sel.anchorNode, sel.anchorOffset); + anchorRange.collapse(true); + focusRange = dom.createRng(); + focusRange.setStart(sel.focusNode, sel.focusOffset); + focusRange.collapse(true); + return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0; + }; + var normalize = function () { + var rng = getRng(); + if (!$_b8hi2e3vje5o2qhh.hasMultipleRanges(getSel())) { + var normRng = $_1t8l6x3xje5o2qlk.normalize(dom, rng); + normRng.each(function (normRng) { + setRng(normRng, isForward()); + }); + return normRng.getOr(rng); + } + return rng; + }; + var selectorChanged = function (selector, callback) { + var currentSelectors; + if (!selectorChangedData) { + selectorChangedData = {}; + currentSelectors = {}; + editor.on('NodeChange', function (e) { + var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {}; + each$20(selectorChangedData, function (callbacks, selector) { + each$20(parents, function (node) { + if (dom.is(node, selector)) { + if (!currentSelectors[selector]) { + each$20(callbacks, function (callback) { + callback(true, { + node: node, + selector: selector, + parents: parents + }); + }); + currentSelectors[selector] = callbacks; + } + matchedSelectors[selector] = callbacks; + return false; + } + }); + }); + each$20(currentSelectors, function (callbacks, selector) { + if (!matchedSelectors[selector]) { + delete currentSelectors[selector]; + each$20(callbacks, function (callback) { + callback(false, { + node: node, + selector: selector, + parents: parents + }); + }); + } + }); + }); + } + if (!selectorChangedData[selector]) { + selectorChangedData[selector] = []; + } + selectorChangedData[selector].push(callback); + return exports; + }; + var getScrollContainer = function () { + var scrollContainer, node = dom.getRoot(); + while (node && node.nodeName !== 'BODY') { + if (node.scrollHeight > node.clientHeight) { + scrollContainer = node; + break; + } + node = node.parentNode; + } + return scrollContainer; + }; + var scrollIntoView = function (elm, alignToTop) { + return $_82tr6v67je5o2qyr.scrollIntoView(editor, elm, alignToTop); + }; + var placeCaretAt = function (clientX, clientY) { + return setRng($_drs2u868je5o2qyu.fromPoint(clientX, clientY, editor.getDoc())); + }; + var getBoundingClientRect = function () { + var rng = getRng(); + return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect(); + }; + var destroy = function () { + win = selectedRange = explicitRange = null; + controlSelection.destroy(); + }; + var exports = { + bookmarkManager: null, + controlSelection: null, + dom: dom, + win: win, + serializer: serializer, + editor: editor, + collapse: collapse, + setCursorLocation: setCursorLocation, + getContent: getContent, + setContent: setContent, + getBookmark: getBookmark, + moveToBookmark: moveToBookmark, + select: select, + isCollapsed: isCollapsed, + isForward: isForward, + setNode: setNode, + getNode: getNode, + getSel: getSel, + setRng: setRng, + getRng: getRng, + getStart: getStart, + getEnd: getEnd$$1, + getSelectedBlocks: getSelectedBlocks$$1, + normalize: normalize, + selectorChanged: selectorChanged, + getScrollContainer: getScrollContainer, + scrollIntoView: scrollIntoView, + placeCaretAt: placeCaretAt, + getBoundingClientRect: getBoundingClientRect, + destroy: destroy + }; + bookmarkManager = BookmarkManager$1(exports); + controlSelection = ControlSelection(exports, editor); + exports.bookmarkManager = bookmarkManager; + exports.controlSelection = controlSelection; + return exports; + }; + + var isContentEditableFalse$11 = $_9owqcy1qje5o2q0e.isContentEditableFalse; + var getSelectedNode$1 = getSelectedNode; + var isAfterContentEditableFalse$2 = isAfterContentEditableFalse; + var isBeforeContentEditableFalse$2 = isBeforeContentEditableFalse; + var getVisualCaretPosition = function (walkFn, caretPosition) { + while (caretPosition = walkFn(caretPosition)) { + if (caretPosition.isVisible()) { + return caretPosition; + } + } + return caretPosition; + }; + var isMoveInsideSameBlock = function (from, to) { + var inSameBlock = isInSameBlock(from, to); + if (!inSameBlock && $_9owqcy1qje5o2q0e.isBr(from.getNode())) { + return true; + } + return inSameBlock; + }; + var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) { + var node, caretPosition, peekCaretPosition, rangeIsInContainerBlock; + var forwards = direction === HDirection.Forwards; + var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse$2 : isAfterContentEditableFalse$2; + if (!range.collapsed) { + node = getSelectedNode$1(range); + if (isContentEditableFalse$11(node)) { + return showCaret(direction, editor, node, direction === HDirection.Backwards, true); + } + } + rangeIsInContainerBlock = isRangeInCaretContainerBlock(range); + caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); + if (isBeforeContentEditableFalseFn(caretPosition)) { + return selectNode(editor, caretPosition.getNode(!forwards)); + } + caretPosition = getNextPosFn(caretPosition); + if (!caretPosition) { + if (rangeIsInContainerBlock) { + return range; + } + return null; + } + if (isBeforeContentEditableFalseFn(caretPosition)) { + return showCaret(direction, editor, caretPosition.getNode(!forwards), forwards, true); + } + peekCaretPosition = getNextPosFn(caretPosition); + if (isBeforeContentEditableFalseFn(peekCaretPosition)) { + if (isMoveInsideSameBlock(caretPosition, peekCaretPosition)) { + return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true); + } + } + if (rangeIsInContainerBlock) { + return renderRangeCaret(editor, caretPosition.toRange(), true); + } + return null; + }; + var moveToCeFalseVertically = function (direction, editor, walkerFn, range) { + var caretPosition, linePositions, nextLinePositions; + var closestNextLineRect, caretClientRect, clientX; + var dist1, dist2, contentEditableFalseNode; + contentEditableFalseNode = getSelectedNode$1(range); + caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range); + linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition); + nextLinePositions = $_c2vc3pkje5o2puw.filter(linePositions, isLine(1)); + caretClientRect = $_c2vc3pkje5o2puw.last(caretPosition.getClientRects()); + if (isBeforeContentEditableFalse$2(caretPosition) || isBeforeTable(caretPosition)) { + contentEditableFalseNode = caretPosition.getNode(); + } + if (isAfterContentEditableFalse$2(caretPosition) || isAfterTable(caretPosition)) { + contentEditableFalseNode = caretPosition.getNode(true); + } + if (!caretClientRect) { + return null; + } + clientX = caretClientRect.left; + closestNextLineRect = findClosestClientRect(nextLinePositions, clientX); + if (closestNextLineRect) { + if (isContentEditableFalse$11(closestNextLineRect.node)) { + dist1 = Math.abs(clientX - closestNextLineRect.left); + dist2 = Math.abs(clientX - closestNextLineRect.right); + return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true); + } + } + if (contentEditableFalseNode) { + var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode); + closestNextLineRect = findClosestClientRect($_c2vc3pkje5o2puw.filter(caretPositions, isLine(1)), clientX); + if (closestNextLineRect) { + return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); + } + closestNextLineRect = $_c2vc3pkje5o2puw.last($_c2vc3pkje5o2puw.filter(caretPositions, isLine(0))); + if (closestNextLineRect) { + return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true); + } + } + }; + var createTextBlock = function (editor) { + var textBlock = editor.dom.create(editor.settings.forced_root_block); + if (!$_9bd8pn9je5o2pp2.ie || $_9bd8pn9je5o2pp2.ie >= 11) { + textBlock.innerHTML = '<br data-mce-bogus="1">'; + } + return textBlock; + }; + var exitPreBlock = function (editor, direction, range) { + var pre, caretPos, newBlock; + var caretWalker = CaretWalker(editor.getBody()); + var getNextVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.next); + var getPrevVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.prev); + if (range.collapsed && editor.settings.forced_root_block) { + pre = editor.dom.getParent(range.startContainer, 'PRE'); + if (!pre) { + return; + } + if (direction === 1) { + caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); + } else { + caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range)); + } + if (!caretPos) { + newBlock = createTextBlock(editor); + if (direction === 1) { + editor.$(pre).after(newBlock); + } else { + editor.$(pre).before(newBlock); + } + editor.selection.select(newBlock, true); + editor.selection.collapse(); + } + } + }; + var getHorizontalRange = function (editor, forward) { + var caretWalker = CaretWalker(editor.getBody()); + var getNextVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.next); + var getPrevVisualCaretPosition = $_ghq3nq25je5o2q5q.curry(getVisualCaretPosition, caretWalker.prev); + var newRange; + var direction = forward ? HDirection.Forwards : HDirection.Backwards; + var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition; + var range = editor.selection.getRng(); + newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range); + if (newRange) { + return newRange; + } + newRange = exitPreBlock(editor, direction, range); + if (newRange) { + return newRange; + } + return null; + }; + var getVerticalRange = function (editor, down) { + var newRange; + var direction = down ? 1 : -1; + var walkerFn = down ? downUntil : upUntil; + var range = editor.selection.getRng(); + newRange = moveToCeFalseVertically(direction, editor, walkerFn, range); + if (newRange) { + return newRange; + } + newRange = exitPreBlock(editor, direction, range); + if (newRange) { + return newRange; + } + return null; + }; + var moveH$1 = function (editor, forward) { + return function () { + var newRng = getHorizontalRange(editor, forward); + if (newRng) { + editor.selection.setRng(newRng); + return true; + } else { + return false; + } + }; + }; + var moveV$1 = function (editor, down) { + return function () { + var newRng = getVerticalRange(editor, down); + if (newRng) { + editor.selection.setRng(newRng); + return true; + } else { + return false; + } + }; + }; + + var defaultPatterns = function (patterns) { + return $_bwcteb4je5o2pl4.map(patterns, function (pattern) { + return $_atjucy5uje5o2qw2.merge({ + shiftKey: false, + altKey: false, + ctrlKey: false, + metaKey: false, + keyCode: 0, + action: $_enfhkv6je5o2ply.noop + }, pattern); + }); + }; + var matchesEvent = function (pattern, evt) { + return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey; + }; + var match$1 = function (patterns, evt) { + return $_bwcteb4je5o2pl4.bind(defaultPatterns(patterns), function (pattern) { + return matchesEvent(pattern, evt) ? [pattern] : []; + }); + }; + var action = function (f) { + var x = []; + for (var _i = 1; _i < arguments.length; _i++) { + x[_i - 1] = arguments[_i]; + } + var args = Array.prototype.slice.call(arguments, 1); + return function () { + return f.apply(null, args); + }; + }; + var execute = function (patterns, evt) { + return $_bwcteb4je5o2pl4.find(match$1(patterns, evt), function (pattern) { + return pattern.action(); + }); + }; + var $_fc81iw6lje5o2r1d = { + match: match$1, + action: action, + execute: execute + }; + + var executeKeydownOverride = function (editor, caret, evt) { + var os = $_2hq237mje5o2pvu.detect().os; + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: moveH$1(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: moveH$1(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.UP, + action: moveV$1(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DOWN, + action: moveV$1(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: moveH(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: moveH(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.UP, + action: moveV(editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DOWN, + action: moveV(editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + action: $_2dnted3pje5o2qgc.move(editor, caret, true) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + action: $_2dnted3pje5o2qgc.move(editor, caret, false) + }, + { + keyCode: $_99mhlk59je5o2qss.RIGHT, + ctrlKey: !os.isOSX(), + altKey: os.isOSX(), + action: $_2dnted3pje5o2qgc.moveNextWord(editor, caret) + }, + { + keyCode: $_99mhlk59je5o2qss.LEFT, + ctrlKey: !os.isOSX(), + altKey: os.isOSX(), + action: $_2dnted3pje5o2qgc.movePrevWord(editor, caret) + } + ], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var setup$6 = function (editor, caret) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride(editor, caret, evt); + } + }); + }; + var $_a5oax76jje5o2r0t = { setup: setup$6 }; + + var getParentInlines = function (rootElm, startElm) { + var parents = $_yqcmh39je5o2qcw.parentsAndSelf(startElm, rootElm); + return $_bwcteb4je5o2pl4.findIndex(parents, isBlock).fold($_enfhkv6je5o2ply.constant(parents), function (index) { + return parents.slice(0, index); + }); + }; + var hasOnlyOneChild$1 = function (elm) { + return $_a6mttx17je5o2pyd.children(elm).length === 1; + }; + var deleteLastPosition = function (forward, editor, target, parentInlines) { + var isFormatElement = $_enfhkv6je5o2ply.curry($_4066yu3jje5o2qev.isFormatElement, editor); + var formatNodes = $_bwcteb4je5o2pl4.map($_bwcteb4je5o2pl4.filter(parentInlines, isFormatElement), function (elm) { + return elm.dom(); + }); + if (formatNodes.length === 0) { + $_8fuvl23eje5o2qdv.deleteElement(editor, forward, target); + } else { + var pos = $_4066yu3jje5o2qev.replaceWithCaretFormat(target.dom(), formatNodes); + editor.selection.setRng(pos.toRange()); + } + }; + var deleteCaret$1 = function (editor, forward) { + var rootElm = $_5tcb2dyje5o2pwu.fromDom(editor.getBody()); + var startElm = $_5tcb2dyje5o2pwu.fromDom(editor.selection.getStart()); + var parentInlines = $_bwcteb4je5o2pl4.filter(getParentInlines(rootElm, startElm), hasOnlyOneChild$1); + return $_bwcteb4je5o2pl4.last(parentInlines).map(function (target) { + var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + if ($_7twey62zje5o2qay.willDeleteLastPositionInElement(forward, fromPos, target.dom())) { + deleteLastPosition(forward, editor, target, parentInlines); + return true; + } else { + return false; + } + }).getOr(false); + }; + var backspaceDelete$5 = function (editor, forward) { + return editor.selection.isCollapsed() ? deleteCaret$1(editor, forward) : false; + }; + var $_f5ktyq6nje5o2r1k = { backspaceDelete: backspaceDelete$5 }; + + var executeKeydownOverride$1 = function (editor, caret, evt) { + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_bzwx3b3fje5o2qe7.backspaceDelete, editor, caret, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_bzwx3b3fje5o2qe7.backspaceDelete, editor, caret, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_a476lo3aje5o2qd0.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_a476lo3aje5o2qd0.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_3qfe0j2xje5o2qao.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_3qfe0j2xje5o2qao.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_8pfx7e3sje5o2qgp.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_8pfx7e3sje5o2qgp.backspaceDelete, editor, true) + }, + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_f5ktyq6nje5o2r1k.backspaceDelete, editor, false) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_f5ktyq6nje5o2r1k.backspaceDelete, editor, true) + } + ], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var executeKeyupOverride = function (editor, evt) { + $_fc81iw6lje5o2r1d.execute([ + { + keyCode: $_99mhlk59je5o2qss.BACKSPACE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.paddEmptyElement, editor) + }, + { + keyCode: $_99mhlk59je5o2qss.DELETE, + action: $_fc81iw6lje5o2r1d.action($_c7csnv3bje5o2qd6.paddEmptyElement, editor) + } + ], evt); + }; + var setup$7 = function (editor, caret) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride$1(editor, caret, evt); + } + }); + editor.on('keyup', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeyupOverride(editor, evt); + } + }); + }; + var $_6wiawx6mje5o2r1h = { setup: setup$7 }; + + var getBodySetting = function (editor, name, defaultValue) { + var value = editor.getParam(name, defaultValue); + if (value.indexOf('=') !== -1) { + var bodyObj = editor.getParam(name, '', 'hash'); + return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue; + } else { + return value; + } + }; + var getIframeAttrs = function (editor) { + return editor.getParam('iframe_attrs', {}); + }; + var getDocType = function (editor) { + return editor.getParam('doctype', '<!DOCTYPE html>'); + }; + var getDocumentBaseUrl = function (editor) { + return editor.getParam('document_base_url', ''); + }; + var getBodyId = function (editor) { + return getBodySetting(editor, 'body_id', 'tinymce'); + }; + var getBodyClass = function (editor) { + return getBodySetting(editor, 'body_class', ''); + }; + var getContentSecurityPolicy = function (editor) { + return editor.getParam('content_security_policy', ''); + }; + var shouldPutBrInPre = function (editor) { + return editor.getParam('br_in_pre', true); + }; + var getForcedRootBlock = function (editor) { + if (editor.getParam('force_p_newlines', false)) { + return 'p'; + } + var block = editor.getParam('forced_root_block', 'p'); + return block === false ? '' : block; + }; + var getForcedRootBlockAttrs = function (editor) { + return editor.getParam('forced_root_block_attrs', {}); + }; + var getBrNewLineSelector = function (editor) { + return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption'); + }; + var getNoNewLineSelector = function (editor) { + return editor.getParam('no_newline_selector', ''); + }; + var shouldKeepStyles = function (editor) { + return editor.getParam('keep_styles', true); + }; + var shouldEndContainerOnEmtpyBlock = function (editor) { + return editor.getParam('end_container_on_empty_block', false); + }; + var $_ahj8826rje5o2r2f = { + getIframeAttrs: getIframeAttrs, + getDocType: getDocType, + getDocumentBaseUrl: getDocumentBaseUrl, + getBodyId: getBodyId, + getBodyClass: getBodyClass, + getContentSecurityPolicy: getContentSecurityPolicy, + shouldPutBrInPre: shouldPutBrInPre, + getForcedRootBlock: getForcedRootBlock, + getForcedRootBlockAttrs: getForcedRootBlockAttrs, + getBrNewLineSelector: getBrNewLineSelector, + getNoNewLineSelector: getNoNewLineSelector, + shouldKeepStyles: shouldKeepStyles, + shouldEndContainerOnEmtpyBlock: shouldEndContainerOnEmtpyBlock + }; + + var firstNonWhiteSpaceNodeSibling = function (node) { + while (node) { + if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\r\n\s]/.test(node.data)) { + return node; + } + node = node.nextSibling; + } + }; + var moveToCaretPosition = function (editor, root) { + var walker, node, rng, lastNode = root, tempElm; + var dom = editor.dom; + var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements(); + if (!root) { + return; + } + if (/^(LI|DT|DD)$/.test(root.nodeName)) { + var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild); + if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) { + root.insertBefore(dom.doc.createTextNode('\xA0'), root.firstChild); + } + } + rng = dom.createRng(); + root.normalize(); + if (root.hasChildNodes()) { + walker = new TreeWalker(root, root); + while (node = walker.current()) { + if ($_9owqcy1qje5o2q0e.isText(node)) { + rng.setStart(node, 0); + rng.setEnd(node, 0); + break; + } + if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) { + rng.setStartBefore(node); + rng.setEndBefore(node); + break; + } + lastNode = node; + node = walker.next(); + } + if (!node) { + rng.setStart(lastNode, 0); + rng.setEnd(lastNode, 0); + } + } else { + if ($_9owqcy1qje5o2q0e.isBr(root)) { + if (root.nextSibling && dom.isBlock(root.nextSibling)) { + rng.setStartBefore(root); + rng.setEndBefore(root); + } else { + rng.setStartAfter(root); + rng.setEndAfter(root); + } + } else { + rng.setStart(root, 0); + rng.setEnd(root, 0); + } + } + editor.selection.setRng(rng); + dom.remove(tempElm); + editor.selection.scrollIntoView(root); + }; + var getEditableRoot = function (dom, node) { + var root = dom.getRoot(); + var parent, editableRoot; + parent = node; + while (parent !== root && dom.getContentEditable(parent) !== 'false') { + if (dom.getContentEditable(parent) === 'true') { + editableRoot = parent; + } + parent = parent.parentNode; + } + return parent !== root ? editableRoot : root; + }; + var getParentBlock$2 = function (editor) { + return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock)); + }; + var getParentBlockName = function (editor) { + return getParentBlock$2(editor).fold($_enfhkv6je5o2ply.constant(''), function (parentBlock) { + return parentBlock.nodeName.toUpperCase(); + }); + }; + var isListItemParentBlock = function (editor) { + return getParentBlock$2(editor).filter(function (elm) { + return isListItem($_5tcb2dyje5o2pwu.fromDom(elm)); + }).isSome(); + }; + var $_f0yz616tje5o2r2l = { + moveToCaretPosition: moveToCaretPosition, + getEditableRoot: getEditableRoot, + getParentBlock: getParentBlock$2, + getParentBlockName: getParentBlockName, + isListItemParentBlock: isListItemParentBlock + }; + + var hasFirstChild = function (elm, name) { + return elm.firstChild && elm.firstChild.nodeName === name; + }; + var hasParent$1 = function (elm, parentName) { + return elm && elm.parentNode && elm.parentNode.nodeName === parentName; + }; + var isListBlock = function (elm) { + return elm && /^(OL|UL|LI)$/.test(elm.nodeName); + }; + var isNestedList = function (elm) { + return isListBlock(elm) && isListBlock(elm.parentNode); + }; + var getContainerBlock = function (containerBlock) { + var containerBlockParent = containerBlock.parentNode; + if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) { + return containerBlockParent; + } + return containerBlock; + }; + var isFirstOrLastLi = function (containerBlock, parentBlock, first) { + var node = containerBlock[first ? 'firstChild' : 'lastChild']; + while (node) { + if ($_9owqcy1qje5o2q0e.isElement(node)) { + break; + } + node = node[first ? 'nextSibling' : 'previousSibling']; + } + return node === parentBlock; + }; + var insert$1 = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) { + var dom = editor.dom; + var rng = editor.selection.getRng(); + if (containerBlock === editor.getBody()) { + return; + } + if (isNestedList(containerBlock)) { + newBlockName = 'LI'; + } + var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR'); + if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) { + if (hasParent$1(containerBlock, 'LI')) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + } else { + dom.replace(newBlock, containerBlock); + } + } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) { + if (hasParent$1(containerBlock, 'LI')) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + newBlock.appendChild(dom.doc.createTextNode(' ')); + newBlock.appendChild(containerBlock); + } else { + containerBlock.parentNode.insertBefore(newBlock, containerBlock); + } + } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) { + dom.insertAfter(newBlock, getContainerBlock(containerBlock)); + } else { + containerBlock = getContainerBlock(containerBlock); + var tmpRng = rng.cloneRange(); + tmpRng.setStartAfter(parentBlock); + tmpRng.setEndAfter(containerBlock); + var fragment = tmpRng.extractContents(); + if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) { + newBlock = fragment.firstChild; + dom.insertAfter(fragment, containerBlock); + } else { + dom.insertAfter(fragment, containerBlock); + dom.insertAfter(newBlock, containerBlock); + } + } + dom.remove(parentBlock); + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + }; + var $_52slpd6sje5o2r2i = { insert: insert$1 }; + + var isEmptyAnchor = function (elm) { + return elm && elm.nodeName === 'A' && $_a5gegtjje5o2pum.trim($_4md31c21je5o2q5f.trim(elm.innerText || elm.textContent)).length === 0; + }; + var isTableCell$5 = function (node) { + return node && /^(TD|TH|CAPTION)$/.test(node.nodeName); + }; + var emptyBlock = function (elm) { + elm.innerHTML = '<br data-mce-bogus="1">'; + }; + var containerAndSiblingName = function (container, nodeName) { + return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName; + }; + var canSplitBlock = function (dom, node) { + return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true'; + }; + var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) { + var node = block; + var firstChilds = []; + var i; + if (!node) { + return; + } + while (node = node.firstChild) { + if (dom.isBlock(node)) { + return; + } + if ($_9owqcy1qje5o2q0e.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) { + firstChilds.push(node); + } + } + i = firstChilds.length; + while (i--) { + node = firstChilds[i]; + if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') { + dom.remove(node); + } else { + if (isEmptyAnchor(node)) { + dom.remove(node); + } + } + } + }; + var normalizeZwspOffset = function (start, container, offset) { + if ($_9owqcy1qje5o2q0e.isText(container) === false) { + return offset; + } else if (start) { + return offset === 1 && container.data.charAt(offset - 1) === $_4md31c21je5o2q5f.ZWSP ? 0 : offset; + } else { + return offset === container.data.length - 1 && container.data.charAt(offset) === $_4md31c21je5o2q5f.ZWSP ? container.data.length : offset; + } + }; + var includeZwspInRange = function (rng) { + var newRng = rng.cloneRange(); + newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset)); + newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset)); + return newRng; + }; + var trimLeadingLineBreaks = function (node) { + do { + if ($_9owqcy1qje5o2q0e.isText(node)) { + node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, ''); + } + node = node.firstChild; + } while (node); + }; + var getEditableRoot$1 = function (dom, node) { + var root = dom.getRoot(); + var parent, editableRoot; + parent = node; + while (parent !== root && dom.getContentEditable(parent) !== 'false') { + if (dom.getContentEditable(parent) === 'true') { + editableRoot = parent; + } + parent = parent.parentNode; + } + return parent !== root ? editableRoot : root; + }; + var setForcedBlockAttrs = function (editor, node) { + var forcedRootBlockName = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) { + editor.dom.setAttribs(node, $_ahj8826rje5o2r2f.getForcedRootBlockAttrs(editor)); + } + }; + var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) { + var newBlock, parentBlock, startNode, node, next, rootBlockName; + var blockName = newBlockName || 'P'; + var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container); + parentBlock = dom.getParent(container, dom.isBlock); + if (!parentBlock || !canSplitBlock(dom, parentBlock)) { + parentBlock = parentBlock || editableRoot; + if (parentBlock === editor.getBody() || isTableCell$5(parentBlock)) { + rootBlockName = parentBlock.nodeName.toLowerCase(); + } else { + rootBlockName = parentBlock.parentNode.nodeName.toLowerCase(); + } + if (!parentBlock.hasChildNodes()) { + newBlock = dom.create(blockName); + setForcedBlockAttrs(editor, newBlock); + parentBlock.appendChild(newBlock); + rng.setStart(newBlock, 0); + rng.setEnd(newBlock, 0); + return newBlock; + } + node = container; + while (node.parentNode !== parentBlock) { + node = node.parentNode; + } + while (node && !dom.isBlock(node)) { + startNode = node; + node = node.previousSibling; + } + if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) { + newBlock = dom.create(blockName); + setForcedBlockAttrs(editor, newBlock); + startNode.parentNode.insertBefore(newBlock, startNode); + node = startNode; + while (node && !dom.isBlock(node)) { + next = node.nextSibling; + newBlock.appendChild(node); + node = next; + } + rng.setStart(container, offset); + rng.setEnd(container, offset); + } + } + return container; + }; + var addBrToBlockIfNeeded = function (dom, block) { + var lastChild; + block.normalize(); + lastChild = block.lastChild; + if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) { + dom.add(block, 'br'); + } + }; + var insert$2 = function (editor, evt) { + var tmpRng, editableRoot, container, offset, parentBlock, shiftKey; + var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer; + var dom = editor.dom; + var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements(); + var rng = editor.selection.getRng(); + var createNewBlock = function (name) { + var node = container, block, clonedNode, caretNode; + var textInlineElements = schema.getTextInlineElements(); + if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') { + block = dom.create(name || newBlockName); + setForcedBlockAttrs(editor, block); + } else { + block = parentBlock.cloneNode(false); + } + caretNode = block; + if ($_ahj8826rje5o2r2f.shouldKeepStyles(editor) === false) { + dom.setAttrib(block, 'style', null); + dom.setAttrib(block, 'class', null); + } else { + do { + if (textInlineElements[node.nodeName]) { + if ($_4066yu3jje5o2qev.isCaretNode(node)) { + continue; + } + clonedNode = node.cloneNode(false); + dom.setAttrib(clonedNode, 'id', ''); + if (block.hasChildNodes()) { + clonedNode.appendChild(block.firstChild); + block.appendChild(clonedNode); + } else { + caretNode = clonedNode; + block.appendChild(clonedNode); + } + } + } while ((node = node.parentNode) && node !== editableRoot); + } + emptyBlock(caretNode); + return block; + }; + var isCaretAtStartOrEndOfBlock = function (start) { + var walker, node, name, normalizedOffset; + normalizedOffset = normalizeZwspOffset(start, container, offset); + if ($_9owqcy1qje5o2q0e.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) { + return false; + } + if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) { + return true; + } + if (start && $_9owqcy1qje5o2q0e.isElement(container) && container === parentBlock.firstChild) { + return true; + } + if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) { + return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start; + } + walker = new TreeWalker(container, parentBlock); + if ($_9owqcy1qje5o2q0e.isText(container)) { + if (start && normalizedOffset === 0) { + walker.prev(); + } else if (!start && normalizedOffset === container.nodeValue.length) { + walker.next(); + } + } + while (node = walker.current()) { + if ($_9owqcy1qje5o2q0e.isElement(node)) { + if (!node.getAttribute('data-mce-bogus')) { + name = node.nodeName.toLowerCase(); + if (nonEmptyElementsMap[name] && name !== 'br') { + return false; + } + } + } else if ($_9owqcy1qje5o2q0e.isText(node) && !/^[ \t\r\n]*$/.test(node.nodeValue)) { + return false; + } + if (start) { + walker.prev(); + } else { + walker.next(); + } + } + return true; + }; + var insertNewBlockAfter = function () { + if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') { + newBlock = createNewBlock(newBlockName); + } else { + newBlock = createNewBlock(); + } + if ($_ahj8826rje5o2r2f.shouldEndContainerOnEmtpyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) { + newBlock = dom.split(containerBlock, parentBlock); + } else { + dom.insertAfter(newBlock, parentBlock); + } + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + }; + $_1t8l6x3xje5o2qlk.normalize(dom, rng).each(function (normRng) { + rng.setStart(normRng.startContainer, normRng.startOffset); + rng.setEnd(normRng.endContainer, normRng.endOffset); + }); + container = rng.startContainer; + offset = rng.startOffset; + newBlockName = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + shiftKey = evt.shiftKey; + if ($_9owqcy1qje5o2q0e.isElement(container) && container.hasChildNodes()) { + isAfterLastNodeInContainer = offset > container.childNodes.length - 1; + container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container; + if (isAfterLastNodeInContainer && $_9owqcy1qje5o2q0e.isText(container)) { + offset = container.nodeValue.length; + } else { + offset = 0; + } + } + editableRoot = getEditableRoot$1(dom, container); + if (!editableRoot) { + return; + } + if (newBlockName && !shiftKey || !newBlockName && shiftKey) { + container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset); + } + parentBlock = dom.getParent(container, dom.isBlock); + containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null; + parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; + containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; + if (containerBlockName === 'LI' && !evt.ctrlKey) { + parentBlock = containerBlock; + containerBlock = containerBlock.parentNode; + parentBlockName = containerBlockName; + } + if (/^(LI|DT|DD)$/.test(parentBlockName)) { + if (dom.isEmpty(parentBlock)) { + $_52slpd6sje5o2r2i.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName); + return; + } + } + if (newBlockName && parentBlock === editor.getBody()) { + return; + } + newBlockName = newBlockName || 'P'; + if (isCaretContainerBlock(parentBlock)) { + newBlock = showCaretContainerBlock(parentBlock); + if (dom.isEmpty(parentBlock)) { + emptyBlock(parentBlock); + } + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + } else if (isCaretAtStartOrEndOfBlock()) { + insertNewBlockAfter(); + } else if (isCaretAtStartOrEndOfBlock(true)) { + newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock); + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock); + } else { + tmpRng = includeZwspInRange(rng).cloneRange(); + tmpRng.setEndAfter(parentBlock); + fragment = tmpRng.extractContents(); + trimLeadingLineBreaks(fragment); + newBlock = fragment.firstChild; + dom.insertAfter(fragment, parentBlock); + trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock); + addBrToBlockIfNeeded(dom, parentBlock); + if (dom.isEmpty(parentBlock)) { + emptyBlock(parentBlock); + } + newBlock.normalize(); + if (dom.isEmpty(newBlock)) { + dom.remove(newBlock); + insertNewBlockAfter(); + } else { + $_f0yz616tje5o2r2l.moveToCaretPosition(editor, newBlock); + } + } + dom.setAttrib(newBlock, 'id', ''); + editor.fire('NewBlock', { newBlock: newBlock }); + }; + var $_54gcs16qje5o2r1x = { insert: insert$2 }; + + var matchesSelector = function (editor, selector) { + return $_f0yz616tje5o2r2l.getParentBlock(editor).filter(function (parentBlock) { + return selector.length > 0 && $_87zu5k1fje5o2pz9.is($_5tcb2dyje5o2pwu.fromDom(parentBlock), selector); + }).isSome(); + }; + var shouldInsertBr = function (editor) { + return matchesSelector(editor, $_ahj8826rje5o2r2f.getBrNewLineSelector(editor)); + }; + var shouldBlockNewLine = function (editor) { + return matchesSelector(editor, $_ahj8826rje5o2r2f.getNoNewLineSelector(editor)); + }; + var $_23pm1k6vje5o2r2w = { + shouldInsertBr: shouldInsertBr, + shouldBlockNewLine: shouldBlockNewLine + }; + + var newLineAction = $_e73lvt3dje5o2qdq.generate([ + { br: [] }, + { block: [] }, + { none: [] } + ]); + var shouldBlockNewLine$1 = function (editor, shiftKey) { + return $_23pm1k6vje5o2r2w.shouldBlockNewLine(editor); + }; + var isBrMode = function (requiredState) { + return function (editor, shiftKey) { + var brMode = $_ahj8826rje5o2r2f.getForcedRootBlock(editor) === ''; + return brMode === requiredState; + }; + }; + var inListBlock = function (requiredState) { + return function (editor, shiftKey) { + return $_f0yz616tje5o2r2l.isListItemParentBlock(editor) === requiredState; + }; + }; + var inPreBlock = function (requiredState) { + return function (editor, shiftKey) { + var inPre = $_f0yz616tje5o2r2l.getParentBlockName(editor) === 'PRE'; + return inPre === requiredState; + }; + }; + var shouldPutBrInPre$1 = function (requiredState) { + return function (editor, shiftKey) { + return $_ahj8826rje5o2r2f.shouldPutBrInPre(editor) === requiredState; + }; + }; + var inBrContext = function (editor, shiftKey) { + return $_23pm1k6vje5o2r2w.shouldInsertBr(editor); + }; + var hasShiftKey = function (editor, shiftKey) { + return shiftKey; + }; + var canInsertIntoEditableRoot = function (editor) { + var forcedRootBlock = $_ahj8826rje5o2r2f.getForcedRootBlock(editor); + var rootEditable = $_f0yz616tje5o2r2l.getEditableRoot(editor.dom, editor.selection.getStart()); + return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P'); + }; + var match$2 = function (predicates, action) { + return function (editor, shiftKey) { + var isMatch = $_bwcteb4je5o2pl4.foldl(predicates, function (res, p) { + return res && p(editor, shiftKey); + }, true); + return isMatch ? Option.some(action) : Option.none(); + }; + }; + var getAction$1 = function (editor, evt) { + return $_cq1fkk3oje5o2qg9.evaluateUntil([ + match$2([shouldBlockNewLine$1], newLineAction.none()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(false), + hasShiftKey + ], newLineAction.br()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(false) + ], newLineAction.block()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(true), + hasShiftKey + ], newLineAction.block()), + match$2([ + inPreBlock(true), + shouldPutBrInPre$1(true) + ], newLineAction.br()), + match$2([ + inListBlock(true), + hasShiftKey + ], newLineAction.br()), + match$2([inListBlock(true)], newLineAction.block()), + match$2([ + isBrMode(true), + hasShiftKey, + canInsertIntoEditableRoot + ], newLineAction.block()), + match$2([isBrMode(true)], newLineAction.br()), + match$2([inBrContext], newLineAction.br()), + match$2([ + isBrMode(false), + hasShiftKey + ], newLineAction.br()), + match$2([canInsertIntoEditableRoot], newLineAction.block()) + ], [ + editor, + evt.shiftKey + ]).getOr(newLineAction.none()); + }; + var $_3fpic86uje5o2r2r = { getAction: getAction$1 }; + + var insert$3 = function (editor, evt) { + $_3fpic86uje5o2r2r.getAction(editor, evt).fold(function () { + $_1esduy3wje5o2qhl.insert(editor, evt); + }, function () { + $_54gcs16qje5o2r1x.insert(editor, evt); + }, $_enfhkv6je5o2ply.noop); + }; + var $_ccur376pje5o2r1r = { insert: insert$3 }; + + var endTypingLevel = function (undoManager) { + if (undoManager.typing) { + undoManager.typing = false; + undoManager.add(); + } + }; + var handleEnterKeyEvent = function (editor, event) { + if (event.isDefaultPrevented()) { + return; + } + event.preventDefault(); + endTypingLevel(editor.undoManager); + editor.undoManager.transact(function () { + if (editor.selection.isCollapsed() === false) { + editor.execCommand('Delete'); + } + $_ccur376pje5o2r1r.insert(editor, event); + }); + }; + var setup$8 = function (editor) { + editor.on('keydown', function (event) { + if (event.keyCode === $_99mhlk59je5o2qss.ENTER) { + handleEnterKeyEvent(editor, event); + } + }); + }; + var $_8j6q9k6oje5o2r1q = { setup: setup$8 }; + + var isValidInsertPoint = function (location, caretPosition) { + return isAtStartOrEnd(location) && $_9owqcy1qje5o2q0e.isText(caretPosition.container()); + }; + var insertNbspAtPosition = function (editor, caretPosition) { + var container = caretPosition.container(); + var offset = caretPosition.offset(); + container.insertData(offset, '\xA0'); + editor.selection.setCursorLocation(container, offset + 1); + }; + var insertAtLocation = function (editor, caretPosition, location) { + if (isValidInsertPoint(location, caretPosition)) { + insertNbspAtPosition(editor, caretPosition); + return true; + } else { + return false; + } + }; + var insertAtCaret$2 = function (editor) { + var isInlineTarget = $_enfhkv6je5o2ply.curry($_6skw9732je5o2qbp.isInlineTarget, editor); + var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng()); + var boundaryLocation = $_62vpc23ije5o2qem.readLocation(isInlineTarget, editor.getBody(), caretPosition); + return boundaryLocation.map($_enfhkv6je5o2ply.curry(insertAtLocation, editor, caretPosition)).getOr(false); + }; + var isAtStartOrEnd = function (location) { + return location.fold($_enfhkv6je5o2ply.constant(false), $_enfhkv6je5o2ply.constant(true), $_enfhkv6je5o2ply.constant(true), $_enfhkv6je5o2ply.constant(false)); + }; + var insertAtSelection = function (editor) { + return editor.selection.isCollapsed() ? insertAtCaret$2(editor) : false; + }; + var $_aorlpm6xje5o2r30 = { insertAtSelection: insertAtSelection }; + + var executeKeydownOverride$2 = function (editor, evt) { + $_fc81iw6lje5o2r1d.execute([{ + keyCode: $_99mhlk59je5o2qss.SPACEBAR, + action: $_fc81iw6lje5o2r1d.action($_aorlpm6xje5o2r30.insertAtSelection, editor) + }], evt).each(function (_) { + evt.preventDefault(); + }); + }; + var setup$9 = function (editor) { + editor.on('keydown', function (evt) { + if (evt.isDefaultPrevented() === false) { + executeKeydownOverride$2(editor, evt); + } + }); + }; + var $_6pyahj6wje5o2r2z = { setup: setup$9 }; + + var setup$10 = function (editor) { + var caret = $_2dnted3pje5o2qgc.setupSelectedState(editor); + $_a5oax76jje5o2r0t.setup(editor, caret); + $_6wiawx6mje5o2r1h.setup(editor, caret); + $_8j6q9k6oje5o2r1q.setup(editor); + $_6pyahj6wje5o2r2z.setup(editor); + }; + var $_b7lkfw6ije5o2r0s = { setup: setup$10 }; + + function Quirks (editor) { + var each = $_a5gegtjje5o2pum.each; + var BACKSPACE = $_99mhlk59je5o2qss.BACKSPACE, DELETE = $_99mhlk59je5o2qss.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser; + var isGecko = $_9bd8pn9je5o2pp2.gecko, isIE = $_9bd8pn9je5o2pp2.ie, isWebKit = $_9bd8pn9je5o2pp2.webkit; + var mceInternalUrlPrefix = 'data:text/mce-internal,'; + var mceInternalDataType = isIE ? 'Text' : 'URL'; + var setEditorCommandState = function (cmd, state) { + try { + editor.getDoc().execCommand(cmd, false, state); + } catch (ex) { + } + }; + var isDefaultPrevented = function (e) { + return e.isDefaultPrevented(); + }; + var setMceInternalContent = function (e) { + var selectionHtml, internalContent; + if (e.dataTransfer) { + if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') { + selection.select(e.target); + } + selectionHtml = editor.selection.getContent(); + if (selectionHtml.length > 0) { + internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml); + e.dataTransfer.setData(mceInternalDataType, internalContent); + } + } + }; + var getMceInternalContent = function (e) { + var internalContent; + if (e.dataTransfer) { + internalContent = e.dataTransfer.getData(mceInternalDataType); + if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) { + internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(','); + return { + id: unescape(internalContent[0]), + html: unescape(internalContent[1]) + }; + } + } + return null; + }; + var insertClipboardContents = function (content, internal) { + if (editor.queryCommandSupported('mceInsertClipboardContent')) { + editor.execCommand('mceInsertClipboardContent', false, { + content: content, + internal: internal + }); + } else { + editor.execCommand('mceInsertContent', false, content); + } + }; + var emptyEditorWhenDeleting = function () { + var serializeRng = function (rng) { + var body = dom.create('body'); + var contents = rng.cloneContents(); + body.appendChild(contents); + return selection.serializer.serialize(body, { format: 'html' }); + }; + var allContentsSelected = function (rng) { + var selection = serializeRng(rng); + var allRng = dom.createRng(); + allRng.selectNode(editor.getBody()); + var allSelection = serializeRng(allRng); + return selection === allSelection; + }; + editor.on('keydown', function (e) { + var keyCode = e.keyCode; + var isCollapsed, body; + if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) { + isCollapsed = editor.selection.isCollapsed(); + body = editor.getBody(); + if (isCollapsed && !dom.isEmpty(body)) { + return; + } + if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) { + return; + } + e.preventDefault(); + editor.setContent(''); + if (body.firstChild && dom.isBlock(body.firstChild)) { + editor.selection.setCursorLocation(body.firstChild, 0); + } else { + editor.selection.setCursorLocation(body, 0); + } + editor.nodeChanged(); + } + }); + }; + var selectAll = function () { + editor.shortcuts.add('meta+a', null, 'SelectAll'); + }; + var inputMethodFocus = function () { + if (!editor.settings.content_editable) { + dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) { + var rng; + if (e.target === editor.getDoc().documentElement) { + rng = selection.getRng(); + editor.getBody().focus(); + if (e.type === 'mousedown') { + if (isCaretContainer(rng.startContainer)) { + return; + } + selection.placeCaretAt(e.clientX, e.clientY); + } else { + selection.setRng(rng); + } + } + }); + } + }; + var removeHrOnBackspace = function () { + editor.on('keydown', function (e) { + if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { + if (!editor.getBody().getElementsByTagName('hr').length) { + return; + } + if (selection.isCollapsed() && selection.getRng().startOffset === 0) { + var node = selection.getNode(); + var previousSibling = node.previousSibling; + if (node.nodeName === 'HR') { + dom.remove(node); + e.preventDefault(); + return; + } + if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') { + dom.remove(previousSibling); + e.preventDefault(); + } + } + } + }); + }; + var focusBody = function () { + if (!Range.prototype.getClientRects) { + editor.on('mousedown', function (e) { + if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') { + var body_1 = editor.getBody(); + body_1.blur(); + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + body_1.focus(); + }); + } + }); + } + }; + var selectControlElements = function () { + editor.on('click', function (e) { + var target = e.target; + if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') { + e.preventDefault(); + editor.selection.select(target); + editor.nodeChanged(); + } + if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) { + e.preventDefault(); + selection.select(target); + } + }); + }; + var removeStylesWhenDeletingAcrossBlockElements = function () { + var getAttributeApplyFunction = function () { + var template = dom.getAttribs(selection.getStart().cloneNode(false)); + return function () { + var target = selection.getStart(); + if (target !== editor.getBody()) { + dom.setAttrib(target, 'style', null); + each(template, function (attr) { + target.setAttributeNode(attr.cloneNode(true)); + }); + } + }; + }; + var isSelectionAcrossElements = function () { + return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock); + }; + editor.on('keypress', function (e) { + var applyAttributes; + if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) { + applyAttributes = getAttributeApplyFunction(); + editor.getDoc().execCommand('delete', false, null); + applyAttributes(); + e.preventDefault(); + return false; + } + }); + dom.bind(editor.getDoc(), 'cut', function (e) { + var applyAttributes; + if (!isDefaultPrevented(e) && isSelectionAcrossElements()) { + applyAttributes = getAttributeApplyFunction(); + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + applyAttributes(); + }); + } + }); + }; + var disableBackspaceIntoATable = function () { + editor.on('keydown', function (e) { + if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) { + if (selection.isCollapsed() && selection.getRng().startOffset === 0) { + var previousSibling = selection.getNode().previousSibling; + if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') { + e.preventDefault(); + return false; + } + } + } + }); + }; + var removeBlockQuoteOnBackSpace = function () { + editor.on('keydown', function (e) { + var rng, container, offset, root, parent; + if (isDefaultPrevented(e) || e.keyCode !== $_99mhlk59je5o2qss.BACKSPACE) { + return; + } + rng = selection.getRng(); + container = rng.startContainer; + offset = rng.startOffset; + root = dom.getRoot(); + parent = container; + if (!rng.collapsed || offset !== 0) { + return; + } + while (parent && parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) { + parent = parent.parentNode; + } + if (parent.tagName === 'BLOCKQUOTE') { + editor.formatter.toggle('blockquote', null, parent); + rng = dom.createRng(); + rng.setStart(container, 0); + rng.setEnd(container, 0); + selection.setRng(rng); + } + }); + }; + var setGeckoEditingOptions = function () { + var setOpts = function () { + setEditorCommandState('StyleWithCSS', false); + setEditorCommandState('enableInlineTableEditing', false); + if (!settings.object_resizing) { + setEditorCommandState('enableObjectResizing', false); + } + }; + if (!settings.readonly) { + editor.on('BeforeExecCommand MouseDown', setOpts); + } + }; + var addBrAfterLastLinks = function () { + var fixLinks = function () { + each(dom.select('a'), function (node) { + var parentNode = node.parentNode; + var root = dom.getRoot(); + if (parentNode.lastChild === node) { + while (parentNode && !dom.isBlock(parentNode)) { + if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) { + return; + } + parentNode = parentNode.parentNode; + } + dom.add(parentNode, 'br', { 'data-mce-bogus': 1 }); + } + }); + }; + editor.on('SetContent ExecCommand', function (e) { + if (e.type === 'setcontent' || e.command === 'mceInsertLink') { + fixLinks(); + } + }); + }; + var setDefaultBlockType = function () { + if (settings.forced_root_block) { + editor.on('init', function () { + setEditorCommandState('DefaultParagraphSeparator', settings.forced_root_block); + }); + } + }; + var normalizeSelection = function () { + editor.on('keyup focusin mouseup', function (e) { + if (!$_99mhlk59je5o2qss.modifierPressed(e)) { + selection.normalize(); + } + }, true); + }; + var showBrokenImageIcon = function () { + editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}'); + }; + var restoreFocusOnKeyDown = function () { + if (!editor.inline) { + editor.on('keydown', function () { + if (document.activeElement === document.body) { + editor.getWin().focus(); + } + }); + } + }; + var bodyHeight = function () { + if (!editor.inline) { + editor.contentStyles.push('body {min-height: 150px}'); + editor.on('click', function (e) { + var rng; + if (e.target.nodeName === 'HTML') { + if ($_9bd8pn9je5o2pp2.ie > 11) { + editor.getBody().focus(); + return; + } + rng = editor.selection.getRng(); + editor.getBody().focus(); + editor.selection.setRng(rng); + editor.selection.normalize(); + editor.nodeChanged(); + } + }); + } + }; + var blockCmdArrowNavigation = function () { + if ($_9bd8pn9je5o2pp2.mac) { + editor.on('keydown', function (e) { + if ($_99mhlk59je5o2qss.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) { + e.preventDefault(); + editor.selection.getSel().modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary'); + } + }); + } + }; + var disableAutoUrlDetect = function () { + setEditorCommandState('AutoUrlDetect', false); + }; + var tapLinksAndImages = function () { + editor.on('click', function (e) { + var elm = e.target; + do { + if (elm.tagName === 'A') { + e.preventDefault(); + return; + } + } while (elm = elm.parentNode); + }); + editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}'); + }; + var blockFormSubmitInsideEditor = function () { + editor.on('init', function () { + editor.dom.bind(editor.getBody(), 'submit', function (e) { + e.preventDefault(); + }); + }); + }; + var removeAppleInterchangeBrs = function () { + parser.addNodeFilter('br', function (nodes) { + var i = nodes.length; + while (i--) { + if (nodes[i].attr('class') === 'Apple-interchange-newline') { + nodes[i].remove(); + } + } + }); + }; + var ieInternalDragAndDrop = function () { + editor.on('dragstart', function (e) { + setMceInternalContent(e); + }); + editor.on('drop', function (e) { + if (!isDefaultPrevented(e)) { + var internalContent = getMceInternalContent(e); + if (internalContent && internalContent.id !== editor.id) { + e.preventDefault(); + var rng = $_drs2u868je5o2qyu.fromPoint(e.x, e.y, editor.getDoc()); + selection.setRng(rng); + insertClipboardContents(internalContent.html, true); + } + } + }); + }; + var refreshContentEditable = function () { + }; + var isHidden = function () { + var sel; + if (!isGecko || editor.removed) { + return 0; + } + sel = editor.selection.getSel(); + return !sel || !sel.rangeCount || sel.rangeCount === 0; + }; + removeBlockQuoteOnBackSpace(); + emptyEditorWhenDeleting(); + if (!$_9bd8pn9je5o2pp2.windowsPhone) { + normalizeSelection(); + } + if (isWebKit) { + inputMethodFocus(); + selectControlElements(); + setDefaultBlockType(); + blockFormSubmitInsideEditor(); + disableBackspaceIntoATable(); + removeAppleInterchangeBrs(); + if ($_9bd8pn9je5o2pp2.iOS) { + restoreFocusOnKeyDown(); + bodyHeight(); + tapLinksAndImages(); + } else { + selectAll(); + } + } + if ($_9bd8pn9je5o2pp2.ie >= 11) { + bodyHeight(); + disableBackspaceIntoATable(); + } + if ($_9bd8pn9je5o2pp2.ie) { + selectAll(); + disableAutoUrlDetect(); + ieInternalDragAndDrop(); + } + if (isGecko) { + removeHrOnBackspace(); + focusBody(); + removeStylesWhenDeletingAcrossBlockElements(); + setGeckoEditingOptions(); + addBrAfterLastLinks(); + showBrokenImageIcon(); + blockCmdArrowNavigation(); + disableBackspaceIntoATable(); + } + return { + refreshContentEditable: refreshContentEditable, + isHidden: isHidden + }; + } + + var DOM$2 = DOMUtils.DOM; + var appendStyle = function (editor, text) { + var head = $_5tcb2dyje5o2pwu.fromDom(editor.getDoc().head); + var tag = $_5tcb2dyje5o2pwu.fromTag('style'); + $_3uo9pl14je5o2pxq.set(tag, 'type', 'text/css'); + $_elbl2s2oje5o2q9z.append(tag, $_5tcb2dyje5o2pwu.fromText(text)); + $_elbl2s2oje5o2q9z.append(head, tag); + }; + var createParser = function (editor) { + var parser = DomParser(editor.settings, editor.schema); + parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name) { + var i = nodes.length, node; + var dom = editor.dom; + var value, internalName; + while (i--) { + node = nodes[i]; + value = node.attr(name); + internalName = 'data-mce-' + name; + if (!node.attributes.map[internalName]) { + if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) { + continue; + } + if (name === 'style') { + value = dom.serializeStyle(dom.parseStyle(value), node.name); + if (!value.length) { + value = null; + } + node.attr(internalName, value); + node.attr(name, value); + } else if (name === 'tabindex') { + node.attr(internalName, value); + node.attr(name, null); + } else { + node.attr(internalName, editor.convertURL(value, name, node.name)); + } + } + } + }); + parser.addNodeFilter('script', function (nodes) { + var i = nodes.length, node, type; + while (i--) { + node = nodes[i]; + type = node.attr('type') || 'no/type'; + if (type.indexOf('mce-') !== 0) { + node.attr('type', 'mce-' + type); + } + } + }); + parser.addNodeFilter('#cdata', function (nodes) { + var i = nodes.length, node; + while (i--) { + node = nodes[i]; + node.type = 8; + node.name = '#comment'; + node.value = '[CDATA[' + node.value + ']]'; + } + }); + parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) { + var i = nodes.length, node; + var nonEmptyElements = editor.schema.getNonEmptyElements(); + while (i--) { + node = nodes[i]; + if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) { + node.append(new Node$2('br', 1)).shortEnded = true; + } + } + }); + return parser; + }; + var autoFocus = function (editor) { + if (editor.settings.auto_focus) { + $_db41wogje5o2ps3.setEditorTimeout(editor, function () { + var focusEditor; + if (editor.settings.auto_focus === true) { + focusEditor = editor; + } else { + focusEditor = editor.editorManager.get(editor.settings.auto_focus); + } + if (!focusEditor.destroyed) { + focusEditor.focus(); + } + }, 100); + } + }; + var initEditor = function (editor) { + editor.bindPendingEventDelegates(); + editor.initialized = true; + editor.fire('init'); + editor.focus(true); + editor.nodeChanged({ initial: true }); + editor.execCallback('init_instance_callback', editor); + autoFocus(editor); + }; + var getStyleSheetLoader = function (editor) { + return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader; + }; + var initContentBody = function (editor, skipWrite) { + var settings = editor.settings; + var targetElm = editor.getElement(); + var doc = editor.getDoc(), body, contentCssText; + if (!settings.inline) { + editor.getElement().style.visibility = editor.orgVisibility; + } + if (!skipWrite && !settings.content_editable) { + doc.open(); + doc.write(editor.iframeHTML); + doc.close(); + } + if (settings.content_editable) { + editor.on('remove', function () { + var bodyEl = this.getBody(); + DOM$2.removeClass(bodyEl, 'mce-content-body'); + DOM$2.removeClass(bodyEl, 'mce-edit-focus'); + DOM$2.setAttrib(bodyEl, 'contentEditable', null); + }); + DOM$2.addClass(targetElm, 'mce-content-body'); + editor.contentDocument = doc = settings.content_document || document; + editor.contentWindow = settings.content_window || window; + editor.bodyElement = targetElm; + settings.content_document = settings.content_window = null; + settings.root_name = targetElm.nodeName.toLowerCase(); + } + body = editor.getBody(); + body.disabled = true; + editor.readonly = settings.readonly; + if (!editor.readonly) { + if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') { + body.style.position = 'relative'; + } + body.contentEditable = editor.getParam('content_editable_state', true); + } + body.disabled = false; + editor.editorUpload = EditorUpload(editor); + editor.schema = Schema(settings); + editor.dom = new DOMUtils(doc, { + keep_values: true, + url_converter: editor.convertURL, + url_converter_scope: editor, + hex_colors: settings.force_hex_style_colors, + class_filter: settings.class_filter, + update_styles: true, + root_element: editor.inline ? editor.getBody() : null, + collect: settings.content_editable, + schema: editor.schema, + onSetAttrib: function (e) { + editor.fire('SetAttrib', e); + } + }); + editor.parser = createParser(editor); + editor.serializer = DomSerializer$1(settings, editor); + editor.selection = Selection$1(editor.dom, editor.getWin(), editor.serializer, editor); + editor.formatter = Formatter(editor); + editor.undoManager = UndoManager(editor); + editor._nodeChangeDispatcher = new NodeChange(editor); + editor._selectionOverrides = SelectionOverrides(editor); + $_acfnaa63je5o2qxq.setup(editor); + $_b7lkfw6ije5o2r0s.setup(editor); + $_fekqo94yje5o2qqs.setup(editor); + editor.fire('PreInit'); + if (!settings.browser_spellcheck && !settings.gecko_spellcheck) { + doc.body.spellcheck = false; + DOM$2.setAttrib(body, 'spellcheck', 'false'); + } + editor.quirks = Quirks(editor); + editor.fire('PostRender'); + if (settings.directionality) { + body.dir = settings.directionality; + } + if (settings.nowrap) { + body.style.whiteSpace = 'nowrap'; + } + if (settings.protect) { + editor.on('BeforeSetContent', function (e) { + $_a5gegtjje5o2pum.each(settings.protect, function (pattern) { + e.content = e.content.replace(pattern, function (str) { + return '<!--mce:protected ' + escape(str) + '-->'; + }); + }); + }); + } + editor.on('SetContent', function () { + editor.addVisual(editor.getBody()); + }); + if (settings.padd_empty_editor) { + editor.on('PostProcess', function (e) { + e.content = e.content.replace(/^(<p[^>]*>( | |\s|\u00a0|<br \/>|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/, ''); + }); + } + editor.load({ + initial: true, + format: 'html' + }); + editor.startContent = editor.getContent({ format: 'raw' }); + editor.on('compositionstart compositionend', function (e) { + editor.composing = e.type === 'compositionstart'; + }); + if (editor.contentStyles.length > 0) { + contentCssText = ''; + $_a5gegtjje5o2pum.each(editor.contentStyles, function (style) { + contentCssText += style + '\r\n'; + }); + editor.dom.addStyle(contentCssText); + } + getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) { + initEditor(editor); + }, function (urls) { + initEditor(editor); + }); + if (settings.content_style) { + appendStyle(editor, settings.content_style); + } + }; + var $_aixfus4lje5o2qp4 = { initContentBody: initContentBody }; + + var DOM$3 = DOMUtils.DOM; + var relaxDomain = function (editor, ifr) { + if (document.domain !== window.location.hostname && $_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 12) { + var bodyUuid = $_2bgddd4wje5o2qqo.uuid('mce'); + editor[bodyUuid] = function () { + $_aixfus4lje5o2qp4.initContentBody(editor); + }; + var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()'; + DOM$3.setAttrib(ifr, 'src', domainRelaxUrl); + return true; + } + return false; + }; + var normalizeHeight = function (height) { + var normalizedHeight = typeof height === 'number' ? height + 'px' : height; + return normalizedHeight ? normalizedHeight : ''; + }; + var createIframeElement = function (id, title, height, customAttrs) { + var iframe = $_5tcb2dyje5o2pwu.fromTag('iframe'); + $_3uo9pl14je5o2pxq.setAll(iframe, customAttrs); + $_3uo9pl14je5o2pxq.setAll(iframe, { + id: id + '_ifr', + frameBorder: '0', + allowTransparency: 'true', + title: title + }); + $_1ioope11je5o2px4.setAll(iframe, { + width: '100%', + height: normalizeHeight(height), + display: 'block' + }); + return iframe; + }; + var getIframeHtml = function (editor) { + var bodyId, bodyClass, iframeHTML; + iframeHTML = $_ahj8826rje5o2r2f.getDocType(editor) + '<html><head>'; + if ($_ahj8826rje5o2r2f.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) { + iframeHTML += '<base href="' + editor.documentBaseURI.getURI() + '" />'; + } + iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'; + bodyId = $_ahj8826rje5o2r2f.getBodyId(editor); + bodyClass = $_ahj8826rje5o2r2f.getBodyClass(editor); + if ($_ahj8826rje5o2r2f.getContentSecurityPolicy(editor)) { + iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + $_ahj8826rje5o2r2f.getContentSecurityPolicy(editor) + '" />'; + } + iframeHTML += '</head><body id="' + bodyId + '" class="mce-content-body ' + bodyClass + '" data-id="' + editor.id + '"><br></body></html>'; + return iframeHTML; + }; + var createIframe = function (editor, o) { + var title = editor.editorManager.translate('Rich Text Area. Press ALT-F9 for menu. ' + 'Press ALT-F10 for toolbar. Press ALT-0 for help'); + var ifr = createIframeElement(editor.id, title, o.height, $_ahj8826rje5o2r2f.getIframeAttrs(editor)).dom(); + ifr.onload = function () { + ifr.onload = null; + editor.fire('load'); + }; + var isDomainRelaxed = relaxDomain(editor, ifr); + editor.contentAreaContainer = o.iframeContainer; + editor.iframeElement = ifr; + editor.iframeHTML = getIframeHtml(editor); + DOM$3.add(o.iframeContainer, ifr); + return isDomainRelaxed; + }; + var init$1 = function (editor, boxInfo) { + var isDomainRelaxed = createIframe(editor, boxInfo); + if (boxInfo.editorContainer) { + DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay; + editor.hidden = DOM$3.isHidden(boxInfo.editorContainer); + } + editor.getElement().style.display = 'none'; + DOM$3.setAttrib(editor.id, 'aria-hidden', true); + if (!isDomainRelaxed) { + $_aixfus4lje5o2qp4.initContentBody(editor); + } + }; + var $_3w1bbh6zje5o2r3o = { init: init$1 }; + + var DOM$4 = DOMUtils.DOM; + var initPlugin = function (editor, initializedPlugins, plugin) { + var Plugin = PluginManager$1.get(plugin); + var pluginUrl, pluginInstance; + pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, ''); + plugin = $_a5gegtjje5o2pum.trim(plugin); + if (Plugin && $_a5gegtjje5o2pum.inArray(initializedPlugins, plugin) === -1) { + $_a5gegtjje5o2pum.each(PluginManager$1.dependencies(plugin), function (dep) { + initPlugin(editor, initializedPlugins, dep); + }); + if (editor.plugins[plugin]) { + return; + } + pluginInstance = new Plugin(editor, pluginUrl, editor.$); + editor.plugins[plugin] = pluginInstance; + if (pluginInstance.init) { + pluginInstance.init(editor, pluginUrl); + initializedPlugins.push(plugin); + } + } + }; + var trimLegacyPrefix = function (name) { + return name.replace(/^\-/, ''); + }; + var initPlugins = function (editor) { + var initializedPlugins = []; + $_a5gegtjje5o2pum.each(editor.settings.plugins.split(/[ ,]/), function (name) { + initPlugin(editor, initializedPlugins, trimLegacyPrefix(name)); + }); + }; + var initTheme = function (editor) { + var Theme; + var theme = editor.settings.theme; + if ($_be3q8w12je5o2pxj.isString(theme)) { + editor.settings.theme = trimLegacyPrefix(theme); + Theme = ThemeManager.get(theme); + editor.theme = new Theme(editor, ThemeManager.urls[theme]); + if (editor.theme.init) { + editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\/$/, ''), editor.$); + } + } else { + editor.theme = {}; + } + }; + var renderFromLoadedTheme = function (editor) { + var w, h, minHeight, re, info; + var settings = editor.settings; + var elm = editor.getElement(); + w = settings.width || DOM$4.getStyle(elm, 'width') || '100%'; + h = settings.height || DOM$4.getStyle(elm, 'height') || elm.offsetHeight; + minHeight = settings.min_height || 100; + re = /^[0-9\.]+(|px)$/i; + if (re.test('' + w)) { + w = Math.max(parseInt(w, 10), 100); + } + if (re.test('' + h)) { + h = Math.max(parseInt(h, 10), minHeight); + } + info = editor.theme.renderUI({ + targetNode: elm, + width: w, + height: h, + deltaWidth: settings.delta_width, + deltaHeight: settings.delta_height + }); + if (!settings.content_editable) { + h = (info.iframeHeight || h) + (typeof h === 'number' ? info.deltaHeight || 0 : ''); + if (h < minHeight) { + h = minHeight; + } + } + info.height = h; + return info; + }; + var renderFromThemeFunc = function (editor) { + var info; + var elm = editor.getElement(); + info = editor.settings.theme(editor, elm); + if (info.editorContainer.nodeType) { + info.editorContainer.id = info.editorContainer.id || editor.id + '_parent'; + } + if (info.iframeContainer && info.iframeContainer.nodeType) { + info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer'; + } + info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight; + return info; + }; + var createThemeFalseResult = function (element) { + return { + editorContainer: element, + iframeContainer: element + }; + }; + var renderThemeFalseIframe = function (targetElement) { + var iframeContainer = DOM$4.create('div'); + DOM$4.insertAfter(iframeContainer, targetElement); + return createThemeFalseResult(iframeContainer); + }; + var renderThemeFalse = function (editor) { + var targetElement = editor.getElement(); + return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement); + }; + var renderThemeUi = function (editor) { + var settings = editor.settings, elm = editor.getElement(); + editor.orgDisplay = elm.style.display; + if ($_be3q8w12je5o2pxj.isString(settings.theme)) { + return renderFromLoadedTheme(editor); + } else if ($_be3q8w12je5o2pxj.isFunction(settings.theme)) { + return renderFromThemeFunc(editor); + } else { + return renderThemeFalse(editor); + } + }; + var init$2 = function (editor) { + var settings = editor.settings; + var elm = editor.getElement(); + var boxInfo; + editor.rtl = settings.rtl_ui || editor.editorManager.i18n.rtl; + editor.editorManager.i18n.setCode(settings.language); + settings.aria_label = settings.aria_label || DOM$4.getAttrib(elm, 'aria-label', editor.getLang('aria.rich_text_area')); + editor.fire('ScriptsLoaded'); + initTheme(editor); + initPlugins(editor); + boxInfo = renderThemeUi(editor); + editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null; + if (settings.content_css) { + $_a5gegtjje5o2pum.each($_a5gegtjje5o2pum.explode(settings.content_css), function (u) { + editor.contentCSS.push(editor.documentBaseURI.toAbsolute(u)); + }); + } + if (settings.content_editable) { + return $_aixfus4lje5o2qp4.initContentBody(editor); + } else { + return $_3w1bbh6zje5o2r3o.init(editor, boxInfo); + } + }; + var $_v6l1f4ije5o2qou = { init: init$2 }; + + var DOM$5 = DOMUtils.DOM; + var hasSkipLoadPrefix = function (name) { + return name.charAt(0) === '-'; + }; + var loadLanguage = function (scriptLoader, editor) { + var settings = editor.settings; + if (settings.language && settings.language !== 'en' && !settings.language_url) { + settings.language_url = editor.editorManager.baseURL + '/langs/' + settings.language + '.js'; + } + if (settings.language_url && !editor.editorManager.i18n.data[settings.language]) { + scriptLoader.add(settings.language_url); + } + }; + var loadTheme = function (scriptLoader, editor, suffix, callback) { + var settings = editor.settings, theme = settings.theme; + if ($_be3q8w12je5o2pxj.isString(theme)) { + if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) { + var themeUrl = settings.theme_url; + if (themeUrl) { + ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl)); + } else { + ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js'); + } + } + scriptLoader.loadQueue(function () { + ThemeManager.waitFor(theme, callback); + }); + } else { + callback(); + } + }; + var loadPlugins = function (settings, suffix) { + if ($_a5gegtjje5o2pum.isArray(settings.plugins)) { + settings.plugins = settings.plugins.join(' '); + } + $_a5gegtjje5o2pum.each(settings.external_plugins, function (url, name) { + PluginManager$1.load(name, url); + settings.plugins += ' ' + name; + }); + $_a5gegtjje5o2pum.each(settings.plugins.split(/[ ,]/), function (plugin) { + plugin = $_a5gegtjje5o2pum.trim(plugin); + if (plugin && !PluginManager$1.urls[plugin]) { + if (hasSkipLoadPrefix(plugin)) { + plugin = plugin.substr(1, plugin.length); + var dependencies = PluginManager$1.dependencies(plugin); + $_a5gegtjje5o2pum.each(dependencies, function (dep) { + var defaultSettings = { + prefix: 'plugins/', + resource: dep, + suffix: '/plugin' + suffix + '.js' + }; + dep = PluginManager$1.createUrl(defaultSettings, dep); + PluginManager$1.load(dep.resource, dep); + }); + } else { + PluginManager$1.load(plugin, { + prefix: 'plugins/', + resource: plugin, + suffix: '/plugin' + suffix + '.js' + }); + } + } + }); + }; + var loadScripts = function (editor, suffix) { + var scriptLoader = ScriptLoader.ScriptLoader; + loadTheme(scriptLoader, editor, suffix, function () { + loadLanguage(scriptLoader, editor); + loadPlugins(editor.settings, suffix); + scriptLoader.loadQueue(function () { + if (!editor.removed) { + $_v6l1f4ije5o2qou.init(editor); + } + }, editor, function (urls) { + $_axrd1j4hje5o2qor.pluginLoadError(editor, urls[0]); + if (!editor.removed) { + $_v6l1f4ije5o2qou.init(editor); + } + }); + }); + }; + var render = function (editor) { + var settings = editor.settings, id = editor.id; + var readyHandler = function () { + DOM$5.unbind(window, 'ready', readyHandler); + editor.render(); + }; + if (!EventUtils.Event.domLoaded) { + DOM$5.bind(window, 'ready', readyHandler); + return; + } + if (!editor.getElement()) { + return; + } + if (!$_9bd8pn9je5o2pp2.contentEditable) { + return; + } + if (!settings.inline) { + editor.orgVisibility = editor.getElement().style.visibility; + editor.getElement().style.visibility = 'hidden'; + } else { + editor.inline = true; + } + var form = editor.getElement().form || DOM$5.getParent(id, 'form'); + if (form) { + editor.formElement = form; + if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) { + DOM$5.insertAfter(DOM$5.create('input', { + type: 'hidden', + name: id + }), id); + editor.hasHiddenInput = true; + } + editor.formEventDelegate = function (e) { + editor.fire(e.type, e); + }; + DOM$5.bind(form, 'submit reset', editor.formEventDelegate); + editor.on('reset', function () { + editor.setContent(editor.startContent, { format: 'raw' }); + }); + if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) { + form._mceOldSubmit = form.submit; + form.submit = function () { + editor.editorManager.triggerSave(); + editor.setDirty(false); + return form._mceOldSubmit(form); + }; + } + } + editor.windowManager = WindowManager(editor); + editor.notificationManager = NotificationManager(editor); + if (settings.encoding === 'xml') { + editor.on('GetContent', function (e) { + if (e.save) { + e.content = DOM$5.encode(e.content); + } + }); + } + if (settings.add_form_submit_trigger) { + editor.on('submit', function () { + if (editor.initialized) { + editor.save(); + } + }); + } + if (settings.add_unload_trigger) { + editor._beforeUnload = function () { + if (editor.initialized && !editor.destroyed && !editor.isHidden()) { + editor.save({ + format: 'raw', + no_events: true, + set_dirty: false + }); + } + }; + editor.editorManager.on('BeforeUnload', editor._beforeUnload); + } + editor.editorManager.add(editor); + loadScripts(editor, editor.suffix); + }; + var $_4352oh4bje5o2qnn = { render: render }; + + var add = function (editor, name, settings) { + var sidebars = editor.sidebars ? editor.sidebars : []; + sidebars.push({ + name: name, + settings: settings + }); + editor.sidebars = sidebars; + }; + var $_8qp82n70je5o2r3u = { add: add }; + + var each$21 = $_a5gegtjje5o2pum.each; + var trim$4 = $_a5gegtjje5o2pum.trim; + var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' '); + var DEFAULT_PORTS = { + ftp: 21, + http: 80, + https: 443, + mailto: 25 + }; + var URI = function (url, settings) { + var self = this; + var baseUri, baseUrl; + url = trim$4(url); + settings = self.settings = settings || {}; + baseUri = settings.base_uri; + if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) { + self.source = url; + return; + } + var isProtocolRelative = url.indexOf('//') === 0; + if (url.indexOf('/') === 0 && !isProtocolRelative) { + url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url; + } + if (!/^[\w\-]*:?\/\//.test(url)) { + baseUrl = settings.base_uri ? settings.base_uri.path : new URI(document.location.href).directory; + if (settings.base_uri.protocol == '') { + url = '//mce_host' + self.toAbsPath(baseUrl, url); + } else { + url = /([^#?]*)([#?]?.*)/.exec(url); + url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, url[1]) + url[2]; + } + } + url = url.replace(/@@/g, '(mce_at)'); + url = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url); + each$21(queryParts, function (v, i) { + var part = url[i]; + if (part) { + part = part.replace(/\(mce_at\)/g, '@@'); + } + self[v] = part; + }); + if (baseUri) { + if (!self.protocol) { + self.protocol = baseUri.protocol; + } + if (!self.userInfo) { + self.userInfo = baseUri.userInfo; + } + if (!self.port && self.host === 'mce_host') { + self.port = baseUri.port; + } + if (!self.host || self.host === 'mce_host') { + self.host = baseUri.host; + } + self.source = ''; + } + if (isProtocolRelative) { + self.protocol = ''; + } + }; + URI.prototype = { + setPath: function (path) { + var self = this; + path = /^(.*?)\/?(\w+)?$/.exec(path); + self.path = path[0]; + self.directory = path[1]; + self.file = path[2]; + self.source = ''; + self.getURI(); + }, + toRelative: function (uri) { + var self = this; + var output; + if (uri === './') { + return uri; + } + uri = new URI(uri, { base_uri: self }); + if (uri.host !== 'mce_host' && self.host !== uri.host && uri.host || self.port !== uri.port || self.protocol !== uri.protocol && uri.protocol !== '') { + return uri.getURI(); + } + var tu = self.getURI(), uu = uri.getURI(); + if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) { + return tu; + } + output = self.toRelPath(self.path, uri.path); + if (uri.query) { + output += '?' + uri.query; + } + if (uri.anchor) { + output += '#' + uri.anchor; + } + return output; + }, + toAbsolute: function (uri, noHost) { + uri = new URI(uri, { base_uri: this }); + return uri.getURI(noHost && this.isSameOrigin(uri)); + }, + isSameOrigin: function (uri) { + if (this.host == uri.host && this.protocol == uri.protocol) { + if (this.port == uri.port) { + return true; + } + var defaultPort = DEFAULT_PORTS[this.protocol]; + if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) { + return true; + } + } + return false; + }, + toRelPath: function (base, path) { + var items, breakPoint = 0, out = '', i, l; + base = base.substring(0, base.lastIndexOf('/')); + base = base.split('/'); + items = path.split('/'); + if (base.length >= items.length) { + for (i = 0, l = base.length; i < l; i++) { + if (i >= items.length || base[i] !== items[i]) { + breakPoint = i + 1; + break; + } + } + } + if (base.length < items.length) { + for (i = 0, l = items.length; i < l; i++) { + if (i >= base.length || base[i] !== items[i]) { + breakPoint = i + 1; + break; + } + } + } + if (breakPoint === 1) { + return path; + } + for (i = 0, l = base.length - (breakPoint - 1); i < l; i++) { + out += '../'; + } + for (i = breakPoint - 1, l = items.length; i < l; i++) { + if (i !== breakPoint - 1) { + out += '/' + items[i]; + } else { + out += items[i]; + } + } + return out; + }, + toAbsPath: function (base, path) { + var i, nb = 0, o = [], tr, outPath; + tr = /\/$/.test(path) ? '/' : ''; + base = base.split('/'); + path = path.split('/'); + each$21(base, function (k) { + if (k) { + o.push(k); + } + }); + base = o; + for (i = path.length - 1, o = []; i >= 0; i--) { + if (path[i].length === 0 || path[i] === '.') { + continue; + } + if (path[i] === '..') { + nb++; + continue; + } + if (nb > 0) { + nb--; + continue; + } + o.push(path[i]); + } + i = base.length - nb; + if (i <= 0) { + outPath = o.reverse().join('/'); + } else { + outPath = base.slice(0, i).join('/') + '/' + o.reverse().join('/'); + } + if (outPath.indexOf('/') !== 0) { + outPath = '/' + outPath; + } + if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) { + outPath += tr; + } + return outPath; + }, + getURI: function (noProtoHost) { + var s; + var self = this; + if (!self.source || noProtoHost) { + s = ''; + if (!noProtoHost) { + if (self.protocol) { + s += self.protocol + '://'; + } else { + s += '//'; + } + if (self.userInfo) { + s += self.userInfo + '@'; + } + if (self.host) { + s += self.host; + } + if (self.port) { + s += ':' + self.port; + } + } + if (self.path) { + s += self.path; + } + if (self.query) { + s += '?' + self.query; + } + if (self.anchor) { + s += '#' + self.anchor; + } + self.source = s; + } + return self.source; + } + }; + URI.parseDataUri = function (uri) { + var type, matches; + uri = decodeURIComponent(uri).split(','); + matches = /data:([^;]+)/.exec(uri[0]); + if (matches) { + type = matches[1]; + } + return { + type: type, + data: uri[1] + }; + }; + URI.getDocumentBaseUrl = function (loc) { + var baseUrl; + if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') { + baseUrl = loc.href; + } else { + baseUrl = loc.protocol + '//' + loc.host + loc.pathname; + } + if (/^[^:]+:\/\/\/?[^\/]+\//.test(baseUrl)) { + baseUrl = baseUrl.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(baseUrl)) { + baseUrl += '/'; + } + } + return baseUrl; + }; + + var traverse = function (node, fn) { + fn(node); + if (node.firstChild) { + traverse(node.firstChild, fn); + } + if (node.next) { + traverse(node.next, fn); + } + }; + var findMatchingNodes = function (nodeFilters, attributeFilters, node) { + var nodeMatches = {}; + var attrMatches = {}; + var matches = []; + if (node.firstChild) { + traverse(node.firstChild, function (node) { + $_bwcteb4je5o2pl4.each(nodeFilters, function (filter) { + if (filter.name === node.name) { + if (nodeMatches[filter.name]) { + nodeMatches[filter.name].nodes.push(node); + } else { + nodeMatches[filter.name] = { + filter: filter, + nodes: [node] + }; + } + } + }); + $_bwcteb4je5o2pl4.each(attributeFilters, function (filter) { + if (typeof node.attr(filter.name) === 'string') { + if (attrMatches[filter.name]) { + attrMatches[filter.name].nodes.push(node); + } else { + attrMatches[filter.name] = { + filter: filter, + nodes: [node] + }; + } + } + }); + }); + } + for (var name_1 in nodeMatches) { + if (nodeMatches.hasOwnProperty(name_1)) { + matches.push(nodeMatches[name_1]); + } + } + for (var name_2 in attrMatches) { + if (attrMatches.hasOwnProperty(name_2)) { + matches.push(attrMatches[name_2]); + } + } + return matches; + }; + var filter$3 = function (nodeFilters, attributeFilters, node) { + var matches = findMatchingNodes(nodeFilters, attributeFilters, node); + $_bwcteb4je5o2pl4.each(matches, function (match) { + $_bwcteb4je5o2pl4.each(match.filter.callbacks, function (callback) { + callback(match.nodes, match.filter.name, {}); + }); + }); + }; + + var defaultFormat = 'html'; + var isTreeNode = function (content) { + return content instanceof Node$2; + }; + var setContentString = function (editor, content, args) { + var body = editor.getBody(); + var forcedRootBlockName, padd; + if (content.length === 0 || /^\s+$/.test(content)) { + padd = '<br data-mce-bogus="1">'; + if (body.nodeName === 'TABLE') { + content = '<tr><td>' + padd + '</td></tr>'; + } else if (/^(UL|OL)$/.test(body.nodeName)) { + content = '<li>' + padd + '</li>'; + } + forcedRootBlockName = editor.settings.forced_root_block; + if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) { + content = padd; + content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content); + } else if (!content) { + content = '<br data-mce-bogus="1">'; + } + editor.dom.setHTML(body, content); + editor.fire('SetContent', args); + } else { + if (args.format !== 'raw') { + content = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, { + isRootContent: true, + insert: true + })); + } + args.content = $_a5gegtjje5o2pum.trim(content); + editor.dom.setHTML(body, args.content); + if (!args.no_events) { + editor.fire('SetContent', args); + } + } + return args.content; + }; + var setContentTree = function (editor, content, args) { + filter$3(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content); + var html = HtmlSerializer({ validate: editor.validate }, editor.schema).serialize(content); + args.content = $_a5gegtjje5o2pum.trim(html); + editor.dom.setHTML(editor.getBody(), args.content); + if (!args.no_events) { + editor.fire('SetContent', args); + } + return content; + }; + var setContent$1 = function (editor, content, args) { + if (args === void 0) { + args = {}; + } + args.format = args.format ? args.format : defaultFormat; + args.set = true; + args.content = isTreeNode(content) ? '' : content; + if (!isTreeNode(content) && !args.no_events) { + editor.fire('BeforeSetContent', args); + content = args.content; + } + return isTreeNode(content) ? setContentTree(editor, content, args) : setContentString(editor, content, args); + }; + var getContent$1 = function (editor, args) { + if (args === void 0) { + args = {}; + } + var content; + var body = editor.getBody(); + if (editor.removed) { + return ''; + } + args.format = args.format ? args.format : defaultFormat; + args.get = true; + args.getInner = true; + if (!args.no_events) { + editor.fire('BeforeGetContent', args); + } + if (args.format === 'raw') { + content = $_a5gegtjje5o2pum.trim($_15ih885cje5o2qt6.trimExternal(editor.serializer, body.innerHTML)); + } else if (args.format === 'text') { + content = body.innerText || body.textContent; + } else if (args.format === 'tree') { + return editor.serializer.serialize(body, args); + } else { + content = editor.serializer.serialize(body, args); + } + if (args.format !== 'text') { + args.content = $_a5gegtjje5o2pum.trim(content); + } else { + args.content = content; + } + if (!args.no_events) { + editor.fire('GetContent', args); + } + return args.content; + }; + + var DOM$6 = DOMUtils.DOM; + var restoreOriginalStyles = function (editor) { + DOM$6.setStyle(editor.id, 'display', editor.orgDisplay); + }; + var safeDestroy = function (x) { + return Option.from(x).each(function (x) { + return x.destroy(); + }); + }; + var clearDomReferences = function (editor) { + editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null; + editor.bodyElement = editor.contentDocument = editor.contentWindow = null; + editor.iframeElement = editor.targetElm = null; + if (editor.selection) { + editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null; + } + }; + var restoreForm = function (editor) { + var form = editor.formElement; + if (form) { + if (form._mceOldSubmit) { + form.submit = form._mceOldSubmit; + form._mceOldSubmit = null; + } + DOM$6.unbind(form, 'submit reset', editor.formEventDelegate); + } + }; + var remove$5 = function (editor) { + if (!editor.removed) { + var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload; + var body = editor.getBody(); + var element = editor.getElement(); + if (body) { + editor.save(); + } + editor.removed = 1; + editor.unbindAllNativeEvents(); + if (editor.hasHiddenInput && element) { + DOM$6.remove(element.nextSibling); + } + if (!editor.inline && body) { + restoreOriginalStyles(editor); + } + $_d6jl355vje5o2qw5.fireRemove(editor); + editor.editorManager.remove(editor); + DOM$6.remove(editor.getContainer()); + safeDestroy(_selectionOverrides); + safeDestroy(editorUpload); + editor.destroy(); + } + }; + var destroy = function (editor, automatic) { + var selection = editor.selection, dom = editor.dom; + if (editor.destroyed) { + return; + } + if (!automatic && !editor.removed) { + editor.remove(); + return; + } + if (!automatic) { + editor.editorManager.off('beforeunload', editor._beforeUnload); + if (editor.theme && editor.theme.destroy) { + editor.theme.destroy(); + } + safeDestroy(selection); + safeDestroy(dom); + } + restoreForm(editor); + clearDomReferences(editor); + editor.destroyed = 1; + }; + + var DOM$7 = DOMUtils.DOM; + var extend$4 = $_a5gegtjje5o2pum.extend; + var each$22 = $_a5gegtjje5o2pum.each; + var resolve$4 = $_a5gegtjje5o2pum.resolve; + var ie$2 = $_9bd8pn9je5o2pp2.ie; + var Editor = function (id, settings, editorManager) { + var self = this; + var documentBaseUrl, baseUri; + documentBaseUrl = self.documentBaseUrl = editorManager.documentBaseURL; + baseUri = editorManager.baseURI; + settings = getEditorSettings(self, id, documentBaseUrl, editorManager.defaultSettings, settings); + self.settings = settings; + AddOnManager.language = settings.language || 'en'; + AddOnManager.languageLoad = settings.language_load; + AddOnManager.baseURL = editorManager.baseURL; + self.id = id; + self.setDirty(false); + self.plugins = {}; + self.documentBaseURI = new URI(settings.document_base_url, { base_uri: baseUri }); + self.baseURI = baseUri; + self.contentCSS = []; + self.contentStyles = []; + self.shortcuts = new Shortcuts(self); + self.loadedCSS = {}; + self.editorCommands = new EditorCommands(self); + self.suffix = editorManager.suffix; + self.editorManager = editorManager; + self.inline = settings.inline; + self.buttons = {}; + self.menuItems = {}; + if (settings.cache_suffix) { + $_9bd8pn9je5o2pp2.cacheSuffix = settings.cache_suffix.replace(/^[\?\&]+/, ''); + } + if (settings.override_viewport === false) { + $_9bd8pn9je5o2pp2.overrideViewPort = false; + } + editorManager.fire('SetupEditor', { editor: self }); + self.execCallback('setup', self); + self.$ = DomQuery.overrideDefaults(function () { + return { + context: self.inline ? self.getBody() : self.getDoc(), + element: self.getBody() + }; + }); + }; + Editor.prototype = { + render: function () { + $_4352oh4bje5o2qnn.render(this); + }, + focus: function (skipFocus) { + $_llx5i48je5o2qna.focus(this, skipFocus); + }, + execCallback: function (name) { + var self = this; + var callback = self.settings[name], scope; + if (!callback) { + return; + } + if (self.callbackLookup && (scope = self.callbackLookup[name])) { + callback = scope.func; + scope = scope.scope; + } + if (typeof callback === 'string') { + scope = callback.replace(/\.\w+$/, ''); + scope = scope ? resolve$4(scope) : 0; + callback = resolve$4(callback); + self.callbackLookup = self.callbackLookup || {}; + self.callbackLookup[name] = { + func: callback, + scope: scope + }; + } + return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1)); + }, + translate: function (text) { + if (text && $_a5gegtjje5o2pum.is(text, 'string')) { + var lang_1 = this.settings.language || 'en', i18n_1 = this.editorManager.i18n; + text = i18n_1.data[lang_1 + '.' + text] || text.replace(/\{\#([^\}]+)\}/g, function (a, b) { + return i18n_1.data[lang_1 + '.' + b] || '{#' + b + '}'; + }); + } + return this.editorManager.translate(text); + }, + getLang: function (name, defaultVal) { + return this.editorManager.i18n.data[(this.settings.language || 'en') + '.' + name] || (defaultVal !== undefined ? defaultVal : '{#' + name + '}'); + }, + getParam: function (name, defaultVal, type) { + return getParam(this, name, defaultVal, type); + }, + nodeChanged: function (args) { + this._nodeChangeDispatcher.nodeChanged(args); + }, + addButton: function (name, settings) { + var self = this; + if (settings.cmd) { + settings.onclick = function () { + self.execCommand(settings.cmd); + }; + } + if (settings.stateSelector && typeof settings.active === 'undefined') { + settings.active = false; + } + if (!settings.text && !settings.icon) { + settings.icon = name; + } + self.buttons = self.buttons; + settings.tooltip = settings.tooltip || settings.title; + self.buttons[name] = settings; + }, + addSidebar: function (name, settings) { + return $_8qp82n70je5o2r3u.add(this, name, settings); + }, + addMenuItem: function (name, settings) { + var self = this; + if (settings.cmd) { + settings.onclick = function () { + self.execCommand(settings.cmd); + }; + } + self.menuItems = self.menuItems; + self.menuItems[name] = settings; + }, + addContextToolbar: function (predicate, items) { + var self = this; + var selector; + self.contextToolbars = self.contextToolbars || []; + if (typeof predicate === 'string') { + selector = predicate; + predicate = function (elm) { + return self.dom.is(elm, selector); + }; + } + self.contextToolbars.push({ + id: $_2bgddd4wje5o2qqo.uuid('mcet'), + predicate: predicate, + items: items + }); + }, + addCommand: function (name, callback, scope) { + this.editorCommands.addCommand(name, callback, scope); + }, + addQueryStateHandler: function (name, callback, scope) { + this.editorCommands.addQueryStateHandler(name, callback, scope); + }, + addQueryValueHandler: function (name, callback, scope) { + this.editorCommands.addQueryValueHandler(name, callback, scope); + }, + addShortcut: function (pattern, desc, cmdFunc, scope) { + this.shortcuts.add(pattern, desc, cmdFunc, scope); + }, + execCommand: function (cmd, ui, value, args) { + return this.editorCommands.execCommand(cmd, ui, value, args); + }, + queryCommandState: function (cmd) { + return this.editorCommands.queryCommandState(cmd); + }, + queryCommandValue: function (cmd) { + return this.editorCommands.queryCommandValue(cmd); + }, + queryCommandSupported: function (cmd) { + return this.editorCommands.queryCommandSupported(cmd); + }, + show: function () { + var self = this; + if (self.hidden) { + self.hidden = false; + if (self.inline) { + self.getBody().contentEditable = true; + } else { + DOM$7.show(self.getContainer()); + DOM$7.hide(self.id); + } + self.load(); + self.fire('show'); + } + }, + hide: function () { + var self = this, doc = self.getDoc(); + if (!self.hidden) { + if (ie$2 && doc && !self.inline) { + doc.execCommand('SelectAll'); + } + self.save(); + if (self.inline) { + self.getBody().contentEditable = false; + if (self === self.editorManager.focusedEditor) { + self.editorManager.focusedEditor = null; + } + } else { + DOM$7.hide(self.getContainer()); + DOM$7.setStyle(self.id, 'display', self.orgDisplay); + } + self.hidden = true; + self.fire('hide'); + } + }, + isHidden: function () { + return !!this.hidden; + }, + setProgressState: function (state, time) { + this.fire('ProgressState', { + state: state, + time: time + }); + }, + load: function (args) { + var self = this; + var elm = self.getElement(), html; + if (self.removed) { + return ''; + } + if (elm) { + args = args || {}; + args.load = true; + html = self.setContent(elm.value !== undefined ? elm.value : elm.innerHTML, args); + args.element = elm; + if (!args.no_events) { + self.fire('LoadContent', args); + } + args.element = elm = null; + return html; + } + }, + save: function (args) { + var self = this; + var elm = self.getElement(), html, form; + if (!elm || !self.initialized || self.removed) { + return; + } + args = args || {}; + args.save = true; + args.element = elm; + html = args.content = self.getContent(args); + if (!args.no_events) { + self.fire('SaveContent', args); + } + if (args.format === 'raw') { + self.fire('RawSaveContent', args); + } + html = args.content; + if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) { + if (!self.inline) { + elm.innerHTML = html; + } + if (form = DOM$7.getParent(self.id, 'form')) { + each$22(form.elements, function (elm) { + if (elm.name === self.id) { + elm.value = html; + return false; + } + }); + } + } else { + elm.value = html; + } + args.element = elm = null; + if (args.set_dirty !== false) { + self.setDirty(false); + } + return html; + }, + setContent: function (content, args) { + return setContent$1(this, content, args); + }, + getContent: function (args) { + return getContent$1(this, args); + }, + insertContent: function (content, args) { + if (args) { + content = extend$4({ content: content }, args); + } + this.execCommand('mceInsertContent', false, content); + }, + isDirty: function () { + return !this.isNotDirty; + }, + setDirty: function (state) { + var oldState = !this.isNotDirty; + this.isNotDirty = !state; + if (state && state !== oldState) { + this.fire('dirty'); + } + }, + setMode: function (mode) { + $_7uzwj846je5o2qmw.setMode(this, mode); + }, + getContainer: function () { + var self = this; + if (!self.container) { + self.container = DOM$7.get(self.editorContainer || self.id + '_parent'); + } + return self.container; + }, + getContentAreaContainer: function () { + return this.contentAreaContainer; + }, + getElement: function () { + if (!this.targetElm) { + this.targetElm = DOM$7.get(this.id); + } + return this.targetElm; + }, + getWin: function () { + var self = this; + var elm; + if (!self.contentWindow) { + elm = self.iframeElement; + if (elm) { + self.contentWindow = elm.contentWindow; + } + } + return self.contentWindow; + }, + getDoc: function () { + var self = this; + var win; + if (!self.contentDocument) { + win = self.getWin(); + if (win) { + self.contentDocument = win.document; + } + } + return self.contentDocument; + }, + getBody: function () { + var doc = this.getDoc(); + return this.bodyElement || (doc ? doc.body : null); + }, + convertURL: function (url, name, elm) { + var self = this, settings = self.settings; + if (settings.urlconverter_callback) { + return self.execCallback('urlconverter_callback', url, elm, true, name); + } + if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) { + return url; + } + if (settings.relative_urls) { + return self.documentBaseURI.toRelative(url); + } + url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host); + return url; + }, + addVisual: function (elm) { + var self = this; + var settings = self.settings; + var dom = self.dom; + var cls; + elm = elm || self.getBody(); + if (self.hasVisual === undefined) { + self.hasVisual = settings.visual; + } + each$22(dom.select('table,a', elm), function (elm) { + var value; + switch (elm.nodeName) { + case 'TABLE': + cls = settings.visual_table_class || 'mce-item-table'; + value = dom.getAttrib(elm, 'border'); + if ((!value || value === '0') && self.hasVisual) { + dom.addClass(elm, cls); + } else { + dom.removeClass(elm, cls); + } + return; + case 'A': + if (!dom.getAttrib(elm, 'href', false)) { + value = dom.getAttrib(elm, 'name') || elm.id; + cls = settings.visual_anchor_class || 'mce-item-anchor'; + if (value && self.hasVisual) { + dom.addClass(elm, cls); + } else { + dom.removeClass(elm, cls); + } + } + return; + } + }); + self.fire('VisualAid', { + element: elm, + hasVisual: self.hasVisual + }); + }, + remove: function () { + remove$5(this); + }, + destroy: function (automatic) { + destroy(this, automatic); + }, + uploadImages: function (callback) { + return this.editorUpload.uploadImages(callback); + }, + _scanForImages: function () { + return this.editorUpload.scanForImages(); + } + }; + extend$4(Editor.prototype, EditorObservable$1); + + var isEditorUIElement = function (elm) { + return elm.className.toString().indexOf('mce-') !== -1; + }; + var $_97d4iv77je5o2r4x = { isEditorUIElement: isEditorUIElement }; + + var isManualNodeChange = function (e) { + return e.type === 'nodechange' && e.selectionChange; + }; + var registerPageMouseUp = function (editor, throttledStore) { + var mouseUpPage = function () { + throttledStore.throttle(); + }; + DOMUtils.DOM.bind(document, 'mouseup', mouseUpPage); + editor.on('remove', function () { + DOMUtils.DOM.unbind(document, 'mouseup', mouseUpPage); + }); + }; + var registerFocusOut = function (editor) { + editor.on('focusout', function () { + $_fnd7h33zje5o2qly.store(editor); + }); + }; + var registerMouseUp = function (editor, throttledStore) { + editor.on('mouseup touchend', function (e) { + throttledStore.throttle(); + }); + }; + var registerEditorEvents = function (editor, throttledStore) { + var browser = $_2hq237mje5o2pvu.detect().browser; + if (browser.isIE() || browser.isEdge()) { + registerFocusOut(editor); + } else { + registerMouseUp(editor, throttledStore); + } + editor.on('keyup nodechange', function (e) { + if (!isManualNodeChange(e)) { + $_fnd7h33zje5o2qly.store(editor); + } + }); + }; + var register$3 = function (editor) { + var throttledStore = $_7qjijn58je5o2qsg.first(function () { + $_fnd7h33zje5o2qly.store(editor); + }, 0); + if (editor.inline) { + registerPageMouseUp(editor, throttledStore); + } + editor.on('init', function () { + registerEditorEvents(editor, throttledStore); + }); + editor.on('remove', function () { + throttledStore.cancel(); + }); + }; + var $_eam19v78je5o2r4y = { register: register$3 }; + + var documentFocusInHandler; + var DOM$8 = DOMUtils.DOM; + var isEditorUIElement$1 = function (elm) { + return $_97d4iv77je5o2r4x.isEditorUIElement(elm); + }; + var isUIElement = function (editor, elm) { + var customSelector = editor ? editor.settings.custom_ui_selector : ''; + var parent = DOM$8.getParent(elm, function (elm) { + return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false); + }); + return parent !== null; + }; + var getActiveElement = function () { + try { + return document.activeElement; + } catch (ex) { + return document.body; + } + }; + var registerEvents = function (editorManager, e) { + var editor = e.editor; + $_eam19v78je5o2r4y.register(editor); + editor.on('focusin', function () { + var self = this; + var focusedEditor = editorManager.focusedEditor; + if (focusedEditor !== self) { + if (focusedEditor) { + focusedEditor.fire('blur', { focusedEditor: self }); + } + editorManager.setActive(self); + editorManager.focusedEditor = self; + self.fire('focus', { blurredEditor: focusedEditor }); + self.focus(true); + } + }); + editor.on('focusout', function () { + var self = this; + $_db41wogje5o2ps3.setEditorTimeout(self, function () { + var focusedEditor = editorManager.focusedEditor; + if (!isUIElement(self, getActiveElement()) && focusedEditor === self) { + self.fire('blur', { focusedEditor: null }); + editorManager.focusedEditor = null; + } + }); + }); + if (!documentFocusInHandler) { + documentFocusInHandler = function (e) { + var activeEditor = editorManager.activeEditor; + var target; + target = e.target; + if (activeEditor && target.ownerDocument === document) { + if (target !== document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) { + activeEditor.fire('blur', { focusedEditor: null }); + editorManager.focusedEditor = null; + } + } + }; + DOM$8.bind(document, 'focusin', documentFocusInHandler); + } + }; + var unregisterDocumentEvents = function (editorManager, e) { + if (editorManager.focusedEditor === e.editor) { + editorManager.focusedEditor = null; + } + if (!editorManager.activeEditor) { + DOM$8.unbind(document, 'focusin', documentFocusInHandler); + documentFocusInHandler = null; + } + }; + var setup$11 = function (editorManager) { + editorManager.on('AddEditor', $_enfhkv6je5o2ply.curry(registerEvents, editorManager)); + editorManager.on('RemoveEditor', $_enfhkv6je5o2ply.curry(unregisterDocumentEvents, editorManager)); + }; + var $_cuv7pv76je5o2r4u = { + setup: setup$11, + isEditorUIElement: isEditorUIElement$1, + isUIElement: isUIElement + }; + + var data = {}; + var code = 'en'; + var $_34fkt779je5o2r5d = { + setCode: function (newCode) { + if (newCode) { + code = newCode; + this.rtl = this.data[newCode] ? this.data[newCode]._dir === 'rtl' : false; + } + }, + getCode: function () { + return code; + }, + rtl: false, + add: function (code, items) { + var langData = data[code]; + if (!langData) { + data[code] = langData = {}; + } + for (var name_1 in items) { + langData[name_1] = items[name_1]; + } + this.setCode(code); + }, + translate: function (text) { + var langData = data[code] || {}; + var toString = function (obj) { + if ($_a5gegtjje5o2pum.is(obj, 'function')) { + return Object.prototype.toString.call(obj); + } + return !isEmpty(obj) ? '' + obj : ''; + }; + var isEmpty = function (text) { + return text === '' || text === null || $_a5gegtjje5o2pum.is(text, 'undefined'); + }; + var getLangData = function (text) { + text = toString(text); + return $_a5gegtjje5o2pum.hasOwn(langData, text) ? toString(langData[text]) : text; + }; + if (isEmpty(text)) { + return ''; + } + if ($_a5gegtjje5o2pum.is(text, 'object') && $_a5gegtjje5o2pum.hasOwn(text, 'raw')) { + return toString(text.raw); + } + if ($_a5gegtjje5o2pum.is(text, 'array')) { + var values_1 = text.slice(1); + text = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) { + return $_a5gegtjje5o2pum.hasOwn(values_1, $2) ? toString(values_1[$2]) : $1; + }); + } + return getLangData(text).replace(/{context:\w+}$/, ''); + }, + data: data + }; + + var DOM$9 = DOMUtils.DOM; + var explode$5 = $_a5gegtjje5o2pum.explode; + var each$23 = $_a5gegtjje5o2pum.each; + var extend$5 = $_a5gegtjje5o2pum.extend; + var instanceCounter = 0; + var beforeUnloadDelegate; + var EditorManager; + var boundGlobalEvents = false; + var legacyEditors = []; + var editors = []; + var isValidLegacyKey = function (id) { + return id !== 'length'; + }; + var globalEventDelegate = function (e) { + each$23(EditorManager.get(), function (editor) { + if (e.type === 'scroll') { + editor.fire('ScrollWindow', e); + } else { + editor.fire('ResizeWindow', e); + } + }); + }; + var toggleGlobalEvents = function (state) { + if (state !== boundGlobalEvents) { + if (state) { + DomQuery(window).on('resize scroll', globalEventDelegate); + } else { + DomQuery(window).off('resize scroll', globalEventDelegate); + } + boundGlobalEvents = state; + } + }; + var removeEditorFromList = function (targetEditor) { + var oldEditors = editors; + delete legacyEditors[targetEditor.id]; + for (var i = 0; i < legacyEditors.length; i++) { + if (legacyEditors[i] === targetEditor) { + legacyEditors.splice(i, 1); + break; + } + } + editors = $_bwcteb4je5o2pl4.filter(editors, function (editor) { + return targetEditor !== editor; + }); + if (EditorManager.activeEditor === targetEditor) { + EditorManager.activeEditor = editors.length > 0 ? editors[0] : null; + } + if (EditorManager.focusedEditor === targetEditor) { + EditorManager.focusedEditor = null; + } + return oldEditors.length !== editors.length; + }; + var purgeDestroyedEditor = function (editor) { + if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) { + removeEditorFromList(editor); + editor.unbindAllNativeEvents(); + editor.destroy(true); + editor.removed = true; + editor = null; + } + return editor; + }; + EditorManager = { + defaultSettings: {}, + $: DomQuery, + majorVersion: '4', + minorVersion: '7.9', + releaseDate: '2018-02-27', + editors: legacyEditors, + i18n: $_34fkt779je5o2r5d, + activeEditor: null, + settings: {}, + setup: function () { + var self = this; + var baseURL, documentBaseURL, suffix = '', preInit, src; + documentBaseURL = URI.getDocumentBaseUrl(document.location); + if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) { + documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, ''); + if (!/[\/\\]$/.test(documentBaseURL)) { + documentBaseURL += '/'; + } + } + preInit = window.tinymce || window.tinyMCEPreInit; + if (preInit) { + baseURL = preInit.base || preInit.baseURL; + suffix = preInit.suffix; + } else { + var scripts = document.getElementsByTagName('script'); + for (var i = 0; i < scripts.length; i++) { + src = scripts[i].src; + var srcScript = src.substring(src.lastIndexOf('/')); + if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) { + if (srcScript.indexOf('.min') !== -1) { + suffix = '.min'; + } + baseURL = src.substring(0, src.lastIndexOf('/')); + break; + } + } + if (!baseURL && document.currentScript) { + src = document.currentScript.src; + if (src.indexOf('.min') !== -1) { + suffix = '.min'; + } + baseURL = src.substring(0, src.lastIndexOf('/')); + } + } + self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL); + self.documentBaseURL = documentBaseURL; + self.baseURI = new URI(self.baseURL); + self.suffix = suffix; + $_cuv7pv76je5o2r4u.setup(self); + }, + overrideDefaults: function (defaultSettings) { + var baseUrl, suffix; + baseUrl = defaultSettings.base_url; + if (baseUrl) { + this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, '')); + this.baseURI = new URI(this.baseURL); + } + suffix = defaultSettings.suffix; + if (defaultSettings.suffix) { + this.suffix = suffix; + } + this.defaultSettings = defaultSettings; + var pluginBaseUrls = defaultSettings.plugin_base_urls; + for (var name_1 in pluginBaseUrls) { + AddOnManager.PluginManager.urls[name_1] = pluginBaseUrls[name_1]; + } + }, + init: function (settings) { + var self = this; + var result, invalidInlineTargets; + invalidInlineTargets = $_a5gegtjje5o2pum.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu', ' '); + var isInvalidInlineTarget = function (settings, elm) { + return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets; + }; + var createId = function (elm) { + var id = elm.id; + if (!id) { + id = elm.name; + if (id && !DOM$9.get(id)) { + id = elm.name; + } else { + id = DOM$9.uniqueId(); + } + elm.setAttribute('id', id); + } + return id; + }; + var execCallback = function (name) { + var callback = settings[name]; + if (!callback) { + return; + } + return callback.apply(self, Array.prototype.slice.call(arguments, 2)); + }; + var hasClass = function (elm, className) { + return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className); + }; + var findTargets = function (settings) { + var l, targets = []; + if ($_9bd8pn9je5o2pp2.ie && $_9bd8pn9je5o2pp2.ie < 11) { + $_axrd1j4hje5o2qor.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/'); + return []; + } + if (settings.types) { + each$23(settings.types, function (type) { + targets = targets.concat(DOM$9.select(type.selector)); + }); + return targets; + } else if (settings.selector) { + return DOM$9.select(settings.selector); + } else if (settings.target) { + return [settings.target]; + } + switch (settings.mode) { + case 'exact': + l = settings.elements || ''; + if (l.length > 0) { + each$23(explode$5(l), function (id) { + var elm; + if (elm = DOM$9.get(id)) { + targets.push(elm); + } else { + each$23(document.forms, function (f) { + each$23(f.elements, function (e) { + if (e.name === id) { + id = 'mce_editor_' + instanceCounter++; + DOM$9.setAttrib(e, 'id', id); + targets.push(e); + } + }); + }); + } + }); + } + break; + case 'textareas': + case 'specific_textareas': + each$23(DOM$9.select('textarea'), function (elm) { + if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) { + return; + } + if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) { + targets.push(elm); + } + }); + break; + } + return targets; + }; + var provideResults = function (editors) { + result = editors; + }; + var initEditors = function () { + var initCount = 0; + var editors = []; + var targets; + var createEditor = function (id, settings, targetElm) { + var editor = new Editor(id, settings, self); + editors.push(editor); + editor.on('init', function () { + if (++initCount === targets.length) { + provideResults(editors); + } + }); + editor.targetElm = editor.targetElm || targetElm; + editor.render(); + }; + DOM$9.unbind(window, 'ready', initEditors); + execCallback('onpageload'); + targets = DomQuery.unique(findTargets(settings)); + if (settings.types) { + each$23(settings.types, function (type) { + $_a5gegtjje5o2pum.each(targets, function (elm) { + if (DOM$9.is(elm, type.selector)) { + createEditor(createId(elm), extend$5({}, settings, type), elm); + return false; + } + return true; + }); + }); + return; + } + $_a5gegtjje5o2pum.each(targets, function (elm) { + purgeDestroyedEditor(self.get(elm.id)); + }); + targets = $_a5gegtjje5o2pum.grep(targets, function (elm) { + return !self.get(elm.id); + }); + if (targets.length === 0) { + provideResults([]); + } else { + each$23(targets, function (elm) { + if (isInvalidInlineTarget(settings, elm)) { + $_axrd1j4hje5o2qor.initError('Could not initialize inline editor on invalid inline target element', elm); + } else { + createEditor(createId(elm), settings, elm); + } + }); + } + }; + self.settings = settings; + DOM$9.bind(window, 'ready', initEditors); + return new promiseObj(function (resolve) { + if (result) { + resolve(result); + } else { + provideResults = function (editors) { + resolve(editors); + }; + } + }); + }, + get: function (id) { + if (arguments.length === 0) { + return editors.slice(0); + } else if ($_be3q8w12je5o2pxj.isString(id)) { + return $_bwcteb4je5o2pl4.find(editors, function (editor) { + return editor.id === id; + }).getOr(null); + } else if ($_be3q8w12je5o2pxj.isNumber(id)) { + return editors[id] ? editors[id] : null; + } else { + return null; + } + }, + add: function (editor) { + var self = this; + var existingEditor; + existingEditor = legacyEditors[editor.id]; + if (existingEditor === editor) { + return editor; + } + if (self.get(editor.id) === null) { + if (isValidLegacyKey(editor.id)) { + legacyEditors[editor.id] = editor; + } + legacyEditors.push(editor); + editors.push(editor); + } + toggleGlobalEvents(true); + self.activeEditor = editor; + self.fire('AddEditor', { editor: editor }); + if (!beforeUnloadDelegate) { + beforeUnloadDelegate = function () { + self.fire('BeforeUnload'); + }; + DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate); + } + return editor; + }, + createEditor: function (id, settings) { + return this.add(new Editor(id, settings, this)); + }, + remove: function (selector) { + var self = this; + var i, editor; + if (!selector) { + for (i = editors.length - 1; i >= 0; i--) { + self.remove(editors[i]); + } + return; + } + if ($_be3q8w12je5o2pxj.isString(selector)) { + selector = selector.selector || selector; + each$23(DOM$9.select(selector), function (elm) { + editor = self.get(elm.id); + if (editor) { + self.remove(editor); + } + }); + return; + } + editor = selector; + if ($_be3q8w12je5o2pxj.isNull(self.get(editor.id))) { + return null; + } + if (removeEditorFromList(editor)) { + self.fire('RemoveEditor', { editor: editor }); + } + if (editors.length === 0) { + DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate); + } + editor.remove(); + toggleGlobalEvents(editors.length > 0); + return editor; + }, + execCommand: function (cmd, ui, value) { + var self = this, editor = self.get(value); + switch (cmd) { + case 'mceAddEditor': + if (!self.get(value)) { + new Editor(value, self.settings, self).render(); + } + return true; + case 'mceRemoveEditor': + if (editor) { + editor.remove(); + } + return true; + case 'mceToggleEditor': + if (!editor) { + self.execCommand('mceAddEditor', 0, value); + return true; + } + if (editor.isHidden()) { + editor.show(); + } else { + editor.hide(); + } + return true; + } + if (self.activeEditor) { + return self.activeEditor.execCommand(cmd, ui, value); + } + return false; + }, + triggerSave: function () { + each$23(editors, function (editor) { + editor.save(); + }); + }, + addI18n: function (code, items) { + $_34fkt779je5o2r5d.add(code, items); + }, + translate: function (text) { + return $_34fkt779je5o2r5d.translate(text); + }, + setActive: function (editor) { + var activeEditor = this.activeEditor; + if (this.activeEditor !== editor) { + if (activeEditor) { + activeEditor.fire('deactivate', { relatedTarget: editor }); + } + editor.fire('activate', { relatedTarget: activeEditor }); + } + this.activeEditor = editor; + } + }; + extend$5(EditorManager, $_8mfz0u44je5o2qmp); + EditorManager.setup(); + var EditorManager$1 = EditorManager; + + function RangeUtils(dom) { + var walk = function (rng, callback) { + return $_1jk9p5lje5o2qv9.walk(dom, rng, callback); + }; + var split = $_3ksquu3nje5o2qg7.split; + var normalize = function (rng) { + return $_1t8l6x3xje5o2qlk.normalize(dom, rng).fold($_enfhkv6je5o2ply.constant(false), function (normalizedRng) { + rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset); + rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset); + return true; + }); + }; + return { + walk: walk, + split: split, + normalize: normalize + }; + } + (function (RangeUtils) { + RangeUtils.compareRanges = $_aieo7z3yje5o2qlw.isEq; + RangeUtils.getCaretRangeFromPoint = $_drs2u868je5o2qyu.fromPoint; + RangeUtils.getSelectedNode = getSelectedNode; + RangeUtils.getNode = getNode; + }(RangeUtils || (RangeUtils = {}))); + var RangeUtils$1 = RangeUtils; + + var min = Math.min; + var max = Math.max; + var round$1 = Math.round; + var relativePosition = function (rect, targetRect, rel) { + var x, y, w, h, targetW, targetH; + x = targetRect.x; + y = targetRect.y; + w = rect.w; + h = rect.h; + targetW = targetRect.w; + targetH = targetRect.h; + rel = (rel || '').split(''); + if (rel[0] === 'b') { + y += targetH; + } + if (rel[1] === 'r') { + x += targetW; + } + if (rel[0] === 'c') { + y += round$1(targetH / 2); + } + if (rel[1] === 'c') { + x += round$1(targetW / 2); + } + if (rel[3] === 'b') { + y -= h; + } + if (rel[4] === 'r') { + x -= w; + } + if (rel[3] === 'c') { + y -= round$1(h / 2); + } + if (rel[4] === 'c') { + x -= round$1(w / 2); + } + return create$2(x, y, w, h); + }; + var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) { + var pos, i; + for (i = 0; i < rels.length; i++) { + pos = relativePosition(rect, targetRect, rels[i]); + if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) { + return rels[i]; + } + } + return null; + }; + var inflate = function (rect, w, h) { + return create$2(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2); + }; + var intersect = function (rect, cropRect) { + var x1, y1, x2, y2; + x1 = max(rect.x, cropRect.x); + y1 = max(rect.y, cropRect.y); + x2 = min(rect.x + rect.w, cropRect.x + cropRect.w); + y2 = min(rect.y + rect.h, cropRect.y + cropRect.h); + if (x2 - x1 < 0 || y2 - y1 < 0) { + return null; + } + return create$2(x1, y1, x2 - x1, y2 - y1); + }; + var clamp$1 = function (rect, clampRect, fixedSize) { + var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2; + x1 = rect.x; + y1 = rect.y; + x2 = rect.x + rect.w; + y2 = rect.y + rect.h; + cx2 = clampRect.x + clampRect.w; + cy2 = clampRect.y + clampRect.h; + underflowX1 = max(0, clampRect.x - x1); + underflowY1 = max(0, clampRect.y - y1); + overflowX2 = max(0, x2 - cx2); + overflowY2 = max(0, y2 - cy2); + x1 += underflowX1; + y1 += underflowY1; + if (fixedSize) { + x2 += underflowX1; + y2 += underflowY1; + x1 -= overflowX2; + y1 -= overflowY2; + } + x2 -= overflowX2; + y2 -= overflowY2; + return create$2(x1, y1, x2 - x1, y2 - y1); + }; + var create$2 = function (x, y, w, h) { + return { + x: x, + y: y, + w: w, + h: h + }; + }; + var fromClientRect = function (clientRect) { + return create$2(clientRect.left, clientRect.top, clientRect.width, clientRect.height); + }; + var $_2r1euc7bje5o2r5k = { + inflate: inflate, + relativePosition: relativePosition, + findBestRelativePosition: findBestRelativePosition, + intersect: intersect, + clamp: clamp$1, + create: create$2, + fromClientRect: fromClientRect + }; + + var types = {}; + var $_cxa5dr7cje5o2r5q = { + add: function (type, typeClass) { + types[type.toLowerCase()] = typeClass; + }, + has: function (type) { + return !!types[type.toLowerCase()]; + }, + get: function (type) { + var lctype = type.toLowerCase(); + var controlType = types.hasOwnProperty(lctype) ? types[lctype] : null; + if (controlType === null) { + throw new Error('Could not find module for type: ' + type); + } + return controlType; + }, + create: function (type, settings) { + var ControlType; + if (typeof type === 'string') { + settings = settings || {}; + settings.type = type; + } else { + settings = type; + type = settings.type; + } + type = type.toLowerCase(); + ControlType = types[type]; + if (!ControlType) { + throw new Error('Could not find control by type: ' + type); + } + ControlType = new ControlType(settings); + ControlType.type = type; + return ControlType; + } + }; + + var each$24 = $_a5gegtjje5o2pum.each; + var extend$6 = $_a5gegtjje5o2pum.extend; + var extendClass; + var initializing; + var Class = function () { + }; + Class.extend = extendClass = function (prop) { + var self = this; + var _super = self.prototype; + var prototype, name, member; + var Class = function () { + var i, mixins, mixin; + var self = this; + if (!initializing) { + if (self.init) { + self.init.apply(self, arguments); + } + mixins = self.Mixins; + if (mixins) { + i = mixins.length; + while (i--) { + mixin = mixins[i]; + if (mixin.init) { + mixin.init.apply(self, arguments); + } + } + } + } + }; + var dummy = function () { + return this; + }; + var createMethod = function (name, fn) { + return function () { + var self = this; + var tmp = self._super; + var ret; + self._super = _super[name]; + ret = fn.apply(self, arguments); + self._super = tmp; + return ret; + }; + }; + initializing = true; + prototype = new self(); + initializing = false; + if (prop.Mixins) { + each$24(prop.Mixins, function (mixin) { + for (var name_1 in mixin) { + if (name_1 !== 'init') { + prop[name_1] = mixin[name_1]; + } + } + }); + if (_super.Mixins) { + prop.Mixins = _super.Mixins.concat(prop.Mixins); + } + } + if (prop.Methods) { + each$24(prop.Methods.split(','), function (name) { + prop[name] = dummy; + }); + } + if (prop.Properties) { + each$24(prop.Properties.split(','), function (name) { + var fieldName = '_' + name; + prop[name] = function (value) { + var self = this; + if (value !== undefined) { + self[fieldName] = value; + return self; + } + return self[fieldName]; + }; + }); + } + if (prop.Statics) { + each$24(prop.Statics, function (func, name) { + Class[name] = func; + }); + } + if (prop.Defaults && _super.Defaults) { + prop.Defaults = extend$6({}, _super.Defaults, prop.Defaults); + } + for (name in prop) { + member = prop[name]; + if (typeof member === 'function' && _super[name]) { + prototype[name] = createMethod(name, member); + } else { + prototype[name] = member; + } + } + Class.prototype = prototype; + Class.constructor = Class; + Class.extend = extendClass; + return Class; + }; + + var min$1 = Math.min; + var max$1 = Math.max; + var round$2 = Math.round; + var Color = function (value) { + var self = {}; + var r = 0, g = 0, b = 0; + var rgb2hsv = function (r, g, b) { + var h, s, v, d, minRGB, maxRGB; + h = 0; + s = 0; + v = 0; + r = r / 255; + g = g / 255; + b = b / 255; + minRGB = min$1(r, min$1(g, b)); + maxRGB = max$1(r, max$1(g, b)); + if (minRGB === maxRGB) { + v = minRGB; + return { + h: 0, + s: 0, + v: v * 100 + }; + } + d = r === minRGB ? g - b : b === minRGB ? r - g : b - r; + h = r === minRGB ? 3 : b === minRGB ? 1 : 5; + h = 60 * (h - d / (maxRGB - minRGB)); + s = (maxRGB - minRGB) / maxRGB; + v = maxRGB; + return { + h: round$2(h), + s: round$2(s * 100), + v: round$2(v * 100) + }; + }; + var hsvToRgb = function (hue, saturation, brightness) { + var side, chroma, x, match; + hue = (parseInt(hue, 10) || 0) % 360; + saturation = parseInt(saturation, 10) / 100; + brightness = parseInt(brightness, 10) / 100; + saturation = max$1(0, min$1(saturation, 1)); + brightness = max$1(0, min$1(brightness, 1)); + if (saturation === 0) { + r = g = b = round$2(255 * brightness); + return; + } + side = hue / 60; + chroma = brightness * saturation; + x = chroma * (1 - Math.abs(side % 2 - 1)); + match = brightness - chroma; + switch (Math.floor(side)) { + case 0: + r = chroma; + g = x; + b = 0; + break; + case 1: + r = x; + g = chroma; + b = 0; + break; + case 2: + r = 0; + g = chroma; + b = x; + break; + case 3: + r = 0; + g = x; + b = chroma; + break; + case 4: + r = x; + g = 0; + b = chroma; + break; + case 5: + r = chroma; + g = 0; + b = x; + break; + default: + r = g = b = 0; + } + r = round$2(255 * (r + match)); + g = round$2(255 * (g + match)); + b = round$2(255 * (b + match)); + }; + var toHex = function () { + var hex = function (val) { + val = parseInt(val, 10).toString(16); + return val.length > 1 ? val : '0' + val; + }; + return '#' + hex(r) + hex(g) + hex(b); + }; + var toRgb = function () { + return { + r: r, + g: g, + b: b + }; + }; + var toHsv = function () { + return rgb2hsv(r, g, b); + }; + var parse = function (value) { + var matches; + if (typeof value === 'object') { + if ('r' in value) { + r = value.r; + g = value.g; + b = value.b; + } else if ('v' in value) { + hsvToRgb(value.h, value.s, value.v); + } + } else { + if (matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value)) { + r = parseInt(matches[1], 10); + g = parseInt(matches[2], 10); + b = parseInt(matches[3], 10); + } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) { + r = parseInt(matches[1], 16); + g = parseInt(matches[2], 16); + b = parseInt(matches[3], 16); + } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) { + r = parseInt(matches[1] + matches[1], 16); + g = parseInt(matches[2] + matches[2], 16); + b = parseInt(matches[3] + matches[3], 16); + } + } + r = r < 0 ? 0 : r > 255 ? 255 : r; + g = g < 0 ? 0 : g > 255 ? 255 : g; + b = b < 0 ? 0 : b > 255 ? 255 : b; + return self; + }; + if (value) { + parse(value); + } + self.toRgb = toRgb; + self.toHsv = toHsv; + self.toHex = toHex; + self.parse = parse; + return self; + }; + + var serialize = function (o, quote) { + var i, v, t, name; + quote = quote || '"'; + if (o === null) { + return 'null'; + } + t = typeof o; + if (t === 'string') { + v = '\bb\tt\nn\ff\rr""\'\'\\\\'; + return quote + o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function (a, b) { + if (quote === '"' && a === '\'') { + return a; + } + i = v.indexOf(b); + if (i + 1) { + return '\\' + v.charAt(i + 1); + } + a = b.charCodeAt().toString(16); + return '\\u' + '0000'.substring(a.length) + a; + }) + quote; + } + if (t === 'object') { + if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') { + for (i = 0, v = '['; i < o.length; i++) { + v += (i > 0 ? ',' : '') + serialize(o[i], quote); + } + return v + ']'; + } + v = '{'; + for (name in o) { + if (o.hasOwnProperty(name)) { + v += typeof o[name] !== 'function' ? (v.length > 1 ? ',' + quote : quote) + name + quote + ':' + serialize(o[name], quote) : ''; + } + } + return v + '}'; + } + return '' + o; + }; + var $_6tjbfu7fje5o2r61 = { + serialize: serialize, + parse: function (text) { + try { + return JSON.parse(text); + } catch (ex) { + } + } + }; + + var $_3nz9gz7gje5o2r63 = { + callbacks: {}, + count: 0, + send: function (settings) { + var self = this, dom = DOMUtils.DOM, count = settings.count !== undefined ? settings.count : self.count; + var id = 'tinymce_jsonp_' + count; + self.callbacks[count] = function (json) { + dom.remove(id); + delete self.callbacks[count]; + settings.callback(json); + }; + dom.add(dom.doc.body, 'script', { + id: id, + src: settings.url, + type: 'text/javascript' + }); + self.count++; + } + }; + + var XHR = { + send: function (settings) { + var xhr, count = 0; + var ready = function () { + if (!settings.async || xhr.readyState === 4 || count++ > 10000) { + if (settings.success && count < 10000 && xhr.status === 200) { + settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings); + } else if (settings.error) { + settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings); + } + xhr = null; + } else { + setTimeout(ready, 10); + } + }; + settings.scope = settings.scope || this; + settings.success_scope = settings.success_scope || settings.scope; + settings.error_scope = settings.error_scope || settings.scope; + settings.async = settings.async === false ? false : true; + settings.data = settings.data || ''; + XHR.fire('beforeInitialize', { settings: settings }); + xhr = new XMLHttpRequest(); + if (xhr) { + if (xhr.overrideMimeType) { + xhr.overrideMimeType(settings.content_type); + } + xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async); + if (settings.crossDomain) { + xhr.withCredentials = true; + } + if (settings.content_type) { + xhr.setRequestHeader('Content-Type', settings.content_type); + } + if (settings.requestheaders) { + $_a5gegtjje5o2pum.each(settings.requestheaders, function (header) { + xhr.setRequestHeader(header.key, header.value); + }); + } + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + xhr = XHR.fire('beforeSend', { + xhr: xhr, + settings: settings + }).xhr; + xhr.send(settings.data); + if (!settings.async) { + return ready(); + } + setTimeout(ready, 10); + } + } + }; + $_a5gegtjje5o2pum.extend(XHR, $_8mfz0u44je5o2qmp); + + var extend$7 = $_a5gegtjje5o2pum.extend; + var JSONRequest = function (settings) { + this.settings = extend$7({}, settings); + this.count = 0; + }; + JSONRequest.sendRPC = function (o) { + return new JSONRequest().send(o); + }; + JSONRequest.prototype = { + send: function (args) { + var ecb = args.error, scb = args.success; + args = extend$7(this.settings, args); + args.success = function (c, x) { + c = $_6tjbfu7fje5o2r61.parse(c); + if (typeof c === 'undefined') { + c = { error: 'JSON Parse error.' }; + } + if (c.error) { + ecb.call(args.error_scope || args.scope, c.error, x); + } else { + scb.call(args.success_scope || args.scope, c.result); + } + }; + args.error = function (ty, x) { + if (ecb) { + ecb.call(args.error_scope || args.scope, ty, x); + } + }; + args.data = $_6tjbfu7fje5o2r61.serialize({ + id: args.id || 'c' + this.count++, + method: args.method, + params: args.params + }); + args.content_type = 'application/json'; + XHR.send(args); + } + }; + + var localStorage = window.localStorage; + + var tinymce = EditorManager$1; + var publicApi = { + geom: { Rect: $_2r1euc7bje5o2r5k }, + util: { + Promise: promiseObj, + Delay: $_db41wogje5o2ps3, + Tools: $_a5gegtjje5o2pum, + VK: $_99mhlk59je5o2qss, + URI: URI, + Class: Class, + EventDispatcher: Dispatcher, + Observable: $_8mfz0u44je5o2qmp, + I18n: $_34fkt779je5o2r5d, + XHR: XHR, + JSON: $_6tjbfu7fje5o2r61, + JSONRequest: JSONRequest, + JSONP: $_3nz9gz7gje5o2r63, + LocalStorage: localStorage, + Color: Color + }, + dom: { + EventUtils: EventUtils, + Sizzle: Sizzle, + DomQuery: DomQuery, + TreeWalker: TreeWalker, + DOMUtils: DOMUtils, + ScriptLoader: ScriptLoader, + RangeUtils: RangeUtils$1, + Serializer: DomSerializer$1, + ControlSelection: ControlSelection, + BookmarkManager: BookmarkManager$1, + Selection: Selection$1, + Event: EventUtils.Event + }, + html: { + Styles: Styles, + Entities: $_fzh4ld1rje5o2q0t, + Node: Node$2, + Schema: Schema, + SaxParser: SaxParser$1, + DomParser: DomParser, + Writer: Writer, + Serializer: HtmlSerializer + }, + ui: { Factory: $_cxa5dr7cje5o2r5q }, + Env: $_9bd8pn9je5o2pp2, + AddOnManager: AddOnManager, + Formatter: Formatter, + UndoManager: UndoManager, + EditorCommands: EditorCommands, + WindowManager: WindowManager, + NotificationManager: NotificationManager, + EditorObservable: EditorObservable$1, + Shortcuts: Shortcuts, + Editor: Editor, + FocusManager: $_97d4iv77je5o2r4x, + EditorManager: EditorManager$1, + DOM: DOMUtils.DOM, + ScriptLoader: ScriptLoader.ScriptLoader, + PluginManager: AddOnManager.PluginManager, + ThemeManager: AddOnManager.ThemeManager, + trim: $_a5gegtjje5o2pum.trim, + isArray: $_a5gegtjje5o2pum.isArray, + is: $_a5gegtjje5o2pum.is, + toArray: $_a5gegtjje5o2pum.toArray, + makeMap: $_a5gegtjje5o2pum.makeMap, + each: $_a5gegtjje5o2pum.each, + map: $_a5gegtjje5o2pum.map, + grep: $_a5gegtjje5o2pum.grep, + inArray: $_a5gegtjje5o2pum.inArray, + extend: $_a5gegtjje5o2pum.extend, + create: $_a5gegtjje5o2pum.create, + walk: $_a5gegtjje5o2pum.walk, + createNS: $_a5gegtjje5o2pum.createNS, + resolve: $_a5gegtjje5o2pum.resolve, + explode: $_a5gegtjje5o2pum.explode, + _addCacheSuffix: $_a5gegtjje5o2pum._addCacheSuffix, + isOpera: $_9bd8pn9je5o2pp2.opera, + isWebKit: $_9bd8pn9je5o2pp2.webkit, + isIE: $_9bd8pn9je5o2pp2.ie, + isGecko: $_9bd8pn9je5o2pp2.gecko, + isMac: $_9bd8pn9je5o2pp2.mac + }; + tinymce = $_a5gegtjje5o2pum.extend(tinymce, publicApi); + var Tinymce = tinymce; + + var exportToModuleLoaders = function (tinymce) { + if (typeof module === 'object') { + try { + module.exports = tinymce; + } catch (_) { + } + } + }; + var exportToWindowGlobal = function (tinymce) { + window.tinymce = tinymce; + window.tinyMCE = tinymce; + }; + exportToWindowGlobal(Tinymce); + exportToModuleLoaders(Tinymce); + +}()); +})(); diff --git a/public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js.gz b/public/assets/tinymce/tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..0b7c0d0bf67407d1b5d5d741c9409b86e962ef93 GIT binary patch literal 187339 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ó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 literal 0 HcmV?d00001 diff --git a/public/assets/tinymce/tinymce.js b/public/assets/tinymce/tinymce.js index 60db7d616..886dad533 120000 --- a/public/assets/tinymce/tinymce.js +++ b/public/assets/tinymce/tinymce.js @@ -1 +1 @@ -tinymce-6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de.js \ No newline at end of file +tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js \ No newline at end of file diff --git a/public/assets/tinymce/tinymce.js.gz b/public/assets/tinymce/tinymce.js.gz index 4b00c6166..03e05c8db 120000 --- a/public/assets/tinymce/tinymce.js.gz +++ b/public/assets/tinymce/tinymce.js.gz @@ -1 +1 @@ -tinymce-6d51d4088b49d16577b3895008cd8e440cd60ca49f7ad49c4d1f1cc216a586de.js.gz \ No newline at end of file +tinymce-a15c14db78da5c69119e5d9cd4b3690230e792c04888900b081b11f54e30257a.js.gz \ No newline at end of file -- GitLab