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
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
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}}">&#9679;</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}}">&#9679;</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}}">&#9679;</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}}">&#9679;</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, '&amp;').replace(/\s/g,' ').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+	    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('&nbsp;&nbsp;'),
+                        $('<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 = {
+    '"': '&quot;',
+    '\'': '&#39;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '&': '&amp;',
+    '`': '&#96;'
+  };
+  reverseEntities = {
+    '&lt;': '<',
+    '&gt;': '>',
+    '&amp;': '&',
+    '&quot;': '"',
+    '&apos;': '\''
+  };
+  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 = '&#xFEFF;';
+    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(/^&nbsp;/, ' ');
+        } else if (!hasSiblingText('previousSibling')) {
+          html = html.replace(/^ /, '&nbsp;');
+        }
+        if (offset < container.length) {
+          html = html.replace(/&nbsp;(<br>|)$/, ' ');
+        } else if (!hasSiblingText('nextSibling')) {
+          html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+        }
+      }
+      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">&#xFEFF;&#x200B;</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', {}, '&nbsp;');
+    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 + ' &times; ' + 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 + ' &times; ' + 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[^>]*>(&nbsp;|&#160;|\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 &shy; so use xml friendly encoded version. See issue #277
+      style = ['&#173;','<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 = '&#x2212;'
+		// The text set on the 'zoom out' button.
+		zoomOutText: '&#x2212;',
+
+		// @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 &copy; 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 = '&#215;';
+
+			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 "&commat;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: '&copy; <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: '&copy; <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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

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 = {
+    '"': '&quot;',
+    '\'': '&#39;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '&': '&amp;',
+    '`': '&#96;'
+  };
+  reverseEntities = {
+    '&lt;': '<',
+    '&gt;': '>',
+    '&amp;': '&',
+    '&quot;': '"',
+    '&apos;': '\''
+  };
+  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 = '&#xFEFF;';
+    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(/^&nbsp;/, ' ');
+        } else if (!hasSiblingText('previousSibling')) {
+          html = html.replace(/^ /, '&nbsp;');
+        }
+        if (offset < container.length) {
+          html = html.replace(/&nbsp;(<br>|)$/, ' ');
+        } else if (!hasSiblingText('nextSibling')) {
+          html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+        }
+      }
+      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">&#xFEFF;&#x200B;</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', {}, '&nbsp;');
+    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 + ' &times; ' + 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 + ' &times; ' + 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[^>]*>(&nbsp;|&#160;|\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
zcmV+>2HE)^iwFS6YM5FA1BF*@kJ~m3{=Q#v5r$N1R3+_4XR1-O#ZX{Hw-v*HrD>tF
zl|(m1_GCG|Tay1iQhrICTsz<n)(b_E4<C}sXjQu`n8H!E-zk5idEky4?zxhS<=jhB
zyIik~(>WQ*@KEYvb+fj`t+HwJNxmAF7hk!NUflgwYyU7uMVUO)>~*NUyYV6z_pr_M
zac;!Qb+ePCZj7+J<`rMburU=cB_VUOqNA0t+O5Newc1v3Rd>^jvK0QsS_isX%$CCB
zEOE89^OeY|ijtkF%&oB|JP=McCeO7aEZUmO3lswQ&b^$?-QhqB%D9uG8RILVRkoqM
zFaXuaD_%$g7ji4LD4cO7%nLY*YqF4N)|(ISMeWQ#wSJdV#&~CH!9Y$$k<4oq^xNEo
z!qb9l#)By9YC{#{3e-}9iV438nUjw@Nf@`|@nqtq3@v!$F(p;-#;u9$!s%d9%V*D}
zluke}_5FtxC4#UN;Y-joudBlDG<7g4t;#f=eiEO)PJW!?Er`!R3Ri?GOZ!0e;Q(7a
zFm}X0ZW;{3$qS$y+XpxdH+u>)M+|JwmBS$%4kL=lR+%?t_)>ez7+M=r)c^#M22khP
zR(c=gb6!g;s`|EZl+L&nR#o9$=h_rae)fC>QYUw}2Iv4t0N<K1?@f@+=>6-rzk2-+
zVsJR@Z&jreplQ8Ynfs(XUg}%_Ys#pv0>iCx>sqbB7XqXMme>gZm`+8|RiKuoWK0s0
z5;h@sl?=Yt<E-$y88uf(GSOA0N=-|U8i$SE>gu$pMO=XkwgtfGP}R7!_1d_BRJ#On
zQKB;pWoWa?duPA={1<TZd@A=<P(CDA>2jXI$b^qEQoj@mY!O@K|9(?AO>qZt`{Va_
zA{4J~fh~0atAH5uKnWUCP06I15OG(5C9u}`35%_R6EcloGAX|=b)~E&UJrq&N=Oq5
zX~NFA=-3|f0XAAW(BVK|GaFtzl(@VRnaqLI=V%=v31Z3F$-Kzwt#+YHd#iB<*%_h3
z$|Nv9B?<aIOz+fAwL5$VwZH<j5(jWNe}Je2oo&E?vto*#NGM=UeHMBL>iG*y8;CQW
zhl1|n9pmw6nibp9>Yxv}qw|)UI}!DNMEzK(FoJop6>m`)j$(*&NVy<i@IFHu9pmxE
z0@MNgZzG{DO8|`}0^F;7CN1v)x-IettR{fv>y5EF-LYfW1CFTeKEM{mLFpHeNK3wN
zGdH<xEn(iA9F2ep223QaB-GX$kAat6WyXC5861R;CHcK_kSS10QG!7vV;~Fp-DDtM
zZ;PFVVk-e=Y-krfB)X30oK!ThIgk&FEFMBUcsv6AHwR{v$_X&F=@2|OyVH!YZ|m(G
z3gFPGet#(yl-$r(@XLFTP|`24gLW5NGL~oT3?r!-&{tVYO&`_%P{35eV`ffGZ-Z+=
zHKNktb>RYXUc-g4c;A3#({`$tGl<5?c+<9Y*7bXb%bf<WS6$f~WNiPfyhb`=#QU=T
zNVIu4@?xOqL>D~YHPJI2a1i=#($NSRY~>zbI1!IU%wK$Qgsp|oPFdjR8A`q}78t+q
zONs9y_(BJ3&H-=yyj?um)rQvh;TRRv_sC>z>xDO*U&j=x7z%|EknjXw44emU*#Ld_
z%mZK!?{x@Qgu&)XC-*S}EIiP7CHwUja9XE6@k0MYXN>(1>Fq?iv`&X1JyG>1nkHoN
znJk}@!;{75C(EZ#4)7r_m+a}w=^6=~49@N=wbRLHc4SHCh=F@}g&Ad!r)S85G<5|6
zQ^IvP8U)96K--0DgX5Mwlf5*)nda^KReW3%pBC`~DsmcQkY2yR0;b<}D6Vkpatd&B
z5Y&rA%F-|~0}zwpbP^B&-(upv7hK1ZU19Q@S<;K2Z4WSPYaAzS#Qrp4bDF)f$a}pl
z;Z3^a*S-wFy#}-Y`Owyy_^ZI3yomFmWmc#Vd{h}nydTNOGB0YV&lrpug<TSowbsxk
zv1LMvWqpb@7qkXsypH+hAIY!mvHbF#g`I+{IMk4VF}W(4LE(enLW)8XcU>=CeS_@-
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&amp;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>"],[/&nbsp;/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>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+n.join("|")+")[^>]*>)(?:<br>&nbsp;[\\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:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{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
zcmV(pK=8jGiwFS6YM5FA1H8Qnd)wBP0Qy%bOez84B`rDW1{&t`mfDTCdTEl%sy~Rl
z5>bNy1Avwkk@MT%S?&sevYgI)ory)<eLeT=XYXuX%$lq$!st3!*K$xdRW@sa$>+2h
zG(w6(WTFzKsFNluu9h=7UN>1jepi-xJ+5S3=AUI4=)89exs)%`B0ZN?5Q+3wm7Wxz
zp=^Guvh#8|e*Egidni&vrS+{UQQl*jr&myAmY69w(RC%8byW-+s5D>CWN7n*G`SC|
zD!m$KHT?}`G;PMSvY4e!ID@Y!HlH%uisKXbXP#W2<!RH%BA#u<S>iW)R#qXdZ;>2M
zihFXL%i_FQOp4(!y2kV@2@i!lE>0pC;v_o@vq+63+o~VMI?uOak@SuCI-AFhsN}4P
z<#sEUJrlmZghA)>tPxl6qbXP70{&iP^JXCy@M|Hn^F;%d&-*H4MJRMBpd$Re5>ycz
z5L^*k5S99MImC?9vT4dCmWIy-w7l|K#%aqW$Gsh&%jTb%ym(z!O&Cp_0bdR!bb3XN
zNbHuojJd(jJq<S4*u!#N%(LSBQJ%@7c?0WWnjNe{Xj$r|kZLJjq|IWyOfN&&S*r9C
ztxPj6&(3PeUlDZNDfg77Zwm5fw1pFK)w@-L&va%^`_AO&kVgNgEZ`V54=S1B&onD!
z6-Jwln%ev-jG%?f-pSW8mz4OWWsuWVxTLep2kWALv?j5zhd6^noY_O1!6AkdE0432
z@d_?g2KPe3nDhx=a8@=KS79L_ed3<zt@!x0JvVO8I;(=L$_}d1gQ~ni!9cumRd!sI
z)f(EH+XEZQ17P#$h6`#2Lbvo&-w}8Nhie5jd$JzE>43pDc0P2>p7b?ilI(g)=WJy4
zqcYFaRW0XXG{wor3+VI`&jXC?>6dqec0*K2F|KFu0;G7{-pR}6VP4KYJ;~usD4H5h
z8*Wd}uEEv>?;bpS{v=3}1ebnXlymtqUCPMWfg5Ujbp}~6s7ytAF|zu}a@Ab%j!$8$
zVRD5!?5$0H>n&h2KFccD+_#^y;(3|Q<vf5ze$oGgaM6bn#wp*(VlJ!q&#?Hr+r5JG
ztSKw|cK&qBooudFvOI(94oe5)f8AHjf4~4BiI;uFehLG8{)_V<qC&5B6e`xsQye1|
zdc331DNIwQg(~%6M=71Eiakt1NGwnP14k3q;B_RPw@x2kV+&694kyi`DlZ0wycj&G
zDmWp*V|kXY^Jefl&DU};FJ)aEG=pW@%oc-6{<@ZRBj>biW89tJZeC|ZfcSt{30|58
z_UpXXhvs>h0Sprbow@z}Camz)p5ni82D|YrxrVFomKOC@75^5#j0Az=GN;eS^!bw3
zlM-H0!qc>v=PKm^rQo4CO{-^(T-J~rHpxTLJ4i&;L@IJXjc8PM%v1Z5hS!=ynPlQ&
zSS4#1e*7}5qNzR%aIol%g=qq*VV>MM9*C1WA|2POJZr){f}@`|@GSLS3%;uN54UjP
z()cm99M(xG_Kx7lR@38?xQ^lyf!7bWx+v!oZuA>IAph)#uY~&mge~g~^9aDc?=On4
z|0O;BZG7TauL2{&yvS;a6R4a~<%}w4<BMSk|J<wKM=`#b!r%B1@q}!=z?=o-EFfnA
zISa_y>MbafA7BZK`9nCHZvanivd{9h8hltm*EyXsC^gH|<q96C95xJ>@dsF+p7JH)
z-tXaO4Qmvp@Eye=*3ST$sA_!sa{&-=8s4I78AV^)6{i$7h0%)tw3gJIl3&B)U{;N0
zc_4yWKAKg*i8u~UXQO5YDX00U!JN}-)L;(R-HLB+YOa}$PN}kLq{&C8xzkuvjZQ1m
zsJM0ax}+V(FP(#;?xNaW3*_`o8Z=Y5X-#-7`EA709G?SF7c-0PsYF=BRa(egeP-~?
zizQs52mp-ux&I|H6}IB<eI=faJ0Jyy9vGD1W5am?u0om5VbWQX<{7TW2LAhXoy|Vw
zS@8*eFYe+$-_bh3Yya!IY-E5m(BHnI=d7q@)wtbK7ugaXL)~AKp61;0k2_m7fRh`A
zAxhooM-2@=F1S!2eulRG)kT~&%}WTh5AVxy4Vb{kb(K#66#*hEu_+=0Tw}Jz{d}0#
z^8K4<KutV21?aT~WD_?ml&Uyf<#*##D)f99+`**!P9Ws87|OU9204-q=M~bcTk(&c
z*%Iuu!=pyGqG?(%j)}~FK|PTr4y8}&ILS$tNSK6^Rg6E@2H8pW4#itMfmsLx0RYlO
z06}0C;Vk?n=Tjg=;$jT-0!$46K5i%ffZnE1J`S0htDCD_zFkP!P@B~_hd*JVrafN5
zf3vy{;L-@9qw)AZdi!>~TGtCIrqaf|ou&d(J+irR_o(KjK5k|c=VL{ihsWh+b9^FT
zUmDnwAX}cpIPfnWyDAA_p63M;hXeXGlL$WfH<7o2xVC6~&!LnG{e<m6NC9|%CNezs
zakY)`C>On3rg<)U#B~C28rI&U=UxK78{)>6)Cr`#PAfvR0TNfqCj=+3Wq=)v<BKpm
zK0JZ_5l`SDg*Ab<^C`Uh>f*uI#}J=4AbR%qi!r{R(?S95toZ@~;GQRBq%6zNa=zIh
zgcJHkjMEvu9Euj$gNNTCU!iP~$Oexo+^V9X)rt^bS(F#>ks+m%(WoE;p6W%0Q%B;Y
zx^ex)ELo2cL2Q~_hFL>J1U$)eHyzKl;ESM(co)LV2*y$TP*zJMzv1X_si`yC8&O03
z)`~PZCwLwuPN{?!d?NSv5uwqL2ofbuP14k$Jy<@xOsDy}8sHoUuLu)<BWt*BZ<`c$
zO7QIQvS85}0A+x}GyRQ3&?5kF=W?(t*R@=)0x{Q_+zt~OgHQ4bGiQG0Pk;)P7lAm7
z1Yh4%NC;E9O2m4AS7KHHxkyF0Ca+K6PM_<piyLc8wX(F54Q_VT%+^gkPUrJ5c#t>4
zAC3+M{0A=p&if3`QVn;e+;JeA#wC@_QJ7R}Q*nzKhS{#v2!f?-(%~n#2Ss}vDhG$q
zx4#AM?-^iZ$8fXky9hT4cRS-FT)6uzh#?e-YdF63uBj+!H!XSW9&Bk-JkVZ9k6j}N
z4KiQ{WszSE>h)>`GpPsM6r6`SQ#@&NBgtb20RzmN<hm%!RqSK~)GE{JJic8cAzss2
zxr9USg2;YAVk*gTx?1H|A%Y+Qoe>bJBW|mxo3v=+6mIPtlC$QjZ!CcP0R6Jc<&$66
zX<qmD-M~94q0Mzw`Hg5!5?o$bXeOM^I227YIzpuUXj0s3=MXPf9v7pdlf>i!)ivo(
z*)oH7cZ6pb`5uMK_b84txAE*`qN!BHjV=rWt8rJe!bL2~=2rW+*Ys}$G%?TQ7n<lf
zsBrqQx!(Ok9AlQ|xqsL(wUD1>1^XTD!HTE(MS4}!7m!e5-6VN4rV?UCzqx>zH%a$o
zox!O%YZ7>yVBz!mjzfWcW_7%V16IE+my&<IEDIUK{e_1MNboG_KXa7(Zm}*t#YM7f
znpEg<YXLjUwb=v`f5ih`et_#E=WxLX1&oHSGvsIRkLpq^(^Wig1ph13*}}iN2$3;I
zizl$qWmY#dTR4lj{xC--=qZ<PkL;&3cvWypT<&8m1z^2+isR1eAD_ULESVb;=Y*fp
zO~z*n8^PJ|i#I;2r2Gv4sP_p-G@>wz9;`3v17D)(Nv^goF6?kbi2>C)7cN;@P?5|5
zB^^Mb&dbc4m$g1G(mff{o&bp(ShO~<r-Mbqj4!-FaW6*~2OiFyC$Oh7Zj^T>pbXEP
z4n}6qh1AC))2AZShhoR#O(Cbz=b(RthzL7JrFW6lJl4JQ;CqU**nP+v_mp+AgBtcH
z42I1xh=Q%*z`&_k!c&Kt@dB_++&Wy!s$BNLDujkefo(Rp@9SbN&)|ujPtO{t&2a9#
zLBx<buPeYbOX4`fBFoEHXOUm44+wqamw($2qRKHs0xls|JFtjzZsPvvXe&N9JB5&%
zMF;o7K0yW25GX_`NP5D2ucSGyP9_=rlSn{bD@0|CWKvx1?&1*IHcb2CUdHcZ*uax0
zPznUc@5|#G!ApA|MW&;XU-xo%U7+sZ>4d3Rk-@!+o=-C)csOw~$OJ{&hv?4I%nQis
zi?5s)v#9m(v?O8)7%m<?`zk|9p@8SdujpbpELi4IoFL3Gk`C1@ZuXm|bMSCl;*k$I
zEsg`rw4*0vxbJmNas68Ve#Ik+q7EM(DrrJ{fHdzQ7y>yzxJYYwyMUlB1}Qcx06$%=
zn;5czLVBa|4R}VdS-lMaT0edL8tokdrP<w!y`za1A8f^w?poDAR7vp^-~qzo&*~Yy
z;=fgV+K3g9V$52;@!-KfaEXW)p(T;`N_(GbzE5ykYPw56a%T}Az*^7zdX?5Syb5P&
zmXk<90pUw{SE_QodUzFg1SE&V98##GetIW%Y`7waCy^c?{8PdxYdgyFUOg%GC{q|^
zc_MPCmPV5tR<zjP4>KMozR1u3;=zDfa$0J3?T`q4ZWM_jT?K%J0)%lN!%D#|bD&{5
z#njxE*xn>q4R|Z6cn2H!v}wssaq0vzV7y#6-&ObO3w80e{3@uRWJq`xCj=p?Uhq(v
z#dE*|_Vx@HEWWUq+oOix?7kKJ?5*J7QKJ@%9`a8H<?DSlF1YTPQ5izYnS8I~l|l!1
zpv`K^2$jsHfAZJSSz*GMU^VbHuMmB&eRP;1)00NObca@3VXVrBKzzgS2ywdk1@MK&
zi8R~6mp#lxHiY#m^bvKy|2#W8la(xHJIL3|rdLA0w`vfG5wZec<Xy?A?9OpsZ*TKb
z6~~O&zzfB1aOMtmwXXVTGD3;!vTAzIO5X|>V=RswL};}_cG4}@m#I=-L0C~oe_|^Z
zGM)D!QZA_Kx#9$;wjxjK=6BV$sKW{3WN#Z-;THhcvw06@xSYxL$6)xj84lr4Rnq6_
zGIU_Q6T{WyQi`jI%35k*iuEm<2Mui3X$|KK*0L>79TZb!DHgJN`tHT^q=?^)@r3~}
z<Le+GQ|}$rKoAPAqb%l+78&5k1dK90)*q_$9EZ`jP&^*L9HHXpsLg~dzqi?Mvb!dO
z9*r!j<QKQRcLZ%al&<vR?bgYXiBYJ^SQ!m@uEb~`WvrvsQo$<R8mxPURan_<q<?hu
zv1DFLQjl^Q6Gh?|)0$_j+$ObZTd}1DcwO!QpJv6N1ZHeDFN_|SQr_YvGzmS+?yyX!
z&hOY9ywh@iMXl(4*}d!T=BX|3D{PvEe0887UOl5jCer!*QI2@X4Kvnd6ivd6)i2g^
zim8f=wEki(T}D-D%JcKQr!VKR;d)NNP)l!TU#e820>@P@O$}I}H|wIwmXgxHa13l+
zVpp|LMwS+Pb%<xKv!KG++0ElqTy{M=)Iz$s0_iE~;tYP8W&2Gxb4Sp`>%0~3n%gVs
zmdk&vWrZ5IKQ*^koTI%#&7ZHR^W-y})yG-ALKPp<oqE~BAtK16uq~~@<jCW%NtYEV
z`a{9`twv>4YqD<R5K+-kCSik!11Y}*gCL4Du03szk51sBzKj2ShyNU&#CH+TnT9I$
z@I<IAc#`7pFb}Y4n<Qu;Kws4I8Nz6+aC8{quy`0w){)6lLv`}*nmn3~lk=U<LCoY;
zhp19t17f@I6Hk?Y$jh_|U7n1l&dUopLXS20n6vs7f*f3O^JW$d1eZYT$+^B1$VV}c
zW;TVTMci(cr+|{(Ieswu*U6pp9^5Jz0kMd0AHmtGT*<1r`X}mpSshk`lp=2*21Z>T
z%abh@F<sU#)0Z&D=^?;%1@CeFVSdBlUAdx{0S*)|J*B?EpE_NwJ7qki-#Uj@ozkDf
zFO|C8PR#l~Zjc{qJ|8s90?z93EUyu((!a+a0ewXDkP^ybM&dm@sgD~@TUGKbyG(*$
z3kbv|&<6AHL1XDzaSgD!m*c*_zsJ2O1V2O;Na%G8xFc!-m^8xfnurrV@>t+Sqi+rM
zy}t0;wffMw{pT{94-Sbim4HIZd!`pnJ?I43Hy|aOi3ALDVoKo+go7f*Q6%Ovmn8r4
z$KD#JITbWoehzw(;`WdYD!a!QwwO{0B|dDTm_AWpxN~g`71cv4?6t?e6{^0A9JJ<0
z2i`vw3X_K<IBSt`Pr+F8MB9oW&BSbxYBO?H$s|r1IA9aYGV0kc+8%lT5YNysLC7fJ
zuX99)&VCx%)RyE{4;%5k5x+I!S(DuPcX<5a;=_k;PlnMnoW}n{pQ8^S;F}UYjJd#v
zu}L}p@c&FX5t87?zdwBQ;oH6cJ((tvN&axcW#e#+)$U~C2k0!sB>w04-(hqz{19#U
zM}$8=98>eh|AsD3PQLwcvN=8oPLBT#|9p$THk<>$u>8pe1_eoj`@{bgA!J~`!_6^#
zo<!k?`db12!6=~3@#aId`A|gPMgZgfiL-{R4gB{Fe7|p!pBjCcuTi_Ehc>3wB*oT=
z1GWLG8bw8$UK4mR3{K0qt;6<hHQS${X~^^PLRODbBDT96`QY1t`QUKA;E=Hrau}A$
zGaS8~g^hvd|7=76Z)Jq9TqJgP+bcQvSfoqcdI^u)jV(B@^EmKF-Q_AHJ9$FPLW$ay
zbuHbCPpr)@*ANHsU3(CWYV}UVs1Rpxx2O0Ikg0H;jQK^71cWA3$m@!OZ}q1Z7{D8K
zKRJwp|5X`?cMPi`-Z4`oP#o5Pi|*+*_Nd8!t52kv-Dcz98_wC^ug3NI6ll~?^Xx`i
z;2hDg_Vx;z`S&NHJpLp8^QZ1c(CWI#R)}|O8W&{)w+t@chbY?M-#eK)A#^0BVUc8v
z(;z#s2S!R(qKZ)Ynedyo{<GG$%&NMfQ%Q4$sU!P<6AJh@8y&@g1e{SN{Q(d(SgvwD
zcM^_ZvJ$pwe_zsO0j>lS|1(Y(Zcr`P^D^1n!xZ?QXQ<baRHCr&d1hY|rIQVB`ea_>
z`S?NI4Y&>h6>uA~5C}OFJX#`Ef(XJ1`NUsWlr=d8GXB$cd$Gs>hbq~sqT1ij!U~xT
z4dM<pfam&Ns*iXLa5=aSCn8CYYnW4`wCh6rg!LAXnNTJ&N*q3$e(mL!-!xW0E2|p!
zicQ@J{=_#aVUaevn2EVK6AQ7V@iLPX@x9Ha)pXS1oMMG#(uf7|$6&?6nmC6B?;gR`
zM9EM!8j%UmI;oMdzMRl?T&oSEtXVQo!n0&KUXij~2-gSo@j`>dPiCXh{{GqV3^5L9
zfrgtx&v~-eMbdluBxOm@-ugH_370rM*r7DZhev9IGE|sPl03Rz42L!iZ+JO6iYQ^S
zbVh=?$UH5Lal=+ao({v=QFde|erpje;4fX)Rb{t>R*=t*&-}0M)hwdml|&JR;Q7z`
z=0C&vuLbIV@0fq#FoZ`(QzZsiNAa51et*9V*LoXptiz*dLM$3+Vy14FT9e7HI)LvG
z>xq(h?0}<)!pI*0T`34bDRn8RSOFq}Y|rBU5y~|BrDH-dIW1!rUkp?lMRTI@N5ItN
z>=UUxYVId0x0&?hNLxM?UJDAHLp>f_*z!z~gQ_3thw#FN51ZtDGe%o2Rssc3BrhNf
zb;1GJ`*nxV?>{>PT$A6L<eJA5!)0uv7>&Zd8K)&4P~2;xX3dJGziR0n))a^p4>D5m
zm?4q<yqVe-$4Y<?7cc&`v3RR!G`?KRrtiShNf*vq5;)PK2iS3qg-csR0wlq$H!E(@
z&tltAYv^baE8$s(ecJ$4Pa^a8q`O-6sg*R0prM&(6r)BgpGsPY*1^ORg6S|icnC^9
zN|_}+prhxgPzp<f``5!ZR7L*dZG)>lC*-d^n@AEiwK*&f(FBe962k`WWLtH_Jp{zJ
z_V;h6h6WVZo6nR=k1)^`PJ3&Gz*#L4QH1uf>X9O~7pB#*6(jZY9ewib`0zw^eR$G?
zDWV=m<tj?rm(UDx&(->1nu`|BwWTZw>%f2M%+O+z@s8>`;>>BmNF>wHur+`|^pFU4
z#`YMfT|KhufnOMiRsj@dKwV1TZdl`OSc8y`h7Rp$ecy>khWBun?e*yn4K<d``YY(P
zli_^ph72XYMMkGO(1=T-HtnE1I~$-TFKcD93}yf{E&V+ui_bxNhPDAf=jP=_;BW^$
zT=usH87eIbynmZ+-W`OjgJS3Yz+XKFRQDes`81ekHQLb32ds=gU~B=t)!Q@poYff=
z7%)bnEhy6_z3qIYzutHu6z@0!^4=k7e*-Y#J!Z-ChWG&AH1JFO;xllWZ9vkiL<`-v
zlV9}De(fi`^S?CVbz73>+Ddx86v*yIW5_X0+?waHiHqXL1j9^t8$q?;vCy@QYQ8Qn
z(MB#r>*$ZjsYipIh|D9L1k%8vYI6zCOnK#Lo7<~ZdH1SPv`M5@FI?qY6lS$XL1R0Y
z<fsD9IW73lU%_dAby~~nGudH97Q_5|<EeydY32RHEw=x+M*P@_e|h|j7uh8;!j6A#
zPDDR%Lln#w#8XaO`Ri?jFc9BH2c`I>A?CR}fwkm)=0^xwymV;r@Fq<gneb?o#1w?p
zB-M;Ty9Z=TyUhcoCbX5Z#Rhnv$m+I<`1wQw0aj%4KwgVIz&N@!SU^P9QSI70Bu2VX
zIaI$an+`v)h#u0O8PaCcN$Xa7<G40q{)IYZdlqlEJP@Ydy4;hJ)vTn)F+rT1j>l&6
zcRY1|-)6ZoWN)+XQhz&>47J^WAaYh13uE&B{*F3^iXy@oZk)T(i3A+-x&d$tCxbQ>
zL1f$ry2YrKo6m{w8CQz)&gT8*J~d>q*3LjXHvL5I5VX3ZAhe^m5Y17S+_p7+OgRGs
z^}*Z<1wdj?5#J0`gBJqH|7b|AAd`-SKzk6;v?<*S-XNfC^7N`)6Vp%qL_Kga4G#7C
zPyPYda{MuypTNSK-*9Nf-;kF1TZ2-C^;j9?KPWOllcDb)D%gdv&7l^2R%lVM<`Ik>
z39x_Q>jU^q0}DWKEvU%v0=j9~-$zjrKE^P5n&?(|;&Zki>k2HeQ5x+2zM>aQ3RIB&
zittl{t8dB@IST8{%J$iYu8`yi;JwXwEb}JqS#l|r&mXzJAK=8Y8S-sf;$$fTZA2EJ
zTv>}PJmmv6c^b3D6-uE-#rRTGCh1+df|RRCO9Kt9+Qk(bDE4Tg)!rm}MJHNvj1PP0
z*r=|vk4BLp0z`Hq`<E;!=<2xLNVu%ULRQ%gog1E&+Z3%P>{=$1pe)ED?qVTj9%NSG
z0nPxPs1gaY8usZeEqWba6KeRH1Q#(X2aN*M?|;+eJp{&&&A4h{qq}u>K5&AmJ^PMU
zR#r`?-IFm3C2?^@Et!u7<J-8+%z`IPV#I-{TsBsYF^ELV@H{8zLI$1)rTA1ro0ySS
zS(;qK2?208#y?p3qs*6&0H2hks5bs4d53nHbn}P={uf|c3Vn>>W;2Ev!@6pu6Mr*o
z4FVF~($lP}HuQz5YDTPy-nft;+jY;wjCEGv7*TC>0>h8G7I`6o=QOSbrYeEAi>!ck
z32s#{7|Qz+`{@*ttPNX{x;(yb7VFL$K%_11tx@YX4o*wbk6t5vLeIedeg=E1HW=sO
zSbn+-bOvMA?T5}Ij8*KZ5U3Va!RkFMFO!$J_WX&ZR&bD@l*v)wn6-qbGAm3De<D5!
zB+*<JsGG)Sxm%$m@|mpTfFBTgTmw(*=}EqfI|h{nZLf35nNT;#Q;#wgYhzI_kD4lv
zcd_v3Kv;l-pa{<Pv-$I~{Ip(8P&5XZ1RMgOsNh-v#uhc^0YqDChtYsn`Z+y(Z#<Pw
z^IVAz_nX;P^JHdrLY%>eI=GVte%oDfes4Cf;1-C06VQL1yGibcE~!$esNFQ@w=T#D
z<VBBH6_xtJGxX;%M>Bg?i_7^#c{Zz(bhBA2PjO|E;|D9o!4l6^dIrB#Vy%Sya8JS-
zlGAllvZZk}t>Zmh@(gMgn@t7PvdyL>qGXY<d%9u6>VINMvdGo2(JFoCIIQ&YC)N`D
z(;xr%-5<q@)1E3lKuXlRHq)pI?pPwxcguWyiTW{D@Z$=9T*L+XYC%<kCjBX1@Q<hQ
zQhVk2DK16}{qZ!;MoU(o;&j%eqSP8qwO^<ej8kk}C-LCo9Mf=(l@GZLovFY*!<Dv4
zrC31{%rZX5KTqS8unQR1g5U9<;zM|NaDKIODhZ`V)!FVbZ8JEL`%j$0q;^+HFCC0O
z#4P{RlVSsU!AQrvV0bq8=Tm?RmoBdh0BAbCge|;8fN|Byx`M1L%)%Av<YHpNd8*9Q
zzA{g_%v17u(2OslR-qz+|1a)wdsF@s7t#Hc&e4?rz!6Bt7YY8$TbmT4OtrYUsl}(<
z;#1S&Q*QAowYab?K7|%5)gpIs<3LB*RR6Gp<wW`syF=x%4>Py<r#FszR892{J918>
zAF(@bp2)CrJau$;OJ^juj8p#UuJTW9dE7zCN6|gd5uBg|j@Tt)_E+@t3V&YE&kOvy
zpq~H_Py^vdQaylIf?f-_C^d1_m+1;AM*MqRD?C3ewbhMqGk`=vLCz(1DzH!JQDBGA
z9r|Iwz9Laaaf*Zlb#?o<V3N1h$lo9VIqkJ7W{^;!(zIyov%$_)0C0NH4eqgm25)#!
zn1~z{0N7#WJ}wah*-8P~I;jZARvO4=bd71rLk7r64mieTGz?akfxtVBUr_F9PwfXu
zc2-pE$`rdw@C%Av?5Vv9*Hq+URN~>FXCn#M_mjivIzBY@E}-58)>}}$g{ij~)r5Kw
zFzu<hfQk!z06zkKjb26&J>gqIE%8s&oVtg2YxLR%NFoL#kw=_>S32q+X=JaUZL6p6
zr?&5>e%}nV;1%reUT!vK1pRZ4>@~Gbc27Z)LLxH))PW5IoQpja?yOgUgUcJx8a}p`
zC!kx0X30AMAQ3ZEtk$PfDAoBO(7N-4`8VE6+;qp-be=M5zUe$b9c^k)^MHq|-!Rma
z7*i=N#?u@z^gV;7cRd#m@ewuM`av;&EAum$w$F?A+^s577p0k}>FiUj2zhuVUEUPh
z9SO$Erx}Yr(fltC*-cIfCqWR}<nV1!zO!xshbAj-QFax>t?__V;w@wVljjrWNA+rk
z!vOh!U2hFi4DeIx-?WNIeVSIa`gjCWVDg7~{j^Mxb<XOfBL4`0t}+~5rRT)!c?*DI
zg_Oz!C|RSFjxHVm6SOrg+70)KbiJQvHM|qD>gAl7aYAX9%JKg7%94@F{H9SFsQ!TE
z1i8NYGh(r_HK}XpB`vh)L*xh-rZ06?dM(GPM>Rwu+ikBk+xHhhH1=P<j?#)54bm)1
zrHh&#9-W{(Qhxq#8yaCleMSO4Kl2-zj~7rNY#i?Ale~|o$Z}?QUx%c|9qUg|-euSg
zK=W$Ot(%s-18Vtyf}xDalC_h+6)3LjVboAbMU1lp5u{qbSn!C<Cui&0W2;tI*P5)P
z=a@<WT$+){AExZ<8>3&RT|Mb0uuQ1e5IHeB)suzNsfTKCIHBY_VrHAIWWtMd{t9O5
z95*L%Xn!XtwA#T_$*l1jdanzR4aDkk0L8IBZXLn^v>}njtep4T!4QZb3kSuKsnVj(
zl}l(rE>42TQTgA$cR$#n^S=+<4KK_htsX&d51J64zDYpNAatvJ=M(TilRtGoNXr3s
zg~YeJ)N4Cn2=Pqznuhb#_s739$dc7tc-E_1@?SK*TLNzo&i46;$Tzdg%P+K|6x)^-
zrYobCqkv-RXkJXB60Vl@+Et;-s8YuYN$;>S?Q})$>aEZkQrpNWU9<PMs)bUZvgJoq
z)of~H+o1Nc^O;bC?@<4Vp1NqlM)k!FY#y!jY<T<iaY4Ag$jCt5aC`hOZKp<Nmsw=)
zP3_$qdb@O%610SvqA@P=lg2i+ROey$=&1p|!}S>R(F~QT0oFhutW65Ws}k1=lS6wb
z@bg`{t4*bC*<!?@_9H7bd`({~?dIC|FjVbK^Is4>u7i8??DHU-C&9tcJPilIfViwC
zQSn?M<Nm!nP~rZ;R@gD!Kz8w6sL}JLcIHXSc*t2T@!i6wq|_G$3BdlXJw!?m!D(g{
zuF-Eb(v+y-t#zmGLOIk6#9LOn$5n}klhR(qJ-9)|q;T$LL|Os161GxBX22CH!jmIK
zDiM|bH+lryJKU05u&9}0V3lGsKcdil*iOX)U7lR=;SWUS(TRIvGVBs65|TvYrKKkY
zEhtd|*NS5~0wixlbU>iOE9eZi>or+Sg6d3V!E16AL8`Nn6t$W7wT<}tr#x4_{>EG-
z$HhzA&;a>b?X(2&V9`lEE}0=v!VKy8gq6oXVXhO7bJ%in%UZf`szM-0Oi}t|JF@EG
z*}F=}`&EF;i&9<`KS|V0)$KUCB)T=xs~5=%D3fxhoMhJk_SnM)j|0gyTX2V|HgRa|
zLB_^q2X>bX_n=|K#h_utw9qC<65>nhD5?xfGaDYOB}naR_`rm@p3jP=L?gqS*qRuC
z#zC$`4&=85>SCSjR0&aP4(QncU%5SHAE9+yCQ&g=DrGK?qE%$)W;W?vxgv{AlfVKB
z8_c9Yui@Kmm<ntED3kU05;k%@z7oh*b&b<2^Q{>1Ws-ZbNow=03Iwp4jIo7sl$4`P
z6r-dbRZ$$U8(Yf6jf31fcSqTsyHo;xR(I~A`%f!4223%xLSvv#4T_KVtXBz8Fp5LE
z(?CnH<Nk34#T7RW(C5TUP-^2=g&MncX|OFS4lo{RZ+2U$nzX5%R+GjWnhDki@KAW;
zgp`}@A(0%4&#*4gaI#1D0ZV9|1Eq&&#k)wDI%-l3<gM8<&aIP31nTQ1ysl^E3bj+%
zWRakK%Y7Q4La&{%NQU&@^T1uWDFp3WX-Hk6#pf<ClCvi{)H>@9*c!l4vG#>@R>QR*
z_9S?4Od3VWpnf9*2sST6O+wp&p=cG__!PFW!WJf^6{a8y3H@`KqK8_e@1r3C&0Z7V
zJ)E6eHnKISs~H2sKs(xX=l~d!xa^uW0Ihao0Jum8tVRYRU8PQUHM&l&ow*o9-qCV4
zT<(-_YFHY8cypCBq9Nq>O6$!DUOas5;LjvSvs{hcxX#*ga@H2YqfF*HyB9Nc7Lyyw
z(f-GEryABt)^3FXnQ5hVTCqz%V@+S=hTvIcDL!1#z|jXG6BRsS04-UF^-D4uAKv}r
zw{lD+NMA>|A3xKhM`eHRDf=@yeAoGh!ZeFN0Q1g~siw~t4+4)jVvR}bMyk!qlBRF7
zqVc+@7ui|EMh|FRVAc&0Ok-Y<pca9LT$1$<siJ1bnRS%|M1sBBOlnoos#H2C++4e{
zq$1!s$HR-X)j2-g)B}1T9-wuMpGUB#R7!tVYfr5OoOFO!6<RtvJDpIfdx9`!S`n}P
z1*Sg1a?lqb^_4+-35RlzUG5~|6$-?fuCUiiaumh$<NBnpH9##Qfte&DD(MFl&*T)T
zte%e54$q>vTj24l7u4%p<r{kjr+4eAZ?iVZ@6aIu7*@+2D%wcQv^@<gBM<}mkt=N^
z_)@WYErDdX%lID9{;y^7qpRy%V^E7eojI-C27_Sj1J|btvgwV28|gImyPtKQsI%;n
zqBGei=1h8Co4VGBCLlnvK<j3bj`3JXeNOafqeQS}mn0~=f<ckLgqaL|y+XvaN68$^
z;U5%yB~~bsqWPhtZ;?exsss@BOsh?-TZN=4G_!?*Q(Qcf=Q0~j9e^N;$W|q+hsg}U
z99^5@_=p6Z!vs!xFyka$%1Rf*8Q^}lfUe^dSaX3>F7O?-FiLXU&-W+10I6+8mvWlP
zy?%5Zr$9;t097slRj$QFoQg%9Z%L<oAv;bCk_&QUB^)182rbX$&#wq=_H{oU+}393
zAIkfYQ^s>N#m)Y5L$iP*f2ma{;)FJoFvS9<D2Jg|3ShmKovk>iKL!{oOhv8y@`ak(
z6V_HNWzsJh>7IRK4*}>e9sVhd9TjL$cLt@Tk(wQiYjgwy)4HbI-{@!?FC^=1C4hU^
z%?p6OZ)CpHyWCPC=AtLepfagH)4I<>YQD={)l#U^CAy@5Kf`K#aj!t}GhAOzyMnX@
zq-h2B0k*N##-~`dK<Rg<a)Gk$UDeI+!xLEF-Wj%qkjVPgA}D8Fs4xT8!kwsZ9E4rG
zD?`-og>gmPXU8$9<Jcs3gs3}O8aCM0&<GDXXJ?ZW-|*da^LX!YdKfpu;y$yY<fw=^
zX-j-)D>OxK;1!&;cSP4?>;k>T<`f{O+8caBhUl<0qC`yr37--^7x1}=wu&FzIm*@t
zZ%yzUHAC=37eq9TkmF_HgS6jxYemiOO^$?wf1+I?l&LpR3}1>t#<r2xNx=X)&g3sK
z0*(E=LPhz)V7i1Un<fOhpj*jgEjtD^=ki2oHC3g+j7pgBbinWi7zwG#R{HO#2zGI1
zEg39~RxGQ@PI{QOU5>58t{tH0C<y@jt^w|l;5WEWwM}t3JkUc*tE#-vEZ&`^2+{@j
zu_Kl}g&r!v0dAsUpqin7gIx?IN4KGcS2&zEYSL59H81)Y2{DokIKCXsz@%#y_OV{C
zSZ8&&y3nNYcvecqM}Y=c%SS2XNVuz{^}>ob5-zR!{Eb}3CP&{L9sc<c%{@MQXXXZ{
zG83tX+7KJY>a3!Nq2dP=b25)W?Fd{S6!d+TI-w@w$Y8&UPV2-BO-u!tsRBMD(%V#0
zDy@Z(SeLEY7&jv{eMcN)CGy~=H29Vi$8DzKxXmbx9Q0rm!kMiCC&%0j9XJlXrMRl&
zost)(<u4YMrgL3%*%@x7yi*!&YScjU$rq071IP}LwjCvKcR{tF4xJIGRANgY>qavF
zI>^&gq)Qt5e2yO&T39bFT5;2_U1Dq9u94B3e&oeqCBtic-eSE3sQy!+gtKkSp&mB3
zg~<OLYsr?8Na>s#<v<pO8R?I`hQjJHZ8m$7F>KOP(XK?puF{ccEC{D%TsI}j{gL^n
z6#%{rYRr2n8JO^HXv!`ix~g-M-0ZFIsZY0naJJsr027Q<eK)MLy|~Z;VXOnnI<<7u
zo<(h69Rks&4>Y0(NnGw`tH#jQU1hqUvn}^lzEAX~x`#u%vvZD-x)ZJAO58da<&{Jz
zreUOgOWAbgaNFZ3!|7c+e{=0}U`xt#+?7COnpd86hxFBHCHE1$4tb=F-fw=r@nzO;
z#}^*)n?<hem-sZTM#h?}Ki|CKJKl19QSTrA!7a2?rt5(mZ=-2nS_{ZWP9d&ec@sT7
zKBe3xmD%*p*Io{TKLk!0azVv~oS!UoV+~TOal;*Cmd@@A*ur?Yc;sCaD0SL4jqjTV
zZiEUlpAZ46&+EgqnxaoJFGVeQgyW9`<jq|E4otKto9qmuCL%Vt6}Lr2q%rwGU4Qix
zu@LATRcAC}0Do{PGB}}xhv1KdzgZVOFG+UIzY>*#Sq-___Wer)?r2f(iAquFY$-_^
z6q?`n4(a{mkNbxaNs4B9S<8p(rYVc5bib0lBV-bLy)DvuL`Bf(&o4}n(Af-{gY!+V
z?v>OiLmNAQg&iT9)+kYfHJ39g4blY@!$6ILSEQ^7AGs0gSh1hi5=PaefSLi2aE{+Q
zy+v7aa4)mqp%?~`!S3ubSaB}Lx*ys71H?%W26Ua00FD7`0>lG=E9O)n5<CfpdXJ|8
z>f@dh>>N=F1{_hD!-Gk15FZ2wtp$gHRWPtq`k;v6Nx&b0JJthUr2(nMu{B&0G!<OP
z`yVdnf4+Bz>)fa2{oN}QFQuh;<HBdzA+n?cpb38WQd$SYY<S=UUl_4>q75}AyF`?x
zp@LyKtW-m4;o)?x;sN^R3XfKoV&MG~O_a(veoT<XPLkIFFVDn8<{qRfK<-5CAr@Cl
znF9)t1USWtumMi3015t_0;~$q&J7!>RZiNJ%WS5X{#Nfwm-bsD^nb_K*LSCZnl0AJ
zxqnZ{jP4Zq&3%OERvaC+keL6ENKxmtab72e**rdv9`z5S59d8y6hG^WuN91G_hR_3
zl%UJA>#bL=6&MPQvs%3<uUV9by5mZr%|q+{e<iPxTKyiS9|n)OkUe4Pnr>`Q*VTR)
z#m2Bz#s79~Ts5n>T*+dGCmUnyU5IN91Y>|-I2hrG5-KH0z!Sh`)|cc(QZvMWjySJL
z(aAhw$h@boD(Sx*wSFBqP_(Iv&Oy~nggfXND-&s3J7k@xJBNWJ@cQ8qHgIm-VI)kl
zq!3RVmYHR(_!)|^a3~J3Pq!}d7?`CDZ?*AM&JMB;#Zg32lN0vIV5s#<V08IrhC!5@
zZpaQqw8#r`V`>z~a&&ZJh<wFcATf2QLJB;9W$#t5rw!RU^6ZbY6L5p?;rv~>o-Je@
zvFa|y+Lf~SdBA^v8IU-H{{3aZVt}93-(NiGVSz!`EUz7f@69n9u$(0Au3&vQ#}4m}
z-01`qW#391VI>q3Wqv|jZVcGm3P1tWI0bA+sr01k2rDY>S5%yfmG~^K#HqLx7bweH
ziz_3x5h#3a$wI_gQjy$7ERw5m?g}r&nfn!qB^7WLuFiZJ%sCZsRkqIjP$es;3#FoU
z=6y!uv(t$w;>l~YN!8-s`E(gCv|ZKep6%RJ^g^CYKgTP8QFL?&nzwWzP(sOQia1SX
zs5duOr$^-G_b=j7iP<{7{HHt8!&CP0-*wa<%+^(1RzVb>jw?s>JLYsaglOV%&tc$3
ztXOJ*K%j94fX3x2R*?=41uxNs5}2wby3kTn2HWx7qwoLx{a?QO)AxTC<tm+F4B;a=
z`d)DF@#R))M888vqa@cAFrc*~(#Oj^Xz(5|hrV|5)+^3IB|LQhMW~euz)~kI$JKgQ
zcmn`I&$KwHM8MN%B@(kIqf|6noy2U;DDT@?xN%i_PW}4c&bU)GCG-@wb516+J*mRw
zFxIdKNGIT5>W;k^u@<~5u7xgVN?{)(iqMB%Heza0A2mliuULrlNZ!s#SvLM5MgO-L
zcH~pv>$|r{FQKFTjE+Y}=&7ZF;{;>(R0y8PmctfOEo`}LvHF4JN7E>YZqYtSS}R{>
zYAM*GY=llDw**D?alL}ssI?(^L6gz6J$|yxQ86!kZ|_EmiUWtb6KhsS{w&agR*{sb
zfnc1WI{JCqmp3~JL!p@|)*6Dg2lABj9J|OSJtrcwDc{4DQqJTR!Vx@s`TG4k(!bhl
zf_G1Te)r(blLz|y?UUzE9&xU#N@v<W?nKlc=u74A#r{5PHxu>iX+INzuGx_qn+S8%
zwnE}PQ~pghn@^~#vDw`DcgXj216#I61C|ZBPdqIzH*kbZs!1$YIIhikmCa`|&o_Wv
zptqH8?vTJDr1d8XTRGb{s;wM<6<=Jy=W)l3Q%!WwT!e1UafJcSLW+K6Oc|uB182@L
z%q~m#I2F;C6v|qI$&C6RdP>1Su#x4K;V~e!G8~>Y+caaC`_TgL9Znm^FLd18cftn3
z_|W#=cwpC@b<x=N&N!SPBW<H2z|&@MtjLUd?Wk*+DU>jU(#B9PDTaD^qC)Uw2_V7Q
zFhOZDGRGdkY#76z143CiXL|uaEP$=fGj=Nv!<wFjFo1O^o%@A>Xsn%Oy*|a0G5rjf
zJ{ES`TN=s_vETyRo4D;4(0Whffj((Uk(<5)Hi}A#jkGFPYk+6dE9%qj@*GvQ{ZXvE
zQAi#|Ul+*QC96VgR`WwRzuoQiCwUbI2-JgZdkC-)*IL3oLuZS5;N)Hr=FW~EjUZg{
zv$VFSWc$d*Ix0iW$Cg&Dc9#Srp>cSmfv2<pM+wW*MaMq@UsMDcC8<-hxijf}bst((
zX4q?bNz|ym$jBaa41+-1#prqlAaL;ApJVKI5wYg`gcJWtiAz86FO+!hC4PTMi7PMh
z?w?~=SU2V9`<VZJ$A7=OOVzHtLVu0-S~yATfNOxe4vUtD0`laB;7iNCNPLMz3Biyb
z<<%4}H|%^r=D9Tvt*Cz1+97F}m1N<f#KBPKnu`B`{Ei;ZF@ig^q_Be3Xd+vX3Z7vM
z0tTnryYA>3PEL{R@RH$p#B(4C(a}7iBu}MyE5!>b-bwKjc}08uyTt3ED_=(r&LuiV
zk**aQt2PSuM)HwtCY9wn+K8e@x-jZ6t*a&{1~P8bqn%FG<W6HD>F@K+uGPG5w0kw5
z1Kb*(6&|%~``IJzUU`tAq(^z(o~@rt%fzgl<dN~*iXKdq-^u_PoBToDn}b1XJ7xQ%
zc5)Q!^h()5Qa{Sc2in~UDz{T^MY%nZ988#$pGZ@e{)M+$`<2Htp$s#3yWyuEv^A}9
zE1+G2M*5vsYE;S}gm2I8TWjz^C7`z1?1dOd0if4unO5_c>F3R+a?K`w#is<_qB}(l
zwwOUxnnCa_MpB~#x2{i-<(Sb>og@>C17JeO7=t(+_6}>gyHUMkHz9jRlg22iu<u^v
z9N-~!pp>X4#n^%njQA^*75Xk+MCGs1#*VOR_LXviiwF_EgfLe8C6!4N#wI~WE+`bS
zc9_L3`{F{mZ@N`ck|{WQ+Y`CA6FR|S&2IDtGOj{@s@jL4AJv$oT&`#2HLPn-Oa#K+
zSnUHt^hwVNrK93Dcf3)uL`_*>s6Qk|qrcrs?<k$DE4Y!V{YjN#wm@{RzobK@aBLMg
zmoM^5dGRGC{0^&jgMLozCMa6J3scc6l~n}S&nLw)HE2A-@!}pjrflQ<qa(B|a5Kmj
zMp=kUUvd<)QM@wgZe`+u@r=0@Sc@XpIS>1kS1{Q|Owl6oz}TWjs*>vor~x=deeVQS
z?6-exHXx+%3G&7|p0fZCydm@ldOGxqS$amP3V5BdmxccL&d9Qy*jQp-S8XVOE)3;8
zYdnJxhx9@vU3%$|OlW3fSj*BGpeRj-mrPDL06gm1iL!q#XH~iU``cG9`+Z+J{>T{&
zliL)nIDtMzC#|T6ep~uRTyH17XhwnbuB!*dHW;JR&ybxEE3E;v=riUd8ToE6PLhmH
z-Ys=e)%nyOJq>6;K8U@r#y3I8LRbCO_)^uIRaXy&VKLQWRizZ;^@n9p31WC~zuPEd
zE^f;XmV>hFgQ5GLq4yldOuYNrbk$gIbbH_dF6%*r<Bi#xg!ULs8tcc~feg|@vL0Uu
z4tAv63`k@9-_G+&8_xlV_gc>Z@<z`A&2G;D&5fP|nwvZaG}?23eM2L9Rva`Yc_PDW
zWcs1zHL_H`<oq@9l$3m@Mrx5OIZN}I#>Md5<M)@(Jjo@C!~wU2pcVK;UXZi?3;fA`
z`;AFL)9IHj4|89s(SmR^NEu(EuKD;1jZ(%JWXQ4D3dC`{Hq<tVsBcUyJQqrl3MeMq
zUK!DEOgDAx2EA1S#|OQqq#F^Vo6T`&l)~mDpy({f1@tbnw(3TswArWK`D!$(HPJg6
z&*u{WwwFL0`oy5p8APJjc;R!PI-3C+JsbYqc{=X8u|FNDn;QYn5y5eZnJ+XWn;DCm
zuv97-R%}4CO3GFo(9cQTN^y)DQ7nTJf{5icE8!ot<MafG1+kY$uAeHXKj-p+;>!j?
z`Nf#@=AGsxY*d8KG<}Rpob^m(7$BjyNM^?Y%hQ5keKNZHtrW{7T#S%qmQCk2bA1vY
zMt7jJZlOLA;W=8Y9<NTY6&9`q!}4S(#rg5)lVl<6IL{-$v~Hz5`F5#F!w)Ebrps@)
zRc9hdb2&oD`;{ku%uFte_)NBT5D^9oSSK`Lfj=C8S_Il9YXDSUz$MZ1NEm#E%y;D~
zFsY{O(*TZBpd(nfC@?;p>}mioS^i`{1LhMg1zZ;q_P84HFrUhlWR2_@PA^#@)-3}R
z-+or%xbCB#dk^}0sFokd%R%6Mj!?l&Yqy%ZjaT`=mTng7<!MW?2q7m5*cLKhDR&KT
zWSHZ56W1ieaxZS$-eY?-vJ;_P+U1c|GlJ1-Rp_n2er#(wubBy~*@EbkS+Xz=c<(Qi
zRiT*M)TcW2se5Jgxb#h^_?n<W>L{7*@6V^5+f_vFt-_15bC%VKxM2m7beJCpB-g~d
za%a62D3ObO;h|b1C*GI0Oj|so9;-=p02iwFnEzs~2bJi#G(X$o(Kgiaos>m)8}aRs
zc$3VrCIiyo@LS^+V6!<SEMFU!QLc6r0E0oi*oCZ`X2kB*tOT+EijabtypqZ5KHYUb
z7jbZw!K_?H8M@~$U=mxQ)plRXldnd@eH`{yIJogmSWJuL;CJE9JFw&+4g)=E%atgU
zw@wZ-$t0^`+#P)lO+XRgh;ftzN5P;;Pf2w)2}VcS)D5*vR|>uV2-C)1o*L}FFe63e
z;4vTv6}fYNS1R4Fu4RM0*N*>uvcFQ<9_`JD1UsQY9D*BfakUUzyO$hoHWL2T6dP-a
z{Y07^q$`H@l~`=rd<z(6jN}EDpGx=ylyKXF+;&EJB-$pY*W`J<VPE%BV7m)t8tISv
zcbTy235PIZGGbi}G1{4UfYM^|kYvW@33@IqlW)?nm!ekat;UIh<S1d`>RdlXF4R+B
z&)_bJm`{}gaeqY12h#JZsOI$m9hYjajgAbfG5&CTgIQc<JdGUr15P;11|^k91LzT>
zzq%;GJD(M6Il*|PN|>f=yAEym2hce?R4of_l!l^a*51&%3z5}0_Y^puB45d@+A~Kr
zl203&`o1nJ6p>!Jm@IK)jFTt9;%B>V6-OV2C95b7D7(l@=-YET9J;=Q(bF(XD!CvD
zR*>hy2Gb<ovFLpp*MZXPJ+I?*0^Y=rSmKB5@)tI9R!swJ@lO6#?38qkfdPc$O|h9H
z6!C^mLhF48(#*-c=XHA6?)0$T)uE6hr+O5*oAg6lfiL-|RNAgOs0M|1e<-!9E{@jB
zetRBDFErdk)DC13JLI5};Y<SFcSMKTl#NtO@JVs+p{I99)nR+)DI%E_1}I7>EfSpN
zd$dzJxs}Q^pHOkaDgfGVu&=*O9gLW!5VFTTCQ3Oo<iM7S68UXJa364E)e8_camk?s
z`g!#wyycQ!n}3p$8y5PP8X!p&|0$DKeTFpfNSu6yiHz%$N4CXo0ASOGAANiTH4uPt
zBS33K6WV(r^}D~zorE$Ew`56?_%0?UFFaozRv8MZ21z<PPWAo$!b#G;EW$5!f-8#C
zc#!85%NO>E^${aQWaE<%h!^+}z$_n_gR9qoul8F6=Wn~dMN~L03w?;y0I=)<it4)k
zY1HhkjI8zUXJ7yMnPQS`O%dw?kwVS-a&Xr2Z5u-u#9MWVBdPDo-aE-6Cw1VnTO4vc
z<ru^q>$n(EHau|aTEqw%MPrj@fbAcgrE_C<ap0&=_I4$98Cn#U`pJ}G1q??z6kjWQ
z%l8T}=^rFPHqt5JHEk^<xdGel?TrPD9q4WZj26C<_kK2^C|79R!VWMUWG`tM-S`0K
z!1Hr((7vUr(SSv{0kbgGmy!5S$-`qD@I!l}Np~wRm-ExBfOHAwHft{7+-9db&wM_-
zqCk&Cl`}^MW!SI~yTB27dh9Oa9t%cWnN~jLW1$u=m^4$_diq9y#UOjqPaR_FR(6b@
zmHI@};%A%Wt&K3yb{g+8)h$oA2OJPa(VQs8p@~Y)k<~F%Ngg?v!cM32?=|Zbk1}J<
z+EUpV%qT$T)^@?)|A9qK=$q6yW7+L{{JqEYwWIyAJ+C7fm|wjqbM0l!S3l`-M=$!T
zw};@G=De4FjKvNrPB^&PGli~5L|3@@L%;Y#Tl}F{d~3HP=?&!EdQ7f0VSq7+Ntn_>
z^9jT-{w?g-8t4q>NZ8G<MB@BMqJ^cI@;3lCK*+zY3NyV1OWCByD4R<@D?d9Y0U<b~
z;FgXN^i<G~zJf?Qqwu<D2Q1RIOVlFrCHzg|n16xp1OU0IZ%sVvhga`dJva;&GM&>%
z)Z1Zo94G{juXL=qSQI12h!p>Ws{{)`-gD~S@}ijrY=b?QpJ4?@DrOzvR~bBU^(+M%
z{%CwC*0rqY6E%Yqiq@7b*Gs3wGQIRug7`lkx$}#{q{H4L0JP=3U+pnqiso0+cKvt;
zq&(~OTT0Z%a|}rvk+Evn(c_)inWtHP;xo;fVPJa+SkL}viMYN-LFv)QXr7jp#8R~Q
zNEn_{j!1AHQ%O(+(O?d%TAo7@9TO+MMqSt*c?g3h&IGCy74u`IYlaeOwmt3uH|45;
zZN#=;V@v)e%{ecT@w<LyHO|wTYP(eTG*f_G;~14E;u*h^;kCb_YN3Op!6E)%AZoNy
zDbC~XgbMH&A03J`&&~_u&>3=OpJE3=VALQcL_y5WCbCZ!rMauM*39s>dJ3$O<&zIU
zR0Mv$qOC2e+hcXE6#{x}%O@ec_oxG-%xbl=XGEbsI~lI~?jrIH({=x>OzdNQZlSM5
zce;obx#J{S%ibWM>~>0Wg{xF2%EZxln^bNiNaMO#O_w7ViONTNO#Hl7x()(XISw;g
zWl$MUzcMr>fGX|bAnAp08DpB=ZzyydQeT%N;|~!qZuA%KHGO>%OK}+&sAk0;Qi(G5
zOY{x+C*o8nX)lK#amyg*aHve5ZWzx9!$00Uq6h<iRHm<6#B{Ze4a|aO?3P(}m(e>K
z?CM<MGyKR+*rvj<%SCtBdZl5X_*K#=xVy@JEkiU{rEaCGO$h{1;@(Ve<rerNa&*pN
zlEH7}zVfdH{88MI9uBav`MGrTlreIuv*6|U;?CVsf&XGRS8mCxR>=jGTu{lcSNS1_
zHkmIG#Cv5ul%anKQR6@8NBh<iiArx>Sb749Vt6p3Epw^f0|oIZ<9@3&wc{7(B-dY^
z>Mj}{IPP(58zfTn+u$TEeZ1KxMRt=<3hQVCt=`bj2K^nW@HFIN!}zQ)V$N#3u8;+n
zqNk3t3PW1g)eJkM9F&ZBvJh;BieY6V?n$YImgq+Ne$vOdPMq%>Tw)Zr6w<VO5BaVe
z4v2xFMK`GQsNK@Qc9p~SQTVc4Dzz>%>W=D`g$XxAgopFI6QL{ppykAfMO8Wv+(6<E
z4p^VoPN%MnAc@TV0qfU4lU@88zN<ZeBXjNUtyl&?Ge+*D5cJ&g;a2?dFk&V$K*|si
zqQ`(ik<l>r7-|owx9<gD5kfZ9r0%vhYVQB>klr>70Ea&5P?g(#7`-(~8i9-p06k12
zpn_CE3Q`3rNEM_YRiJ`YE3|rW7+_l-<nImsVqo*g0{7uvWPBZ09VFf`z)By3cU%uL
zvgYKe&{(%$z#1l1qYqW(jnJD{)>h~H;w%H_^)WNtF+Z0`**!(Yo@i&Q$=Kb3jdDJ&
zoGCiV7jBt_dGs<zBzX(1%l-?}A|!~TDHXAU{ydPMcGyzKbikp9YrA^e)|P=St>Jxm
z>S>{9ES6u69(5F@>gVAJtoP?L*0ycklLBX@RvK`xq1xM@F}Sz>_{C+zDw@uB%hAt#
za&h%v4WnLsqoOr-X~!;i>kB00&cJ!f9~?4zoaJ;Px$W8`;}u^&S&DP^i}W38QGmE6
z`PJwB5XsNP{I4EgX9ANpW$z!dpAe-bz;}3u_Nf!SsfW$N?=rJ|^x{ozv~F&g?8&#$
zWUnO>!VvHEr>0yPweX8r`F^mD%K;p^X)L7KPUs1FhNSA}G;hBlGU+x`B;95v4MqG$
zE+NJHF34_$(0c&Fo-C%Rvh#B^R#4BM_QbTk<?BeH6nj7>^MAYS8<{Zo#(PRQNnIBH
z*nve8{ydV5MYl>`wMs6iBx2Ecq}2oYcPaiRlb>&}L4<`e930I?xO>=Q<`5Ub@Dy4s
zhF(sO)dWOtk>Vq?_zVL5KgGeTPf&cu{yWM~hWnt(DhhiEKp{gPN!XlmX7tBH`ru;#
z!#><@h3|ZGE8bF2325)tk1)koKYo1l;N_zy&*Qt|mnUyOzI+vbr+(;+@5Qn{hi9$d
zUdlvr-fY|uWNmNfnTA4rQ*IDuQF=BFR#mo4t1FJORy;yhN!#5K3;C>^>iFoyxK~0g
zv+Z_k42soKD}&;{$+4ZWOpddVmK)X(NpSdjq*x;WhE81bU#O^-$N%)(`bE}(IMQvs
zECYD9PApps?qa*5@oM1oJvxfC>9OKSb%ttGsPQ5DS%%lnQN4^CdZXZ_L5?h+jPDMK
zJ*!RzT=B0t(fYVbK_pqM*gJ}SndY);G!OH?IIHR`kZ($iTmHHionYIjE`Q23IYRz8
z3huUafRG!C`iS%kQ)rppHVcYgyp61@Ek9g|gX7R-d*k@-wDY4`kt9@Kl?0*Cm~R!`
zNjTB)E-(KN+O=oRJ?egUh;{tf_Is*sC$GT!XFcdc&B1KwiGAsKM|_bMDZC-imaCr7
zrR?gB>hJ?`W9gRnHrL|JvMA{6CF<{H6AX~w2n2RQ|DsXkS(ZyqBb^_XWdO9O<ukND
z<b=)UJGd-I#CB%Jky}K&x4!#5l_B0V90h8R&C9P1x43aEHOZ)xin0Y}059P(unc5$
zrNubc82>mte}rqxWm?Q@+EX<ZwVR|bu6OqM+CCH-a2l`)2YlwkOeD<M6phA0w}bIN
z6bA^^m<B$*)s67rB*GwS3g|RZw8M2>5wgJ=%@K{5wf2TGtrA_q#w|_dCIuPmsfM-H
z9Dk$E6X_hld?jF-fV3$07^L5p!lp_7OtRl~)!T;=mI5vom2*vj(Gf9ft=zmgS^u@~
z??aVr864Bqx=lYf`3z)D%5=HIwH_}VP!&DJ*k7_<+AaQ1{7WXm8kQDzRL*Vi7DgtO
z5489P-9+G!CX*n7_xm4hz+@xcV0>)T^!`5L-)P4*mGQr%ihk1=Q_`Zha4{JUv#3al
z<K{R!F~~h2#Z8g)YSL=2f8)T=y#GM;JV{aAlWSPMSJmT8_UqyD7ipy?&UiK(91o)A
zQM0JZi$OCC(BtzU{hVebO&yfHD1%eTuHnkqp>9P{+|Jh*=Dn`UWk#NotD?`>Cf?<u
z=(%y2(FNy_8cGs0)2zeb2Y|J2h*^Qe!=!-2n3wQb%oFcIpeM8%V5DA85g^(YZOKJi
zI)6|<h8z6;&2#0py)2U6&b_f3MTJoA6uf7}3SC%4Y&aj_(-078ip&@7C@;}cNS#5B
zO%Kf{`Zcv*${SuXK0G{XMYnRL^2*6HdxP|%%QYd{FQdoUro?fvX*28I>nNA>iq%Mv
zA%P4aIkZNY9nDEei&hsf%CvWzn_*oHhr>|zEUV))|NFat{r<0i`t#kt{_$H*h4-kW
z;OEAh$#;K(o`O0UBFk`Ga9j~5bBM0b)qhNM$*suyZ<kLeSXZs0o|K6^&Xj!CXvVRi
z)_$Id+9}5I#<-07eIhvCv~_Y8k~4F*RS#;Q&H{1mc({Wy(7<U~euCHZQ$X>TTmA>8
zVXb^-W*FtL?DIqbV0T)M*@B)!*rSD^>zbfGL4USf;=vg@4Coe!;?g@&723g9FlRto
zid(EsQaZ)@Rwt=79g&4>vOEI{HC@#RqOy?WPwV#9xz=f}JAf>~JuAMvXO&Z|ch68M
z{fOeod;8XJDc}mc9q-QMqE$y#CXXW;h)hT=#Pxe;wwp3`IX}dsfg1k9A;nxS0Bw4k
zodR8RzSXL1TR6kQ_aR8ZP>9)8qWu3B>yu>S=JiRcXv;xA3dPpQ%$a_J{)Q}b7RtXR
zubRrcrs+nz+vGNJ=iNad$_B|#$TfzW!R2%%L@jRj6af$!zpJGDDa}8TY5n~6_1+--
zd=G^%JjhuebPLEEBD*p~1|BiK(%RX@1)z1vMP3xijls}`5rwkEG?!FXV8B@z3x&1B
zK%BVBB8B^vCv$oYajV0+y~uTIk(1OKu7o*E2F_CsC)I1iTkqOiZ#JAm1=<jO(41Ft
z74G!UL1sK;^MUW?3=Kw5iknD`*G~7VaxOv1YzP1`7|I>Pzv1=6Xc3V)PbHjh>I6r=
z70VkIb0RTZTe2uZ?vqxpB&oMv(=5pg0(yEuja!|<$8zZuXtR0beh^fyxz-xn$ncpw
z_lM(bpMh#b=ZjUlpq3IWX|(4BQLLYPpDcS+_(VAS>2`Ro?_DH<^cYXy3E+?E6vIj5
zn<elWima<8YRYKig{9yVD{2}}g@!H})+(?Tda8KDv|@-7>Sy$bJkJVb4;_hXtQu!q
zs#@U6T=`S+y|@7U%-84e5RK8F9r|4NzSR@;4u6x$5qV6<FoS{|fQ|ueC>2pZZUA4X
z(^*&gDdZ$mEh+ANxMOiS;&O6uk9r>%@QVUw_#5ch3OX3V;o%>G`v;;LCc(W1aj^S=
zj)ch}FsVJttssjnXd1Gd;ney4d#Ba?dw1XmAlaC72TSUQQKhJs)fWy8is0#u$Uj}C
zHW2q8=-6Xt*sM9KWp;fpOEwQEE~D2*GZ$!C+pv!teXih$JR<kY&r4>$gcw4TytZS=
zgrXD7#ycxN0R5jf581o{P72a6mpjh}KmhW_B<ERER_|Ac){jr~^7IkhQ5k6@DlO;`
zuF*DFkTXg0SVqxhybb63!nH8!0^sJ$a}>H&v$&#$-&f@G9!7Q1p2;DHAFr|{M&{u_
z%qzU8@#jLZr9KwPst|9wYXIZnXeD9r>lzU0oNmfB226<q{?IYp0=`Rkp1_<3oJFdN
zZ)pe0DmJ&dk5M8i&K|BZMrXEtk({qPj%*2+#tcM#wMH^f$vwT{KjUU0`-nG5k}JIa
z-4d62qqpQ;zi(u8z|F|iS9@eCxpy6u6805#bywV_Zu-%;o~YYSOQ&jcflN$};Nt#?
zF0Qg74;I0&n7E_Q6gMmL9Vy$PKLt_~5H^gP)7sd~Oaz@6-^_l#O%SUyIQ2g<TM_Wf
ze2%uv$|m$t(T&ZVTK9~kvBHj4F#0#V#`*a1s~7yHv?G7xbEu_*rWnTNChwkdd^vKX
zG?OvZ)yN64te^HJq?JpFVOR@sg|Elf=AZ%wvWh<SAzyd?eQ|N|VZ8Y;4rk?ZQ&#62
zIbUzi%g>wjr%fT7%`Dx_<>o)D%~`cc*PC^{sn(m>Vv{wSBHz?<Q<NK7Z<bjeeRC&c
zpU;iD>(J|y{$3YNv#O`@hdUqc-09SLTJ*BF_ns8wr}h*6nc{1TD<XRM3dQ)sWmg*p
zT<~ro2k+lJA6%8|0f|TCd{9fdtOrdwIF*C67@%yiD$<+)$awI$q{0_zf$?Pra9Rg&
zCkK^;tA@34BJrI&1NI3zZ3V6YJfB<%2dY>w%;Jo$ZWI@V!I-5|079Jn?G2cV<D;xd
zTyU5r*UY3oZb|5n?-~c|LKP#3puc+VzQv|K5;jE#$K1a+>^`4rBkP%ZLPp05nnA`e
z_lEiFDh~v?n_R&4K}GM^Y2C;{S&>fPAXV@gYuk2cOdN8jN5g%LW*BTdk~R%IW2DT;
z2$K^l4^Vr`jdigtGs?Yn;gujC=0rR8u;R_MUpZ@~buYFjkmOraNoD+Htr*E*$QUvP
z!Gu(KzY_0^$i~}LQ#fX!a7^tlPrJwquhr@k3dsuD+AW^icK|KZO2w3gr&|Ggx1ioY
z5;kbJ$Hd%0)?Qmf1#ph1cvK5w<BwJ4_S1z*!e7KT3u5=+#7Lc*w~zb>Uc+oIs27e7
zNRJ=l;no4B^~0$S6v=LULFqiJq!P}feWKA3_#+?P!dfA0kt~V&jV!glSA4Bb%gcZ~
z#2)q-T-t!CIBHnE7dPPYNbw=7IWoRWslA6V$s(Fo@k>C<aN~#rd*^r{PVPkU@rh_1
zz+gj+kSHT}8514q-3Xx2A>wt0nvaQhC)lfpl64)QV3Z>kZJYS)ZWEIS98A1O&^HV0
zJuzqt<<Zn!Gsw3aRH*fIMM+3WVVI_V-IQ>LoU_*Nej_+`P8CZ$4oy-=u5UgEMVLz0
z8KIZeiZ#Zbc8Dn(J5_WDg}1v~?Jd%3U6<kZ$&Kqoi#JeV-=!9~fkzyWD6}c4AH&lo
z^XiOcn!H_wx~T#Mk#_B!IK}AS-nkZdw(0Oowf7}5qu+J09NLlocwfp1qgLcX8C~}c
z<3o<H3|R`|4SK)}E72DQ7I8snb}m%gBqvi|LXTfyn;dOT{GHURIfdz!K>Ur;-eTG;
zvd%v{YvH&GXq$5BXr79ZHBf&?9N28Y#?8W*A0tvt89mF}f;zJ@UoQ)zqk$Ij&1}IM
zMr1P!gq<?jM|}&nLq?q=t<}VPq_{^Va&vH5+By*y@Q^}a(sFd%DDdyc%wc*<X>y^5
zM8Gy%;e06c7YglA1`UG`4}m;DT^|Lkt{W8&L7W1f0pMh2^ia0KkL%VGycw4jeU^!g
z=ta}T5xMRSW-2a2xT|VTZmrlBt-nOYKC$+WFuuer|37OF(D+y{0UQUe2uKg-|L&<D
z@zl2>-67s=do3o{x7MUZUq}Shq&PskPE2i<lM_EqtlicL)ztp#$om?5Py7)Ht28;q
zKWj^^kQSizS0`qPzKG=g>OXM9p_wTDM*ZNH&yq(4>u<iQkZL&;<itfRP-Az7R!eB|
zbViy`>hlUdQ5#)-qDs2@xiCnvOaR2d9DWJs0=rvafIfr+MplS3-Wo$w7_ED0i1W-2
zfOJ5@7K#U}W4!t0?3ZqW4m@6<ybw7_P^69=RV1sDpf6SllPck22^L~#=nf;D<1+}5
zagmgw3iAZ;@7(OLLetU^x{an}9J>zH5a1!60WL>oUYdu|ilRskZP)=stHr$(7RZK3
zB2$)`l1!|X>piw_nQ;8??vSuPjQmIR?7oH*Qs74JJRxwFzJX<0<L<!0TqJYaMzwKg
zLS@m$&F#h^zSkEak(k!Bd22eosI7?BZvG;;QLGy4vlTzucL?!D>;2n#)CfM$+F=FM
zxltG)KLAekFJOkm5ATinPRdF)?5B?4z7;<e$xls>7d&QSF!4dg1xQmt623<53`_}j
z#d_EHjOW>&avocs_T<jI&0(R5watfpF9wc&Efk5!k-G829`BS$`2K1qXgJxKFQ6yo
zxII_V^eukN$U<rcFS6Wl%%!H{c$C6BG9hEnBpRW>3mHn>Tq6ho1{ET6Zd$P;u(Y9X
zZP;kmlI-<Q@7}-8yyOrAxH<M@Tk^%xHQL=}?ExpEewiZr+r2peE}^;CaQKRz!{=`+
zg)SVa03>4O9X*>fqR30#@v-s5PJjH}d29ZFIUb%Xv7PRo`60x<@d6u5+1>lZ3(@D!
zQMm-(X@rN9#sb>jaM;r8MmNeu^108sWjnO|X;Wx?)mpgs`UFre<R^vW6#)I?8B<c}
ze2mdVKopLbI}@<5ZP(HXaTKX~u3tQ#9p}Zj>W`B|R+7ww!GIus^c$5yF;4uv0M-K|
zsME!uVCx0_4fzwFf>~MgX~(72IqCjry^m>V%v_Xn1FXrzMMh5SWS^Vt=%!%I$qt6|
zgnU;~U?lP%uasPkDr-Q3v5v2q8{^X3@FxWs5m!m!ndX$Z+3mq2>D`TC4QL*q^tp37
zCMJdtU?eEhh)@`+Z2Pp1^PaEcY$K+=)imw20W36bP<0GWqLv1JaAVg~>+xV+<>5gv
zY=*%>^dSgf@yYBN5!vqcFVcEsMt*P)^@8k8tcC{-WWk*)v~hAx-c+&JeRK|;l+$X6
z3o;;2+8G?D5@{N=JcjpNrjDc4T(JkH2W)zb!RX<ZkZWa?rGh4imWMG1I25iauV+<!
zFq9Z;L0LbWx+84?%~rhFDI8oj<89eU`$ozK!?2tlSc_;f`9<(FWIO19qC1dDuV)Y)
zd^v(US+0MhT-7;lFL1H@^uiLQu{B02$D)IiY#LVVmkkQ=AYz5L^tr+IH<#U8^Hv^^
zszPrkD5GDHF}6Me$lQw^OSUda<{d1tx0e~2%9mr-BdQI3Ig#i)H5j(^sY-J&`>N#?
z++j0eRUj4Mzs|XBm4e+>jt`n1C<K?k++{+?)^o))gezAQSJu{pt*UoxY~qdbb>~pa
z&eo=w={DF}5yds?uekb<H5%YFUAUwI_*lnR;#HBnEN(IfbC|-UDF2WYa>wJbGHhAp
z%yOB{<f>t#Kn?KSSCf74xL}9cQI`%!rCU?Rl3rn*7u;-StFP4ytK!J|udb*i5ZOG|
zPULwMfgZl=&y`ZP7+l$ybfTNV$T@@k$IsPYov1V1r_HNhO{Y^m&uI}OyFo3d>;`Qv
zjG}j=Q3Ew1sa%4~XqT^@h9WRytnKuil_)x1#MQ2RO%qm4m(G~JEWSo?AD#A2MP=&t
zjRBxVE8FNZb8g#_n|NIGdpLLEf>{|BBZ17f|2j`2)*PqvmU43nL;LST4DE~?^n0TN
z!6H5Q5~i#}6YC|i-}DPPsz+brNbC3E#B%rX>x*Kp<pOLX&f^UC>`xVkQhz!gXjBqf
zqN(ZqE^Jp-z5(IYB~ZT(!NRTjVQ{EM-Ka**q;7j|vw0iSm~^Qzx!YmNx?tf6`ML`b
zQ6lusx(ikHM`_-1^pd&whI(%S@yJHzT(M6XLQTv_s3jLsVS7r~NlxDrXE4)SBVrcW
zk}P6sV=`uAiAZAWODFC2XbrWlgW%+Wr$U3WUo`7Oscug32yaAxRR06@NkyHWNLuW@
z3@G$1{ws{C<y8r}+BQss4JPFwP&?4BOdo^nMzpKyN4v_T`Xbs@0!~Caz8>0D-iUTp
zKH61^%166OAMGmHKbY&l+gVuu!td{sdx{qJ_3$e!ng01BjPSV!xo-=A-2lSfFuTjs
zl4S6Lq$c#hV(19=Y4?th85BvZketBq-U<If^GrGywMu8>P~78SmcnTWc0q6xlD*K*
z{3;vwbV9y~G?%j`?dHt}g*p}afJc}8*&cjNqHLVa_xDFf<lZQoj|t?wItzmldrcuX
ziYk@?hx>@^P+3{=1$+=Xg>yx{7|eC;sFf5jYTGrK=czYrINh7c(RZYluVQ-d?+4Fb
zzJC9Xb@dgJXjS&Z-bc;)qQ<-mwfS~<rDp#n#>yjU$OE<UBjbBKDI9kvkvkQXIJV<_
z?;f=U5YCZjNW|Lusyro4GM3PXp8HD$w=z3Y6yCz21T45gt;@*q5<|!X`MvIS9;x(=
ztfXi}u?QmTZ+cxnhh-#}o^))?2+h4Vhp6R?l51-p)R}Rk_d?cndM**^AT=js8X?ff
z=&CF%B;~vpFrYWmM(Pm9!Rc(&%rH(F{LR(hDmXzWf9>~2O>9)CVzYp*gSesOg=zVV
zMWyLn7hSeTTd^42S;E_3E+{r_<48^u22XNNkDG6LREzxI^{E=Up;ui(2>}r{-00=e
z3R4t73@LgF|2{r3irPBbaez6-7=9b8pvF3ivC8Jg9Ic-wvMyAuT(r+;zPUqOliG_^
zgH~d#zI#2Px(-H2j?U0hS~V=UI<C@yL&WsEDA_4!F-k&>);Xl!)Nj)E(tvBBoa)+M
z2@efgMl#wGUUzMqQow^|khK7H4{&Q3m+)1n&C{Ty+t%f)yaZfxu3Y$<aVk9l_0{q+
z>O0T6uxqOCop}tc58^2Rj0*3l2%2hi3V<Spl$=3FgMk+Uv?lI~R(;wzFh(~waot@`
zxE@Jmek-43#1Hoz8P#Zhn`ADVzG#D8=6K^v(9Q{K>wtn?D!o}3=>LzkzEcq>T|=ca
z5}{*?(JiZxK1rlpStQl89AAta*Q%8gAdHR<W6U}_B=j>k*rKNQa}G-q?&Zeu;tO~T
zHyi)^Uh)^hK3Xd@UX1PzgViNRtVlUf%r%?xG^1Le3Y2mPBS|J?I8Viw`CfX6U51Ha
z<n%DDnx4m4dha&kOg${7=JsM0>$Nf?I+TK0Yjm{s{Z-Nd>S7bf*$_EOFxFPg8`LYH
zJqg8zX%5hX@OqdW3~Vy->&NyRS@(#>FVoBCI_5T2fdmHDT*Kt+3Mkt%&12LuZWw-<
z5?b=cg;=IQg*b!DVJy2$k+>C*xC*Us{jGA+K)GHu24BiiVmzP=MD+53$Q-VR?pdc$
z75ar8!^>2%JP+<5qvv}Rl>k*fH8EBz*$o#Yo2;&AD{M9!G$IId&kZilh5&;l*`c}9
zrl58YIIBrdpS6SGDP~+tW`oTsq`f7dxgoqBvc#Op`Er|vB^|JAv6l{m<0_mP4MS9D
zn+5|G?MV8!Bi?Dd(nLWA!$qIDS9u(j%wy~kspZTUuc|jLtsXsK9x^qcI3Fph;B_3?
zQasXuV>RH_DaTF@Rlb8ly<u(x4t@n&s>A+L(8Dml!Zwy=Be`^OG+nv#Txl58YD>Wd
zg{nOOn&FY68FoelL^9xzkbV_X?3!`4Y2i_QMx+%NZA{EV<1DjOQP3k!_Y{M-26ro5
zoi?rQ*>va_G(1$}!E<%3or00WF|<lxGBJ}E@2gxa(+15n>{zfOX@!gc<YlWmtF7e)
z89`Xt7&qy~RZ<ui3!723L|n7Svr3(dY|B=2L?kd$iBozhFNlc7vuG&l+aZ~59Kyn~
z5xU}q!Wh=L{WwGEMGa|I8g-p$u7i(%>Gk%pw2Yj`#q6<-Y(dPFO_;nEVqJK+U*Y3)
z7LzKz4yPmg19#4>N7trK=z{S2nV%Y4{W1r%ha1@DD7w5$=W6a5yqz|#TOhfak7*vM
zn|d;Dnrf@RDUY`7vN3H~VnxgMxQSQoPf&sgxLG0E!N!q9p7Kw87{rT45!CFB7;qhY
zLmjgy^kK<#b$`)|v?@^dLj?Hi#-g&SN<1w5mrHh;)%X&r8481KSFEa~<5p4+q~g<F
z66UewGHpepYaH&1p@EwI`^{SLd=&W{y1IX|=W;jxm7cV0V_9n+X|T4TgqtRR1<2wW
zTv;JqKcmj!Ln<EK#L|OB4~q`DkPnOT<5xeuoWh0f@avjB78df|4;9}rielBq``4t2
z(`EUEqa#zei)Vj9c&d?oD;sS?1go#nmYn`pB+rXmv6dSLqo(k^u)d6|IV@lk8O4<Y
zwm8puS!vF*y~YD#Lk?`P!&aacb&4Nh?a*Tx2sdlT;9E3oL8cft$r4Bg&t_#!b#+}R
z`(~?fl{DKKKEtS|v%LkV-7PHYg}A%$r`~nw>UTWz^gHlrdW{A<H%JN%SBoP`x;uu8
zhTWrV8(WFgU-jg%e}2u4rJM;Hw2_^giC=VHWpm92E9hY*N`U_WrKhck3LQHU#Sw)G
zbEdwkETssh80DHfBS$a)Bo$;_)fQu_M{C(kXdCT>Wc}dEI94aXMN5hhQDZZWgX}eZ
zj5@t=9*;{W8Xt_>w-G1%d}PZZQj7Ee4Wh_Vrh{Je^O$2lr!pl@BGh-`?%MB)QcJa5
z<;;$_U6#U0S*Eg6a@m<crVyIWxuok#wG;s37Bo(CTYiWZ*uuLAD}@3Mmc#W)rf9z%
z^J5mvs3EBS&09A0HXlPVo9h)iJIq!Jd(1Dq4NP}+*j3-5Gk+g~tAmfG4PB7_L%~KQ
z;-5wG>?SR*FDYx0$t>zk_hm91S86-x)w2zKjSG36#z!iFF*6)^tcV&D7sA5VM^0&_
z{J<?x5O~>!_Wt^*zHHq4TXttE{C@Qc!Y;e)6E_qQJ(W{OC1QsxocwRuL{#vd-bVMg
zRY$1;$141hag#=;{3e~?I_XgxRXV|rLa3_~d`qnoj|Jp2b5vv^b!$y*BE==@)8lP%
zhHlpCt$glKMOwY3r`3DVR!GsO##;xSXtZdNb7R>>H^*TrG-vE4uGYX;pmEt%?J!KY
zQjc`bh2jnPm~xN2UJJ<CHkHt0OhCMOvne#lMCQt7^F!fyXD}lEU>vk;Ius6u@ucaE
zeYRXmc={XJ(JMs1py;>&Vdq>TRz2v>p@sOo{|eO#y7O>of4!vz2>})5vSXJGm=ki~
z#=tP1eHJMcQ|qA<lQwO+F;NjG*v*Y~XM!l#x%_!lVL%)8^$UDm3G`}{IME@D`_AHy
zA2$66P?IYlQTobecUmFUDXgp+WNrspC*gO0IvimPr#tY&64TeP%jkUn+j<!M0iBCV
zis6WvmAFP34Qk+Go=_#Bk<Y4Z*2TQv7l6`|H~-J{?;=K9R`kdER9=RpufuCOCNU8f
zhW4Q_w5ki+8LSPfU{WM0y80t7LxKawXiiXxeuqb+0?kiRxsnyL9VIK<+|1CIlMI?8
zzk$eX$I;cFQ6+zo!0KRgnQD$OlTM3LE13fhLnMp+ToDt)eAl1pfpNZ9q)h%%(F(2>
za_)@<omCiN6aM^6F@d~jL8a1}hF)~2pf!j6S(8V?kBi-PY;>U+SD9_yfe|8fe!A-w
z*Spx1Z_ZD{Ugb%OJkw%PNBwQk*_e2Vd_0WWx+b&~-sz5V_GN5ChsRd9$9wYc(ZXA9
zke8`Y;*3xjWXs?b!T+3{9m4+v{r!vjdv+%N=P!r+_t5<Pi~4(ZrvGAj{EPMfqW)qo
z|NV<;_wdl#QYNjpe6;W%Fb5i9mXcT5YZ?zm%X);e&9oYwSLr+>5~*AXG|dU3iCeT=
zY{0?o1?mbOL=$|xd!Q(JrKGUd<UcWBtH*d%mFL+!e*E(@M1bC*ZY5eLk6&c7s;tX1
z0HnI7zo{RnBAy%y<;oPMRyWX|Ab;3NNU}@g!aFh^k0;GNNg;mfp<1t<OEj7-*2O2Y
zP;9Xl9}EGu+yNZz4-+&-DUX|zVIZVJNNEh1I6OMRCBqf{Qn7=`SWD`?thZq_>}==i
zhW#8N7ZaYj`>qoC!A<C$Lm#x%*ReAI9y>dOy!$sU9g?|udUbTWVt0EwzhSD{H_Vq>
z*X8c|YtsFfjKmzR`~TdmyXl(RENq+_wz_!?C=vQrBRqbv0O0grn%~T!!QYrgcYD*D
z+n7(bEgmrd7#iGYpk@%=7!cj9Z>$4L1s6>O_n3;{vt$*bS+mX~GYVz!xxcUQ2r1Ns
z3QV5TxF}e~!!1b(fzDCoq@(2PE(bCx*8o${cjv9pY@e&p!z^xdP4Ho4S1+ywjWZfu
zW9u3vHREq&PIx=k?`lWxuoQMHsW?Znovy?Ht@Qu5x-ac++t?EPKEHxO``AEO)Z#3i
z2O8$FWjk`>EwW-Kq1ieh35keFfB`@)kvPA7?oulVNb*a%XXb-MpiujA>+UySdSb(8
z+s5#=9O73?c>*PkX_C*>jIWRbxnUZs70nYR&Ld3Y^!dfo_k19tm4B~K<yQj!c7p9c
zazJ0bYZT)L_W*3CCYFVC1C%s5QPQp$(YX@^QA<ckpKp<*kP!<05fiT)?YUa~Tj1WL
zRcW?_x_4()aSE56F4BtPxms_L_vvChzL|@^1p0taO`N?T0+w{gZ;JEIUi_qZrNP}i
zk-i?sZns6!fI~9kmuwfvA01{RL3xpjOj>l9Y}xg|Ym-i#jj}cQGPQzc!o=I|YraGs
zf;?QcS_0wMR*2f*CP9MF8?RcG4I02`BJW^j*aobr?Z8s{_!}~d!tv}!5(^H+$i~7O
zeNlpnIvcc}u`T*BD%Jvt!#uGXcFch}0Z*f7y&QEhd6e}Nc6RM2k9P+(+$`@tfcF%o
zOihunJ90{mgF1CIx?V?4pJWwbwJtZyYJ^S+d+X>@IEJjZhZ;usi9E@0C0@tue~nqW
zOtIQ_@X&Ju=3-+k6n*1&Kk1To5NwHbn2ZR5>Gjqw{^76}(dLAhzCQkR5$~D+-w0KH
z%c6URll*1OCibM=w*qJ|;kKuv7a;D<Mh8z1-IxYwZPF5%Vw|6nX1?^YvP;*79n+$^
zIi`g!Xxv(<2U2b@{bv~=&JVFn+m(?O2uU`)5%OVV@Kv#~!AMoS;n7O#E}K-VrPTP5
zE+RM;xi(N?K9W2EB}R~yvz!mhkrnh{EAw*-w8GBHA_Z;_nM;QA4ltK|8|so$H~Lk6
zZrn=~B&RHEGPa0YBKH>TVUcT$X;%t4c3E0rQH%fg9>~Nc*=|xm$aO_i$6gy<e&4Sx
zhQF>O!CGX;sqy^;pToWNmstU~SX9=nf|25+^Yk~&fNxWKw2m36Yz>;6?9dmN0^%g%
z<GU4TaACo>1}o$nBi;YI_Q^lCtfd=T_7?ZFZH^*&rM2VQy>A8CmHrSf!>@O>``W!-
zD>mWPW=v_m7IYZFMrU3d+eT`t*fx<kh?kJ821y85>({8homW+UNU@1S4>5msM!LDH
zDZou*WI^H->-K0S(8A95IRe_RndKF@DYz++b}EYaT!ynvd5U)d@hV=*&q5IZp>3#*
z;d$E!8<?nN>Hul03uAVSX{!A|Sh4rC#~EvU*fCZ?vQwfxsU3ydvCOE=q!%)dEB5yz
ziZ9!}=^H}MaYJ3hJD}F!%Pg5~v}soq(mC=Lo4vU!4tsw;o=?cW5-~f#g5ikr)!CSH
zP+1{08MKAQ!<yp=kiWLO95c3-WK(6RUM-dA1C94M1$rqJg^Ko$S|d%JyS_#)U7@i*
zy!#5ofDHX5Ljp%>H(NVowDDA(u!C%9<cBQ!F}ocSrOAAXv8nzxH1ZyP+u8fJga5oX
zxTHMU{!@3=jczK`(EhtFsd;h=t=)c4sebfsys)^o|H(T`^@}gApD+U9?+tOGA|IhC
zh72U1tw$*ZbJf8Ky<@LSf;Ir)a0d61f7Rj-c01kfPgz%n8AL}aKfA4<f*Qxv1QMyT
zgKf$Xo7nzyR2;>?+|#53<T^&&948$thhYT_=u|zsg2ux+>1qSvM|w>NveW1a!BmY*
zGs^ZpVC%{nDyZApBae?Gf=WX1==Cc!R?g~i21%}54=wn3PYwsW1k~1c!b8GZI@3HU
zDU9eWKEnVBCCt@40jdm=5OpPToU<-gWqURq=rr@~E?^j=wZM@d#iw69a3iV3YE?ye
zU*5GQ%uF%T8moE+OZ9U`kMDBFtWUbhH}Om`4~HW{ty%8h3ssKpzkpne|D54+Cuvid
zvuJCtzZtJa@x4%{PkbPNIpl_uHmA@`6Eu{>pf+jry-3sOU!q8(J&~u;*P=|DU8Hkw
zn<<dBh;J>06wg}B8}l^;;fYgt!P5lYT&2-G^@}tR6MD+wX-ZEiy6uJIKm<*ha{TK!
zZMUMad-Q=c*+p8)EfTI$c%dyZ!KY_({lh7~VHB$*s~UMxDZC(4Aq8Od9}~`qw|ANH
ziJhgep;CWyp=OXF-Im)&hk_>NOw(P>eMgYlH}D2_YO)D$JdD!UNy}PT-%Ge8HP|yP
z(}ljc>)N!yJxRxV`0hy+a^+7^Sq$dmKagC<Zr{IOk3vh7CqKVMZ_fktDjr|LZQ>MT
zAbevv$+QlWwb@0d7-FX6!r>y-ob3P>_bt^=sj?|drT$SO_XE@3z~Cr}Mu{m;*~20w
zDsPLJ{)<`=`eFfh_@)9-(<e2Zvi`*wkPB`BAIaq!?4KW#h<k}TKV@LA_+WFd$k>Yn
z%qU`cKp`pLo@YqhCq;Eh(JvAeazXnaUxz;?;w)_qg1y8oEiqcfH1DU63J!M1uKKcJ
zI_d+M9OfgD3pxRpX<GnZ<+VGtjj^-?_dH7Q1uE%h!+iVmD9X3b)?|-6Zmx1TYOWGp
zd|zb}e`SZ^T+c=0wjZZ8<1lq-keWD$tu#)hh`V`Q7|>|l))N>U^`Qt5s}6?62zF>7
zuBs3&kT6A{kKupLQUTXM*c3pdb6KmBT!>4o;WJco7A7*4#1~M{QO^5$3}AA#oF}iL
z>Pw&%0Ywb|?rMuN!qp~6ALuO+-G<a6dzFn5y<jVcO9`*b@FEpNOE=8>1@=Vt0Oseo
z<-Van*66Ri%nQ;NIfQk<=kOS|QS#@eCku)hQOD4p07j+*WML;ezSljbF0e35bV!=j
zfh#Z}5L+&j3G9euy4`uN9=RlD2|H9gaf@%`*<NKp0WF(6Y;5%E7s?8QQB}i2br@dB
z2Auw}o=!T&P%c#gi(eZxQlqEowuEy?Y;UxP(Z<M!ZHMt}#@jf|7{SEt&d0dK#uFM&
z|3Eq`PwEm%Zb{?M%}voZ;K~SS)muN0<$cy+*o_lNuJUP|h+%xe`tqKGRG3YUorV_`
zA`o&oouBTo@U(_xiSrBy*#`gb5tYV?A&Nb54z0o19wl0p<^Fx7ACh6#-5af&e0MZW
z9nDZErz@XKRs}3p4t=a<uvU3CNz{y@xh&oqa#F+25QgiFZp8Dt7W;T*E*2|tI=4yU
zYIL#z6EzVQv7@}hHuS?}I8-%s3a$v_9+{fqh3#NC2gw6u;rcW@_*mrGX@_r3TuWUE
zE-!4D72KVj=NE7~@c?;4BtPfU%fJYRehNG5L08q^^-KkxGF>$wU2XKLww~#*8bvnA
zhT|a@`!Jt+E}ym#FqMiCln{wVj@{bE>;0Cm_&hS~x$MMM2e1!F0O)GK7s7}oHWbf!
z$+s=>d%Ep{2sCoyazv~(d{=c5mj=F@y^m2dY~ctCM$S`0SRjGUKwhviaRc-|aJ-IT
zT!QOsXuv>ix-q3YU^-88j$6N3*OpyZMs@Xb%V-g*b>Oa_bG_v)D;!*v_4UOC$MtQ1
zd`;OU4rh>87b|03Yq+6<fx0-UflyzX*j9-Q@6XNnPuo>aafj`LCT%Y(dBmi)MWQe6
zRNdDa&s<ZT#KlxvAXkg{kGw!D?KH#RwLB;d%gdOppJ+yJCcJw9uL5HzdH@uizlXk)
zA5!Gav_Yo>^6X;3VR4W)hgRbrRkBA&=DtS?aTOk<VwzNVSvJj^zM5RpR&{MRGL8!d
z&r?4LKc^hb4{q?!S$>{{&(pPdokrdZI6f!ntM#b4hYbXKB59P54YWQ2g;h})CpcH~
zH3URGDM}<Gs%`m%)a(@QzayX@@PSS#5U&6`7M#kDGX3RqN_+WSzQ2V{7*i5G$y7NY
zOn;qn();)%E>g<LkE|#o-oaF>`Pdxh$JE!I*Sks&;yoTpD#|>2ShA1M91h1mK|HPi
zE?pXv^GOa4dRY4aBMd}NqjS=En8-xnA=)2br*P7EoK6`zVCdl+SnZD#B%t)fTX=br
zO^Y0jE1$v3`+N@h;L8)-6h)FeegDi8PrrCmy!r<=h3sYcH1*%eB~0JG$5#)2<vPpW
zW9nO(>FxVpDHHt4Os~>xbwO$LBva*BG5wh=Do2b-Pg33;f8Dq{UVZ8Ac$JECIWBvF
z-oU!0xtm6#3`8tP=s;x1KBqxB1$cC@Y0BCMoC??&a=`YdXUL6$QIAWvg(qlY`LY>Y
z-vV|N+Sp8sZkI`1Oeka`wD6*3XT416l~{_KZX01<87lgEzZ@o~$ptE02KCLwx_Ej`
zGNLU%{9kJKm*#e*V@d5t5_0~TMmyVI4P^08JD)lOf4JNG*QgtO+E!27U+suL?#crD
z1>>X<XX9QP4VnKa0j@ikaEL7<5c{;#)atz*Af9Ozo2cGja0)#vy@N*Q{5p|9PQ8~B
z9;tU^_$KGc_;Xr$6gZfBrvQIb|G3IeJI%B5XL@@dO{cc(gp&ewSgc;)RnydiMVTh8
z%Yqq-v#{~w?OnsF(aeqC;Ji(dJ!|zz-gWhE{h3n3bZfLsjc)vpl#JQ&F45I$JfLa3
z^1^A~i%!)tw^g~ibz3?;S*|)c5U;Yn<GW3m?`|kHWs7{A&T$8}ZLyK~&71;#AzJ+h
zFby!XX&xj1|J2E<)|t?QrmO0<<xZC~(yLd!PnR(}d~ay|c8CDEZkS8;ncHlgaXkQy
zA6RoE@1&Obkza408@i$G-B@-mTI$SUx-YC6oBJxScdN>|yb|kmnlc*Yu}YPzEH7^?
zrEw#B$MZefSZ*YKMFuQ|4k_F#_+E-PcH$=fhWGD}jbb#m{S>8$#hhb>ij(NqbX!&K
zV<1R)$2#G85xq$L69D``$j+z!JB^b7;=7%#0&yCBNd1}4@R!N(7iCZvo2)-vKySlS
zpi9ou35m!;KZ_QELk#;#bQ)|EriPw-wvYzd!R@>wi8UN-lvp_mQPR8IXPEXiJ9gzs
z+$Q2k#Pv+yG-R4b#r1W0eI2WoB^WSmuT0w*^1-T6OrjMOn`1=KZAC4x7gy6+REXSR
zSYuUs1sUGOE&^2$zWNT&n3JAk`VlfzDkpu8>6_UnlpRC7Ims&<_qB#0ab($LM52@N
zhcr2N3Qw6+_Cp%E0zT%DW${^h8drI-y@J(#a%y=p{gGsYf%qwnid6ibMrkU3ZsBSx
z`6(baKc#4*U?u#XUSBhDN|JIZ%iPabS+y2b5naXeW-S3nXgE-^N7N5PDWjHfr+{4!
zhNBQLQAFgj?LSvZaj9a1Kbeyit`Q|7JGN}$ZE?k<df<#mDFE;BH*%_%lv}n;QyX;1
zkCH(K@8xSwQ9WuYR?ns@;9KlYl{98GJ<0#NTUR#nVHF$PJ&yBKbmpi5*~uuTWk=b*
zm3X1y_WrvItJzAS(o3i<Foq(hg}0Y@EfRoEKcpy(=5B5yF9FW|e!8uhoW3V@8_)^c
z$w^5O2^uMdszA5Cj8O+7E26_~K+^yW7Pq0}C~&%ee~-YIqrlE?WT5fq)0AVT7zs72
zs3&b&>9SxV3wnW5)F`R1MNvd4EEU-*04V0SlXza@Ygt6D3J8a#mKOjC8Y;o=9oe&F
zCdhsuOhsH(DE}*<iMVKqSdY3psH=dA`Kb1}&%IuYc~c3vN-Fd``^3{zC4H&^c$*^h
zCL^o+_b0gGEWBSsuNoV_e}Ct{{Da|M@4FGuFWO2=1tnOE$<6ClF<-J@k!vLt(V=g#
zHr%D_^D293HcN_>e9I>4JQd{PL9dCAquk2b@58jQ8>@mcO*qd<(To;EG-EI~1Dv4n
z_l%7HwH+_4^DK$UIa*AbdKkDog$YB`s$ihKVrNEUMnyy?FW9J^YdgkDrxE)06tkj{
z*MmzWY2YlP2JN22*<^-}2{Tkb@w$oN|GQ$2tCBBK{@XZA6Ls91?TOh#G5cD~z7ex;
z#q2u~hgn|v!x>N>qrgM;MIrA1)J-(HBj~6&5be4)IIPpgmB<QTx<R#rR4?0BWMPln
z@c&`PQ`Iw*n!)NLHwK`W6sf?1Hsnj-ya0|@V1$v=0?C8|rT3Rj9hS~mmFrekGLnf`
zMSQNltfiw^_^*y~wapL6xE~kIjB8oDTW>{mC8{2|qFBvE9lq$$7$oT%RKsKxswF05
zD;=QHN|>(2`6g_V@*0H<N3wmd=fQ9`Rs?-3ZRnE>P?ivqeVCcxv}tSLW`d3il+z>^
zX<3!c`DhMN2qt|}LO<7*?I<o~llbSRsjN1q5+T;c2yw^R+oXXBl(2d{a%n9$Fsa~<
zWw42~XoKgU^2Z1`j-e|hqE#Fc5r;VNi)eTZdt9viGuV%Uo+ld6s1!esCi={yZ>S5L
zWSMYWp>?qLANYf@WSwv9$N@jgC%9{2LjX9X0G6w)oTVp~KL(KU2r76C1X-Z7#F&M&
zXXrcE09j&;%M=77LDIeXbndK(b;;Wj6h>JSW1g$Uo}qr8BhOe2M?nx;v$BRsh?>z$
z*C;BDZm=y@!Dnz^xaBn85P7O<QF-x{g>Z^KPN^u42p17f)M4w1GU-~UX;~oDETeOj
zUgiS1<9+sCXFJmNON{%{XT^9oDv!-PHz7QXOIX{5bZa~@WjGC&6zoPmVCV?Rrx-d6
zmI0~_3j7}yeUF?UkUzme-AejukyLRAv_=)?>VRb$=HaR~<|liVrUJ&r<N5|)fxM;U
z==J&-AF|1&4_Vl|o~iSlHVdgas>Dzhd5-R>X*#8G$)@!V%vV2Yv9=>CYuP!N*0W*=
z2;xZW{MW3imgPVqPN;_G=Yt;Zu>-@l&INtILa6g5^_s-D`Z~+tT<}*^FkrXfV!!oH
zAY*y<pm8ik`T!ANHKy~V=o3+S7k{X<NBZc+-Pg{Vb)22lzd{IGuo`Z*ZkR82wdDhP
z1=}!?AxKEMY{8Ov;Zg5+mtFDq5PdicnE|lk(34D+S}t<n?BtW0LAT}8UpO4N`r>&M
ze%1{%m8+gA7uYI<N-p05+V1uj>5CT^=yPE^`9)KrbV3f!lDIg4doV999X%UFM%HbS
zKAEIoOOsqhE0>Pd2JWj2_w$@AfWsr_m5fz&JP?e5h<gRsaKqCuEL=%nkL6avT;=t(
zOq9gnv9jFb&jERE#!K-tDjmXwv@;Z)(GJFR17tlN#uz($3wDHCx2grh&&hlPD_6ZS
zD;tL5wp9lJ^t%4cF}l1ynz583;=(z_n1@qH&^4x@gxDHXfZ(fddyG+27RKcNC1XX7
zynYp`FiAlpJWR;bgzgwo!-?h7Sw%}W4xix=K>_0&qNrKE>O&8A{UP2q7|I%^0=2_&
z=s>Y^YE0%<&x`1t*`74oNt4$KH||hIbQ~E_J<T!DxAF+C?9f8#v(;;iL}mN^zX(y^
z>7){u6eDjbFkBPSx*vPlHU%E)$s9BF<)BAd;XflKYqloDzO$cZd?Gpo)pYJO!e+*>
zn2Cir6-#j@F2z_}h;wl)4#mFsES`%4@m{<ZN8+P+C*Fv+;+c3No{Cp!82*>`=O<o9
z%AX(UXQ$CklSRHtote&^nMSQ!b8t^0<9WE;)~0Vj6T+_P$?%0!FSNeFVTX-^7IA>^
z+ohLqo}eJQ5f1qcXn=BC8o{BFpIa&12PYWUhK%e~GNr;%OgY>TY8bH!vK>tkXtd}=
zdGzX$$8R8}rL`V_?URAOA9<IaI0hQk6Nixpb9dm0&+rgmz{3H?#>8FViRY0==<oZ;
zn<n!rhNRb#Cz%QG@;34)4wZNpdFP%uio6R?e3a!sdg2XL4iC>Fk7HbkC$cI?e5$MZ
z=mjD6>VkT8u6p%R_3ESP)ko?TxBA}H_1dZnyG7l8M<YC<(S9_edZUI6y;2zb6Eni6
z)(8VJjf&yHsFx3)^FMJOO~`Rtqf?GW<j*2>P!YJ>Y}$(;OK)$m3U`Hn8qHjL-2heS
z{7E-D6^r5L(f#|cm@t?HV!;Nzr&PyccsLUNGRlW<N8QEn&8V9XpN)dY=TQ1QS`y#X
zAHxk7K*nhLXm?P+LvPwGhVMrq4TPV?7z#({@caayUypc{Q+R#~>0(S)rO`{D9{>vC
zDg>N<pwbUG{UA{J|1$Z>+uUnunyL%_WeTbc?0Yj1TgA39{=UAJHDbJ5e7JvK)*urO
znB#RBO?M`8F<#Xd<1F%NJzj0BM*x$I^N91=<r)6!GI)G8@M)4ik9suI6L_JIY87_j
z0S5d6o-xW=bQXke!fxO6>LQ~3g3BQguLju3e#GH<KDdacUHq<HH&Cj7!QhO12l}`s
zI}dw4uT8M?FrXsABit=qeGqzotja1qxugnoIzSi8{BpYEr&=32K+eo~cr>DI)V7nC
za`HAeb6}77`kH3S8bmyxx}9Ns#9=Ik@8BmeroxojA44+i3*5~J1~GFFJJzGEZ8{1C
z<>Ue3>{Bx3#cF#w-dF0d&|zA3BfYRt$?+&!!q5IFx)3vaIO71`)!jDJcbmBAM$7Js
zW7WW^8gHLRa&M2fXOY~+Rjnp=g~C--Oz0Cqb&M`?FcaT~FEpFh5Be{lvoA~zcGUes
zcLZHA1mb-WeZ0kL8;}$Z(bVHUc|!Uy-u%>)t_QNI{6?-wJT$-FxV^s=_h>{D&<u;@
zEt^VeTe~>E*UcO}lw+VUh2$9GsJK<p51C)d1T70=H0B39{fJ!Ay~vA23{wIaH|foN
zyuB(b%ob@`LwOkfz<QQX%DIip7RhuxP$plH3Phr#Mi&1Ym5~7tD)7~K^qtF2tq?oK
zXfx<;0wb{l27<A!$kpN#e#2-f;ZUZ%q6?J0u~TloQB`EEqk@!D^aoUv;ez|p(Tr78
z`JQPgEI*mzhl~YSr6pd_P*_IA)MbB^fX*(hfL~L2^(|PVA08Q?>`D(R9P-R`c<8En
znwgQXy00^;fvT)>E@WovuFflmrLyw4Wlq^K$g78>o?f64q|AmyF64QWcj#3L{$$2C
zNCA&*jsWr|XdgT!cU|b6ns*Jl)0DA}!UWw?Ocqmk*c-v58GcRpv0(LUI<RkU5fnDq
zUuPR)O$9Pe&{9dt(SvPtq2SxD*f*qE%x58qR)(UfK3m1IyKGe6*HMmCin4}93^_H5
z{+5>iI)m(1wDS$qIc}CEEWtMV4Pl)TnIzOODgFe-S*4Jy1<*AZCpVB5EuvVHLxi`?
z7h8+BMRW!4F8~<hg&DpfHzNE3_@(^xB3`8POICzfEOS8Q8=3b?(|>39>A@%O)2GqS
zseoooy7*LfF-?#*wQPzjM}BvezpEO}A9qk;X?xUNUTFDaFz~bJKOcUjMQ;_#*>?W*
z9SR!gs^&|6nV<W6yBP4?y7RNIieRVcddmtOsq{6k3MS-PvkVknN@_R6=tt6n3+c%h
z!f6F%J8k~OERjs~mUtLu_Bn)$B;-@$!)#8hIUp5d1w@LPKT_f^xNL9qP3ERhK;X)R
zHEOJ@yuN;>8PGKqX4u>CEw7~lJ?K<hV!U-`c+9V_IgZK}AclZ7$w2N<NgVJs^0eU^
zk>G=NPDA)X<u1Wy2vxRunvYUwy&?Pec4&vnwe1@h)9lLzg=$en4sAF`WQ4-i+I1b3
zRmXfw!YrZYUp!Abuk#ERhMyPkEbt$a)k*(Jk;d}~-7C$-ESaArRXT}98E0j$Op5e`
zGjyJ!LI`K;jPcpd@-)vscb;Tb`sXT+&;?&7<`=Py=YY~cgPaj?j&#y_4<$RV-$xUA
z!+JW4(ynhmUlnOmblxODN6P0cIT!NT>irK%UYw?JbjrW=_72p5A~Q4|s@2-d1yof<
zDgD?V-d`@p`8+D=r+*aB@<kj~^doMVu%n~^ycZ_5k`LJ5cw$dFI)W*2c%4J23`15d
z$R_l>Q{cOxcR7ZmA{nnHv!uc)tMm)Z*lCg_XHL@}l42TXadgJN4LLq0V`Sr$(Ybu+
ze}w-sNj-_b;^j#PAICA8AxhC=(kSyptb@hS0FRW9{t7Qn{6z3SBryY~X+eWW4SB(U
zPEhZJA-mVbObFE0fmT|Sj>poHg5pZg*a(n15@hRp+f9|$-I+K^FOn&d*x}Z$d!0Yw
z>l_mK5QmL1q0I4;5ie^PG&aj#6A^W8DHX8D_mvAwp0Ym3Uo8?8BXn*s3RE75QHl%q
zd}!V|YGJ|#pyK6i@Cz>4b{Iy?e&6xvsR~(u=KE#U+1tf`5AokO_z%+_;?vjP!40Q2
zkpf{IuhH9xU?F|g0O?Zg4TyrQr|di|g&h+}>{n?=WOv&?h+UNR?IRQA?kR5CJwErf
z5Y1lMvRiK2#JOpaEmc_8Ek&r$tjjjhmo0g0E2FRbTX0{MkE31m_8H_@7;zWmtfLhE
zFO<UPXuPTfg0Z^mVx_+YHzheyR+PcNz5fYQyTkr};cmv4y#GHmOV_oDwtEbcTIe<z
zKRDTzZhVoE^Z`$HA|q<{wK$SCEV(+=xwmWra}sAy$a7JO&WdCfKni+2cH8kwTSwgx
zrCP<wgek52VN~5tbZEI>tS&#^1%$+8F@Ef7W#llO?^sxm*zvQ-LpP;w7`cvj2U|uB
z{?FoeWp)&?0-hU@KF(07^Bg2G1AH0(vHqd6=Lzmg=*=)dK>hne>-)oo?_XQrzi#;c
zjrIMThVS26-@k46{+;#xJ8wNQIbLQMykuiwPxJXy5#eKcR^{o<DqjKNI#F3u`KB_<
zcat6c`xLT8DzP#Ns*p)C<<R2qbAtN5tJ9e(Te^v=yqj#*f%3j`Qlv}Goha=jUEWHx
zOONYi$D1X`8|C)NhZ`4}(6h=-Z}wU|o#&I!o15%iT*RkEytIb6^lGL4T;-Kj_1L7D
zjL$Goh01{*?aZflg;jW2xZQeUI1{y=wQ!hJMJCCbj&|OXQ%okBf~{O7rx>T1QaAFG
zoRTVajixer)aV@wooWO(;WVtf#J9Q9c%+tD7`<k<95jnTLC`MBb%KdRi^Lvx4seqR
zbSz(Bpv7+AB+Cd7Q3+Hm$&uh*6^g?MsQ?idQ`8DxOxMz3RY8*RwO}RPMrNfPRJ!3A
zT!GmlIR#7v#pbM7%gjn4u@oGT+9Ve2CJv6mwvHD`af<Pan?Db7ztD<pEqQ_<gk1Qq
zEywkB5xB@sZ9t?)z}_*LZ(P2nzF*1PpEc_6iCEi~gWvE<#!f_h%FqbbB;p!7esH-{
zIs}L{ofu@dB=336Mb<5Ya1b>kXt2D&*10Dl<p37-7D!P-J2&1+ny%E0{FY1hw4H<O
zO7L?aNGh)@hh0bEo^=^AkB}G_`2zM+c2m58xhXHzZa?qeKSF)d#z|6Mi0#%9O|X%?
zjSPg(^~-1_YJ7FMgEVLTg?cC6dbvhk(MtF+o*|18q3x$5ewgDR<0^=z%H}Zo_pn;n
zxIF=J+tE?Mr0?GcWGgnY(%D_vA9rM=NqsWo^Q{ptm3pg^GC^WRhB0wz;|BlI&HEe6
zQ9m`baA_KBLbp<e`3B|EK;mkX6*#8`msJS7)ClSyF_lc7yPF80{6+%kCfX;DGBa3F
zl3cH^W>beXsCj<egt0u5VvzHJVt1*qMmlf|{jQn2sPqRzH@8Z5@&F;FjXY{Eil!>1
zv}rBwwV4q7&$0jsb+Jfujr~N+zDBpB*`9uR7|kB)m#?GQ*ZSp~X!ebM`8Jw;t6#p0
zX5aPErL<hUX@p1*Qko7dpuW@rg2K}12>VR)8};=z9uu;cYylR)GNSx%I!SFe1)rp~
zR9$x1A=Fg~h5jg{$42p6BiRR6f)%UEc%Bc4@X~CKzLJk0+FtK0i;_9^5MA!qxNHUj
z{YGS7V7MA^PNkxG+K}J7_N0qeGRhzjhYM1!gUxxamm0`r>UrzXDhgW<VdSrE##xY`
z#Q0cvEq-jWC^Ci(j{h=CPPX+c@&m4~@i!YLJzS>-<D2A`;t6UuB#$z!&VfDu;Rfo}
z3A7D>vZ#*v-Z>^*Ok2+uem<bJ$OE-=J<jhT&1+^3sb6IYVCJyd*n||RE-E%SX_k0M
zHBjZ79{?jNQs2Ly+II}BAMIy2iA#XbNBKTiJV>>XMHPe^+ZA4XBGplDsT0|VcnW@M
zn87|H!`2y6^U-jJOBz>ZU|BmIYVvfwsNLfFb|$UTAJAYmFjuy8&Hg4i_xbkzy=8s-
zxK2v2jl{Pm&WW}*6u2gv9V*))hBxSFO|UxjtwjL4RP(y#w=cO(6kTnIpA+U+TX2xY
z(Zo1a!^~F|x*G|H-m?TJ7vWDfW!d;!{^oHMHOlldt7m$d$vl%4X4pqn8Tt<?`4Xk_
z`|yKl_%jmA7>F83eTTo0%)cX)kSrnj0Dd5KF-hnNoq-^TMI-T{$40*$RB;ya<p~M+
z&(d-g&*O9onLf~S2VP39h;>#t`AIs3>{)WI&5nm2N>|h?mw*)ITpMz8Xgx{6!f;R*
zz9X*-1n0s#q#RN!MiqdpoDLbDQBZP6!GJD@%v#k1!(Yp_RB8oy|M01@cc$hzKod4g
z0=rJ{Khyij+H*sD(^=0WX9o^l#*Oo~(f8Etd&7>jN3pRx$>kQ&B|kR-i{CkxVEsT2
z<%v{3uahe7KE)l%M|7yqsCl3~FCmXPwnO{eI?t5(7n~R8G!N^?x%U1K&-It@xi8z&
z^|LC+{cH1~m0$N;Pp{1I;cmxO=6+J!QVPgvoG=p>K1UZqCV=8DD(rnVd{{doZee2i
zok%@3rEImqA9SE2r_q+I@-I-75NWiL?iI;2XC%p+#pNNsh4=(}Emt1yx3(&{Z>Ra|
zIEzn{0;zcGb(oFdz5>$7unba)6i&1f*3-diJ5Q!ldO5mW!p@*a+AjE1cHW<-K)JkT
zZm4B(VroUwBA({i{1ULK)R(FZN#1CXt?zI%(b#1@#WXy_Z-!^RV!Z0VdoCoXa-4a}
z8qj+3^X7WeglfIF#5BVnYR&xC*bHTr&CoM6Lk96SR-(qEWPLoOdTm*Ar)_|)yR2&B
zUN_X#(66<~?z{r}_S5s@+=22)qKo7Pxny!9Np5b<S`bgoZh}3{nIwtC>6x2OBWt*d
ziQ|_?SAbHlmYZfSKqM9wYGJPue2BJo)%IWHs}d&aJacyS2a>}j==23!<*Cx>`YJuv
z3cgThysh7&*F{sD3yNeB*g`YA3h6@0cDBPJ)0<okpu4DTxgpAEE8a%WJ*e!Yf><}v
zOh;CXYh+a3qr34P{r{Qo$sGT`pyyZg|4;g#QTk5>hxsV-|4!Q?6yzNttIO5^AQPb*
zEQs>D1yM>|CA6+7udhi1Zjz*PpPtG;i^^BAyU_AGG8t6zP8x_yBC5$0=m1@ZSY|<E
z^XWtF(*=AY@dTA&tD|$3_Q9krT^pzO2<ypM=n%ci0TqoLcPlB>hD+iCh~GL7;DU?{
zh8LqioHu-CTa@AXC?H#iX|&s)K1%!3ZZ~+%<kv2LIYDcQM_K;_z8tlFvFbn*nWz|^
ze3f>mP&?MRANi|jQa4XPE&b2Yigol~52vGO|1tgy_Cx#;N5hj*^!YLV4B#q-A8Ph_
zlq<`)C0WG556O(gakMM!fgE=utf=cxAMXw>LpbEmdy#(W;y0@CK-G8vRiQ=QQd-oB
zL#WXn=3zI&esuj4sAP;a9zc!irAvKGPkd;YyVg}*JH!;Ix~r@9=V$=L<}=4#Ki@v@
zsc{8j&Q>&sm_AeK2biwRry|Po5x%i)mHBkQpAOWg1Fr3(w!riGUF6bQNH*qvKH$#>
zfm=GhFr{m@Lryg+-+`4+n-JxW3DI1c5arT@Xs%3%a%n<@;NxT8E`@<2=k5`ov&WM!
zotywo&ZviMIFB}e9|pVO0j#NInscy|1>r8~G`xd7@dh<H=E(&Oy~HJdV;zAvif@XW
z@Le~0gBy)laPOj&>UbMH-+8xr@Nlz6Zw8qEtGD4>%CO*#<7`9X;m+h96EW|}kHS5G
z?+17U)81Zh8rp~P6i%WBqxEAcO0$4;2v_xGUTt4QGx&cQEo^%t|13JyV9vi7TtMOL
z>kAcWJ_rU>uv_jt?5(!XcOHh))DX&^sc-njF+4iMJ9_&(Dud>>0DSuAgL7)@+-VEC
z*Nv&I8MY-22xVjR5kECFHj84wE9^;G1!C5X%I+m3E4!JAwwviMx>4L6ueA-*9QrHI
z$Q){$H`pM}?`(tg%(g*#1|57>w?TSVvq8%9=q#}=<C`NjwnPq2rT<#!_9V_;P-I1*
zz#lx~4|fa7=mrokiwQ*txA>f^0;3%M5ue49c75=Gqmff19Bwl5cD=`scDUWg57q+e
zsYQ!{iB!=$v5{&mW^EAyC0XT^Q9y(J1~@pH*83aysS`C201(>nhASKl>e9l>`VJX1
z<A9B8UTIvI(pi`d&jxl()=KUVXHCx2=_$IBlPi>+<S2PlIn64;6d{t3R+pRgs|uM7
z;CmFs(5tnkKBBt_4iwh-xm-;qNm+UgeMMxF_--2=U|$<(746N4BZpb<6i#$Agy`La
zSU+xy$VuTmlWal)IN7;V>>QFiUVyPYnRDDJ@_7<@l8s!8F#0Gp%_dzB$VZB#^C0cf
z7;*c;AD4Y>2c3R!hse6d=Xu>t3H7l?K1pv6G&u6LP*xP%k^=cgdaPQy=nR_I0YkMB
z%V3G&PhMG<!`kGxy20z{c0+B3is&*Q85BGh;%~HUM_rF^K1@=T7w0dr4pnl~iQ>T0
zl*s~l)%IcqL=|%JP$9u7kN5~cuABnm;dn3*&qgjz_5${1Vn%gS=v+BcYw@*urRk0T
zn%0}tbk)iO5_FFD^y7q(JJK>G^orj_4bJP@$m+;|QIuwKMG=?pdP@v>U~oA|m)|VR
zks1M9zOi33M*m2EsYsTw6D!mWZM`{K)RuApJ@pX3FjmPR-Nt0LXVhm2o%G)Me*-w)
z0P#?osP3uEQIvT(B|A4KO7Nie9%kx@XAR&?@dru!xK{fc_JipIT48yC;%M9GR*^hZ
zkXAoIP@t$WiZY%V30SiY5S&>c7;b(jfUIWxl41%4OZFan-GV|WV^xp6@WCUXowGaD
z3DBF0Vu8orKMqUz!l!$@4mbZU_?qX@yQINT9B-M>Lq5(pF6^k@`MKBN4e3^#LDke6
z3En<+&5Gic4bSaL**slgIL`1^c{I;khez^Q9G)A@TqmPt6K+4`Do%CT4OuQ>yOTV6
zlil?m;AMKdOgKicJ#&_xdi|E5Caa7<yisV{0Q2;zM=+Bv5gY|we9L^ff{PD%jERl^
zu%;#JHy{_Nkg?DaMr~-6Spkq~H0*hqRPp)OsLP{=@h#)Ix04a?607sk=8&7?<8O8_
zbtbsJ9*#ujjw^@hqUf#KYhe;Ox}tHGE}$M<EvYuT4t?n&l79fn=d3U*oH^pz;2|I7
z1MXI&6t2)n8Rvi;=5Q822xX@IM8>7Y;4vn@$p|BmPNuX_A3Z)QnLQpRU%wL!h_eY?
z{Wa4jrGuu(FN#Sg4L$Jm=Sy?}8lT2|l(1Fy+$ZcAC%L$3s=>-BvpoLUIbr-1*S@7+
zc6XHH0cw)9M_CgFy+T_Hs?agHrlOve<P5ZLlM8^U)22LY<-&{71Knp{FZE{owmL`O
zR`$(&zP6Tw5CKyVug}9|&UQz5)r(B~XBv9rqF141e^vCxg*OTzW!|e$^jFP$<GD97
zi;w-`rN=nbyc~_X9k`rYrQ-$|s477aZ`OBhD}-P&9bmH@?P!Kt49<HiB_tS*2~>|f
zMkoDIV$(#TuuW}Hf<++`HgEs|x2Td6`jt}#y<7(9ja9k>R6OG?9nG511L<H7F+BFR
znP&qOrG`=)E&^H~v9suthwkZ4$<n+>wTB%b`TYkJtn)$e$wQ-a=#Iz<Pj$c!K-?Zu
z4Z7D7FVKhppb!;&dW?}P<?WmY1{(-ACuEQ++6*6hfOh}}q9HZjP57pcdrGpG366V}
z4+wzKg%>I!Fc3BYnmJfX(#{9L)_R2O%#-Q(Qk8wI2u)pG4^OEl3D0Gbl+Z1LH6BH4
zZ6ihj(JBBlvq;i{&@Y&BB1AnxyP#toI}gm}1O{F;5~~l|u!knps>Nk#V!<ugN1M?a
z`xX0-s5z{6eWhCt&y|l;L$<IYyaK}PSC$Ux7O%0omGJ;Ohka9igr06?MaF3=$p)37
z%ch4<qqa=KDb2M5WE*wbI@X4o<fP<gE*6v<790J+&Oeo#?G}iH4mD`_3kjj>IDwx@
zDQE3!LX2L|S!(7i2x?gC-@&f=_IEt$IQ^7VQy{S+Vr<r0m%2}N0Io6!3!K{udR#Bs
z38<1lf;bAa#*yeMahXgs8Afi3z9O%5EpxoNVe*bprExo6qQ0Zg06`zByz8MJ&lscG
zcl~7G0qC*PdMO+3(Sbw=z=tgmutQ^99_8v^-YbI8)^d<W4%=}q${@sxvOpi2n6<7p
z!j3B?CrB;RYMY#|s#;R=xJmw@<us7<er+wU2SUMY%!!n9OjY{{^>GjVhhV$2Jo?Z?
z<w&IdNF$N#=!zM>;hrXYU>_kEVX6T`Z>19kfCBkjhnkphNQMS7i7d91;RVj26s;G4
zdK~2#+6IG*;|EU_GlEhnW@c}s`1B&i_#l@`{w(BgG{nnq+qN?bjH<oLY*`d%s8ml;
zpN%)wb*%<LQIz|)(s>fctrUKJ|Nb7XWW1dw@;tbVE6(Kww{l|Y$O<;plYXlRo@^dM
zmqo)|AH3wPkBUFplw~a#9p5<WS_6Y?l2{(&(=d>E9#7klCUf}l3)~!XGZWgOUeqZw
zDFlatwT(tt8^9@y6qQvjIY%&)xWlChWB>22t@gm~g~X$kfg28s_)I}q&$PGe1k*6J
zYH+$y38_CJV8*cmpvuv!ZWb^t_U9@o393X@<l_*Y!5$$mNtoz63M=+R__pUBbdjBE
zO3|s6E`B{JE|-xIv8K(TKWEf|h9SD8jFg6PJJ{~2AvH-?+nE+5ZE<RO@zEed$c@%^
zB$y?p!B#*<YCNN_<uP<Qj)1$}4Rva@)K_LvYWkV{N1XQhI%C8gAB;j)pzAyaB>E*n
zI|OgiY^Y^BGnRvxUeV+lzO@uiqvfx@iE!OS01cVSJc2=+D6KA;%<!=9QoMv3&lNvy
zvf37TG|6w_5E&y3T#wvg3|TJ1;RBntMTv6dRFa=+Pluhdh$ZE!Lc<;m-leUtifFfA
zJTmSjP^yos8YRPGBv&$_=r`J>3VvYrqY_I->Gd@wBbCIO7K*zheb`%tgbe?LDU2wU
z<|Qz3p4NDcZ)JGRo51nt%!R@~v^TUn(#+9(lh3u0%p6y?*15jMh<@%uE7L;!(8xJS
zHp~V44A2SHk$bHOlmurvPX^jS<CcCxLu6@3w_$dOG-S5^BGk9Rde^emvieFMW|YJ8
z%q9+IIr8*wVnoDb>0F{`46PWcD?^w6Y>sjF$Of6l7(1zj9J8^!yJM^Rj;-_#i>&Ze
znA%rg6_+YX%{y)g&7oYcUFoYtXB4-+pADq17<P?@ho4?8phW2#hyT<O6B-OuqMEzH
zaHI*Cw?`aM%BwbLFanf1)0EI8z8*xS`LxYhddzF{q~R3WrQeWQ=78K@58Wu%8M#u@
zbN{|~P4U7o97kJSWwP`P%a0i#p0>lHPa6joeU<YaqV5{zKiXBO>7?)pe1=>5VC7NX
z{uS`EX9Rb;X%a8HmijVO&7V_?ZTh@)h?X3&L~aRreeptVRWzIfO<iYA%zVHT<T-5c
zmb+CGV?wqju6_e+Pw%MIaKp)AczOd!*dm8pHMS%(RD&zx^3mg<lGtVFlbDYZbu6N&
z!2?8v2AITcs$5Qf>Y@YcWN9i%B}6S51EITRG4w0V&`)fJeqgxvRWrjrLpJ&*OFpr<
zK?=dU0ZVb%{*vmeB{V~14TFu*zudzFi5-TyY`@kt4ZuN=l1-ViJ{Jt!S7Vw!X6qdD
z#Np~k>4umej|b%UWUwPLk}a#(lGm<LazwB-uf3WxuYEj6UOVyJiPJtVh|?YpYbl~u
z0_j%G&NodI9Hj!TX1HB-&yX7{Hc&dP4mW2V4JxaWpn|%lg#jGNh8zQrY_lYw=^oc|
zo_}8|V2cDqwb`FNgri@~^0yS=UH*R?x4$kGm?L4diip)mmMvluX%2eI5wSEjFl}*b
zyZu#n@L%_?)_{TxKaHe=+fSeF-G{wt7;Q!Zo3f(=03V)qOg1nTBC&axoIbx;`ou)?
zPE)VR-oe{iOp^aiRSijqFw*Z^9{TS#jn5i;?lk1ohK=ICN8`tqqh2?^-I~t7g9Q|;
zt~AUs)GXXMgDBC!RY1j%lnFQ3W%Ij;Ok{Q?I1#u#S1s-yuGTWjN(}Qp8BlmK@BV*W
zJpB6Mw|!4cs$wqR_rC9=jZ=CeGweP8&pz5kSFx309dei+ZyyQ*j#L@vh+RBufEXqQ
zF~qP0i0ci>SA^pPmlR0Ik3?qaHvN&O8P&A*fewK!TPQhA!EzeEwufOGabzhJHW3z-
zyAlspIGIa{$ES;U7n!VZM9`;)-0CNOj!thTZrTLX{vEjvY7%yR(;HifrTc)zSdK`B
zQXUhNSjnu25$vx9wf1}Jq`DO_=v1GerWMwNEM!?xN)TvJV@em6q=)#;oO#la&tO&a
zH2aKAOxz~a%kA<Z;TZ2AK+|3`$b-cu-!&tOLB^B9Dp1sHf^bT%4}&>!r%0HF71x+f
z6mqxl&d{yF&RaXwnvv>s>SC+SOIf;7K$l*WcMFB^#J=z?d6UAawS0rI5cEGD`c;i{
zDOQR}_Jp{y(C`b?b#{3m8m3rwXf<XBUM4fRHCy$2bRBn4^l8R9nmEEbhvo+>@ppJ*
zEMz-^<*~CF+E=-Cg%e(X;uucyIVzbEj!Fpzr0&a40TP_JD}jtV%hPEGxt5jWl=DSR
zbP0~Ca`}1HKOl>O(-J*tj1$6h8+t`NO>-sr;1?`+_C>n=Eo#$sUH^hCYB(Yy-e}{z
znkknY66or{S%eR_74A{VO`CzcYiYOYQFAj&IDJ={w0$<Vxr%2+e2NYrB$NIyVcieJ
zuC7S8HFV>C&{1WZqxWPaMB%mLQ^$uDPuW)6lmXBnTccm2UDhEpb$S%*6$zL2cAq0}
zfc%SW?mPQ<*9Ry!Up*Q6f*Q$}{-)lZ!TT<AgS!FB=J0_sxb8D^-Dhy!C*A15qkKt4
znH7XfJIqF`q)AV3S8$HU1_dN3;kboIqYnc^7;-bl2f|9=D$8&<YGd6rX@MIujcv&i
zdWdQtoSd>D%6u$eqRsD0zVbP_+~hhiQ*G~SI$V$g{RR+`QD;VIHI&j08Mg_qNw8Vv
zKfZtaCa@w*6PsTNIaCbSE3^Qh;DVT)MIGq8PflP1td5IQGKDF%n5u5VAq#6D2^hG^
zacbwdt8SB_531-gx8|A_gI6ny9(3@r6LknB!)HYJ5OL$JA;C?u0d5jUBRM1O<BAY4
zD)%>)i1l<d*<{$FDH@p$1yMDh!He8=E!C+W(Qd)em(}BpRkiWf*Coz%iK=!}lF|{t
zQuNfLvme(LA<#Cv@150ve_o_Y^N5tgC}v+8c`UZ|aM5NM7_d<B{@@#{!Q!WLB0}{|
zuCJLq@_pAt8-T?1_1^Ao(6j6Z%3zp|g0Fl(>A^HD((D7x+77Y?7V!nWIbQ;{RFG~L
zDTuIoQG({G$xcAP<duS@85#2LVV12V$^3-fVkSniCSOR8V1ZKrI)u^<(=q2`e8C^(
z2m%6xhj+GVsob{7m8_G}WbJQ-eSum2stR`ChX6&ZflN71DFVAto5I=)8w$_>r7#c$
zo6zWSN2eH7=*?;|CXcgvItJ!BBwcJZ7xe;aiU#I6M9DWEZkQr2<FGzh$Z-d|GP?G8
zN^dhSbCDJc53XC60l6mkxQ)v^;F;8)SgB7=Z{3>AH4sC^ziI>5l;L!F5Na9%qfUDx
zb|h}_#UM9Wv@lBuQ?xMaBlp6h1wbJGeo_EI^&0^K0v3e<7P$l#I@_<5jR8lY0Y}b&
zV_^`un!=#b=TOuFg(OcSfSM_Q7WlW&V!W=OM^ykoBkAQqcYF8SuQC8BNe@64B=-t|
zbqbX~r2vI=cOs_8w&BW=XS#O3wtm1Mh}O6Dq8%+L$(4?;QG(!Vf}YU6{?CwqzYjCN
zw-@v&{9m8b{>9(E*@bU=gdNhvAgC2_l!!SDzYcO?Hm4it?}Bk(&J@yH*Himc)KFsR
z>?%TRPD~;lZ)&3<33}5J2BH$v2y!@ZK5u~Y^8i5g4f8%*Zy??VBtnOJtNsbD{RHl~
zT`@&(1gaO&2?O|9RCZ5xreFDSuQaPov0J6%6u1mXtO#I!(FW#cfi_K0yzM#AOp{JE
z@mjV9^}UYc+l@*daohHptrhyep{nK5op_-WRcjzb@b?rq8|1}|HMC$aV*d^lYLk8$
zUpE+<sAw>0c8N#{xo-x^5`03JK068^4fF+@fp*4K)*-GY8v95}Lzx;i&An@_r{x>z
zrYU0I9<d=wqs%hU6)4BmN}7VzN+)IMUlB+Q)9rKnyd=`jQ!rqK&$He`80-;=&Zu1N
zi_MwYFibeAT=PoZkwEf!C<3WpzbU(SH(s!f8WG~4C8I08aKzZi<|WLrLAVV7&XT;(
z9eajYn=$177t9#2c{DVrGq7{yK9?jYzsbm9zG380Xd?%0*I7D74rm4da3qN>&S@;=
zk%I?pY=E`{WkP31eUj#v&bdlk?JQm6cfx1tIEyr1a19d>t`X}q^7b0c6lzTSyunOi
z-hE(f5gOaDr-}_GZfO;^AM)d#RvCI?hJ7;dlz<@Ux*u6FyHm5J_*-@o7S_Zr0v*`U
zVmqPKoY>%@Z@WxKtQ-k%j>0J|C?xaQBUFPFx-kLKi|cFe=`Tk|Z{K)iK8B9bQOz3_
zzbT<X@tY<!Fp&@NB73=5B-0d*r7LbnR;phSk5Dn~QO&1ci|Gl#Xi9!dJB>54X-@h)
zkKPw|2&+u`;w^EN?QgAtm2ZoGe2_<Pn^;v!VLcv~`Fw?rE9-Wva9oqQx0V1HX6`5+
zH~FO_1~eT}$nbJXcG?zXu76hmUn=3>45TGLtIifM41Dh-o|o(jpw<o`@&N6G+Zjp=
zf?MjW3M9s4KLP69+DY3Md034Uwq<lE;7EJgfsWD(X*XbIh6qY(kYrVAAb0dSa?DFh
zoGDV-YviYE4PR#6>9<N*1T^)kPyq-kiFCts7Jb(o&4aP>)-fs##&!&DoIqsAdo@rz
zcc3^L$-!)OR+&+rio9H#mC;99F?m`_hi~SrWhA!;g4CCe+|yXc8+AO4n_~$GgD;Q+
z+z7!NJh{x0c)Bs>(i$SFlF}WDw+Ru~E$(3K{$Rqs?P@^jkh4bsJ+?cGKwWW!o+*9G
zqNYT2ASm^V7-;xSx#a%8)AeCNViLBIvgwq4PciL>)2X@rh_6i$6T||F6WmYHcE$dH
zbXKI>&~amApHq%5f3y1&=1NF*J?b@D=x(ZMOzNCOeuGE5gWV8O%UyAUdR$^$nkAyf
z{6pU++TkPS$Qp7Skf-dM#HM;lE}~s~aWCE1^C+=jXHl)StBY_~T*BWujA|C5?y=I?
zx@j^P(>FmXjozX3+6K+KsnTgm)-6yEFV!0}kY4e+5o%*G!x}cmtXC;tf)(C_@Baz!
zJBaiu#ZT?$WstNws6nR!{~w7~j38*W^lHJlHr3}VbvhMY9o$TFTJ{P+B%zsX?%LJB
z?Uk$B3-=ZfT)9%6qiQkn`ub{3`zwx=-!tVRCU0~(1oXok{pN1P+EE(1fWE$V-ycQa
zvoWsapa-trUMXGjq!^<y-)1fBr};&|&N4H0mf8KD=sxt8nMrS%=m&GNKZEZ>awBm8
zmwT~&!7V~X(AEX>d>|EHFw-Svx};1{H6&lEJm}Yz{PCVso^#5hydRzSQk4(Aww_Z^
zPRci<e6#xS&<GP>(Qu(Y;c%>S9l4BBVfU<27f|H?hF2gXE4xakArsd6@(eu;V=2Ad
z4*{V#$G8RM5|9T{Za_ut_~I1-bo@Z#Xixd<#;+*C@JLnx=yQVM6X+%tfX!k+8~jRY
za<hC+=0YASvZMu}eahy-8@bXjRQ^gSl8dl>g}X7#B2PV$nj9Q6M51}+koeO{<cb*}
zqf{SGt*t@e1rB=bVYrVa5(J2=vUECY5Elr`>^0KVFP>sRYe{UULQDT!qEdCvm7vtG
zOG+IdLM?@D7L9VFR;xyiCb$zm;?xyYO|#-4E%%bS#T~56IU9_ET&Sj%A5?jY)bJ1U
zCu^f3@>g17`SlSyY|M?y^(JhoUvF0(-RmwE>okWaCk^Ts;&mQv5S~}eoyv>wmrCsC
zbIGa-?^WWEh@YQV35GjQgfw{ySBa3udEtH{eo8LKd0b52#AhiJ>fv+FOO$i?E)hmI
zBs@&Sdva(;Uftg$;vEtn;oAiIc1CHZi6FHUdU*y-&GWe8Tptp_PBg<`A%9Yq@o56U
zJ^UdNN77aO60;z;H9Uj5i~JN>Q{iPI-sDw!BF($Qi$pM<7=Fye6G>Ccly{k6mk8k-
z_4GrLua@DnOzcZrlJE&U=ZkTUt-r$Od5+gi_*cdQk~O?kpZN8Ie0>KPG|a`Hn7NvT
z_cHOE!(P+tZ<)a080aBC{FR@>AK^Dm=F|5uupjVwp2$i*7w{&r-talR%##cGc7SjB
zxqN$H2#&cSm$3}fT>Ma^Q~ABf#Y^&m8s_knozU3I93~2=!7$EgipOyg&T~P2Bj9l*
zA9;8aexr_`LVjsW9G-A`ID^UnykotKTpXg(S-8x3wUYyu51r+L_ao*S!wX3;!$Wu?
z-hH@_PxG{rZGMJVWW1;efM(+{@0J621`v%Ez0Y9}=F8vnED8UBRmH0+ku|){)@vAB
zEq?qe9mtFAb#4m>rSiinMYH+@HNxRJ!aVDKV*!#T?z5dRheCzMe90SzJN9xhNe1p~
xc!kbfl{G4iHSrq4$RA~f@1GL#vRWb%e8_FWxs>tL){yUi{U4t;c988B0st=7Ud8|b

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
zcmV(nK=QvIiwFS6YM5FA1MIzPTinL7F#1=<dc7S@XvUE2cb~mP6dsHr#uso5z9fY0
zM`#+5nUTg)%Yb42`>CqFs9S0cL$c0!&xiA@EHje&T3uaTRb7`yXLX*6tjNRRZBSQy
zP>C{2MX>QLDF->@Ot6v_EMqlGVpBFB-j-a{Wj?T~t2g<4&eHfcFN#@YeVwzsNXqkQ
zxi-Qfwo*)IMa8Wuj4!OjN6Bn9xe4=nGGWkJJ>|KmhO(`^5=kzigk@uRn~59WQ1Us0
z`OhYN=WCrzDu35`9LF4*tjp4E<g6$|gd2}@el^%C%j70B!x&9?el9Ln*N05R>l@;i
z_LmK@vNGhyVs-r_Hs6lL$wqg^x+AfmqaiEfwT<!@p_?zEd2w9Yjh831&PB{e0H8Dx
zp&07!avPWh!Z0tyQp@)!_pbvqG0ylsO^A!KxEkQJcFGc_nPW9-&bwZKC@f7T6Xzqn
z&G|Q8MoIVx0G>>)lA8)2*5FGO-@<GKzZNjAI!Z?xIl{ntAHX^lb$S6`O5qf0Uh6W`
z;v4T4!MC~u&&S;Y@DjeC^9ts|yZzW7pxm^8{W&hKa;K1at4nmoV&3W!MJ>7o;HCav
z&$^%MnW>Fn?N*1kP~xme>nd|csNTWXOMcTCzj_B>vwYSX7`=fn=|z&CyOWZybdTNs
zu+}6?FWpM`23Mp^@+w1Y=`4%=1xi+Y!c);*8tZ)k7<J~5Mj`>Q$set6^b#v^cNap5
zH3qbzhiWknm_LbK5+rxM`>vq|Yd}_Vo19SjGR~2VWM^SH5`a!29}d+p%DMVc=VN}B
z<$OG+HnH#{p-SCOlP^UXt+8pA<KOv)Y}K<L_v`5?FM$x3d^Sl^9tsvb4pwrY!5S9R
zunb{Kmf=tEl8xgoY^LEF!+ko9edJe-CRd|DAkE;osiP?ya{;Ro`5<-(WIaEJnU6&A
zy13%yc2e=s5W6)X=^AjG<8T;Fpt685)cIwOC_A3B^ElWU1J1FFIM@a%HHDww;^1J$
z%Oqeoaj=_}{H(YR*l8RbCTB^R1?(zb^7P_30+`ET7nNXSc-8<`sNvqK$A~l7b`_M3
z@{#(*vI<8TU4`e+A3VvS!t;fE-rIrS!QM_FA8GjT=9_#}bAT5&@`aoTJfFfdjPE+W
z)iCK!;xIHrGYDmdI2);oK%J33*U=&4V|QPl<7TJvS})-!%iP@$qaU(@MsB_S2Gl?e
z-+FrkyI9V_dU*;1IEaIfSq{Xf3fNH`Y~|y!$i@M?jDy!%Uc)+W!#Wlds0t-^V0}x@
zpB+9A*z<=j>efGBR5jG-d3YcfCObHUhXDSll~faemq%)84?kfE_@heDwBXgHT3R_b
zc(JV(UrrES?8wD_vuLrm9=6z9>`G0+T89JZws6TeP6$qHH5u#6(U47O0@k}rK!eJ8
zL(_#NS97zzYy*101Wzlc)g2h!yEq*YyTEqgmt+>$GY@6jo3p(*EMp+KlW`Aoh`a}M
z{Eh$&h>Sn>;XH|U;iMM_Wh7!h<4IqSE&y&3kNbEXD)hX?MRj<lySsqnuV|pl50FXX
z<3R!Kz+gsrYQc8_|EMn6G?_)u82!VO^ulG{Phsug!`UPeg6CM|I;#Xu6HXuGzjk5o
zO$4w8@JaH{xpxvH2@RZ!EcY2mxhRN-?IPLn2{7b^B;L*{=hOzy;^6cP5d9G@?RWm<
ziSrniaL^3d3(xlR2`)@{UKev_9d*q@b7W0f(Z&Th_?ttXie#1;(GemPlI&_Ed8d$s
zJLu3XJ9k%2(5iWwe-YyNhR8bmKJyWdI)nx7uZk<=-~kkolO|*+4Ki?z45dbfQX@kT
z+%}77Pp`j!cv(d~X%z8-S54xbZxVtwCC;HAw{jb~I-i3I7A6GVWhEE}bHly>I_$@{
z_$_+D5DRfvz=`FRPJpAs6X5O+SKAQD&AsS_lxsf3VG+~tMzgXIg}9l))S=w<!P(HM
z;-xjO<Rtxss2JgvmnGO2|B3a1o_<|jpR>2UOr_?FU>h{jrU1eV>}K(c*eEognE{_!
zfVc|(#5~Mc!C;bx(PXdt*;Z`Yu&uw8QW6f4Yh?l(VIS`u-71LGzaj&?y6RSa-&^(g
z1Vv<+hv~cgr64icOa}yHoJk2SJ$WKVv%0znGczeMXWt(-DPXIu!D%jhe?+*}$lm*-
zT+zr^%eTL>BCvgI9chbhT=N&W$iH=v4QIq2$9^pa0H~**Ta*tvh+DnYzYpX%hQs#J
z6hNhsA{>KE@aZ5}5i7yqDyiUL5`!ckB-kt)NO5q0!o$XIN<`v}TGj9e`uX+2@OiZM
z2%yth1S70HTAQ=a9XM4WI&$_YzD0WbRuab7^rwtIvKh#MBsE40aSi@~O~bNgT*WV0
zvwv#2e*i;j+B=&fDu)v1YCY%MSyEL%_Ro?G$SjZ$MQGo%^RlRC&u&^HfC<~O%}^h!
z8_m!V7HcO%JwEs+gF)8KAhTcUjZ6<Rfk9>`EQM;xa3cj+iYHG%u%uxYLuvpuTq!H$
zyTmLP0=`g<K6%nq0otHwo>z2}M9N?>%tmbL4HB8H1CW5jpmbWW&Wexl?66ER%BDac
zV63w0q_67h#Z~bvd=L$|l`1zalk>3f5re{jtsw^3*B(MD`fd*2$MQ7x0q(60xWQuu
zBs!qK>Lc5GEPSV@k>pKC!&c-X$?_`tB2VNV)>q9GsgGIauMYGquo43VFu*gqMCQA4
znOaGLKI>C#%}fN93sgKr6$!|T$OtW_@j%!c8ov^Avj%cshb1dl08&Duq($Jz+1VKf
zAt&w8L%(lfhaw_hkX8}@0R-cykX&i+C~xP>oJ8VSX)&^)JYY+EptHL4=~ju$sfyCC
z7V&^rjIcDYQi$CpDc<e}u2e2d@FCaTv^HlKJQ@4ABS+`b-q1vn=4_Hw;&0S#n1T~z
zv;K(xhDzwu2)CPebpg{Wo|NeYZYdb$OFwt@hulVh0AU-kMLZixZB=N5{CE7EU-PQj
zvPQhlM|m=B)B<9To&NrRqSHU)o}I7teNX>-d>bDB&+Yu=$Km|xd28#F-Vo57H`f|L
zMavMxC|BcATbvDwAqcQJsS@FRT!OfelNKTOcE7s*2(dw(AtCa+yhr#n!~CDWs+BwV
z|6>?qfMTS`<ENt^H`R3idivL3Gdx~f{nyFL@UM~nHTv->EAxf-U=~nvNdrJg%;V!*
zgl42Ph%WG>W9%7KVShdK_4@ef36uEd6*3SO0oHyR0Fx>or4p@qmKw0;8QCd*#ZNCY
z)L+k;8l6#Vdd4T4{OhS7Dk8ssjLo1P*)Pt@1m8BJK;5Ko1k)<xy~~0H%5RbP<NZU!
zrUSq_`2-k=cZBwsl$N(WERj>kq>AhTjp@A1!+;7Rx~XQ3%GftwrOfQdMW<<1+G<?u
zpnC?L&gwx?4Rm{-mjhVnB9sQ%v^dQsh=F}5cEajr7Z|;(HU2BQBJ#mO=?(uH<f0c6
zX40e&y>Gd**#(>!&FHgPGDg7pdcU6{K&b_=)SqRay%0AOFnVYUHcA`X10VJEe%O#E
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
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:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{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 = {
+    '"': '&quot;',
+    '\'': '&#39;',
+    '<': '&lt;',
+    '>': '&gt;',
+    '&': '&amp;',
+    '`': '&#96;'
+  };
+  reverseEntities = {
+    '&lt;': '<',
+    '&gt;': '>',
+    '&amp;': '&',
+    '&quot;': '"',
+    '&apos;': '\''
+  };
+  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 = '&#xFEFF;';
+    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(/^&nbsp;/, ' ');
+        } else if (!hasSiblingText('previousSibling')) {
+          html = html.replace(/^ /, '&nbsp;');
+        }
+        if (offset < container.length) {
+          html = html.replace(/&nbsp;(<br>|)$/, ' ');
+        } else if (!hasSiblingText('nextSibling')) {
+          html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+        }
+      }
+      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">&#xFEFF;&#x200B;</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', {}, '&nbsp;');
+    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 + ' &times; ' + 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 + ' &times; ' + 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[^>]*>(&nbsp;|&#160;|\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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

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